diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java index 56288d2c..50535caf 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java +++ b/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";//工位类型 diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java index 0d1917ea..bce9d15c 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java +++ b/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, "调拨出库记录子不存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/TransferissueJobMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/TransferissueJobMainController.java index 1eb11012..22dfc3d3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/TransferissueJobMainController.java +++ b/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 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 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 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 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 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 getExecuteJson(@RequestParam("id") Long id) { + TransferissueJobMainUpdateReqVO updateReqVO = transferissueJobMainService.getExecuteJson(id); + return success(updateReqVO); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/vo/TransferissueJobDetailUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/vo/TransferissueJobDetailUpdateReqVO.java index a5e5bf3e..1bb7f54d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/vo/TransferissueJobDetailUpdateReqVO.java +++ b/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; + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/vo/TransferissueJobMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/vo/TransferissueJobMainUpdateReqVO.java index 896c76a9..2ecf15c5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueJob/vo/TransferissueJobMainUpdateReqVO.java +++ b/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; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRecord/vo/TransferissueRecordDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRecord/vo/TransferissueRecordDetailBaseVO.java index 2563778d..1840ab36 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRecord/vo/TransferissueRecordDetailBaseVO.java +++ b/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; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/TransferissueRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/TransferissueRequestMainController.java index a9a6e8b5..17c061ae 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/TransferissueRequestMainController.java +++ b/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 list = new ArrayList<>(); Map 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> 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 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 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 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 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 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 handleTransferissueRequestMain(@RequestParam("id") Long id) { + Integer count = transferissueRequestMainService.handleTransferissueRequestMain(id); + return success(count > 0); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailBaseVO.java index a351d2fd..6dd35676 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailBaseVO.java +++ b/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; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailPageReqVO.java index 8f47d902..7a4f88ee 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestDetailPageReqVO.java +++ b/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; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainExcelVO.java index e41d09e7..dc36bc32 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/transferissueRequest/vo/TransferissueRequestMainExcelVO.java +++ b/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("到库区代码范围") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueJob/TransferissueJobDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueJob/TransferissueJobDetailConvert.java index 7dcec6c9..4ce11477 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueJob/TransferissueJobDetailConvert.java +++ b/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 convertList02(List list); + TransferissueJobDetailDO convert(TransferissueRequestDetailDO transferissueRequestDetailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueJob/TransferissueJobMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueJob/TransferissueJobMainConvert.java index 95346643..f9195425 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/transferissueJob/TransferissueJobMainConvert.java +++ b/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 convertList02(List list); + TransferissueJobMainDO convert(TransferissueRequestMainDO bean); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/transferissueJob/TransferissueJobMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/transferissueJob/TransferissueJobMainDO.java index ea927fee..d0f2c9c4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/transferissueJob/TransferissueJobMainDO.java +++ b/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; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/transferissueRequest/TransferissueRequestDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/transferissueRequest/TransferissueRequestDetailDO.java index 4e544854..654b519a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/transferissueRequest/TransferissueRequestDetailDO.java +++ b/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; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueJob/TransferissueJobDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueJob/TransferissueJobDetailMapper.java index 6d8db93b..f756faeb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueJob/TransferissueJobDetailMapper.java +++ b/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 selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(TransferissueJobDetailDO::getMasterId, masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestDetailMapper.java index e80795e2..447f827a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestDetailMapper.java +++ b/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 selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(TransferissueRequestDetailDO::getMasterId, masterId)); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestMainMapper.java index 45f51df0..75dd53ab 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/transferissueRequest/TransferissueRequestMainMapper.java +++ b/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() + .eq(TransferissueRequestMainDO::getNumber, requestNumber) + .ne(TransferissueRequestMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobDetailService.java index 62c0f47d..ad071adc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobDetailService.java +++ b/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 getTransferissueJobDetailList(TransferissueJobDetailExportReqVO exportReqVO); + /** + * 获取任务子表数据 + * @param id + * @return + */ + List selectList(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobDetailServiceImpl.java index 6d27e024..e7f8296f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobDetailServiceImpl.java +++ b/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 selectList(Long masterId) { + return transferissueJobDetailMapper.selectList(masterId); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobMainService.java index f0b6913d..5dc2b75a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobMainService.java +++ b/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 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 getCountByStatus(@Nullable Collection 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); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobMainServiceImpl.java index 6df83816..d0379568 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueJob/TransferissueJobMainServiceImpl.java +++ b/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 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 reqSubList = updateReqVO.getSubList(); + List transferissueRecordDetailDOList = new ArrayList<>(); + + //库存事务 + List 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 subList = transferissueJobDetailService.selectList(transferissueJobMainDO.getId()); + BeanUtils.copyProperties(transferissueJobMainDO,transferissueJobMainUpdateReqVO); + List transferissueJobDetailUpdateReqVOList = new ArrayList<>(); + for(TransferissueJobDetailDO transferissueJobDetailDO:subList){ + TransferissueJobDetailUpdateReqVO transferissueJobDetailUpdateReqVO = new TransferissueJobDetailUpdateReqVO(); + BeanUtils.copyProperties(transferissueJobDetailDO,transferissueJobDetailUpdateReqVO); + transferissueJobDetailUpdateReqVOList.add(transferissueJobDetailUpdateReqVO); + } + transferissueJobMainUpdateReqVO.setSubList(transferissueJobDetailUpdateReqVOList); + return transferissueJobMainUpdateReqVO; + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainService.java index ea663e61..72ed9634 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainService.java +++ b/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 importTransferissueRequestMainList(List datas, Integer mode, boolean updatePart); + List importTransferissueRequestMainList(List 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); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainServiceImpl.java index fa079ba5..223d3955 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/transferissueRequest/TransferissueRequestMainServiceImpl.java +++ b/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 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 subList = createReqVO.getSubList(); List 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 balance = validatebalance(transferissueRequestDetailDO); - for(BalanceDO balancedo: balance ) { + // TB——>TB1 校验库存余额是否存在 + List 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 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 validatebalance(TransferissueRequestDetailDO detailDo){ - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add(detailDo.getInventoryStatus()); - List balanceDO = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getToLocationCode(), inventoryStatus); - return balanceDO; - } + private List validatebalance(TransferissueRequestDetailDO detailDo) { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add(detailDo.getInventoryStatus()); + List 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 balance = validatebalance(detailDo); - for(BalanceDO balancedo: balance ){ + // TB——>TB1 校验库存余额是否存在 + List 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 importTransferissueRequestMainList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { throw exception(TRANSFERISSUE_REQUEST_MAIN_NOT_EXISTS); } List 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 subList = createReqVO.getSubList(); List 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 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 expectinCreateReqVOList = new ArrayList<>(); + List 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); + } }