diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobDetailController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobDetailController.java index 82e34c52..be7bcbaf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobDetailController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobDetailController.java @@ -41,30 +41,6 @@ public class IssueJobDetailController { @Resource private AdminUserApi userApi; - @PostMapping("/create") - @Operation(summary = "创建发料任务子") - @PreAuthorize("@ss.hasPermission('wms:issue-job-detail:create')") - public CommonResult createIssueJobDetail(@Valid @RequestBody IssueJobDetailCreateReqVO createReqVO) { - return success(issueJobDetailService.createIssueJobDetail(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新发料任务子") - @PreAuthorize("@ss.hasPermission('wms:issue-job-detail:update')") - public CommonResult updateIssueJobDetail(@Valid @RequestBody IssueJobDetailUpdateReqVO updateReqVO) { - issueJobDetailService.updateIssueJobDetail(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除发料任务子") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('wms:issue-job-detail:delete')") - public CommonResult deleteIssueJobDetail(@RequestParam("id") Long id) { - issueJobDetailService.deleteIssueJobDetail(id); - return success(true); - } - @GetMapping("/get") @Operation(summary = "获得发料任务子") @Parameter(name = "id", description = "编号", required = true, example = "1024") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobMainController.java index 266b4142..cc1e1801 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/IssueJobMainController.java @@ -1,10 +1,17 @@ package com.win.module.wms.controller.issueJob; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.dict.core.util.DictFrameworkUtils; 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.purchasereceiptRequest.vo.PurchasereceiptRequestMainExcelVO; import com.win.module.wms.convert.issueJob.IssueJobDetailConvert; +import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert; import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.issueJob.IssueJobDetailService; import jodd.util.StringUtil; import org.springframework.web.bind.annotation.*; @@ -48,30 +55,6 @@ public class IssueJobMainController { @Resource private AdminUserApi userApi; - @PostMapping("/create") - @Operation(summary = "创建发料任务主") - @PreAuthorize("@ss.hasPermission('wms:issue-job-main:create')") - public CommonResult createIssueJobMain(@Valid @RequestBody IssueJobMainCreateReqVO createReqVO) { - return success(issueJobMainService.createIssueJobMain(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新发料任务主") - @PreAuthorize("@ss.hasPermission('wms:issue-job-main:update')") - public CommonResult updateIssueJobMain(@Valid @RequestBody IssueJobMainUpdateReqVO updateReqVO) { - issueJobMainService.updateIssueJobMain(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除发料任务主") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('wms:issue-job-main:delete')") - public CommonResult deleteIssueJobMain(@RequestParam("id") Long id) { - issueJobMainService.deleteIssueJobMain(id); - return success(true); - } - @GetMapping("/get") @Operation(summary = "获得发料任务主") @Parameter(name = "id", description = "编号", required = true, example = "1024") @@ -111,6 +94,40 @@ public class IssueJobMainController { } return success(result); } + + private List getExcelVo(List list, Map mapDropDown) { + String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(17, locationType); + mapDropDown.put(18, locationType); + String[] areaType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.AREA_TYPE); + mapDropDown.put(24, areaType); + mapDropDown.put(25, areaType); + String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(26, trueFalse); + mapDropDown.put(27, trueFalse); + mapDropDown.put(28, trueFalse); + mapDropDown.put(29, trueFalse); + mapDropDown.put(30, trueFalse); + mapDropDown.put(31, trueFalse); + mapDropDown.put(32, trueFalse); + mapDropDown.put(33, trueFalse); + mapDropDown.put(34, trueFalse); + mapDropDown.put(35, trueFalse); + mapDropDown.put(36, trueFalse); + List resultList = new ArrayList<>(); + // 导出 + for(IssueJobMainDO mainDO : list) { + List subList = issueJobDetailService.selectList(mainDO.getId()); + for(IssueJobDetailDO detailDO : subList) { + IssueJobMainExcelVO vo = IssueJobMainConvert.INSTANCE.convert(mainDO, detailDO); + AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator())); + vo.setCreator(user.getNickname()); + resultList.add(vo); + } + } + return resultList; + } + @GetMapping("/export-excel") @Operation(summary = "导出发料任务主 Excel") @PreAuthorize("@ss.hasPermission('wms:issue-job-main:export')") @@ -118,14 +135,24 @@ public class IssueJobMainController { public void exportIssueJobMainExcel(@Valid IssueJobMainExportReqVO exportReqVO, HttpServletResponse response) throws IOException { List list = issueJobMainService.getIssueJobMainList(exportReqVO); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); // 导出 Excel - List datas = IssueJobMainConvert.INSTANCE.convertList02(list); - for(IssueJobMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "发料任务主.xls", "数据", IssueJobMainExcelVO.class, datas); + ExcelUtils.write(response, "发料任务.xlsx", "发料任务", IssueJobMainExcelVO.class, resultList, mapDropDown); + } + + @PostMapping("/export-excel-senior") + @Operation(summary = "导出发料任务 Excel") + @PreAuthorize("@ss.hasPermission('wms:issue-job-main:export')") + @OperateLog(type = EXPORT) + public void exportIssueJobMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = issueJobMainService.getIssueJobMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "发料任务.xlsx", "发料任务", IssueJobMainExcelVO.class, resultList, mapDropDown); } @GetMapping("/getIssueJobById") @@ -161,4 +188,36 @@ public class IssueJobMainController { return success(countByStatus); } + @GetMapping(value = "/accept") + @Operation(summary = "承接任务") + @PreAuthorize("@ss.hasPermission('wms:issue-job-main:accept')") + public CommonResult acceptIssueJobMain(@RequestParam("id") Long id) { + int result = issueJobMainService.acceptIssueJobMain(id); + return success(result > 0); + } + + @GetMapping(value = "/abandon") + @Operation(summary = "放弃任务") + @PreAuthorize("@ss.hasPermission('wms:issue-job-main:abandon')") + public CommonResult abandonIssueJobMain(@RequestParam("id") Long id) { + int result = issueJobMainService.abandonIssueJobMain(id); + return success(result > 0); + } + + @GetMapping(value = "/close") + @Operation(summary = "关闭任务") + @PreAuthorize("@ss.hasPermission('wms:issue-job-main:close')") + public CommonResult closeIssueJobMain(@RequestParam("id") Long id) { + int result = issueJobMainService.closeIssueJobMain(id); + return success(result > 0); + } + + @PutMapping("/execute") + @Operation(summary = "执行任务") + @PreAuthorize("@ss.hasPermission('wms:issue-job-main:execute')") + public CommonResult executeIssueJobMain(@Valid @RequestBody IssueJobMainUpdateReqVO updateReqVO) { + Integer count = issueJobMainService.executeIssueJobMain(updateReqVO); + return success(count > 0); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobDetailUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobDetailUpdateReqVO.java index 63b23e9c..1313d536 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobDetailUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobDetailUpdateReqVO.java @@ -3,10 +3,16 @@ package com.win.module.wms.controller.issueJob.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import javax.validation.Valid; +import java.util.List; +import java.util.Map; + @Schema(description = "管理后台 - 发料任务子更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class IssueJobDetailUpdateReqVO extends IssueJobDetailBaseVO { + @Schema(description = "子表记录数据") + private List> recordLst; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainBaseVO.java index de6f8ebd..dbd31bc8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainBaseVO.java @@ -60,9 +60,6 @@ public class IssueJobMainBaseVO { @Schema(description = "最后更新者Id") private String updater; - @Schema(description = "状态") - private String jobStageStatus; - @Schema(description = "优先级") private Integer priority; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainExcelVO.java index 84ca6ddc..1837c864 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainExcelVO.java @@ -1,5 +1,7 @@ package com.win.module.wms.controller.issueJob.vo; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.job.JobStatusConverter; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -42,8 +44,7 @@ public class IssueJobMainExcelVO { @ExcelProperty("要求截止时间") private LocalDateTime requestDueTime; - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("job_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty(value = "状态", converter = JobStatusConverter.class) private String status; @ExcelProperty("过期时间") @@ -55,10 +56,6 @@ public class IssueJobMainExcelVO { @ExcelProperty("最后更新者Id") private String updater; - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("job_stage_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String jobStageStatus; - @ExcelProperty("优先级") private Integer priority; @@ -81,11 +78,11 @@ public class IssueJobMainExcelVO { private LocalDateTime completeTime; @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.LOCATION_TYPE) private String fromLocationTypes; @ExcelProperty(value = "到库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.LOCATION_TYPE) private String toLocationTypes; @ExcelProperty("单据号") @@ -103,43 +100,123 @@ public class IssueJobMainExcelVO { @ExcelProperty("创建者id") private String creator; - @ExcelProperty("从库区代码范围") + @ExcelProperty(value = "从库区代码范围", converter = DictConvert.class) + @DictFormat(DictTypeConstants.AREA_TYPE) private String fromAreaCodes; - @ExcelProperty("到库区代码范围") + @ExcelProperty(value = "到库区代码范围", converter = DictConvert.class) + @DictFormat(DictTypeConstants.AREA_TYPE) private String toAreaCodes; - @ExcelProperty("使用在途库") + @ExcelProperty(value = "使用在途库", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String useOnTheWayLocation; - @ExcelProperty("自动完成") + @ExcelProperty(value = "自动完成", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String autoComplete; - @ExcelProperty("允许修改库位") + @ExcelProperty(value = "允许修改库位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyLocation; - @ExcelProperty("允许修改数量") + @ExcelProperty(value = "允许修改数量", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyQty; - @ExcelProperty("允许大于推荐数量") + @ExcelProperty(value = "允许大于推荐数量", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowBiggerQty; - @ExcelProperty("允许小于推荐数量") + @ExcelProperty(value = "允许小于推荐数量", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowSmallerQty; - @ExcelProperty("允许修改库存状态") + @ExcelProperty(value = "允许修改库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyInventoryStatus; - @ExcelProperty("允许连续扫描") + @ExcelProperty(value = "允许连续扫描", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowContinuousScanning; - @ExcelProperty("允许部分完成") + @ExcelProperty(value = "允许部分完成", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowPartialComplete; - @ExcelProperty("允许修改箱码") + @ExcelProperty(value = "允许修改箱码", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyPackingNumber; - @ExcelProperty("允许修改批次") + @ExcelProperty(value = "允许修改批次", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyBatch; + @ExcelProperty("生产线代码") + private String productionLineCode; + + @ExcelProperty("工位代码") + private String workStationCode; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty(value = "在途库库位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String onTheWayLocationCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("标包数量") + private String stdPackQty; + + @ExcelProperty("标包单位") + private String stdPackUnit; + + @ExcelProperty("供应商计量数量") + private String supplierQty; + + @ExcelProperty("供应商计量单位") + private String supplierUom; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private String qty; + + @ExcelProperty("计量单位") + private String uom; + + @ExcelProperty("从货主代码") + private String fromOwnerCode; + + @ExcelProperty("到货主代码") + private String toOwnerCode; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainUpdateReqVO.java index f8f7c344..ba495e14 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueJob/vo/IssueJobMainUpdateReqVO.java @@ -1,12 +1,17 @@ package com.win.module.wms.controller.issueJob.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 IssueJobMainUpdateReqVO extends IssueJobMainBaseVO { - + @Schema(description = "子表数据") + private List<@Valid IssueJobDetailUpdateReqVO> subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordDetailController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordDetailController.java index cf251b29..e763301c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordDetailController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordDetailController.java @@ -41,30 +41,6 @@ public class IssueRecordDetailController { @Resource private AdminUserApi userApi; - @PostMapping("/create") - @Operation(summary = "创建发料记录子") - @PreAuthorize("@ss.hasPermission('wms:issue-record-detail:create')") - public CommonResult createIssueRecordDetail(@Valid @RequestBody IssueRecordDetailCreateReqVO createReqVO) { - return success(issueRecordDetailService.createIssueRecordDetail(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新发料记录子") - @PreAuthorize("@ss.hasPermission('wms:issue-record-detail:update')") - public CommonResult updateIssueRecordDetail(@Valid @RequestBody IssueRecordDetailUpdateReqVO updateReqVO) { - issueRecordDetailService.updateIssueRecordDetail(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除发料记录子") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('wms:issue-record-detail:delete')") - public CommonResult deleteIssueRecordDetail(@RequestParam("id") Long id) { - issueRecordDetailService.deleteIssueRecordDetail(id); - return success(true); - } - @GetMapping("/get") @Operation(summary = "获得发料记录子") @Parameter(name = "id", description = "编号", required = true, example = "1024") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordMainController.java index d3711b7e..af651a5b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/IssueRecordMainController.java @@ -1,8 +1,12 @@ package com.win.module.wms.controller.issueRecord; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.issueRecord.IssueRecordDetailService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -36,36 +40,14 @@ import com.win.module.wms.service.issueRecord.IssueRecordMainService; @Validated public class IssueRecordMainController { + @Resource + private IssueRecordDetailService issueRecordDetailService; @Resource private IssueRecordMainService issueRecordMainService; @Resource private AdminUserApi userApi; - @PostMapping("/create") - @Operation(summary = "创建发料记录主") - @PreAuthorize("@ss.hasPermission('wms:issue-record-main:create')") - public CommonResult createIssueRecordMain(@Valid @RequestBody IssueRecordMainCreateReqVO createReqVO) { - return success(issueRecordMainService.createIssueRecordMain(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新发料记录主") - @PreAuthorize("@ss.hasPermission('wms:issue-record-main:update')") - public CommonResult updateIssueRecordMain(@Valid @RequestBody IssueRecordMainUpdateReqVO updateReqVO) { - issueRecordMainService.updateIssueRecordMain(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除发料记录主") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('wms:issue-record-main:delete')") - public CommonResult deleteIssueRecordMain(@RequestParam("id") Long id) { - issueRecordMainService.deleteIssueRecordMain(id); - return success(true); - } - @GetMapping("/get") @Operation(summary = "获得发料记录主") @Parameter(name = "id", description = "编号", required = true, example = "1024") @@ -105,21 +87,53 @@ public class IssueRecordMainController { } return success(result); } + + private List getExcelVo(List list, Map mapDropDown) { + String[] useOnTheWayLocation = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(21, useOnTheWayLocation); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(28, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(49, uom); + List resultList = new ArrayList<>(); + // 导出 + for(IssueRecordMainDO mainDO : list) { + List subList = issueRecordDetailService.selectList(mainDO.getId()); + for(IssueRecordDetailDO detailDO : subList) { + IssueRecordMainExcelVO vo = IssueRecordMainConvert.INSTANCE.convert(mainDO, detailDO); + AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator())); + vo.setCreator(user.getNickname()); + resultList.add(vo); + } + } + return resultList; + } + @GetMapping("/export-excel") - @Operation(summary = "导出发料记录主 Excel") + @Operation(summary = "导出发料记录 Excel") @PreAuthorize("@ss.hasPermission('wms:issue-record-main:export')") @OperateLog(type = EXPORT) public void exportIssueRecordMainExcel(@Valid IssueRecordMainExportReqVO exportReqVO, HttpServletResponse response) throws IOException { List list = issueRecordMainService.getIssueRecordMainList(exportReqVO); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); // 导出 Excel - List datas = IssueRecordMainConvert.INSTANCE.convertList02(list); - for(IssueRecordMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "发料记录主.xls", "数据", IssueRecordMainExcelVO.class, datas); + ExcelUtils.write(response, "发料记录.xlsx", "发料记录", IssueRecordMainExcelVO.class, resultList, mapDropDown); + } + + @PostMapping("/export-excel-senior") + @Operation(summary = "导出发料记录 Excel") + @PreAuthorize("@ss.hasPermission('wms:issue-record-main:export')") + @OperateLog(type = EXPORT) + public void exportIssueRecordMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = issueRecordMainService.getIssueRecordMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "发料记录.xlsx", "发料记录", IssueRecordMainExcelVO.class, resultList, mapDropDown); } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordMainExcelVO.java index a64c2030..c10cc77d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordMainExcelVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.issueRecord.vo; +import com.win.module.wms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -52,10 +53,6 @@ public class IssueRecordMainExcelVO { @ExcelProperty("部门") private String departmentCode; - @ExcelProperty(value = "接口类型", converter = DictConvert.class) - @DictFormat("interface_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String interfaceType; - @ExcelProperty("单据号") private String number; @@ -71,14 +68,10 @@ public class IssueRecordMainExcelVO { @ExcelProperty("创建者Id") private String creator; - @ExcelProperty("代码") - private String code; - @ExcelProperty("从仓库代码") private String fromWarehouseCode; - @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty(value = "从库位类型范围") private String fromLocationTypes; @ExcelProperty("从库区代码范围") @@ -87,17 +80,99 @@ public class IssueRecordMainExcelVO { @ExcelProperty("到仓库代码") private String toWarehouseCode; - @ExcelProperty(value = "到库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty(value = "到库位类型范围") private String toLocationTypes; @ExcelProperty("到库区代码范围") private String toAreaCodes; - @ExcelProperty("使用在途库") + @ExcelProperty(value = "使用在途库", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String useOnTheWayLocation; @ExcelProperty("是否可用") private String available; + @ExcelProperty("最后更新时间") + private LocalDateTime updateTime; + + @ExcelProperty("最后更新者Id") + private String updater; + + @ExcelProperty("生产线代码") + private String productionLineCode; + + @ExcelProperty("工位代码") + private String workStationCode; + + @ExcelProperty("在途库库位") + private String onTheWayLocationCode; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("从货主代码") + private String fromOwnerCode; + + @ExcelProperty("到货主代码") + private String toOwnerCode; + + @ExcelProperty("从包装号") + private String fromPackingNumber; + + @ExcelProperty("到包装号") + private String toPackingNumber; + + @ExcelProperty("从器具号") + private String fromContainerNumber; + + @ExcelProperty("到器具号") + private String toContainerNumber; + + @ExcelProperty("从批次") + private String fromBatch; + + @ExcelProperty("到批次") + private String toBatch; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + @ExcelProperty("从库位组代码") + private String fromLocationGroupCode; + + @ExcelProperty("到库位组代码") + private String toLocationGroupCode; + + @ExcelProperty("从库区代码") + private String fromAreaCode; + + @ExcelProperty("到库区代码") + private String toAreaCode; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private String qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueJob/IssueJobMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueJob/IssueJobMainConvert.java index a274a8e1..fac482b6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueJob/IssueJobMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueJob/IssueJobMainConvert.java @@ -8,7 +8,13 @@ import com.win.module.wms.controller.issueJob.vo.IssueJobMainCreateReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainExcelVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainRespVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainUpdateReqVO; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainExcelVO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; @@ -34,4 +40,14 @@ public interface IssueJobMainConvert { List convertList02(List list); + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + }) + IssueJobMainExcelVO convert(IssueJobMainDO mainDO, IssueJobDetailDO detailDO); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRecord/IssueRecordMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRecord/IssueRecordMainConvert.java index ac8003eb..169dcfeb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRecord/IssueRecordMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRecord/IssueRecordMainConvert.java @@ -8,7 +8,13 @@ import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainCreateReqVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainExcelVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainRespVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainUpdateReqVO; +import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainExcelVO; +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; @@ -34,4 +40,14 @@ public interface IssueRecordMainConvert { List convertList02(List list); + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + }) + IssueRecordMainExcelVO convert(IssueRecordMainDO mainDO, IssueRecordDetailDO detailDO); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRecord/IssueRecordDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRecord/IssueRecordDetailDO.java index 64c1eddc..cd84ee92 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRecord/IssueRecordDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/issueRecord/IssueRecordDetailDO.java @@ -103,7 +103,7 @@ public class IssueRecordDetailDO extends BaseDO { /** * 主表ID */ - private String masterId; + private Long masterId; /** * 单据号 */ @@ -161,4 +161,9 @@ public class IssueRecordDetailDO extends BaseDO { */ private String jobDetailId; + /** + * 供应商代码 + */ + private String supplierCode; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/onlinesettlementRecord/OnlinesettlementRecordDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/onlinesettlementRecord/OnlinesettlementRecordDetailDO.java index 011741a7..c122e135 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/onlinesettlementRecord/OnlinesettlementRecordDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/onlinesettlementRecord/OnlinesettlementRecordDetailDO.java @@ -89,7 +89,7 @@ public class OnlinesettlementRecordDetailDO extends BaseDO { /** * 主表ID */ - private String masterId; + private Long masterId; /** * 单据号 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreceiptJob/ProductionreceiptJobMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreceiptJob/ProductionreceiptJobMainDO.java index 0fb218a4..780bd89d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreceiptJob/ProductionreceiptJobMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreceiptJob/ProductionreceiptJobMainDO.java @@ -36,6 +36,10 @@ public class ProductionreceiptJobMainDO extends BaseDO { * 发料任务单号 */ private String issueJobNumber; + /** + * 发料记录单号 + */ + private String issueRecordNumber; /** * 车间代码 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobDetailMapper.java index ad45e29e..e07ce88e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobDetailMapper.java @@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.issueJob.vo.IssueJobDetailExportReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobDetailPageReqVO; import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; import org.apache.ibatis.annotations.Mapper; /** @@ -86,4 +87,9 @@ public interface IssueJobDetailMapper extends BaseMapperX { .orderByDesc(IssueJobDetailDO::getId)); } + default List selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(IssueJobDetailDO::getMasterId, masterId)); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobMainMapper.java index 10eb94a7..7383a742 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueJob/IssueJobMainMapper.java @@ -11,6 +11,7 @@ import com.win.module.wms.controller.issueJob.vo.IssueJobMainExportReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainPageReqVO; import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; import com.win.module.wms.dal.dataobject.repleinshJob.RepleinshJobMainDO; import com.win.module.wms.enums.order.OrderStatusEnum; import org.apache.ibatis.annotations.Mapper; @@ -127,4 +128,8 @@ public interface IssueJobMainMapper extends BaseMapperX { .ne(IssueJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); } + default List selectSeniorList(CustomConditions conditions) { + return selectList(QueryWrapperUtils.structure(conditions)); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRecord/IssueRecordDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRecord/IssueRecordDetailMapper.java index e22985ca..c1cae864 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRecord/IssueRecordDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRecord/IssueRecordDetailMapper.java @@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.issueRecord.vo.IssueRecordDetailExportReqVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordDetailPageReqVO; import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO; import org.apache.ibatis.annotations.Mapper; /** @@ -96,4 +97,9 @@ public interface IssueRecordDetailMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(IssueRecordDetailDO::getMasterId, masterId)); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRecord/IssueRecordMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRecord/IssueRecordMainMapper.java index 4f95c186..c4de4e34 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRecord/IssueRecordMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRecord/IssueRecordMainMapper.java @@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainExportReqVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainPageReqVO; import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; +import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; import org.apache.ibatis.annotations.Mapper; /** @@ -82,4 +83,8 @@ public interface IssueRecordMainMapper extends BaseMapperX { .orderByDesc(IssueRecordMainDO::getId)); } + default List selectSeniorList(CustomConditions conditions) { + return selectList(QueryWrapperUtils.structure(conditions)); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobDetailService.java index c00a531a..4d0cc593 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobDetailService.java @@ -18,28 +18,6 @@ import com.win.framework.common.pojo.PageResult; */ public interface IssueJobDetailService { - /** - * 创建发料任务子 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createIssueJobDetail(@Valid IssueJobDetailCreateReqVO createReqVO); - - /** - * 更新发料任务子 - * - * @param updateReqVO 更新信息 - */ - void updateIssueJobDetail(@Valid IssueJobDetailUpdateReqVO updateReqVO); - - /** - * 删除发料任务子 - * - * @param id 编号 - */ - void deleteIssueJobDetail(Long id); - /** * 获得发料任务子 * @@ -80,4 +58,5 @@ public interface IssueJobDetailService { */ List getIssueJobDetailList(IssueJobDetailExportReqVO exportReqVO); + List selectList(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobDetailServiceImpl.java index 1f164b7c..f1f8b5b7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobDetailServiceImpl.java @@ -32,32 +32,6 @@ public class IssueJobDetailServiceImpl implements IssueJobDetailService { @Resource private IssueJobDetailMapper issueJobDetailMapper; - @Override - public Long createIssueJobDetail(IssueJobDetailCreateReqVO createReqVO) { - // 插入 - IssueJobDetailDO issueJobDetail = IssueJobDetailConvert.INSTANCE.convert(createReqVO); - issueJobDetailMapper.insert(issueJobDetail); - // 返回 - return issueJobDetail.getId(); - } - - @Override - public void updateIssueJobDetail(IssueJobDetailUpdateReqVO updateReqVO) { - // 校验存在 - validateIssueJobDetailExists(updateReqVO.getId()); - // 更新 - IssueJobDetailDO updateObj = IssueJobDetailConvert.INSTANCE.convert(updateReqVO); - issueJobDetailMapper.updateById(updateObj); - } - - @Override - public void deleteIssueJobDetail(Long id) { - // 校验存在 - validateIssueJobDetailExists(id); - // 删除 - issueJobDetailMapper.deleteById(id); - } - private void validateIssueJobDetailExists(Long id) { if (issueJobDetailMapper.selectById(id) == null) { throw exception(ISSUE_JOB_DETAIL_NOT_EXISTS); @@ -88,4 +62,9 @@ public class IssueJobDetailServiceImpl implements IssueJobDetailService { return issueJobDetailMapper.selectList(exportReqVO); } + @Override + public List selectList(Long masterId) { + return issueJobDetailMapper.selectList(masterId); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainService.java index c27260d5..798e2e4e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainService.java @@ -8,8 +8,10 @@ import com.win.module.wms.controller.issueJob.vo.IssueJobMainCreateReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainExportReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainPageReqVO; import com.win.module.wms.controller.issueJob.vo.IssueJobMainUpdateReqVO; +import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainUpdateReqVO; import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; import org.springframework.lang.Nullable; /** @@ -19,28 +21,6 @@ import org.springframework.lang.Nullable; */ public interface IssueJobMainService { - /** - * 创建发料任务主 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createIssueJobMain(@Valid IssueJobMainCreateReqVO createReqVO); - - /** - * 更新发料任务主 - * - * @param updateReqVO 更新信息 - */ - void updateIssueJobMain(@Valid IssueJobMainUpdateReqVO updateReqVO); - - /** - * 删除发料任务主 - * - * @param id 编号 - */ - void deleteIssueJobMain(Long id); - /** * 获得发料任务主 * @@ -57,6 +37,8 @@ public interface IssueJobMainService { */ List getIssueJobMainList(Collection ids); + List getIssueJobMainList(CustomConditions conditions); + /** * 获得发料任务主分页 * @@ -95,4 +77,32 @@ public interface IssueJobMainService { * @return */ Map getCountByStatus(@Nullable Collection types); + + /** + * 承接任务 + * @param id + * @return + */ + Integer acceptIssueJobMain(Long id); + + /** + * 取消承接任务 + * @param id + * @return + */ + Integer abandonIssueJobMain(Long id); + + /** + * 关闭任务 + * @param id + * @return + */ + Integer closeIssueJobMain(Long id); + + /** + * 执行任务 + * @param issueJobMainUpdateReqVO + * @return + */ + Integer executeIssueJobMain(IssueJobMainUpdateReqVO issueJobMainUpdateReqVO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainServiceImpl.java index b3a6adaf..9076af04 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainServiceImpl.java @@ -1,15 +1,56 @@ package com.win.module.wms.service.issueJob; 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.issueJob.vo.IssueJobMainCreateReqVO; -import com.win.module.wms.controller.issueJob.vo.IssueJobMainExportReqVO; -import com.win.module.wms.controller.issueJob.vo.IssueJobMainPageReqVO; -import com.win.module.wms.controller.issueJob.vo.IssueJobMainUpdateReqVO; +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.expectin.vo.ExpectinCreateReqVO; +import com.win.module.wms.controller.issueJob.vo.*; +import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailUpdateReqVO; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO; +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; +import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO; +import com.win.module.wms.dal.dataobject.onlinesettlementRecord.OnlinesettlementRecordDetailDO; +import com.win.module.wms.dal.dataobject.onlinesettlementRecord.OnlinesettlementRecordMainDO; +import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobDetailDO; +import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobMainDO; +import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordMainDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchaseshortageDetailDO; +import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; +import com.win.module.wms.dal.mysql.issueRecord.IssueRecordDetailMapper; +import com.win.module.wms.dal.mysql.issueRecord.IssueRecordMainMapper; +import com.win.module.wms.dal.mysql.onlinesettlementRecord.OnlinesettlementRecordDetailMapper; +import com.win.module.wms.dal.mysql.onlinesettlementRecord.OnlinesettlementRecordMainMapper; +import com.win.module.wms.dal.mysql.productionreceiptJob.ProductionreceiptJobDetailMapper; +import com.win.module.wms.dal.mysql.productionreceiptJob.ProductionreceiptJobMainMapper; +import com.win.module.wms.enums.job.JobStatusEnum; +import com.win.module.wms.enums.job.JobStatusState; +import com.win.module.wms.service.documentSwitch.SwitchService; +import com.win.module.wms.service.expectin.ExpectinService; +import com.win.module.wms.service.expectout.ExpectoutService; +import com.win.module.wms.service.jobsetting.JobsettingService; +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 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.issueJob.IssueJobMainDO; @@ -19,6 +60,7 @@ import com.win.module.wms.convert.issueJob.IssueJobMainConvert; import com.win.module.wms.dal.mysql.issueJob.IssueJobMainMapper; 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.*; /** @@ -30,39 +72,47 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Validated public class IssueJobMainServiceImpl implements IssueJobMainService { + @Resource + private OnlinesettlementRecordDetailMapper onlinesettlementRecordDetailMapper; + @Resource + private OnlinesettlementRecordMainMapper onlinesettlementRecordMainMapper; + @Resource + private ProductionreceiptJobDetailMapper productionreceiptJobDetailMapper; + @Resource + private JobsettingService jobsettingService; + @Resource + private ProductionreceiptJobMainMapper productionreceiptJobMainMapper; + @Resource + private SwitchService switchService; + @Resource + private ExpectinService expectinService; + @Resource + private ExpectoutService expectoutService; + @Resource + private TransactionService transactionService; + @Resource + private JobUtils jobUtils; + @Resource + private IssueRecordDetailMapper issueRecordDetailMapper; + @Resource + private IssueRecordMainMapper issueRecordMainMapper; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private IssueJobDetailService issueJobDetailService; + @Resource + private TrendsApi trendsApi; + @Resource + private AdminUserApi userApi; @Resource private IssueJobMainMapper issueJobMainMapper; - @Override - public Long createIssueJobMain(IssueJobMainCreateReqVO createReqVO) { - // 插入 - IssueJobMainDO issueJobMain = IssueJobMainConvert.INSTANCE.convert(createReqVO); - issueJobMainMapper.insert(issueJobMain); - // 返回 - return issueJobMain.getId(); - } - - @Override - public void updateIssueJobMain(IssueJobMainUpdateReqVO updateReqVO) { - // 校验存在 - validateIssueJobMainExists(updateReqVO.getId()); - // 更新 - IssueJobMainDO updateObj = IssueJobMainConvert.INSTANCE.convert(updateReqVO); - issueJobMainMapper.updateById(updateObj); - } - - @Override - public void deleteIssueJobMain(Long id) { - // 校验存在 - validateIssueJobMainExists(id); - // 删除 - issueJobMainMapper.deleteById(id); - } - - private void validateIssueJobMainExists(Long id) { - if (issueJobMainMapper.selectById(id) == null) { + private IssueJobMainDO validateIssueJobMainExists(Long id) { + IssueJobMainDO issueJobMainDO = issueJobMainMapper.selectById(id); + if (issueJobMainDO == null) { throw exception(ISSUE_JOB_MAIN_NOT_EXISTS); } + return issueJobMainDO; } @Override @@ -75,6 +125,11 @@ public class IssueJobMainServiceImpl implements IssueJobMainService { return issueJobMainMapper.selectBatchIds(ids); } + @Override + public List getIssueJobMainList(CustomConditions conditions) { + return issueJobMainMapper.selectSeniorList(conditions); + } + @Override public PageResult getIssueJobMainPage(IssueJobMainPageReqVO pageReqVO) { return issueJobMainMapper.selectPage(pageReqVO); @@ -109,4 +164,286 @@ public class IssueJobMainServiceImpl implements IssueJobMainService { map.put("count", l.intValue()); return map; } + + @Override + @Transactional + public Integer acceptIssueJobMain(Long id) { + IssueJobMainDO issueJobMainDO = this.validateIssueJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(issueJobMainDO.getStatus()); + if(!jobStatusState.accept()) { + throw exception(ISSUE_JOB_MAIN_STATUS_ERROR); + } + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + issueJobMainDO.setStatus(jobStatusState.getState().getCode()); + issueJobMainDO.setAcceptUserId(String.valueOf(userId)); + issueJobMainDO.setAcceptUserName(userRespDTO.getNickname()); + issueJobMainDO.setAcceptTime(LocalDateTime.now()); + trendsApi.createTrends(id, "issueJob", "承接了发料任务", TrendsTypeEnum.UPDATE); + return issueJobMainMapper.updateById(issueJobMainDO); + } + + @Override + @Transactional + public Integer abandonIssueJobMain(Long id) { + IssueJobMainDO issueJobMainDO = this.validateIssueJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(issueJobMainDO.getStatus()); + if(!jobStatusState.cancelAccept()) { + throw exception(ISSUE_JOB_MAIN_STATUS_ERROR); + } + issueJobMainDO.setStatus(jobStatusState.getState().getCode()); + issueJobMainDO.setAcceptUserId(null); + issueJobMainDO.setAcceptUserName(null); + issueJobMainDO.setAcceptTime(null); + trendsApi.createTrends(id, "issueJob", "取消了发料任务", TrendsTypeEnum.UPDATE); + return issueJobMainMapper.updateById(issueJobMainDO); + } + + @Override + @Transactional + public Integer closeIssueJobMain(Long id) { + IssueJobMainDO issueJobMainDO = this.validateIssueJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(issueJobMainDO.getStatus()); + if(!jobStatusState.close()) { + throw exception(ISSUE_JOB_MAIN_STATUS_ERROR); + } + issueJobMainDO.setStatus(jobStatusState.getState().getCode()); + trendsApi.createTrends(id, "issueJob", "关闭了发料任务", TrendsTypeEnum.UPDATE); + return issueJobMainMapper.updateById(issueJobMainDO); + } + + @Override + @Transactional + public Integer executeIssueJobMain(IssueJobMainUpdateReqVO issueJobMainUpdateReqVO) { + //查询数据 + IssueJobMainDO issueJobMainDO = this.validateIssueJobMainExists(issueJobMainUpdateReqVO.getId()); + List subList = issueJobDetailService.selectList(issueJobMainDO.getId()); + JobStatusState jobStatusState = new JobStatusState(issueJobMainDO.getStatus()); + boolean flag = jobStatusState.execute(); + if(!flag) { + throw new ServiceException(ISSUE_JOB_MAIN_STATUS_ERROR); + } + //更新完成信息 + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + issueJobMainDO.setStatus(jobStatusState.getState().getCode()); + issueJobMainDO.setCompleteTime(LocalDateTime.now()); + issueJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId())); + issueJobMainDO.setCompleteUserName(userRespDTO.getNickname()); + //更新任务表状态 + int result = issueJobMainMapper.updateById(issueJobMainDO); + //创建 发料记录 主表 + IssueRecordMainDO issueRecordMainDO = new IssueRecordMainDO(); + BeanUtils.copyProperties(issueJobMainDO, issueRecordMainDO); + String number = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_RECORD.getCode()); + issueRecordMainDO.setNumber(number); + issueRecordMainDO.setJobNumber(issueJobMainDO.getNumber()); + issueRecordMainDO.setId(null); + issueRecordMainDO.setWorkshopCode(issueJobMainDO.getWorkShopCode()); + issueRecordMainDO.setCreator(null); + issueRecordMainDO.setCreateTime(null); + issueRecordMainDO.setUpdater(null); + issueRecordMainDO.setUpdateTime(null); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueJob"); + issueRecordMainDO.setBusinessType(businesstypeDO.getCode()); + issueRecordMainMapper.insert(issueRecordMainDO); + // 获取参数中的sublist + List issueJobDetailUpdateReqVOList = issueJobMainUpdateReqVO.getSubList(); + //发料记录子 + List issueRecordDetailDOList = new ArrayList<>(); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + subList.forEach(subListItem -> { + // 获取参数中recordLst + issueJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> { + // 匹配任务子表与参数中子表 + if (DetailUpdateItem.getId().equals(subListItem.getId())) { + List> recordLst = DetailUpdateItem.getRecordLst(); + recordLst.forEach(recordLstItem -> { + IssueRecordDetailDO issueRecordDetailDO = new IssueRecordDetailDO(); + BeanUtils.copyProperties(subListItem, issueRecordDetailDO); + issueRecordDetailDO.setId(null); + issueRecordDetailDO.setNumber(number); + issueRecordDetailDO.setMasterId(issueRecordMainDO.getId()); + issueRecordDetailDO.setCreator(null); + issueRecordDetailDO.setCreateTime(null); + issueRecordDetailDO.setUpdater(null); + issueRecordDetailDO.setUpdateTime(null); + // 如果使用在途库 赋值 业务类型对应的在途库库位 + issueRecordDetailDO.setOnTheWayLocationCode(issueRecordMainDO.getUseOnTheWayLocation().equals("TRUE")?businesstypeDO.getOnTheWayArea():""); + // 根据recordLst 进行赋值子表部分数据 + issueRecordDetailDO.setQty(new BigDecimal(recordLstItem.get("handleQty").toString())); + issueRecordDetailDO.setToPackingNumber(recordLstItem.get("toPackingNumber").toString()); + issueRecordDetailDO.setToContainerNumber(recordLstItem.get("toContainerNumber").toString()); + issueRecordDetailDO.setToBatch(recordLstItem.get("toBatch").toString()); + issueRecordDetailDO.setToLocationCode(recordLstItem.get("toLocationCode").toString()); + issueRecordDetailDO.setInventoryStatus(recordLstItem.get("toInventoryStatus").toString()); + issueRecordDetailDO.setSupplierCode(recordLstItem.get("supplierCode").toString()); + issueRecordDetailDOList.add(issueRecordDetailDO); + //添加库存事务list + TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); + BeanUtils.copyProperties(issueRecordDetailDO, transactionCreateReqVO); + TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVO.setWorker(issueRecordDetailDO.getCreator()); + transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); + transactionCreateReqVO.setBusinessType(issueRecordMainDO.getBusinessType()); + transactionCreateReqVO.setOwnerCode(issueRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVO.setRecordNumber(number); + transactionCreateReqVO.setId(null); + transactionCreateReqVO.setPackingNumber(issueRecordDetailDO.getToPackingNumber()); + transactionCreateReqVO.setBatch(issueRecordDetailDO.getToBatch()); + transactionCreateReqVO.setContainerNumber(issueRecordDetailDO.getToContainerNumber()); + transactionCreateReqVO.setAmount(BigDecimal.ZERO); + // 如果使用在途库 库存事务 库位赋值为 在途库 + transactionCreateReqVO.setLocationCode(issueRecordMainDO.getUseOnTheWayLocation().equals("TRUE")?issueRecordDetailDO.getOnTheWayLocationCode():recordLstItem.get("toLocationCode").toString()); + transactionCreateReqVOList.add(transactionCreateReqVO); + }); + } + }); + }); + if(!issueRecordDetailDOList.isEmpty()) { + issueRecordDetailMapper.insertBatch(issueRecordDetailDOList); + } + // 1-创建发料记录后 是否创建 生产收料任务 2-同时满足 使用在途库 + if (issueRecordMainDO.getUseOnTheWayLocation().equals("TRUE") && (switchService.selectSwitchExist("CreateProductionReceiptJobAfterIssueRecordCreated").getEffectiveSetValue().equals("TRUE")) ) { + // 创建 生产收料任务 + createProductionreceiptJob(issueRecordMainDO,issueRecordDetailDOList); + } + // 不使用在途库 创建 上线结算记录 + if (issueRecordMainDO.getUseOnTheWayLocation().equals("FALSE")) { + // 创建 上线结算记录 + createOnlinesettlementRecord(issueRecordMainDO,issueRecordDetailDOList); + } + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + //移除预计入 + expectinService.deleteExpectinByJobNumber(issueJobMainDO.getNumber()); + //移除预计出 + expectoutService.deleteExpectoutByJobNumber(issueJobMainDO.getNumber()); + //变更记录 + trendsApi.createTrends(issueJobMainDO.getId(), "issueJob", "执行了发料任务", TrendsTypeEnum.UPDATE); + return result; + } + + /** + * 创建 生产收料任务 + * @param issueRecordMainDO + * @param issueRecordDetailDOList + */ + private void createProductionreceiptJob (IssueRecordMainDO issueRecordMainDO, List issueRecordDetailDOList) { + //生产收料任务主 + ProductionreceiptJobMainDO productionreceiptJobMainDO = new ProductionreceiptJobMainDO(); + BeanUtils.copyProperties(issueRecordMainDO, productionreceiptJobMainDO); + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RECEIPT_JOB.getCode()); + productionreceiptJobMainDO.setId(null); + productionreceiptJobMainDO.setNumber(number); + productionreceiptJobMainDO.setIssueJobNumber(issueRecordMainDO.getJobNumber()); + productionreceiptJobMainDO.setIssueRecordNumber(issueRecordMainDO.getNumber()); + productionreceiptJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); + productionreceiptJobMainDO.setRequestDueTime(issueRecordMainDO.getDueTime()); + productionreceiptJobMainDO.setCreator(null); + productionreceiptJobMainDO.setCreateTime(null); + productionreceiptJobMainDO.setUpdater(null); + productionreceiptJobMainDO.setUpdateTime(null); + // TODO: 字段数据无来源: 过期时间 expired_time 优先级 priority 优先级增量 priority_increment + // 增加任务单据设置 + JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("IssueReceiptJob"); + productionreceiptJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); + productionreceiptJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); + productionreceiptJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); + productionreceiptJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); + productionreceiptJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); + productionreceiptJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); + productionreceiptJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); + productionreceiptJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); + productionreceiptJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); + productionreceiptJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductionReceiptJob"); + productionreceiptJobMainDO.setBusinessType(businesstypeDO.getCode()); + productionreceiptJobMainMapper.insert(productionreceiptJobMainDO); + //生产收料任务子 集合 + List productionreceiptJobDetailDOList = new ArrayList<>(); + // 预计入 集合 + List expectinCreateReqVOList = new ArrayList<>(); + // 构造任务子数据 + issueRecordDetailDOList.forEach(item -> { + ProductionreceiptJobDetailDO productionreceiptJobDetailDO = new ProductionreceiptJobDetailDO(); + BeanUtils.copyProperties(item, productionreceiptJobDetailDO); + productionreceiptJobDetailDO.setPackingNumber(item.getToPackingNumber()); + productionreceiptJobDetailDO.setContainerNumber(item.getToContainerNumber()); + productionreceiptJobDetailDO.setBatch(item.getToBatch()); + productionreceiptJobDetailDO.setMasterId(productionreceiptJobMainDO.getId()); + productionreceiptJobDetailDO.setNumber(productionreceiptJobMainDO.getNumber()); + productionreceiptJobDetailDO.setCreator(null); + productionreceiptJobDetailDO.setCreateTime(null); + productionreceiptJobDetailDO.setUpdater(null); + productionreceiptJobDetailDO.setUpdateTime(null); + productionreceiptJobDetailDOList.add(productionreceiptJobDetailDO); + //生成 预计入 + ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); + BeanUtils.copyProperties(productionreceiptJobDetailDO, expectinCreateReqVO); + expectinCreateReqVO.setJobNumber(number); + expectinCreateReqVO.setBusinessType(productionreceiptJobMainDO.getBusinessType()); + expectinCreateReqVO.setLocationCode(productionreceiptJobDetailDO.getToLocationCode()); + expectinCreateReqVO.setOwnerCode(productionreceiptJobDetailDO.getToOwnerCode()); + expectinCreateReqVOList.add(expectinCreateReqVO); + }); + if(!productionreceiptJobDetailDOList.isEmpty()) { + productionreceiptJobDetailMapper.insertBatch(productionreceiptJobDetailDOList); + } + //增加预计入 + expectinService.createExpectin(expectinCreateReqVOList); + //变更记录 + trendsApi.createTrends(productionreceiptJobMainDO.getId(), "productionReceiptJob", "创建了生产收料任务", TrendsTypeEnum.CREATE); + } + + /** + * 创建 上线结算记录 + * @param issueRecordMainDO + * @param issueRecordDetailDOList + */ + private void createOnlinesettlementRecord (IssueRecordMainDO issueRecordMainDO, List issueRecordDetailDOList) { + OnlinesettlementRecordMainDO onlinesettlementRecordMainDO = new OnlinesettlementRecordMainDO(); + BeanUtils.copyProperties(issueRecordMainDO, onlinesettlementRecordMainDO); + onlinesettlementRecordMainDO.setIssueRecordNumber(issueRecordMainDO.getNumber()); + onlinesettlementRecordMainDO.setWarehouseCode(issueRecordMainDO.getToWarehouseCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.ONLINE_SETTLEMENT_RECORD.getCode()); + onlinesettlementRecordMainDO.setId(null); + onlinesettlementRecordMainDO.setNumber(number); + onlinesettlementRecordMainDO.setBusinessType(""); + onlinesettlementRecordMainDO.setInTransactionType(""); + onlinesettlementRecordMainDO.setOutTransactionType(""); + onlinesettlementRecordMainDO.setRequestNumber(""); + onlinesettlementRecordMainDO.setCreator(null); + onlinesettlementRecordMainDO.setCreateTime(null); + onlinesettlementRecordMainDO.setUpdater(null); + onlinesettlementRecordMainDO.setUpdateTime(null); + onlinesettlementRecordMainMapper.insert(onlinesettlementRecordMainDO); + //上线结算记录子 集合 + List onlinesettlementRecordDetailDOList = new ArrayList<>(); + issueRecordDetailDOList.forEach(item -> { + OnlinesettlementRecordDetailDO onlinesettlementRecordDetailDO = new OnlinesettlementRecordDetailDO(); + BeanUtils.copyProperties(item, onlinesettlementRecordDetailDO); + onlinesettlementRecordDetailDO.setPackingNumber(item.getToPackingNumber()); + onlinesettlementRecordDetailDO.setContainerNumber(item.getToContainerNumber()); + onlinesettlementRecordDetailDO.setBatch(item.getToBatch()); + onlinesettlementRecordDetailDO.setLocationCode(item.getToLocationCode()); + onlinesettlementRecordDetailDO.setLocationGroupCode(item.getToLocationGroupCode()); + onlinesettlementRecordDetailDO.setAreaCode(item.getToAreaCode()); + onlinesettlementRecordDetailDO.setMasterId(onlinesettlementRecordMainDO.getId()); + onlinesettlementRecordDetailDO.setNumber(number); + onlinesettlementRecordDetailDO.setId(null); + onlinesettlementRecordDetailDO.setCreator(null); + onlinesettlementRecordDetailDO.setCreateTime(null); + onlinesettlementRecordDetailDO.setUpdater(null); + onlinesettlementRecordDetailDO.setUpdateTime(null); + onlinesettlementRecordDetailDOList.add(onlinesettlementRecordDetailDO); + }); + if(!onlinesettlementRecordDetailDOList.isEmpty()) { + onlinesettlementRecordDetailMapper.insertBatch(onlinesettlementRecordDetailDOList); + } + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordDetailService.java index 54fc99fc..3aed9dbc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordDetailService.java @@ -80,4 +80,10 @@ public interface IssueRecordDetailService { */ List getIssueRecordDetailList(IssueRecordDetailExportReqVO exportReqVO); + /** + * 根据主表id查询 + * @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/issueRecord/IssueRecordDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordDetailServiceImpl.java index 849307f8..8bfb1264 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordDetailServiceImpl.java @@ -87,4 +87,9 @@ public class IssueRecordDetailServiceImpl implements IssueRecordDetailService { return issueRecordDetailMapper.selectList(exportReqVO); } + @Override + public List selectList(Long masterId) { + return issueRecordDetailMapper.selectList(masterId); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainService.java index a97abbef..e96651cd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainService.java @@ -10,6 +10,7 @@ import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainPageReqVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainUpdateReqVO; import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; /** * 发料记录主 Service 接口 @@ -56,6 +57,14 @@ public interface IssueRecordMainService { */ List getIssueRecordMainList(Collection ids); + /** + * 获得发料记录主列表, 用于 Excel 导出 + * + * @param conditions 查询条件 + * @return 采购收货申请主列表 + */ + List getIssueRecordMainList(CustomConditions conditions); + /** * 获得发料记录主分页 * diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainServiceImpl.java index 6598559e..16d41500 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainServiceImpl.java @@ -74,6 +74,11 @@ public class IssueRecordMainServiceImpl implements IssueRecordMainService { return issueRecordMainMapper.selectBatchIds(ids); } + @Override + public List getIssueRecordMainList(CustomConditions conditions) { + return issueRecordMainMapper.selectSeniorList(conditions); + } + @Override public PageResult getIssueRecordMainPage(IssueRecordMainPageReqVO pageReqVO) { return issueRecordMainMapper.selectPage(pageReqVO);