Browse Source

调拨发出开发调试完成

master
赵雪冰 2 years ago
parent
commit
534fe1a2e2
  1. 2
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java
  2. 12
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  3. 48
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/TransferissueJobMainController.java
  4. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/vo/TransferissueJobDetailUpdateReqVO.java
  5. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/vo/TransferissueJobMainUpdateReqVO.java
  6. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRecord/vo/TransferissueRecordDetailBaseVO.java
  7. 63
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/TransferissueRequestMainController.java
  8. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailBaseVO.java
  9. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailPageReqVO.java
  10. 25
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainExcelVO.java
  11. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueJob/TransferissueJobDetailConvert.java
  12. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueJob/TransferissueJobMainConvert.java
  13. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/transferissueJob/TransferissueJobMainDO.java
  14. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/transferissueRequest/TransferissueRequestDetailDO.java
  15. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueJob/TransferissueJobDetailMapper.java
  16. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestDetailMapper.java
  17. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestMainMapper.java
  18. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobDetailService.java
  19. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobDetailServiceImpl.java
  20. 38
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobMainService.java
  21. 242
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobMainServiceImpl.java
  22. 42
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainService.java
  23. 418
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainServiceImpl.java

2
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java

@ -50,7 +50,7 @@ public interface DictTypeConstants {
String WORKSHOP_TYPE = "workshop_type";//车间类型
String PRODUCTION_LINE_TYPE = "production_line_type";//生产线类型
String VEHICLE_PLATE_NUMBER = "vehicle_plate_number";//生产线类型
String VEHICLE_PLATE_NUMBER = "vehicle_plate_number";//车牌号
String WORK_STATION_TYPE = "work_station_type";//工位类型

12
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java

@ -843,13 +843,25 @@ public interface ErrorCodeConstants {
//库存修改记录ErrorCode
ErrorCode INVENTORYCHANGE_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_135_000, "库存修改记录主不存在");
ErrorCode INVENTORYCHANGE_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_135_001, "库存修改记录子不存在");
//调拨出库申请ErrorCode
ErrorCode TRANSFERISSUE_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_136_000, "调拨出库申请主不存在");
ErrorCode TRANSFERISSUE_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_136_001, "调拨出库申请子不存在");
ErrorCode TRANSFERISSUE_REQUEST_DETAIL_ITEM_NOT_EXISTS = new ErrorCode(1_000_136_002, "物品【{}】无效");
ErrorCode TRANSFERISSUE_REQUEST_DETAIL_LOCALTIONCODE_NOT_EXISTS = new ErrorCode(1_000_136_003, "库位【{}】无效");
ErrorCode TRANSFERISSUE_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_136_004, "调拨出库申请状态不支持关闭");
ErrorCode TRANSFERISSUE_REQUEST_CANNOT_RE_ADD = new ErrorCode(1_000_136_005, "调拨出库申请状态不支持关闭");
ErrorCode TRANSFERISSUE_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_136_006, "调拨出库申请状态不支持提交");
ErrorCode TRANSFERISSUE_REQUEST_CANNOT_ABORT = new ErrorCode(1_000_136_007, "调拨出库申请状态不支持审批拒绝");
ErrorCode TRANSFERISSUE_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_136_008, "调拨出库申请状态不支持审批同意");
ErrorCode TRANSFERISSUE_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_073_009, "调拨出库申请状态不支持处理");
//调拨出库任务ErrorCode
ErrorCode TRANSFERISSUE_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_137_000, "调拨出库任务主不存在");
ErrorCode TRANSFERISSUE_JOB_DETAIL_NOT_EXISTS = new ErrorCode(1_000_138_001, "调拨出库任务子不存在");
ErrorCode TRANSFERISSUE_JOB_MAIN_STATUS_ERROR = new ErrorCode(1_000_137_002, "调拨出库任务状态错误");
ErrorCode TRANSFERISSUE_JOB_MAIN_EXISTS = new ErrorCode(1_000_073_003, "调拨出库任务存在调拨出库任务单");
//调拨出库记录ErrorCode
ErrorCode TRANSFERISSUE_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_139_000, "调拨出库记录主不存在");
ErrorCode TRANSFERISSUE_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_139_001, "调拨出库记录子不存在");

48
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/TransferissueJobMainController.java

@ -3,6 +3,7 @@ package com.win.module.wms.controller.transferissueJob;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainUpdateReqVO;
import com.win.module.wms.controller.transferissueJob.vo.*;
import com.win.module.wms.convert.transferissueJob.TransferissueJobDetailConvert;
import com.win.module.wms.dal.dataobject.transferissueJob.TransferissueJobDetailDO;
@ -15,21 +16,16 @@ import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.pojo.CommonResult;
import static com.win.framework.common.pojo.CommonResult.success;
import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.win.module.wms.dal.dataobject.transferissueJob.TransferissueJobMainDO;
import com.win.module.wms.convert.transferissueJob.TransferissueJobMainConvert;
import com.win.module.wms.service.transferissueJob.TransferissueJobMainService;
@ -98,6 +94,7 @@ public class TransferissueJobMainController {
PageResult<TransferissueJobMainDO> pageResult = transferissueJobMainService.getTransferissueJobMainPage(pageVO);
return success(TransferissueJobMainConvert.INSTANCE.convertPage(pageResult));
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得物品基本信息分页")
@PreAuthorize("@ss.hasPermission('wms:transferissue-job-main:query')")
@ -111,6 +108,7 @@ public class TransferissueJobMainController {
}
return success(result);
}
@GetMapping("/export-excel")
@Operation(summary = "导出调拨出库任务主 Excel")
@PreAuthorize("@ss.hasPermission('wms:transferissue-job-main:export')")
@ -161,5 +159,45 @@ public class TransferissueJobMainController {
return success(countByStatus);
}
@PutMapping(value = "/accept")
@Operation(summary = "承接任务")
@PreAuthorize("@ss.hasPermission('wms:transferissue-job-main:accept')")
public CommonResult<Boolean> acceptTransferissueJobMain(@RequestParam("id") Long id) {
int result = transferissueJobMainService.acceptTransferissueJobMain(id);
return success(result > 0);
}
@PutMapping(value = "/abandon")
@Operation(summary = "放弃任务")
@PreAuthorize("@ss.hasPermission('wms:transferissue-job-main:abandon')")
public CommonResult<Boolean> abandonTransferissueJobMain(@RequestParam("id") Long id) {
int result = transferissueJobMainService.abandonTransferissueJobMain(id);
return success(result > 0);
}
@PutMapping(value = "/close")
@Operation(summary = "关闭任务")
@PreAuthorize("@ss.hasPermission('wms:transferissue-job-main:close')")
public CommonResult<Boolean> closeTransferissueJobMain(@RequestParam("id") Long id) {
int result = transferissueJobMainService.closeTransferissueJobMain(id);
return success(result > 0);
}
@PutMapping("/execute")
@Operation(summary = "执行调拨出库任务主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:transferissue-job-main:execute')")
public CommonResult<String> executeTransferissueJobMain(@Valid @RequestBody TransferissueJobMainUpdateReqVO updateReqVO) {
String number = transferissueJobMainService.executeTransferissueJobMain(updateReqVO);
return success(number);
}
@PutMapping("/getExecuteJson")
@Operation(summary = "获取执行请求参数")
@Parameter(name = "id", description = "编号", required = true)
public CommonResult<TransferissueJobMainUpdateReqVO> getExecuteJson(@RequestParam("id") Long id) {
TransferissueJobMainUpdateReqVO updateReqVO = transferissueJobMainService.getExecuteJson(id);
return success(updateReqVO);
}
}

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/vo/TransferissueJobDetailUpdateReqVO.java

@ -9,4 +9,20 @@ import lombok.*;
@ToString(callSuper = true)
public class TransferissueJobDetailUpdateReqVO extends TransferissueJobDetailBaseVO {
@Schema(description = "实际收货数量")
private String toQty;
@Schema(description = "到包装")
private String toPackingNumber;
@Schema(description = "到包装")
private String toContainerNumber;
@Schema(description = "到批次")
private String toBatch;
@Schema(description = "到库存状态")
private String toInventoryStatus;
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/vo/TransferissueJobMainUpdateReqVO.java

@ -1,12 +1,18 @@
package com.win.module.wms.controller.transferissueJob.vo;
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailUpdateReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.Valid;
import java.util.List;
@Schema(description = "管理后台 - 调拨出库任务主更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class TransferissueJobMainUpdateReqVO extends TransferissueJobMainBaseVO {
@Schema(description = "子表数据")
private List<@Valid TransferissueJobDetailUpdateReqVO> subList;
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRecord/vo/TransferissueRecordDetailBaseVO.java

@ -77,6 +77,9 @@ public class TransferissueRecordDetailBaseVO {
@Schema(description = "计量单位")
private String uom;
@Schema(description = "主表ID")
private String masterId;
@Schema(description = "单据号")
private String number;

63
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/TransferissueRequestMainController.java

@ -22,7 +22,6 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
@ -60,6 +59,7 @@ public class TransferissueRequestMainController {
transferissueRequestMainService.updateTransferissueRequestMain(updateReqVO);
return success(true);
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得物品基本信息分页")
@PreAuthorize("@ss.hasPermission('wms:itembasic:query')")
@ -128,9 +128,9 @@ public class TransferissueRequestMainController {
List<TransferissueRequestMainImportVO> list = new ArrayList<>();
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRANSFER_MODE);
mapDropDown.put(2, transferMode);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(10, inventoryStatus);
mapDropDown.put(2, transferMode);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(10, inventoryStatus);
// 输出
ExcelUtils.write(response, "调拨出库申请信息导入模板.xlsx", "调拨出库申请信息列表", TransferissueRequestMainImportVO.class, list, mapDropDown);
}
@ -142,7 +142,7 @@ public class TransferissueRequestMainController {
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:purchase-plan-main:import')")
@PreAuthorize("@ss.hasPermission('wms:transferissue-request-main:import')")
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@ -160,5 +160,58 @@ public class TransferissueRequestMainController {
return success(returnMap);
}
@PutMapping("/close")
@Operation(summary = "关闭调拨出库申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:transferissue-request-main:close')")
public CommonResult<Boolean> closeTransferissueRequestMain(@RequestParam("id") Long id) {
Integer count = transferissueRequestMainService.closeTransferissueRequestMain(id);
return success(count > 0);
}
@PutMapping("/reAdd")
@Operation(summary = "重新添加调拨出库申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:transferissue-request-main:reAdd')")
public CommonResult<Boolean> reAddTransferissueRequestMain(@RequestParam("id") Long id) {
Integer count = transferissueRequestMainService.reAddTransferissueRequestMain(id);
return success(count > 0);
}
@PutMapping("/submit")
@Operation(summary = "提交调拨出库申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:transferissue-request-main:submit')")
public CommonResult<Boolean> submitTransferissueRequestMain(@RequestParam("id") Long id) {
Integer count = transferissueRequestMainService.submitTransferissueRequestMain(id);
return success(count > 0);
}
@PutMapping("/refused")
@Operation(summary = "审批拒绝调拨出库申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:transferissue-request-main:refused')")
public CommonResult<Boolean> abortTransferissueRequestMain(@RequestParam("id") Long id) {
Integer count = transferissueRequestMainService.abortTransferissueRequestMain(id);
return success(count > 0);
}
@PutMapping("/agree")
@Operation(summary = "审批通过调拨出库申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:transferissue-request-main:agree')")
public CommonResult<Boolean> agreeTransferissueRequestMain(@RequestParam("id") Long id) {
Integer count = transferissueRequestMainService.agreeTransferissueRequestMain(id);
return success(count > 0);
}
@PutMapping("/handle")
@Operation(summary = "处理调拨出库申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:transferissue-request-main:handle')")
public CommonResult<Boolean> handleTransferissueRequestMain(@RequestParam("id") Long id) {
Integer count = transferissueRequestMainService.handleTransferissueRequestMain(id);
return success(count > 0);
}
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailBaseVO.java

@ -88,4 +88,8 @@ public class TransferissueRequestDetailBaseVO {
@Schema(description = "master_id", example = "master_id")
private Long masterId;
@Schema(description = "来源库位", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "来源库位不能为空")
private String fromLocationCode;
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailPageReqVO.java

@ -79,4 +79,7 @@ public class TransferissueRequestDetailPageReqVO extends PageParam {
@Schema(description = "从货主代码")
private String fromOwnerCode;
@Schema(description = "主表ID")
private String masterId;
}

25
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainExcelVO.java

@ -1,16 +1,12 @@
package com.win.module.wms.controller.transferissueRequest.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
import lombok.Data;
import java.time.LocalDateTime;
/**
@ -25,11 +21,12 @@ public class TransferissueRequestMainExcelVO {
private String carrierCode;
@ExcelProperty(value = "运输方式", converter = DictConvert.class)
@DictFormat("transfer_mode") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.TRANSFER_MODE)
private String transferMode;
@ExcelProperty(value = "车牌号", converter = DictConvert.class)
@DictFormat("vehicle_plate_number") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
// @ExcelProperty(value = "车牌号", converter = DictConvert.class)
// @DictFormat(DictTypeConstants.VEHICLE_PLATE_NUMBER)
@ExcelProperty("车牌号")
private String vehiclePlateNumber;
@ExcelProperty("单据号")
@ -57,7 +54,7 @@ public class TransferissueRequestMainExcelVO {
private String departmentCode;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat("request_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.REQUEST_STATUS)
private String status;
@ExcelProperty("最后更新时间")
@ -73,7 +70,7 @@ public class TransferissueRequestMainExcelVO {
private String fromDockCode;
@ExcelProperty(value = "从库位类型范围", converter = DictConvert.class)
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.LOCATION_TYPE)
private String fromLocationTypes;
@ExcelProperty("从库区代码范围")
@ -83,7 +80,7 @@ public class TransferissueRequestMainExcelVO {
private String toWarehouseCode;
@ExcelProperty(value = "到库位类型范围", converter = DictConvert.class)
@DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.LOCATION_TYPE)
private String toLocationTypes;
@ExcelProperty("到库区代码范围")

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueJob/TransferissueJobDetailConvert.java

@ -8,6 +8,7 @@ import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobDetailC
import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobDetailExcelVO;
import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobDetailRespVO;
import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobDetailUpdateReqVO;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestDetailDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.transferissueJob.TransferissueJobDetailDO;
@ -34,4 +35,5 @@ public interface TransferissueJobDetailConvert {
List<TransferissueJobDetailExcelVO> convertList02(List<TransferissueJobDetailDO> list);
TransferissueJobDetailDO convert(TransferissueRequestDetailDO transferissueRequestDetailDO);
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueJob/TransferissueJobMainConvert.java

@ -8,6 +8,7 @@ import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobMainCre
import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobMainExcelVO;
import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobMainRespVO;
import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.transferissueJob.TransferissueJobMainDO;
@ -34,4 +35,6 @@ public interface TransferissueJobMainConvert {
List<TransferissueJobMainExcelVO> convertList02(List<TransferissueJobMainDO> list);
TransferissueJobMainDO convert(TransferissueRequestMainDO bean);
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/transferissueJob/TransferissueJobMainDO.java

@ -227,5 +227,14 @@ public class TransferissueJobMainDO extends BaseDO {
* 允许修改箱码
*/
private String allowModifyPackingNumber;
/**
* 入库库存状态范围
*/
private String inInventoryStatuses;
/**
* 出库库存状态范围
*/
private String outInventoryStatuses;
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/transferissueRequest/TransferissueRequestDetailDO.java

@ -107,5 +107,9 @@ public class TransferissueRequestDetailDO extends BaseDO {
* 从货主代码
*/
private String fromOwnerCode;
/**
* 从库位代码
*/
private String fromLocationCode;
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueJob/TransferissueJobDetailMapper.java

@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobDetailExportReqVO;
import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobDetailPageReqVO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO;
import com.win.module.wms.dal.dataobject.transferissueJob.TransferissueJobDetailDO;
import org.apache.ibatis.annotations.Mapper;
@ -71,4 +72,8 @@ public interface TransferissueJobDetailMapper extends BaseMapperX<TransferissueJ
.orderByDesc(TransferissueJobDetailDO::getId));
}
default List<TransferissueJobDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<TransferissueJobDetailDO>()
.eq(TransferissueJobDetailDO::getMasterId, masterId));
}
}

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestDetailMapper.java

@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestDetailExportReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestDetailPageReqVO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestDetailDO;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestDetailDO;
import org.apache.ibatis.annotations.Mapper;
@ -46,6 +47,7 @@ public interface TransferissueRequestDetailMapper extends BaseMapperX<Transferis
.betweenIfPresent(TransferissueRequestDetailDO::getUpdateTime, reqVO.getUpdateTime())
.eqIfPresent(TransferissueRequestDetailDO::getUpdater, reqVO.getUpdater())
.eqIfPresent(TransferissueRequestDetailDO::getFromOwnerCode, reqVO.getFromOwnerCode())
.eqIfPresent(TransferissueRequestDetailDO::getMasterId,reqVO.getMasterId())
.orderByDesc(TransferissueRequestDetailDO::getId));
}
@ -74,4 +76,9 @@ public interface TransferissueRequestDetailMapper extends BaseMapperX<Transferis
.orderByDesc(TransferissueRequestDetailDO::getId));
}
default List<TransferissueRequestDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<TransferissueRequestDetailDO>()
.eq(TransferissueRequestDetailDO::getMasterId, masterId));
}
}

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestMainMapper.java

@ -7,7 +7,9 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainExportReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainPageReqVO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO;
import com.win.module.wms.enums.order.OrderStatusEnum;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -87,4 +89,9 @@ public interface TransferissueRequestMainMapper extends BaseMapperX<Transferissu
.orderByDesc(TransferissueRequestMainDO::getId));
}
default Long selectByRequestNumber(String requestNumber) {
return selectCount(new LambdaQueryWrapperX<TransferissueRequestMainDO>()
.eq(TransferissueRequestMainDO::getNumber, requestNumber)
.ne(TransferissueRequestMainDO::getStatus, OrderStatusEnum.CLOSED.getCode()));
}
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobDetailService.java

@ -80,4 +80,10 @@ public interface TransferissueJobDetailService {
*/
List<TransferissueJobDetailDO> getTransferissueJobDetailList(TransferissueJobDetailExportReqVO exportReqVO);
/**
* 获取任务子表数据
* @param id
* @return
*/
List<TransferissueJobDetailDO> selectList(Long id);
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobDetailServiceImpl.java

@ -88,4 +88,9 @@ public class TransferissueJobDetailServiceImpl implements TransferissueJobDetail
return transferissueJobDetailMapper.selectList(exportReqVO);
}
@Override
public List<TransferissueJobDetailDO> selectList(Long masterId) {
return transferissueJobDetailMapper.selectList(masterId);
}
}

38
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobMainService.java

@ -79,6 +79,7 @@ public interface TransferissueJobMainService {
* @return 调拨出库任务主列表
*/
List<TransferissueJobMainDO> getTransferissueJobMainList(TransferissueJobMainExportReqVO exportReqVO);
/**
* 校验任务状态正确
*@author chenfang
@ -86,7 +87,7 @@ public interface TransferissueJobMainService {
* @param pstatus 状态
* @return 采购订单主列表
*/
public TransferissueJobMainDO transferissueJobMainDoStatusRight(String pnumber, String pstatus);
TransferissueJobMainDO transferissueJobMainDoStatusRight(String pnumber, String pstatus);
/**
*根据任务状态获取任务数量
@ -94,4 +95,39 @@ public interface TransferissueJobMainService {
* @return
*/
Map<String,Integer> getCountByStatus(@Nullable Collection<String> types);
/**
* 承接任务
* @param id 调拨出库任务主ID
* @return 更新数量
*/
int acceptTransferissueJobMain(Long id);
/**
* 关闭调拨出库任务
* @param id 调拨出库任务主ID
* @return 更新数量
*/
int closeTransferissueJobMain(Long id);
/**
* 放弃调拨出库任务
* @param id 调拨出库任务主ID
* @return 更新数量
*/
int abandonTransferissueJobMain(Long id);
/**
* 执行调拨出库任务
* @param updateReqVO 执行传参
* @return
*/
String executeTransferissueJobMain(TransferissueJobMainUpdateReqVO updateReqVO);
/**
* 获取执行请求参数
* @param id 调拨出库任务主ID
* @return 请求参数
*/
TransferissueJobMainUpdateReqVO getExecuteJson(Long id);
}

242
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobMainServiceImpl.java

@ -1,15 +1,41 @@
package com.win.module.wms.service.transferissueJob;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobMainCreateReqVO;
import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobMainExportReqVO;
import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobMainPageReqVO;
import com.win.module.wms.controller.transferissueJob.vo.TransferissueJobMainUpdateReqVO;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.controller.transferissueJob.vo.*;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.dataobject.transferissueJob.TransferissueJobDetailDO;
import com.win.module.wms.dal.dataobject.transferissueRecord.TransferissueRecordDetailDO;
import com.win.module.wms.dal.dataobject.transferissueRecord.TransferissueRecordMainDO;
import com.win.module.wms.dal.mysql.transferissueRecord.TransferissueRecordDetailMapper;
import com.win.module.wms.dal.mysql.transferissueRecord.TransferissueRecordMainMapper;
import com.win.module.wms.enums.job.JobStatusState;
import com.win.module.wms.service.expectin.ExpectinService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.recordsetting.RecordsettingService;
import com.win.module.wms.service.transaction.TransactionService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.validation.Valid;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import com.win.module.wms.dal.dataobject.transferissueJob.TransferissueJobMainDO;
@ -19,6 +45,7 @@ import com.win.module.wms.convert.transferissueJob.TransferissueJobMainConvert;
import com.win.module.wms.dal.mysql.transferissueJob.TransferissueJobMainMapper;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
@ -32,6 +59,29 @@ public class TransferissueJobMainServiceImpl implements TransferissueJobMainServ
@Resource
private TransferissueJobMainMapper transferissueJobMainMapper;
@Resource
private TrendsApi trendsApi;
@Resource
private AdminUserApi userApi;
@Resource
private TransferissueJobDetailService transferissueJobDetailService;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private TransferissueRecordMainMapper transferissueRecordMainMapper;
@Resource
private LocationService locationService;
@Resource
private JobUtils jobUtils;
@Resource
private TransactionService transactionService;
@Resource
private ExpectinService expectinService;
@Resource
private TransferissueRecordDetailMapper transferissueRecordDetailMapper;
@Resource
private RecordsettingService recordsettingService;
@Override
public Long createTransferissueJobMain(TransferissueJobMainCreateReqVO createReqVO) {
@ -62,10 +112,12 @@ public class TransferissueJobMainServiceImpl implements TransferissueJobMainServ
transferissueJobMainMapper.deleteById(id);
}
private void validateTransferissueJobMainExists(Long id) {
if (transferissueJobMainMapper.selectById(id) == null) {
private TransferissueJobMainDO validateTransferissueJobMainExists(Long id) {
TransferissueJobMainDO transferissueJobMainDO = transferissueJobMainMapper.selectById(id);
if (transferissueJobMainDO == null) {
throw exception(TRANSFERISSUE_JOB_MAIN_NOT_EXISTS);
}
return transferissueJobMainDO;
}
@Override
@ -108,4 +160,182 @@ public class TransferissueJobMainServiceImpl implements TransferissueJobMainServ
map.put("count", l.intValue());
return map;
}
@Transactional
@Override
public int acceptTransferissueJobMain(Long id) {
TransferissueJobMainDO transferissueJobMainDO = this.validateTransferissueJobMainExists(id);
JobStatusState jobStatusState = new JobStatusState(transferissueJobMainDO.getStatus());
if(!jobStatusState.accept()) {
throw exception(TRANSFERISSUE_JOB_MAIN_STATUS_ERROR);
}
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
transferissueJobMainDO.setStatus(jobStatusState.getState().getCode());
transferissueJobMainDO.setAcceptUserId(String.valueOf(userId));
transferissueJobMainDO.setAcceptUserName(userRespDTO.getNickname());
transferissueJobMainDO.setAcceptTime(LocalDateTime.now());
trendsApi.createTrends(id, "transferissueJob", "承接了调拨出库任务", TrendsTypeEnum.UPDATE);
return transferissueJobMainMapper.updateById(transferissueJobMainDO);
}
@Transactional
@Override
public int closeTransferissueJobMain(Long id) {
TransferissueJobMainDO transferissueJobMainDO = this.validateTransferissueJobMainExists(id);
JobStatusState jobStatusState = new JobStatusState(transferissueJobMainDO.getStatus());
if(!jobStatusState.close()) {
throw exception(TRANSFERISSUE_JOB_MAIN_STATUS_ERROR);
}
transferissueJobMainDO.setStatus(jobStatusState.getState().getCode());
trendsApi.createTrends(id, "transferissueJob", "关闭了调拨出库任务", TrendsTypeEnum.UPDATE);
return transferissueJobMainMapper.updateById(transferissueJobMainDO);
}
@Transactional
@Override
public int abandonTransferissueJobMain(Long id) {
TransferissueJobMainDO transferissueJobMainDO = this.validateTransferissueJobMainExists(id);
JobStatusState jobStatusState = new JobStatusState(transferissueJobMainDO.getStatus());
if(!jobStatusState.cancelAccept()) {
throw exception(TRANSFERISSUE_JOB_MAIN_STATUS_ERROR);
}
transferissueJobMainDO.setStatus(jobStatusState.getState().getCode());
transferissueJobMainDO.setAcceptUserId(null);
transferissueJobMainDO.setAcceptUserName(null);
transferissueJobMainDO.setAcceptTime(null);
trendsApi.createTrends(id, "transferissueJob", "取消了调拨出库任务", TrendsTypeEnum.UPDATE);
return transferissueJobMainMapper.updateById(transferissueJobMainDO);
}
@Transactional
@Override
public String executeTransferissueJobMain(TransferissueJobMainUpdateReqVO updateReqVO) {
// 查询任务主表与子表
TransferissueJobMainDO transferissueJobMainDO = this.validateTransferissueJobMainExists(updateReqVO.getId());
List<TransferissueJobDetailDO> subList = transferissueJobDetailService.selectList(transferissueJobMainDO.getId());
JobStatusState jobStatusState = new JobStatusState(transferissueJobMainDO.getStatus());
boolean flag = jobStatusState.execute();
if(!flag) {
throw new ServiceException(TRANSFERISSUE_JOB_MAIN_STATUS_ERROR);
}
//更新完成信息
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
transferissueJobMainDO.setStatus(jobStatusState.getState().getCode());
transferissueJobMainDO.setCompleteTime(LocalDateTime.now());
transferissueJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId()));
transferissueJobMainDO.setCompleteUserName(userRespDTO.getNickname());
//更新任务表状态
transferissueJobMainMapper.updateById(transferissueJobMainDO);
// 创建调拨发出记录
TransferissueRecordMainDO transferissueRecordMainDO = new TransferissueRecordMainDO();
BeanUtils.copyProperties(transferissueJobMainDO, transferissueRecordMainDO);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRecord");
transferissueRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType());
transferissueRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType());
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_REQUEST.getCode());
String interFaceType = recordsettingService.selectRecordsettingExist("TransferDeliverRecord").getInterfaceType();
transferissueRecordMainDO.setInterfaceType(interFaceType);
transferissueRecordMainDO.setNumber(number);
transferissueRecordMainDO.setBusinessType(businesstypeDO.getCode());
transferissueRecordMainDO.setJobNumber(transferissueJobMainDO.getNumber());
transferissueRecordMainDO.setExecuteTime(LocalDateTime.now());
transferissueRecordMainDO.setActiveDate(LocalDateTime.now());
transferissueRecordMainDO.setDueTime(transferissueJobMainDO.getRequestDueTime());
transferissueRecordMainDO.setAvailable("TRUE");
transferissueRecordMainDO.setId(null);
transferissueRecordMainDO.setCreateTime(null);
transferissueRecordMainDO.setCreator(null);
transferissueRecordMainDO.setUpdateTime(null);
transferissueRecordMainDO.setUpdater(null);
transferissueRecordMainMapper.insert(transferissueRecordMainDO);
// 创建调拨发出记录明细
List<TransferissueJobDetailUpdateReqVO> reqSubList = updateReqVO.getSubList();
List<TransferissueRecordDetailDO> transferissueRecordDetailDOList = new ArrayList<>();
//库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
for(TransferissueJobDetailDO transferissueJobDetailDO:subList) {
boolean isExists = false;
TransferissueJobDetailUpdateReqVO transferissueJobDetailUpdateReqVO = null;
for(TransferissueJobDetailUpdateReqVO temp:reqSubList) {
if(temp.getId().equals(transferissueJobDetailDO.getId())) {
transferissueJobDetailUpdateReqVO = temp;
isExists = true;
break;
}
}
if(isExists) {
TransferissueRecordDetailDO transferissueRecordDetailDO = new TransferissueRecordDetailDO();
BeanUtils.copyProperties(transferissueJobDetailUpdateReqVO, transferissueRecordDetailDO);
transferissueRecordDetailDO.setMasterId(String.valueOf(transferissueRecordMainDO.getId()));
transferissueRecordDetailDO.setNumber(number);
transferissueRecordDetailDO.setJobDetailId(String.valueOf(transferissueJobDetailDO.getId()));
transferissueRecordDetailDO.setFromPackingNumber(transferissueJobDetailDO.getPackingNumber());
transferissueRecordDetailDO.setToPackingNumber(transferissueJobDetailUpdateReqVO.getToPackingNumber());// toPackingNumber
transferissueRecordDetailDO.setFromContainerNumber(transferissueJobDetailUpdateReqVO.getContainerNumber());
transferissueRecordDetailDO.setToContainerNumber(transferissueJobDetailUpdateReqVO.getToContainerNumber()); // toContainerNumber
transferissueRecordDetailDO.setFromBatch(transferissueJobDetailDO.getBatch());
transferissueRecordDetailDO.setToBatch(transferissueJobDetailUpdateReqVO.getToBatch()); // toBatch
LocationDO locationDO1 = locationService.selectLocation(transferissueJobDetailDO.getFromLocationCode());
transferissueRecordDetailDO.setFromLocationCode(locationDO1.getCode());
transferissueRecordDetailDO.setFromAreaCode(locationDO1.getAreaCode());
transferissueRecordDetailDO.setFromLocationGroupCode(locationDO1.getLocationGroupCode());
LocationDO locationDO2 = locationService.selectLocation(transferissueJobDetailDO.getToLocationCode());//toLocationCode
transferissueRecordDetailDO.setToLocationCode(locationDO2.getCode());
transferissueRecordDetailDO.setToAreaCode(locationDO2.getAreaCode());
transferissueRecordDetailDO.setToLocationGroupCode(locationDO2.getLocationGroupCode());
transferissueRecordDetailDO.setInventoryStatus(transferissueJobDetailUpdateReqVO.getToInventoryStatus());//toInventoryStatus
transferissueRecordDetailDO.setQty(new BigDecimal(transferissueJobDetailUpdateReqVO.getToQty() == null?"0":transferissueJobDetailUpdateReqVO.getToQty()));//toQty
transferissueRecordDetailDOList.add(transferissueRecordDetailDO);
//添加库存事务list
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(transferissueRecordDetailDO, transactionCreateReqVO);
//增加业务类型
transactionCreateReqVO.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction());
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode());
transactionCreateReqVO.setBusinessType(transferissueRecordMainDO.getBusinessType());
transactionCreateReqVO.setLocationCode(transferissueRecordDetailDO.getToLocationCode());
transactionCreateReqVO.setOwnerCode(transferissueRecordDetailDO.getFromOwnerCode());
transactionCreateReqVO.setPackingNumber(transferissueJobDetailDO.getPackingNumber());
transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVO.setBatch(transferissueJobDetailDO.getBatch());
transactionCreateReqVO.setWarehouseCode(transferissueRecordMainDO.getToWarehouseCode());
transactionCreateReqVO.setRecordNumber(number);
transactionCreateReqVO.setId(null);
transactionCreateReqVOList.add(transactionCreateReqVO);
}
}
if(!transferissueRecordDetailDOList.isEmpty()) {
transferissueRecordDetailMapper.insertBatch(transferissueRecordDetailDOList);
}
//增加库存事务
transactionService.createTransaction(transactionCreateReqVOList);
//移除预计入
expectinService.deleteExpectinByJobNumber(transferissueJobMainDO.getNumber());
//变更记录
trendsApi.createTrends(transferissueJobMainDO.getId(), "transferissueJob", "执行调拨出库任务", TrendsTypeEnum.UPDATE);
return number;
}
@Override
public TransferissueJobMainUpdateReqVO getExecuteJson(Long id) {
TransferissueJobMainUpdateReqVO transferissueJobMainUpdateReqVO = new TransferissueJobMainUpdateReqVO();
TransferissueJobMainDO transferissueJobMainDO = this.validateTransferissueJobMainExists(id);
List<TransferissueJobDetailDO> subList = transferissueJobDetailService.selectList(transferissueJobMainDO.getId());
BeanUtils.copyProperties(transferissueJobMainDO,transferissueJobMainUpdateReqVO);
List<TransferissueJobDetailUpdateReqVO> transferissueJobDetailUpdateReqVOList = new ArrayList<>();
for(TransferissueJobDetailDO transferissueJobDetailDO:subList){
TransferissueJobDetailUpdateReqVO transferissueJobDetailUpdateReqVO = new TransferissueJobDetailUpdateReqVO();
BeanUtils.copyProperties(transferissueJobDetailDO,transferissueJobDetailUpdateReqVO);
transferissueJobDetailUpdateReqVOList.add(transferissueJobDetailUpdateReqVO);
}
transferissueJobMainUpdateReqVO.setSubList(transferissueJobDetailUpdateReqVOList);
return transferissueJobMainUpdateReqVO;
}
}

42
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainService.java

@ -84,7 +84,47 @@ public interface TransferissueRequestMainService {
* @param updatePart 是否支持更新
* @return 导入结果
*/
public List<TransferissueRequestMainImportErrorVO> importTransferissueRequestMainList(List<TransferissueRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
List<TransferissueRequestMainImportErrorVO> importTransferissueRequestMainList(List<TransferissueRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
/**
* 关闭调拨出库申请主
* @param id 调拨出库申请主ID
* @return 更新数量
*/
Integer closeTransferissueRequestMain(Long id);
/**
* 重新添加调拨出库申请主
* @param id 调拨出库申请主ID
* @return 更新数量
*/
Integer reAddTransferissueRequestMain(Long id);
/**
* 提交调拨出库申请主
* @param id 调拨出库申请主ID
* @return 更新数量
*/
Integer submitTransferissueRequestMain(Long id);
/**
* 审批拒绝调拨出库申请主
* @param id 调拨出库申请主ID
* @return 更新数量
*/
Integer abortTransferissueRequestMain(Long id);
/**
* 审批通过调拨出库申请主
* @param id 调拨出库申请主ID
* @return 更新数量
*/
Integer agreeTransferissueRequestMain(Long id);
/**
* 处理调拨出库申请主
* @param id 调拨出库申请主ID
* @return 更新数量
*/
Integer handleTransferissueRequestMain(Long id);
}

418
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainServiceImpl.java

@ -1,39 +1,57 @@
package com.win.module.wms.service.transferissueRequest;
import cn.hutool.core.collection.CollUtil;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.util.validation.ValidationUtils;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO;
import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO;
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO;
import com.win.module.wms.controller.transferissueRecord.vo.TransferissueRecordDetailCreateReqVO;
import com.win.module.wms.controller.transferissueRecord.vo.TransferissueRecordMainCreateReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.*;
import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert;
import com.win.module.wms.convert.transferissueJob.TransferissueJobDetailConvert;
import com.win.module.wms.convert.transferissueJob.TransferissueJobMainConvert;
import com.win.module.wms.convert.transferissueRecord.TransferissueRecordDetailConvert;
import com.win.module.wms.convert.transferissueRecord.TransferissueRecordMainConvert;
import com.win.module.wms.convert.transferissueRequest.TransferissueRequestDetailConvert;
import com.win.module.wms.convert.transferissueRequest.TransferissueRequestMainConvert;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO;
import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.transferissueJob.TransferissueJobDetailDO;
import com.win.module.wms.dal.dataobject.transferissueJob.TransferissueJobMainDO;
import com.win.module.wms.dal.dataobject.transferissueRecord.TransferissueRecordMainDO;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestDetailDO;
import com.win.module.wms.dal.dataobject.transferissueRequest.TransferissueRequestMainDO;
import com.win.module.wms.dal.mysql.transferissueJob.TransferissueJobDetailMapper;
import com.win.module.wms.dal.mysql.transferissueJob.TransferissueJobMainMapper;
import com.win.module.wms.dal.mysql.transferissueRecord.TransferissueRecordDetailMapper;
import com.win.module.wms.dal.mysql.transferissueRecord.TransferissueRecordMainMapper;
import com.win.module.wms.dal.mysql.transferissueRequest.TransferissueRequestDetailMapper;
import com.win.module.wms.dal.mysql.transferissueRequest.TransferissueRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.job.JobStatusEnum;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.expectin.ExpectinService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.jobsetting.JobsettingService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.recordsetting.RecordsettingService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.util.JobUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.Validator;
@ -42,14 +60,15 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.TIME_AFTER;
import static com.win.module.wms.enums.ErrorCodeConstants.TRANSFERISSUE_REQUEST_MAIN_NOT_EXISTS;
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
* 调拨出库申请主 Service 实现类
*
* @author 超级管理员
*/
@Slf4j
@Service
@Validated
public class TransferissueRequestMainServiceImpl implements TransferissueRequestMainService {
@ -59,6 +78,14 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
@Resource
private TransferissueRequestDetailMapper transferissueRequestDetailMapper;
@Resource
private TransferissueRecordMainMapper transferissueRecordMainMapper;
@Resource
private TransferissueRecordDetailMapper transferissueRecordDetailMapper;
@Resource
private TransferissueJobMainMapper transferissueJobMainMapper;
@Resource
private TransferissueJobDetailMapper transferissueJobDetailMapper;
@Resource
private LocationService locationService;
@Resource
private ItembasicService itembasicService;
@ -70,32 +97,56 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
private SerialNumberApi serialNumberApi;
@Resource
private RequestsettingService requestsettingService;
@Resource
private TrendsApi trendsApi;
@Resource
private JobsettingService jobsettingService;
@Resource
private AdminUserApi userApi;
@Resource
private ExpectinService expectinService;
@Resource
private RecordsettingService recordsettingService;
@Transactional
@Override
public Long createTransferissueRequestMain(TransferissueRequestMainCreateReqVO createReqVO) {
// Setting-----QReqs
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest");
TransferissueRequestMainDO transferissueRequestMainDO = validatorToCreate(createReqVO,requestsettingDO);
TransferissueRequestMainDO transferissueRequestMainDO = validatorToCreate(createReqVO,requestsettingDO);
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(transferissueRequestMainDO.getStatus())) {
List<TransferissueRequestDetailDO> detailDOList = transferissueRequestDetailMapper.selectList(transferissueRequestMainDO.getId());
this.generateJob(transferissueRequestMainDO,detailDOList);
}
trendsApi.createTrends(requestsettingDO.getId(), "TransferDeliverRequest", "增加了调拨出库申请", TrendsTypeEnum.CREATE);
return transferissueRequestMainDO.getId();
}
private TransferissueRequestMainDO validatorToCreate(TransferissueRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) {
public TransferissueRequestMainDO validatorToCreate(TransferissueRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) {
// DBT——>DBT3("TransferDeliverRequest")
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRequest");
TransferissueRequestMainDO transferissueRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO);
List<TransferissueRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<TransferissueRequestDetailDO> subDOList = TransferissueRequestDetailConvert.INSTANCE.convertList03(subList);
for(TransferissueRequestDetailDO transferissueRequestDetailDO: subDOList){
// 校验业务类型
validateDetailMethod(transferissueRequestDetailDO,businesstypeDO,transferissueRequestMainDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_REQUEST.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_REQUEST.getCode());
transferissueRequestMainDO.setNumber(number);
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute());
transferissueRequestMainDO.setStatus(requestStatusState.getState().getCode());
transferissueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit());
transferissueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree());
transferissueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute());
transferissueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
// 设置部门
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
transferissueRequestMainDO.setDepartmentCode(String.valueOf(userRespDTO.getDeptId()));
transferissueRequestMainDO.setStatus(requestStatusState.getState().getCode());
transferissueRequestMainMapper.insert(transferissueRequestMainDO);
for(TransferissueRequestDetailDO transferissueRequestDetailDO: subDOList){
transferissueRequestDetailDO.setMasterId(transferissueRequestMainDO.getId());
@ -105,26 +156,45 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
return transferissueRequestMainDO;
}
private void validateDetailMethod(TransferissueRequestDetailDO transferissueRequestDetailDO, BusinesstypeDO businesstypeDO, TransferissueRequestMainDO transferissueRequestMainDO) {
transferissueRequestDetailDO.setCreateTime(LocalDateTime.now());
// BQ——>QL 校验来源/目标库位基础信息
LocationDO tolocationDO = validatorLocation(transferissueRequestDetailDO.getToLocationCode());
if(tolocationDO == null){
throw exception(TRANSFERISSUE_REQUEST_DETAIL_LOCALTIONCODE_NOT_EXISTS, transferissueRequestDetailDO.getToLocationCode());
}
LocationDO fromlocationDO = validatorLocation(transferissueRequestDetailDO.getFromLocationCode());
if(fromlocationDO == null){
throw exception(TRANSFERISSUE_REQUEST_DETAIL_LOCALTIONCODE_NOT_EXISTS, transferissueRequestDetailDO.getFromLocationCode());
}
// BQ----QI 校验物品基础信息
ItembasicDO item = validatorItembasic(transferissueRequestDetailDO.getItemCode());
if(item == null){
throw exception(TRANSFERISSUE_REQUEST_DETAIL_ITEM_NOT_EXISTS, transferissueRequestDetailDO.getItemCode());
}
transferissueRequestDetailDO.setItemDesc1(item.getDesc1());
transferissueRequestDetailDO.setItemDesc2(item.getDesc2());
transferissueRequestDetailDO.setItemName(item.getName());
transferissueRequestDetailDO.setUom(item.getUom());
transferissueRequestDetailDO.setProjectCode(item.getProject());
validatorLocation(transferissueRequestDetailDO.getToLocationCode());
// DBT——>DBT2——>LO 校验来源库位
jobUtils.ifInToLocationType(transferissueRequestDetailDO.getFromLocationCode(), businesstypeDO);
// DBT——>DBT2——>LO 校验目标库位
jobUtils.ifInToLocationType(transferissueRequestDetailDO.getToLocationCode(), businesstypeDO);
// DBT——>DBT2——>SO 校验库存状态
jobUtils.ifOutInventoryStatuses(transferissueRequestDetailDO.getInventoryStatus(), businesstypeDO);
List<BalanceDO> balance = validatebalance(transferissueRequestDetailDO);
for(BalanceDO balancedo: balance ) {
// TB——>TB1 校验库存余额是否存在
List<BalanceDO> balance = validatebalance(transferissueRequestDetailDO);
for(BalanceDO balancedo: balance ) {
transferissueRequestMainDO.setFromWarehouseCode(balancedo.getWarehouseCode());
}
transferissueRequestMainDO.setBusinessType(businesstypeDO.getCode());
transferissueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
transferissueRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
transferissueRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
transferissueRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
}
private TransferissueRequestMainDO validateMainMethod(TransferissueRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){
TransferissueRequestMainDO transferissueRequestMainDO = TransferissueRequestMainConvert.INSTANCE.convert(baseVO);
RequestStatusState requestStatusState = new RequestStatusState();
@ -145,11 +215,8 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
return transferissueRequestMainDO;
}
@Override
@Transactional
public void updateTransferissueRequestMain(TransferissueRequestMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest");
// 校验存在
@ -157,12 +224,13 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
// 更新
TransferissueRequestMainDO transferissueRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO);
if(RequestStatusEnum.HANDLING.getCode().equals(transferissueRequestMainDO.getStatus())) {
List<TransferissueRequestDetailDO> detailDOList = transferissueRequestDetailMapper.selectList(transferissueRequestMainDO.getId());
this.generateJob(transferissueRequestMainDO,detailDOList);
}
trendsApi.createTrends(requestsettingDO.getId(), "TransferDeliverRequest", "增加了调拨出库申请", TrendsTypeEnum.CREATE);
}
private TransferissueRequestMainDO validatorToUpdate(TransferissueRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) {
public TransferissueRequestMainDO validatorToUpdate(TransferissueRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRequest");
TransferissueRequestMainDO transferissueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO);
//子表校验
@ -176,7 +244,6 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
}
transferissueRequestMainMapper.updateById(transferissueRequestMainDO);
return transferissueRequestMainDO;
}
@Override
@ -192,10 +259,12 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
transferissueRequestMainMapper.deleteById(id);
}
private void validateTransferissueRequestMainExists(Long id) {
if (transferissueRequestMainMapper.selectById(id) == null) {
private TransferissueRequestMainDO validateTransferissueRequestMainExists(Long id) {
TransferissueRequestMainDO transferissueRequestMainDO = transferissueRequestMainMapper.selectById(id);
if (transferissueRequestMainDO == null) {
throw exception(TRANSFERISSUE_REQUEST_MAIN_NOT_EXISTS);
}
return transferissueRequestMainDO;
}
@Override
@ -223,8 +292,7 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
}
private LocationDO validatorLocation(String Location){
return locationService.selectLocation(Location);
return locationService.selectLocation(Location);
}
private void validordurtime(LocalDateTime durtime){
@ -237,12 +305,21 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
StringBuilder message = new StringBuilder();
mainDo.setRequestTime(LocalDateTime.now());
mainDo.setCreateTime(LocalDateTime.now());
if (businesstypeDO == null) {
message.append("根据单据设置未查找到制品上架申请的相关业务类型");
} else {
mainDo.setBusinessType(businesstypeDO.getCode());
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes());
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes());
}
try {
validordurtime(mainDo.getDueTime());
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
// Setting-----QReqs
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("TransferDeliverRequest");
if (requestsettingDO == null) {
message.append("未查找到制品上架申请的相关申请设置");
@ -252,37 +329,43 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
mainDo.setAutoExecute(requestsettingDO.getAutoExecute());
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord());
}
if (businesstypeDO == null) {
message.append("根据单据设置未查找到制品上架申请的相关业务类型");
} else {
mainDo.setBusinessType(businesstypeDO.getCode());
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes());
mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes());
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes());
}
try {
ValidationUtils.validate(validator, mainDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
private List<BalanceDO> validatebalance(TransferissueRequestDetailDO detailDo){
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add(detailDo.getInventoryStatus());
List<BalanceDO> balanceDO = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getToLocationCode(), inventoryStatus);
return balanceDO;
}
private List<BalanceDO> validatebalance(TransferissueRequestDetailDO detailDo) {
List<String> inventoryStatus = new ArrayList<>();
inventoryStatus.add(detailDo.getInventoryStatus());
List<BalanceDO> balanceDO = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getToLocationCode(), inventoryStatus);
return balanceDO;
}
private String validateTransferissueRequestDetailImport(TransferissueRequestDetailDO detailDo, TransferissueRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
StringBuilder message = new StringBuilder();
detailDo.setCreateTime(LocalDateTime.now());
try{
// BQ——>QL 校验来源/目标库位基础信息
LocationDO tolocationDO = validatorLocation(detailDo.getToLocationCode());
if(tolocationDO == null){
throw exception(TRANSFERISSUE_REQUEST_DETAIL_LOCALTIONCODE_NOT_EXISTS, detailDo.getToLocationCode());
}
LocationDO fromlocationDO = validatorLocation(detailDo.getFromLocationCode());
if(fromlocationDO == null){
throw exception(TRANSFERISSUE_REQUEST_DETAIL_LOCALTIONCODE_NOT_EXISTS, detailDo.getFromLocationCode());
}
}catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
try{
//BQ----QI 校验物品基础信息
ItembasicDO item = validatorItembasic(detailDo.getItemCode());
if(item == null){
throw exception(TRANSFERISSUE_REQUEST_DETAIL_ITEM_NOT_EXISTS, detailDo.getItemCode());
}
detailDo.setItemDesc1(item.getDesc1());
detailDo.setItemDesc2(item.getDesc2());
detailDo.setItemName(item.getName());
@ -292,23 +375,27 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
message.append(ex.getMessage()).append(",");
}
try{
LocationDO location = validatorLocation(detailDo.getToLocationCode());
// DBT——>DBT2——>LO 校验来源库位
jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO);
}catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
try{
// DBT——>DBT2——>LO 校验目标库位
jobUtils.ifInToLocationType(detailDo.getToLocationCode(), businesstypeDO);
}catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
try{
// DBT——>DBT2——>SO 校验库存状态
jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO);
}catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
try{
List<BalanceDO> balance = validatebalance(detailDo);
for(BalanceDO balancedo: balance ){
// TB——>TB1 校验库存余额是否存在
List<BalanceDO> balance = validatebalance(detailDo);
for(BalanceDO balancedo: balance ){
mainDo.setFromWarehouseCode(balancedo.getWarehouseCode());
}
}catch (Exception ex) {
@ -317,15 +404,17 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
return message.toString();
}
@Override
@Transactional
public List<TransferissueRequestMainImportErrorVO> importTransferissueRequestMainList(List<TransferissueRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(TRANSFERISSUE_REQUEST_MAIN_NOT_EXISTS);
}
List<TransferissueRequestMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRequest");
TransferissueRequestMainDO mainDo = TransferissueRequestMainConvert.INSTANCE.convert(createReqVO);
// 校验业务类型是否存在
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRequest");
String messageMain = validateTransferissueRequestMainImport(mainDo, businesstypeDO);
List<TransferissueRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<TransferissueRequestDetailDO> subDOList = TransferissueRequestDetailConvert.INSTANCE.convertList03(subList);
@ -343,10 +432,14 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
}
//写入数据
if (flag) {
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_PUTAWAY_REQUEST.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_REQUEST.getCode());
mainDo.setNumber(number);
RequestStatusState requestStatusState = new RequestStatusState();
requestStatusState.newObject(mainDo.getAutoCommit(), mainDo.getAutoAgree(), mainDo.getAutoExecute());
// 设置部门
Long userId = getLoginUserId();
AdminUserRespDTO userRespDTO = userApi.getUser(userId);
mainDo.setDepartmentCode(String.valueOf(userRespDTO.getDeptId()));
mainDo.setStatus(requestStatusState.getState().getCode());
transferissueRequestMainMapper.insert(mainDo);
for (TransferissueRequestDetailDO detailDO : subDOList) {
@ -356,10 +449,225 @@ public class TransferissueRequestMainServiceImpl implements TransferissueRequest
transferissueRequestDetailMapper.insertBatch(subDOList);
}
});
// log.info("调拨出库申请错误信息:{}",errorList);
return errorList;
}
@Transactional
@Override
public Integer closeTransferissueRequestMain(Long id) {
// 校验存在存在下级单据
TransferissueRequestMainDO mainDO = validateTransferissueRequestMainExists(id);
Long count = transferissueRequestMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(TRANSFERISSUE_JOB_MAIN_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.close();
if(!flag) {
throw new ServiceException(TRANSFERISSUE_REQUEST_CANNOT_CLOSE);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, "transferissueRequest", "关闭了调拨出库申请", TrendsTypeEnum.UPDATE);
return transferissueRequestMainMapper.updateById(mainDO);
}
@Transactional
@Override
public Integer reAddTransferissueRequestMain(Long id) {
// 校验存在存在下级单据
TransferissueRequestMainDO mainDO = validateTransferissueRequestMainExists(id);
Long count = transferissueRequestMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(TRANSFERISSUE_JOB_MAIN_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.reAdd();
if(!flag) {
throw new ServiceException(TRANSFERISSUE_REQUEST_CANNOT_RE_ADD);
}
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
trendsApi.createTrends(id, "transferissueRequest", "打开了调拨出库申请", TrendsTypeEnum.UPDATE);
return transferissueRequestMainMapper.updateById(mainDO);
}
@Transactional
@Override
public Integer submitTransferissueRequestMain(Long id) {
TransferissueRequestMainDO mainDO = validateTransferissueRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute());
if(!flag) {
throw new ServiceException(TRANSFERISSUE_REQUEST_CANNOT_SUBMIT);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, transferissueRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "transferissueRequest", "提交了调拨出库申请", TrendsTypeEnum.UPDATE);
return transferissueRequestMainMapper.updateById(mainDO);
}
@Transactional
@Override
public Integer abortTransferissueRequestMain(Long id) {
// 校验存在
TransferissueRequestMainDO mainDO = validateTransferissueRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.refused();
if(!flag) {
throw new ServiceException(TRANSFERISSUE_REQUEST_CANNOT_ABORT);
}
mainDO.setStatus(requestStatusState.getState().getCode());
trendsApi.createTrends(id, "transferissueRequest", "审批拒绝了调拨出库申请", TrendsTypeEnum.UPDATE);
return transferissueRequestMainMapper.updateById(mainDO);
}
@Transactional
@Override
public Integer agreeTransferissueRequestMain(Long id) {
// 校验存在
TransferissueRequestMainDO mainDO = validateTransferissueRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.agree(mainDO.getAutoAgree());
if(!flag) {
throw new ServiceException(TRANSFERISSUE_REQUEST_CANNOT_AGREE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, transferissueRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "transferissueRequest", "审批同意了调拨出库申请", TrendsTypeEnum.UPDATE);
return transferissueRequestMainMapper.updateById(mainDO);
}
@Transactional
@Override
public Integer handleTransferissueRequestMain(Long id) {
// 校验存在
TransferissueRequestMainDO mainDO = validateTransferissueRequestMainExists(id);
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.handle();
if(!flag) {
throw new ServiceException(TRANSFERISSUE_REQUEST_CANNOT_HANDLE);
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用执行方法
this.generateJob(mainDO, transferissueRequestDetailMapper.selectList(mainDO.getId()));
trendsApi.createTrends(id, "transferissueRequest", "执行了调拨出库申请", TrendsTypeEnum.UPDATE);
return transferissueRequestMainMapper.updateById(mainDO);
}
/**
* 生成采购收货任务不要改动事务传播方式否则会有事务问题
* @param mainDO 采购收货主
* @param detailDOList 采购收货子
*/
private void generateJob(TransferissueRequestMainDO mainDO, List<TransferissueRequestDetailDO> detailDOList) {
//跳过任务直接生成记录
if("TRUE".equals(mainDO.getDirectCreateRecord())) {
TransferissueRecordMainCreateReqVO transferissueRecordMainCreateReqVO = new TransferissueRecordMainCreateReqVO();
BeanUtils.copyProperties(mainDO, transferissueRecordMainCreateReqVO);
transferissueRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber());
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_REQUEST.getCode());
transferissueRecordMainCreateReqVO.setNumber(number);
//增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverRecord");
transferissueRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode());
transferissueRecordMainCreateReqVO.setOutTransactionType(businesstypeDO.getOutTransactionType());
transferissueRecordMainCreateReqVO.setInTransactionType(businesstypeDO.getInTransactionType());
String interFaceType = recordsettingService.selectRecordsettingExist("TransferDeliverRecord").getInterfaceType();
transferissueRecordMainCreateReqVO.setInterfaceType(interFaceType);
transferissueRecordMainCreateReqVO.setExecuteTime(LocalDateTime.now());
transferissueRecordMainCreateReqVO.setActiveDate(LocalDateTime.now());
transferissueRecordMainCreateReqVO.setAvailable("TRUE");
transferissueRecordMainCreateReqVO.setDueTime(mainDO.getDueTime());
transferissueRecordMainCreateReqVO.setId(null);
transferissueRecordMainCreateReqVO.setCreator(null);
transferissueRecordMainCreateReqVO.setCreateTime(null);
TransferissueRecordMainDO transferissueRecordMainDO = TransferissueRecordMainConvert.INSTANCE.convert(transferissueRecordMainCreateReqVO);
transferissueRecordMainMapper.insert(transferissueRecordMainDO);
for(TransferissueRequestDetailDO transferissueRequestDetailDO : detailDOList) {
TransferissueRecordDetailCreateReqVO transferissueRecordDetailCreateReqVO = new TransferissueRecordDetailCreateReqVO();
BeanUtils.copyProperties(transferissueRequestDetailDO, transferissueRecordDetailCreateReqVO);
transferissueRecordDetailCreateReqVO.setNumber(number);
transferissueRecordDetailCreateReqVO.setMasterId(String.valueOf(transferissueRecordMainDO.getId()));
transferissueRecordDetailCreateReqVO.setFromPackingNumber(transferissueRequestDetailDO.getPackingNumber());
transferissueRecordDetailCreateReqVO.setToPackingNumber(transferissueRequestDetailDO.getPackingNumber());
transferissueRecordDetailCreateReqVO.setFromContainerNumber(transferissueRequestDetailDO.getContainerNumber());
transferissueRecordDetailCreateReqVO.setToContainerNumber(transferissueRequestDetailDO.getContainerNumber());
transferissueRecordDetailCreateReqVO.setFromBatch(transferissueRequestDetailDO.getBatch());
transferissueRecordDetailCreateReqVO.setToBatch(transferissueRequestDetailDO.getBatch());
transferissueRecordDetailCreateReqVO.setInventoryStatus(transferissueRequestDetailDO.getInventoryStatus());
transferissueRecordDetailCreateReqVO.setFromLocationGroupCode(transferissueRequestDetailDO.getFromLocationCode());
transferissueRecordDetailCreateReqVO.setFromAreaCode(transferissueRequestDetailDO.getFromLocationCode());
transferissueRecordDetailMapper.insert(TransferissueRecordDetailConvert.INSTANCE.convert(transferissueRecordDetailCreateReqVO));
}
return;
}
// 任务 主表数据创建
TransferissueJobMainDO transferissueJobMainDO = TransferissueJobMainConvert.INSTANCE.convert(mainDO);
BeanUtils.copyProperties(mainDO,transferissueJobMainDO);
// DBT——>DBT3("TransferDeliverJob")
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("TransferDeliverJob");
transferissueJobMainDO.setBusinessType(businesstypeDO.getCode());
// Setting——>QJobS("TransferDeliverJob")
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("TransferDeliverJob");
transferissueJobMainDO.setRequestNumber(mainDO.getNumber());
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_DELIVER_JOB.getCode());
transferissueJobMainDO.setDeliverDock(mainDO.getFromDockCode());//发货月台
transferissueJobMainDO.setRequestDueTime(mainDO.getDueTime());
transferissueJobMainDO.setNumber(number);
transferissueJobMainDO.setId(null);
transferissueJobMainDO.setCreateTime(null);
transferissueJobMainDO.setCreator(userApi.getUser(getLoginUserId()).getId().toString());
transferissueJobMainDO.setUpdateTime(null);
transferissueJobMainDO.setUpdater(null);
transferissueJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete());
transferissueJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation());
transferissueJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty());
transferissueJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty());
transferissueJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty());
transferissueJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus());
transferissueJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning());
transferissueJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete());
transferissueJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
transferissueJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
transferissueJobMainDO.setStatus(JobStatusEnum.PENDING.getCode());
transferissueJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());//入库库存状态范围
transferissueJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());//出库库存状态范围
transferissueJobMainMapper.insert(transferissueJobMainDO);
// 任务 子表数据创建
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
List<TransferissueJobDetailDO> transferissueJobDetailDOList = new ArrayList<>();
for(TransferissueRequestDetailDO transferissueRequestDetailDO:detailDOList){
TransferissueJobDetailDO transferissueJobDetailDO = TransferissueJobDetailConvert.INSTANCE.convert(transferissueRequestDetailDO);
BeanUtils.copyProperties(transferissueRequestDetailDO, transferissueJobDetailDO);
transferissueJobDetailDO.setId(null);
transferissueJobDetailDO.setCreator(userApi.getUser(getLoginUserId()).getId().toString());
transferissueJobDetailDO.setCreateTime(null);
transferissueJobDetailDO.setUpdater(null);
transferissueJobDetailDO.setUpdateTime(null);
transferissueJobDetailDO.setMasterId(transferissueJobMainDO.getId());
transferissueJobDetailDO.setNumber(number);
transferissueJobDetailDOList.add(transferissueJobDetailDO);
//预计出
ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO();
BeanUtils.copyProperties(transferissueJobDetailDO, expectinCreateReqVO);
expectinCreateReqVO.setJobNumber(number);
expectinCreateReqVO.setBusinessType(transferissueJobMainDO.getBusinessType());
expectinCreateReqVO.setLocationCode(transferissueJobDetailDO.getFromLocationCode());
expectinCreateReqVO.setOwnerCode(transferissueJobDetailDO.getFromOwnerCode());
expectinCreateReqVO.setQty(transferissueJobDetailDO.getQty());
expectinCreateReqVOList.add(expectinCreateReqVO);
}
transferissueJobDetailMapper.insertBatch(transferissueJobDetailDOList);
//增加预计入
expectinService.createExpectin(expectinCreateReqVOList);
trendsApi.createTrends(transferissueJobMainDO.getId(), "transferissueJob", "调拨出库申请生成调拨出库任务", TrendsTypeEnum.CREATE);
}
}

Loading…
Cancel
Save