From 20ed5b8d50329cb9986913eb456759e9511056a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Wed, 13 Dec 2023 09:10:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E6=94=B6=E8=B4=A7=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../issueJob/IssueJobMainController.java | 7 + .../IssueRequestMainController.java | 2 +- .../vo/ProductputawayRequestMainBaseVO.java | 4 - .../ProductreceiptJobMainController.java | 124 +++++- .../vo/ProductreceiptJobDetailPageReqVO.java | 2 + .../ProductreceiptJobDetailUpdateReqVO.java | 19 + .../vo/ProductreceiptJobMainExcelVO.java | 120 ++++-- .../vo/ProductreceiptJobMainUpdateReqVO.java | 7 +- .../ProductreceiptRecordMainController.java | 83 +++- .../vo/BackflushRecordDetailbBaseVO.java | 3 + .../vo/BackflushRecordDetailbExcelVO.java | 4 + .../vo/BackflushRecordDetailbExportReqVO.java | 7 + .../vo/BackflushRecordDetailbPageReqVO.java | 7 + ...ProductreceiptRecordDetailExportReqVO.java | 2 + .../ProductreceiptRecordDetailPageReqVO.java | 2 + .../vo/ProductreceiptRecordMainBaseVO.java | 7 + .../vo/ProductreceiptRecordMainExcelVO.java | 95 ++++- .../ProductreceiptRecordMainExportReqVO.java | 7 + .../vo/ProductreceiptRequestDetailBaseVO.java | 2 +- .../vo/ProductreceiptRequestMainBaseVO.java | 4 - .../ProductreceiptJobMainConvert.java | 13 +- .../ProductreceiptRecordMainConvert.java | 12 + .../BackflushRecordDetailbDO.java | 8 +- .../ProductreceiptRecordDetailDO.java | 2 +- .../ProductreceiptJobDetailMapper.java | 6 + .../ProductreceiptJobMainMapper.java | 4 + .../BackflushRecordDetailbMapper.java | 3 + .../ProductreceiptRecordDetailMapper.java | 7 + .../ProductreceiptRecordMainMapper.java | 4 + .../service/balance/BalanceServiceImpl.java | 2 +- .../issueJob/IssueJobMainServiceImpl.java | 4 +- .../IssueRequestMainServiceImpl.java | 5 +- .../service/itembasic/ItembasicService.java | 8 +- .../itembasic/ItembasicServiceImpl.java | 11 + .../production/ProductionMainServiceImpl.java | 42 +- .../ProductionreceiptJobMainServiceImpl.java | 9 +- .../ProductreceiptJobDetailService.java | 2 + .../ProductreceiptJobDetailServiceImpl.java | 5 + .../ProductreceiptJobMainService.java | 10 + .../ProductreceiptJobMainServiceImpl.java | 377 +++++++++++++++++- .../ProductreceiptRecordDetailService.java | 2 + ...ProductreceiptRecordDetailServiceImpl.java | 5 + .../ProductreceiptRecordMainService.java | 2 + .../ProductreceiptRecordMainServiceImpl.java | 5 + .../ProductreceiptRequestMainService.java | 2 + .../ProductreceiptRequestMainServiceImpl.java | 8 + 46 files changed, 954 insertions(+), 112 deletions(-) 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 a2119b23..b517e3ba 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 @@ -78,6 +78,12 @@ public class IssueJobMainController { @PreAuthorize("@ss.hasPermission('wms:issue-job-main:query')") public CommonResult> getIssueJobMainPage(@Valid IssueJobMainPageReqVO pageVO) { PageResult pageResult = issueJobMainService.getIssueJobMainPage(pageVO); + for(IssueJobMainDO issueJobMainDO : pageResult.getList()) { + AdminUserRespDTO user = userApi.getUser(Long.valueOf(issueJobMainDO.getCreator())); + //后端创建个字段作为前端展示的虚拟字段 + issueJobMainDO.setCreator(user.getNickname()); + issueJobMainDO.setUpdater(user.getNickname()); + } return success(IssueJobMainConvert.INSTANCE.convertPage(pageResult)); } @@ -91,6 +97,7 @@ public class IssueJobMainController { AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); //后端创建个字段作为前端展示的虚拟字段 vo.setCreator(user.getNickname()); + vo.setUpdater(user.getNickname()); } return success(result); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java index b2223704..8e323c16 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java @@ -155,7 +155,7 @@ public class IssueRequestMainController { } @GetMapping("/export-excel-senior") - @Operation(summary = "导出生产计划主 Excel") + @Operation(summary = "导出发料申请 Excel") @PreAuthorize("@ss.hasPermission('wms:issue-request-main:export')") @OperateLog(type = EXPORT) public void exportIssueRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainBaseVO.java index 385577b3..4815f185 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainBaseVO.java @@ -83,19 +83,15 @@ public class ProductputawayRequestMainBaseVO { private String updater; @Schema(description = "自动提交", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "自动提交不能为空") private String autoCommit; @Schema(description = "自动通过", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "自动通过不能为空") private String autoAgree; @Schema(description = "自动执行", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "自动执行不能为空") private String autoExecute; @Schema(description = "直接生成记录", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "直接生成记录不能为空") private String directCreateRecord; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/ProductreceiptJobMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/ProductreceiptJobMainController.java index 3849cae1..9b8181a4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/ProductreceiptJobMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/ProductreceiptJobMainController.java @@ -3,6 +3,7 @@ package com.win.module.wms.controller.productreceiptJob; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; @@ -12,6 +13,7 @@ import com.win.module.wms.convert.productreceiptJob.ProductreceiptJobDetailConve import com.win.module.wms.convert.productreceiptJob.ProductreceiptJobMainConvert; import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobDetailDO; import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobMainDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.productreceiptJob.ProductreceiptJobDetailService; import com.win.module.wms.service.productreceiptJob.ProductreceiptJobMainService; import io.swagger.v3.oas.annotations.Operation; @@ -26,10 +28,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -96,27 +95,15 @@ public class ProductreceiptJobMainController { @PreAuthorize("@ss.hasPermission('wms:productreceipt-job-main:query')") public CommonResult> getProductreceiptJobMainPage(@Valid ProductreceiptJobMainPageReqVO pageVO) { PageResult pageResult = productreceiptJobMainService.getProductreceiptJobMainPage(pageVO); - return success(ProductreceiptJobMainConvert.INSTANCE.convertPage(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出制品收货任务主 Excel") - @PreAuthorize("@ss.hasPermission('wms:productreceipt-job-main:export')") - @OperateLog(type = EXPORT) - public void exportProductreceiptJobMainExcel(@Valid ProductreceiptJobMainExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = productreceiptJobMainService.getProductreceiptJobMainList(exportReqVO); - // 导出 Excel - List datas = ProductreceiptJobMainConvert.INSTANCE.convertList02(list); - for(ProductreceiptJobMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); + for(ProductreceiptJobMainDO productreceiptJobMainDO : pageResult.getList()) { + AdminUserRespDTO user = userApi.getUser(Long.valueOf(productreceiptJobMainDO.getCreator())); //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); + productreceiptJobMainDO.setCreator(user.getNickname()); + productreceiptJobMainDO.setUpdater(user.getNickname()); } - ExcelUtils.write(response, "制品收货任务主.xls", "数据", ProductreceiptJobMainExcelVO.class, datas); + return success(ProductreceiptJobMainConvert.INSTANCE.convertPage(pageResult)); } - @PostMapping("/senior") @Operation(summary = "高级搜索获得制品收货任务主分页") @PreAuthorize("@ss.hasPermission('wms:productreceipt-job-main:query')") @@ -127,10 +114,73 @@ public class ProductreceiptJobMainController { AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); //后端创建个字段作为前端展示的虚拟字段 vo.setCreator(user.getNickname()); + vo.setUpdater(user.getNickname()); } return success(result); } + private List getExcelVo(List list, Map mapDropDown) { + String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(20, locationType); + mapDropDown.put(21, locationType); + String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + 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); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(45, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(50, uom); + mapDropDown.put(57, uom); + List resultList = new ArrayList<>(); + // 导出 + for(ProductreceiptJobMainDO mainDO : list) { + List subList = productreceiptJobDetailService.selectList(mainDO.getId()); + for(ProductreceiptJobDetailDO detailDO : subList) { + ProductreceiptJobMainExcelVO vo = ProductreceiptJobMainConvert.INSTANCE.convert(mainDO, detailDO); + AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator())); + vo.setCreator(user.getNickname()); + vo.setUpdater(user.getNickname()); + resultList.add(vo); + } + } + return resultList; + } + + @GetMapping("/export-excel") + @Operation(summary = "导出制品收货任务 Excel") + @PreAuthorize("@ss.hasPermission('wms:productreceipt-job-main:export')") + @OperateLog(type = EXPORT) + public void exportProductreceiptJobMainExcel(@Valid ProductreceiptJobMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productreceiptJobMainService.getProductreceiptJobMainList(exportReqVO); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "制品收货任务.xlsx", "制品收货任务", ProductreceiptJobMainExcelVO.class, resultList, mapDropDown); + } + + @PostMapping("/export-excel-senior") + @Operation(summary = "导出制品收货任务 Excel") + @PreAuthorize("@ss.hasPermission('wms:productreceipt-job-main:export')") + @OperateLog(type = EXPORT) + public void exportProductreceiptJobMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = productreceiptJobMainService.getProductreceiptJobMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "制品收货任务.xlsx", "制品收货任务", ProductreceiptJobMainExcelVO.class, resultList, mapDropDown); + } + @GetMapping("/getProductreceiptJobById") @Operation(summary = "APP获得制品收货任务主子表明细列表") @Parameter(name = "id", description = "编号", required = true, example = "1024") @@ -164,4 +214,36 @@ public class ProductreceiptJobMainController { return success(countByStatus); } + @PutMapping(value = "/accept") + @Operation(summary = "承接任务") + @PreAuthorize("@ss.hasPermission('wms:productreceipt-job-main:accept')") + public CommonResult acceptProductreceiptJobMain(@RequestParam("id") Long id) { + int result = productreceiptJobMainService.acceptProductreceiptJobMain(id); + return success(result > 0); + } + + @PutMapping(value = "/abandon") + @Operation(summary = "放弃任务") + @PreAuthorize("@ss.hasPermission('wms:productreceipt-job-main:abandon')") + public CommonResult abandonProductreceiptJobMain(@RequestParam("id") Long id) { + int result = productreceiptJobMainService.abandonProductreceiptJobMain(id); + return success(result > 0); + } + + @PutMapping(value = "/close") + @Operation(summary = "关闭任务") + @PreAuthorize("@ss.hasPermission('wms:productreceipt-job-main:close')") + public CommonResult closeProductreceiptJobMain(@RequestParam("id") Long id) { + int result = productreceiptJobMainService.closeProductreceiptJobMain(id); + return success(result > 0); + } + + @PutMapping("/execute") + @Operation(summary = "执行任务") + @PreAuthorize("@ss.hasPermission('wms:productreceipt-job-main:execute')") + public CommonResult executeProductreceiptJobMain(@Valid @RequestBody ProductreceiptJobMainUpdateReqVO updateReqVO) { + String number = productreceiptJobMainService.executeProductreceiptJobMain(updateReqVO); + return success(number); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobDetailPageReqVO.java index 9d9d76b1..eae04893 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobDetailPageReqVO.java @@ -98,4 +98,6 @@ public class ProductreceiptJobDetailPageReqVO extends PageParam { @Schema(description = "到货主代码") private String toOwnerCode; + @Schema(description = "主表ID") + private String masterId; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobDetailUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobDetailUpdateReqVO.java index 248a3824..53315ea2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobDetailUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobDetailUpdateReqVO.java @@ -3,10 +3,29 @@ package com.win.module.wms.controller.productreceiptJob.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.math.BigDecimal; + @Schema(description = "管理后台 - 制品收货任务子更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductreceiptJobDetailUpdateReqVO extends ProductreceiptJobDetailBaseVO { + @Schema(description = "实际收货数量") + private BigDecimal handleQty; + + @Schema(description = "到包装") + private String toPackingNumber; + + @Schema(description = "到器具") + private String toContainerNumber; + + @Schema(description = "到批次") + private String toBatch; + + @Schema(description = "到库存状态") + private String toInventoryStatus; + + @Schema(description = "到库位") + private String toLocationCode; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainExcelVO.java index a4abb73d..cf639068 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainExcelVO.java @@ -1,5 +1,7 @@ package com.win.module.wms.controller.productreceiptJob.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.*; @@ -39,17 +41,13 @@ public class ProductreceiptJobMainExcelVO { @ExcelProperty("班次") private String shift; - @ExcelProperty("明细") - private String details; - @ExcelProperty("申请时间") private LocalDateTime requestTime; @ExcelProperty("要求截止时间") private LocalDateTime requestDueTime; - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("job_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty(value = "状态", converter = JobStatusConverter.class) private String status; @ExcelProperty("过期时间") @@ -61,13 +59,6 @@ public class ProductreceiptJobMainExcelVO { @ExcelProperty("最后更新者Id") private String updater; - @ExcelProperty("并发乐观锁") - private String concurrencyStamp; - - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("job_stage_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String jobStageStatus; - @ExcelProperty("优先级") private Integer priority; @@ -96,11 +87,11 @@ public class ProductreceiptJobMainExcelVO { private String toAreaCodes; @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("单据号") @@ -118,34 +109,113 @@ public class ProductreceiptJobMainExcelVO { @ExcelProperty("创建者id") private String creator; - @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(value = "允许修改批次", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String allowModifyBatch; - @ExcelProperty("允许修改箱码") - private String allowModifyPackingNumber; + // 子表数据 + @ExcelProperty("生产线代码") + private String productionLineCode; + + @ExcelProperty("工位代码") + private String workStationCode; + + @ExcelProperty("工序代码") + private String processCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("生产日期") + private String produceDate; + + @ExcelProperty("过期日期") + private String expireDate; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + @ExcelProperty("订单号") + private String woNumber; + + @ExcelProperty("订单行") + private String woLine; + + @ExcelProperty("标包数量") + private String stdPackQty; + + @ExcelProperty(value = "标包单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String stdPackUnit; + + @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; + @ExcelProperty("到货主代码") + private String toOwnerCode; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainUpdateReqVO.java index 68bb74bc..cf152c4c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainUpdateReqVO.java @@ -1,12 +1,17 @@ package com.win.module.wms.controller.productreceiptJob.vo; +import com.win.module.wms.controller.issueJob.vo.IssueJobDetailUpdateReqVO; 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 ProductreceiptJobMainUpdateReqVO extends ProductreceiptJobMainBaseVO { - + @Schema(description = "子表数据") + private List<@Valid ProductreceiptJobDetailUpdateReqVO> subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/ProductreceiptRecordMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/ProductreceiptRecordMainController.java index 45ba617b..3e9d856b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/ProductreceiptRecordMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/ProductreceiptRecordMainController.java @@ -3,13 +3,22 @@ package com.win.module.wms.controller.productreceiptRecord; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.wms.controller.issueJob.vo.IssueJobMainExcelVO; import com.win.module.wms.controller.productreceiptRecord.vo.*; +import com.win.module.wms.convert.issueJob.IssueJobMainConvert; import com.win.module.wms.convert.productreceiptRecord.ProductreceiptRecordMainConvert; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; +import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobMainDO; +import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordDetailDO; import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordMainDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.productreceiptRecord.ProductreceiptRecordDetailService; import com.win.module.wms.service.productreceiptRecord.ProductreceiptRecordMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -22,8 +31,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; -import java.util.Collection; -import java.util.List; +import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -34,6 +42,8 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Validated public class ProductreceiptRecordMainController { + @Resource + private ProductreceiptRecordDetailService productreceiptRecordDetailService; @Resource private ProductreceiptRecordMainService productreceiptRecordMainService; @@ -90,23 +100,6 @@ public class ProductreceiptRecordMainController { return success(ProductreceiptRecordMainConvert.INSTANCE.convertPage(pageResult)); } - @GetMapping("/export-excel") - @Operation(summary = "导出制品收货记录主 Excel") - @PreAuthorize("@ss.hasPermission('wms:productreceipt-record-main:export')") - @OperateLog(type = EXPORT) - public void exportProductreceiptRecordMainExcel(@Valid ProductreceiptRecordMainExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = productreceiptRecordMainService.getProductreceiptRecordMainList(exportReqVO); - // 导出 Excel - List datas = ProductreceiptRecordMainConvert.INSTANCE.convertList02(list); - for(ProductreceiptRecordMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "制品收货记录主.xls", "数据", ProductreceiptRecordMainExcelVO.class, datas); - } - @PostMapping("/senior") @Operation(summary = "高级搜索获得制品收货记录主分页") @PreAuthorize("@ss.hasPermission('wms:productreceipt-record-main:query')") @@ -120,5 +113,57 @@ public class ProductreceiptRecordMainController { } return success(result); } + + private List getExcelVo(List list, Map mapDropDown) { + String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(21, locationType); + String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(23, trueFalse); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(32, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(40, uom); + mapDropDown.put(47, uom); + List resultList = new ArrayList<>(); + // 导出 + for(ProductreceiptRecordMainDO mainDO : list) { + List subList = productreceiptRecordDetailService.selectList(mainDO.getId()); + for(ProductreceiptRecordDetailDO detailDO : subList) { + ProductreceiptRecordMainExcelVO vo = ProductreceiptRecordMainConvert.INSTANCE.convert(mainDO, detailDO); + AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator())); + vo.setCreator(user.getNickname()); + vo.setUpdater(user.getNickname()); + resultList.add(vo); + } + } + return resultList; + } + + @GetMapping("/export-excel") + @Operation(summary = "导出制品收货记录 Excel") + @PreAuthorize("@ss.hasPermission('wms:productreceipt-record-main:export')") + @OperateLog(type = EXPORT) + public void exportProductreceiptRecordMainExcel(@Valid ProductreceiptRecordMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productreceiptRecordMainService.getProductreceiptRecordMainList(exportReqVO); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "制品收货记录.xlsx", "制品收货记录", ProductreceiptRecordMainExcelVO.class, resultList, mapDropDown); + } + + @PostMapping("/export-excel-senior") + @Operation(summary = "导出制品收货记录 Excel") + @PreAuthorize("@ss.hasPermission('wms:productreceipt-record-main:export')") + @OperateLog(type = EXPORT) + public void exportProductreceiptRecordMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = productreceiptRecordMainService.getProductreceiptRecordMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "制品收货记录.xlsx", "制品收货记录", ProductreceiptRecordMainExcelVO.class, resultList, mapDropDown); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbBaseVO.java index 7bda9c74..ba4a498f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbBaseVO.java @@ -55,6 +55,9 @@ public class BackflushRecordDetailbBaseVO { @Schema(description = "项目代码") private String projectCode; + @Schema(description = "数量") + private String qty; + @Schema(description = "计量单位") private String uom; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbExcelVO.java index 174cb7c7..7eedaa2e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbExcelVO.java @@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.win.framework.excel.core.annotations.DictFormat; import com.win.framework.excel.core.convert.DictConvert; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; @@ -54,6 +55,9 @@ public class BackflushRecordDetailbExcelVO { @ExcelProperty("项目代码") private String projectCode; + @ExcelProperty("数量") + private String qty; + @ExcelProperty(value = "计量单位", converter = DictConvert.class) @DictFormat("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String uom; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbExportReqVO.java index 82768e3f..96448c80 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbExportReqVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productreceiptRecord.vo; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -48,6 +49,9 @@ public class BackflushRecordDetailbExportReqVO { @Schema(description = "项目代码") private String projectCode; + @ExcelProperty("数量") + private String qty; + @Schema(description = "计量单位") private String uom; @@ -76,4 +80,7 @@ public class BackflushRecordDetailbExportReqVO { @Schema(description = "任务明细ID") private String jobDetailId; + @Schema(description = "主表id") + private Long masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbPageReqVO.java index bcf651b3..7e99ac35 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/BackflushRecordDetailbPageReqVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productreceiptRecord.vo; +import com.alibaba.excel.annotation.ExcelProperty; import com.win.framework.common.pojo.PageParam; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -53,6 +54,9 @@ public class BackflushRecordDetailbPageReqVO extends PageParam { @Schema(description = "项目代码") private String projectCode; + @Schema(description = "数量") + private String qty; + @Schema(description = "计量单位") private String uom; @@ -81,4 +85,7 @@ public class BackflushRecordDetailbPageReqVO extends PageParam { @Schema(description = "任务明细ID") private String jobDetailId; + @Schema(description = "主表id") + private Long masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordDetailExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordDetailExportReqVO.java index bdce1213..2a856a9d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordDetailExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordDetailExportReqVO.java @@ -111,4 +111,6 @@ public class ProductreceiptRecordDetailExportReqVO { @Schema(description = "任务明细ID") private String jobDetailId; + @Schema(description = "主表id") + private Long masterId; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordDetailPageReqVO.java index 60e04900..b705ecb7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordDetailPageReqVO.java @@ -113,4 +113,6 @@ public class ProductreceiptRecordDetailPageReqVO extends PageParam { @Schema(description = "任务明细ID") private String jobDetailId; + @Schema(description = "主表id") + private Long masterId; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordMainBaseVO.java index ddd4ce61..e1310561 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productreceiptRecord.vo; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -111,4 +112,10 @@ public class ProductreceiptRecordMainBaseVO { @NotNull(message = "是否可用不能为空") private String available; + @Schema(description ="更新时间") + private LocalDateTime updateTime; + + @Schema(description ="更新者Id") + private String updater; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordMainExcelVO.java index 5cda1df6..3c55de51 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordMainExcelVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productreceiptRecord.vo; +import com.win.module.wms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -61,10 +62,6 @@ public class ProductreceiptRecordMainExcelVO { @ExcelProperty("部门") private String departmentCode; - @ExcelProperty(value = "接口类型", converter = DictConvert.class) - @DictFormat("interface_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String interfaceType; - @ExcelProperty("单据号") private String number; @@ -80,19 +77,101 @@ public class ProductreceiptRecordMainExcelVO { @ExcelProperty("创建者Id") private String creator; - @ExcelProperty("代码") - private String code; + @ExcelProperty("更新时间") + private LocalDateTime updateTime; + + @ExcelProperty("更新者Id") + private String updater; @ExcelProperty("到仓库代码") private String toWarehouseCode; - @ExcelProperty("到库位类型范围") + @ExcelProperty(value = "到库位类型范围", converter = DictConvert.class) + @DictFormat(DictTypeConstants.LOCATION_TYPE) private String toLocationTypes; @ExcelProperty("到库区代码范围") private String toAreaCodes; - @ExcelProperty("是否可用") + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String available; + // 子表数据 + @ExcelProperty("生产线代码") + private String productionlineCode; + + @ExcelProperty("工位代码") + private String workStationCode; + + @ExcelProperty("工序代码") + private String processCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("生产日期") + private String produceDate; + + @ExcelProperty("过期日期") + private String expireDate; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + @ExcelProperty("到库位组代码") + private String toLocationGroupCode; + + @ExcelProperty("到库区代码") + private String toAreaCode; + + @ExcelProperty("到货主代码") + private String toOwnerCode; + + @ExcelProperty("订单号") + private String woNumber; + + @ExcelProperty("订单行") + private String woLine; + + @ExcelProperty("标包数量") + private String stdPackQty; + + @ExcelProperty(value = "标包单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String stdPackUnit; + + @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/controller/productreceiptRecord/vo/ProductreceiptRecordMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordMainExportReqVO.java index 4b587aae..1ae12206 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordMainExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRecord/vo/ProductreceiptRecordMainExportReqVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productreceiptRecord.vo; +import com.alibaba.excel.annotation.ExcelProperty; import lombok.*; import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; @@ -90,4 +91,10 @@ public class ProductreceiptRecordMainExportReqVO { @Schema(description = "是否可用") private String available; + @ExcelProperty("更新时间") + private LocalDateTime updateTime; + + @ExcelProperty("更新者Id") + private String updater; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailBaseVO.java index 16f2e0bb..086865d9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailBaseVO.java @@ -99,7 +99,7 @@ public class ProductreceiptRequestDetailBaseVO { private String projectCode; @Schema(description = "数量") - private Double qty; + private BigDecimal qty; @Schema(description = "计量单位") private String uom; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainBaseVO.java index 927f9cde..b90229d8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainBaseVO.java @@ -83,19 +83,15 @@ public class ProductreceiptRequestMainBaseVO { private String updater; @Schema(description = "自动提交", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "自动提交不能为空") private String autoCommit; @Schema(description = "自动通过", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "自动通过不能为空") private String autoAgree; @Schema(description = "自动执行", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "自动执行不能为空") private String autoExecute; @Schema(description = "直接生成记录", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "直接生成记录不能为空") private String directCreateRecord; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptJob/ProductreceiptJobMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptJob/ProductreceiptJobMainConvert.java index 0269ef95..b1687549 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptJob/ProductreceiptJobMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptJob/ProductreceiptJobMainConvert.java @@ -8,7 +8,10 @@ import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainC import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainExcelVO; import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainRespVO; import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobMainDO; @@ -33,5 +36,13 @@ public interface ProductreceiptJobMainConvert { PageResult convertPage(PageResult page); 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"), + }) + ProductreceiptJobMainExcelVO convert(ProductreceiptJobMainDO mainDO, ProductreceiptJobDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRecord/ProductreceiptRecordMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRecord/ProductreceiptRecordMainConvert.java index 54999d8a..205bed9f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRecord/ProductreceiptRecordMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRecord/ProductreceiptRecordMainConvert.java @@ -8,7 +8,10 @@ import com.win.module.wms.controller.productreceiptRecord.vo.ProductreceiptRecor import com.win.module.wms.controller.productreceiptRecord.vo.ProductreceiptRecordMainExcelVO; import com.win.module.wms.controller.productreceiptRecord.vo.ProductreceiptRecordMainRespVO; import com.win.module.wms.controller.productreceiptRecord.vo.ProductreceiptRecordMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordMainDO; @@ -34,4 +37,13 @@ public interface ProductreceiptRecordMainConvert { 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"), + }) + ProductreceiptRecordMainExcelVO convert(ProductreceiptRecordMainDO mainDO, ProductreceiptRecordDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptRecord/BackflushRecordDetailbDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptRecord/BackflushRecordDetailbDO.java index aa75e9a1..ec1f81ec 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptRecord/BackflushRecordDetailbDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptRecord/BackflushRecordDetailbDO.java @@ -7,6 +7,8 @@ import com.sun.xml.bind.v2.TODO; import com.win.framework.mybatis.core.dataobject.BaseDO; import lombok.*; +import java.math.BigDecimal; + /** * 制品收货记录子 DO * @@ -76,6 +78,10 @@ public class BackflushRecordDetailbDO extends BaseDO { * 项目代码 */ private String projectCode; + /** + * 数量 + */ + private BigDecimal qty; /** * 计量单位 * @@ -85,7 +91,7 @@ public class BackflushRecordDetailbDO 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/productreceiptRecord/ProductreceiptRecordDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptRecord/ProductreceiptRecordDetailDO.java index a02c75f1..5541609a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptRecord/ProductreceiptRecordDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptRecord/ProductreceiptRecordDetailDO.java @@ -108,7 +108,7 @@ public class ProductreceiptRecordDetailDO 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/mysql/productreceiptJob/ProductreceiptJobDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptJob/ProductreceiptJobDetailMapper.java index 25eb7e60..ce4f41ae 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptJob/ProductreceiptJobDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptJob/ProductreceiptJobDetailMapper.java @@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobDetailExportReqVO; import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobDetailPageReqVO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobDetailDO; import org.apache.ibatis.annotations.Mapper; @@ -22,6 +23,7 @@ public interface ProductreceiptJobDetailMapper extends BaseMapperX selectPage(ProductreceiptJobDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProductreceiptJobDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductreceiptJobDetailDO::getProductionLineCode, reqVO.getProductionLineCode()) .eqIfPresent(ProductreceiptJobDetailDO::getWorkStationCode, reqVO.getWorkStationCode()) .eqIfPresent(ProductreceiptJobDetailDO::getProcessCode, reqVO.getProcessCode()) @@ -87,4 +89,8 @@ public interface ProductreceiptJobDetailMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(ProductreceiptJobDetailDO::getMasterId, masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptJob/ProductreceiptJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptJob/ProductreceiptJobMainMapper.java index e5f9f7d7..33430a54 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptJob/ProductreceiptJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptJob/ProductreceiptJobMainMapper.java @@ -132,4 +132,8 @@ public interface ProductreceiptJobMainMapper extends BaseMapperX 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/productreceiptRecord/BackflushRecordDetailbMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRecord/BackflushRecordDetailbMapper.java index 8b2b5d34..97387ddf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRecord/BackflushRecordDetailbMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRecord/BackflushRecordDetailbMapper.java @@ -8,6 +8,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productreceiptRecord.vo.BackflushRecordDetailbExportReqVO; import com.win.module.wms.controller.productreceiptRecord.vo.BackflushRecordDetailbPageReqVO; import com.win.module.wms.dal.dataobject.productreceiptRecord.BackflushRecordDetailbDO; +import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordDetailDO; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -22,6 +23,7 @@ public interface BackflushRecordDetailbMapper extends BaseMapperX selectPage(BackflushRecordDetailbPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(BackflushRecordDetailbDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(BackflushRecordDetailbDO::getProcessCode, reqVO.getProcessCode()) .eqIfPresent(BackflushRecordDetailbDO::getBomVersion, reqVO.getBomVersion()) .eqIfPresent(BackflushRecordDetailbDO::getPackingNumber, reqVO.getPackingNumber()) @@ -52,6 +54,7 @@ public interface BackflushRecordDetailbMapper extends BaseMapperX selectList(BackflushRecordDetailbExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() + .eqIfPresent(BackflushRecordDetailbDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(BackflushRecordDetailbDO::getProcessCode, reqVO.getProcessCode()) .eqIfPresent(BackflushRecordDetailbDO::getBomVersion, reqVO.getBomVersion()) .eqIfPresent(BackflushRecordDetailbDO::getPackingNumber, reqVO.getPackingNumber()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRecord/ProductreceiptRecordDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRecord/ProductreceiptRecordDetailMapper.java index 1ff8e134..48c18cec 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRecord/ProductreceiptRecordDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRecord/ProductreceiptRecordDetailMapper.java @@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productreceiptRecord.vo.ProductreceiptRecordDetailExportReqVO; import com.win.module.wms.controller.productreceiptRecord.vo.ProductreceiptRecordDetailPageReqVO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordDetailDO; import org.apache.ibatis.annotations.Mapper; @@ -22,6 +23,7 @@ public interface ProductreceiptRecordDetailMapper extends BaseMapperX selectPage(ProductreceiptRecordDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProductreceiptRecordDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductreceiptRecordDetailDO::getProductionlineCode, reqVO.getProductionlineCode()) .eqIfPresent(ProductreceiptRecordDetailDO::getWorkStationCode, reqVO.getWorkStationCode()) .eqIfPresent(ProductreceiptRecordDetailDO::getProcessCode, reqVO.getProcessCode()) @@ -62,6 +64,7 @@ public interface ProductreceiptRecordDetailMapper extends BaseMapperX selectList(ProductreceiptRecordDetailExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ProductreceiptRecordDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductreceiptRecordDetailDO::getProductionlineCode, reqVO.getProductionlineCode()) .eqIfPresent(ProductreceiptRecordDetailDO::getWorkStationCode, reqVO.getWorkStationCode()) .eqIfPresent(ProductreceiptRecordDetailDO::getProcessCode, reqVO.getProcessCode()) @@ -96,4 +99,8 @@ public interface ProductreceiptRecordDetailMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(ProductreceiptRecordDetailDO::getMasterId, masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRecord/ProductreceiptRecordMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRecord/ProductreceiptRecordMainMapper.java index a1403226..dbb9fa04 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRecord/ProductreceiptRecordMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRecord/ProductreceiptRecordMainMapper.java @@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productreceiptRecord.vo.ProductreceiptRecordMainExportReqVO; import com.win.module.wms.controller.productreceiptRecord.vo.ProductreceiptRecordMainPageReqVO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordMainDO; import org.apache.ibatis.annotations.Mapper; @@ -82,4 +83,7 @@ public interface ProductreceiptRecordMainMapper extends BaseMapperX 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/balance/BalanceServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java index 55c4708e..2109c58d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java @@ -53,7 +53,7 @@ public class BalanceServiceImpl implements BalanceService { public List selectNumber(String itemCode, List inventoryStatus, String locationCode) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("item_code", itemCode); - queryWrapper.eq("inventory_status", inventoryStatus); + queryWrapper.in("inventory_status", inventoryStatus); queryWrapper.eq("location_code", locationCode); List balanceDO = balanceMapper.selectList(queryWrapper); if (!balanceDO.isEmpty()) { 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 5d30b7df..a50d03ae 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 @@ -343,8 +343,7 @@ public class IssueJobMainServiceImpl implements IssueJobMainService { transactionCreateReqVOOut.setContainerNumber(issueRecordDetailDO.getToContainerNumber()); transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); transactionCreateReqVOOut.setWarehouseCode(issueRecordMainDO.getToWarehouseCode()); - // 如果使用在途库 库存事务 库位赋值为 在途库 - transactionCreateReqVOOut.setLocationCode(issueRecordMainDO.getUseOnTheWayLocation().equals("TRUE")?issueRecordDetailDO.getOnTheWayLocationCode():recordLstItem.get("toLocationCode").toString()); + transactionCreateReqVOOut.setLocationCode(subListItem.getFromLocationCode()); transactionCreateReqVOList.add(transactionCreateReqVOOut); }); } @@ -424,6 +423,7 @@ public class IssueJobMainServiceImpl implements IssueJobMainService { productionreceiptJobDetailDO.setPackingNumber(item.getToPackingNumber()); productionreceiptJobDetailDO.setContainerNumber(item.getToContainerNumber()); productionreceiptJobDetailDO.setBatch(item.getToBatch()); + productionreceiptJobDetailDO.setFromLocationCode(item.getOnTheWayLocationCode()); productionreceiptJobDetailDO.setMasterId(productionreceiptJobMainDO.getId()); productionreceiptJobDetailDO.setNumber(productionreceiptJobMainDO.getNumber()); productionreceiptJobDetailDO.setCreator(null); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java index 579f96ea..fb1931e9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java @@ -465,8 +465,9 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { this.validatorIfInType(itembasicDO.getType(), businesstypeDO); this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom()); validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode()); - validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode()); -// 暂时不校验 生产线物品关系 + WorkstationDO workstationDO = validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode()); + issueRequestDetailDO.setToLocationCode(workstationDO.getRawLocationCode()); + // 暂时不校验 生产线物品关系 // ProductionlineitemDO productionlineitemDO = this.validatorProductionLineCodeAndpItemCodeExist(issueRequestDetailDO.getProductionLineCode(), issueRequestDetailDO.getItemCode()); // issueRequestDetailDO.setToLocationCode(productionlineitemDO.getRawLocationCode()); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java index 0824212e..b11d11af 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java @@ -80,7 +80,6 @@ public interface ItembasicService { /** * 获得货主列表 * - * @param ids 编号 * @return 货主列表 */ List getItembasicList(); @@ -109,4 +108,11 @@ public interface ItembasicService { * @return 物品基本信息 */ public ItembasicDO selectItembasic(String code); + + /** + * 判断 物品 是否为下线结算物品 + * @param code + * @return + */ + public Boolean isOfflines(String code); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java index ddffc36e..b7534930 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java @@ -360,4 +360,15 @@ public class ItembasicServiceImpl implements ItembasicService { throw exception(ITEMBASIC_NOT_EXISTS); } } + + @Override + public Boolean isOfflines(String code) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("code",code); + queryWrapper.eq("available","TRUE"); +// queryWrapper.eq("status","ENABLE"); + ItembasicDO itembasicDO = itembasicMapper.selectOne(queryWrapper); + // TODO: 如何判断是否 下线结算件 + return false; + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java index 20d019ea..a593e980 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java @@ -20,6 +20,8 @@ import com.win.module.wms.controller.bom.vo.BomExportReqVO; import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailCreateReqVO; import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainCreateReqVO; import com.win.module.wms.controller.production.vo.*; +import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestDetailCreateReqVO; +import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainCreateReqVO; import com.win.module.wms.controller.work.vo.WorkDetailCreateReqVO; import com.win.module.wms.controller.work.vo.WorkMainImportErrorVO; import com.win.module.wms.convert.production.ProductionDetailConvert; @@ -39,6 +41,7 @@ import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.team.TeamDO; import com.win.module.wms.dal.dataobject.work.WorkDetailDO; import com.win.module.wms.dal.dataobject.work.WorkMainDO; +import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.documentSwitch.SwitchMapper; import com.win.module.wms.dal.mysql.documentsetting.DocumentsettingMapper; import com.win.module.wms.dal.mysql.preparetoissue.PreparetoissueMainMapper; @@ -46,6 +49,7 @@ import com.win.module.wms.dal.mysql.production.ProductionDetailMapper; import com.win.module.wms.dal.mysql.production.ProductionMainMapper; import com.win.module.wms.dal.mysql.productreceiptJob.ProductreceiptJobDetailMapper; import com.win.module.wms.dal.mysql.productreceiptRequest.ProductreceiptRequestMainMapper; +import com.win.module.wms.dal.mysql.workstation.WorkstationMapper; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.plan.PlanStatusEnum; import com.win.module.wms.enums.plan.PlanStatusState; @@ -56,11 +60,13 @@ import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.preparetoissue.PreparetoissueMainService; import com.win.module.wms.service.productionline.ProductionlineService; import com.win.module.wms.service.productionlineitem.ProductionlineitemService; +import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestMainService; import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.supplieritem.SupplieritemService; import com.win.module.wms.service.team.TeamService; import com.win.module.wms.service.work.WorkMainService; import com.win.module.wms.service.workshop.WorkshopService; +import com.win.module.wms.service.workstation.WorkstationService; import com.win.module.wms.util.JobUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -75,6 +81,7 @@ import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Resource; import javax.validation.Validator; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; @@ -92,6 +99,10 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Validated public class ProductionMainServiceImpl implements ProductionMainService { + @Resource + private WorkstationMapper workstationMapper; + @Resource + private ProductreceiptRequestMainService productreceiptRequestMainService; @Resource private SwitchMapper switchMapper; @Resource @@ -132,6 +143,9 @@ public class ProductionMainServiceImpl implements ProductionMainService { @Resource private WorkMainService workMainService; + public ProductionMainServiceImpl() { + } + @Override @Transactional public Long createProductionMain(ProductionMainCreateReqVO createReqVO) { @@ -540,8 +554,32 @@ public class ProductionMainServiceImpl implements ProductionMainService { } // 判断单据设置:该计划发布后 是否创建 制品收货申请 if(switchMapper.selectByCode("CreateProductReciptRequestAfterProductionPlanPublished").getEffectiveSetValue().equals("TRUE")) { -// TODO:先做制品收货申请导入新增编辑 之后再补充这里 + ProductreceiptRequestMainCreateReqVO productreceiptRequestMainCreateReqVO = new ProductreceiptRequestMainCreateReqVO(); + productreceiptRequestMainCreateReqVO.setProductionPlanNumber(mainDO.getNumber()); + productreceiptRequestMainCreateReqVO.setWorkshopCode(mainDO.getWorkshop()); + productreceiptRequestMainCreateReqVO.setTeam(mainDO.getTeam()); + productreceiptRequestMainCreateReqVO.setShift(mainDO.getShift()); + List subList = new ArrayList<>(); + for(ProductionDetailDO productionDetailDO: detailDOList) { + ProductreceiptRequestDetailCreateReqVO productreceiptRequestDetailCreateReqVO = new ProductreceiptRequestDetailCreateReqVO(); + // 根据 生产线代码 车间 查询 工位代码 信息 默认工位信息第一条 + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("workshop_code",mainDO.getWorkshop()); + queryWrapper.eq("production_line_code",mainDO.getProductionLine()); + List workstationDOList = workstationMapper.selectList(queryWrapper); + productreceiptRequestDetailCreateReqVO.setWorkStationCode(workstationDOList.get(0).getCode()); + productreceiptRequestDetailCreateReqVO.setProductionLineCode(mainDO.getProductionLine()); + productreceiptRequestDetailCreateReqVO.setItemCode(productionDetailDO.getItemCode()); + productreceiptRequestDetailCreateReqVO.setBomVersion(productionDetailDO.getBomVersion()); + LocalDate today = LocalDate.now(); // 获取当前日期 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); // 定义日期格式 + productreceiptRequestDetailCreateReqVO.setBatch(today.format(formatter)); + productreceiptRequestDetailCreateReqVO.setQty(productionDetailDO.getPlanQty()); + productreceiptRequestDetailCreateReqVO.setUom(productionDetailDO.getUom()); + subList.add(productreceiptRequestDetailCreateReqVO); + } + productreceiptRequestMainCreateReqVO.setSubList(subList); + productreceiptRequestMainService.createProductreceiptRequestMain(productreceiptRequestMainCreateReqVO); } } - } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java index b711268d..d3de64f5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java @@ -346,11 +346,11 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob transactionCreateReqVOOut.setOwnerCode(productionreceiptRecordDetailDO.getFromOwnerCode()); transactionCreateReqVOOut.setRecordNumber(number); transactionCreateReqVOOut.setId(null); - transactionCreateReqVOOut.setPackingNumber(productionreceiptRecordDetailDO.getToPackingNumber()); - transactionCreateReqVOOut.setBatch(productionreceiptRecordDetailDO.getToBatch()); - transactionCreateReqVOOut.setContainerNumber(productionreceiptRecordDetailDO.getToContainerNumber()); + transactionCreateReqVOOut.setPackingNumber(productionreceiptRecordDetailDO.getFromPackingNumber()); + transactionCreateReqVOOut.setBatch(productionreceiptRecordDetailDO.getFromBatch()); + transactionCreateReqVOOut.setContainerNumber(productionreceiptRecordDetailDO.getFromContainerNumber()); transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); - transactionCreateReqVOOut.setLocationCode(productionreceiptRecordDetailDO.getToLocationCode()); + transactionCreateReqVOOut.setLocationCode(productionreceiptRecordDetailDO.getFromLocationCode()); transactionCreateReqVOList.add(transactionCreateReqVOOut); } }); @@ -358,6 +358,7 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob if(!productionreceiptRecordDetailDOList.isEmpty()) { productionreceiptRecordDetailMapper.insertBatch(productionreceiptRecordDetailDOList); } + // TODO:判断 物品 是否为 上线结算物品 // 创建 上线结算记录 createOnlinesettlementRecord(productionreceiptRecordMainDO,productionreceiptRecordDetailDOList); //增加库存事务 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobDetailService.java index 8fc831ba..35ded6e7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobDetailService.java @@ -80,4 +80,6 @@ public interface ProductreceiptJobDetailService { * @return 分页列表 */ PageResult getProductreceiptJobDetailSenior(CustomConditions conditions); + + List selectList(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobDetailServiceImpl.java index 97427291..5d393d04 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobDetailServiceImpl.java @@ -88,4 +88,9 @@ public class ProductreceiptJobDetailServiceImpl implements ProductreceiptJobDeta public PageResult getProductreceiptJobDetailSenior(CustomConditions conditions) { return productreceiptJobDetailMapper.selectSenior(conditions); } + + @Override + public List selectList(Long masterId) { + return productreceiptJobDetailMapper.selectList(masterId); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainService.java index 5783bca9..0c76ae8c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainService.java @@ -106,4 +106,14 @@ public interface ProductreceiptJobMainService { * @return */ Map getCountByStatus(@Nullable Collection types); + + List getProductreceiptJobMainList(CustomConditions conditions); + + Integer acceptProductreceiptJobMain(Long id); + + Integer abandonProductreceiptJobMain(Long id); + + Integer closeProductreceiptJobMain(Long id); + + String executeProductreceiptJobMain(ProductreceiptJobMainUpdateReqVO updateReqVO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java index 2e79b8de..910bac31 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java @@ -1,29 +1,74 @@ package com.win.module.wms.service.productreceiptJob; 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.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainCreateReqVO; -import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainExportReqVO; -import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainPageReqVO; -import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainUpdateReqVO; +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.issueJob.vo.IssueJobDetailUpdateReqVO; +import com.win.module.wms.controller.productreceiptJob.vo.*; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.convert.productreceiptJob.ProductreceiptJobMainConvert; +import com.win.module.wms.dal.dataobject.backflushRequest.BackflushRequestDetailbDO; +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.documentSwitch.SwitchDO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; +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.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.dataobject.production.ProductionDetailDO; +import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobDetailDO; import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobMainDO; +import com.win.module.wms.dal.dataobject.productreceiptRecord.BackflushRecordDetailbDO; +import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordDetailDO; +import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordMainDO; +import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; +import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; +import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; +import com.win.module.wms.dal.mysql.backflushRequest.BackflushRequestDetailbMapper; import com.win.module.wms.dal.mysql.productreceiptJob.ProductreceiptJobMainMapper; +import com.win.module.wms.dal.mysql.productreceiptRecord.BackflushRecordDetailbMapper; +import com.win.module.wms.dal.mysql.productreceiptRecord.ProductreceiptRecordDetailMapper; +import com.win.module.wms.dal.mysql.productreceiptRecord.ProductreceiptRecordMainMapper; +import com.win.module.wms.enums.job.JobStatusState; +import com.win.module.wms.service.backflushRequest.BackflushRequestDetailbService; +import com.win.module.wms.service.balance.BalanceService; +import com.win.module.wms.service.businesstype.BusinesstypeService; +import com.win.module.wms.service.documentSwitch.SwitchService; +import com.win.module.wms.service.expectin.ExpectinService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.production.ProductionMainService; +import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestDetailService; +import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestMainService; +import com.win.module.wms.service.recordsetting.RecordsettingService; +import com.win.module.wms.service.transaction.TransactionService; +import com.win.module.wms.service.transactiontype.TransactiontypeService; +import com.win.module.wms.service.workstation.WorkstationService; +import com.win.module.wms.util.JobUtils; +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 java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTRECEIPT_JOB_MAIN_NOT_EXISTS; -import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTRECEIPT_JOB_MAIN_STATUS_ERROR; +import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 制品收货任务主 Service 实现类 @@ -34,9 +79,50 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTRECEIPT_JOB_MAI @Validated public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainService { + @Resource + private ItembasicService itembasicService; + @Resource + private BusinesstypeService businesstypeService; + @Resource + private TransactiontypeService transactiontypeService; + @Resource + private SwitchService switchService; + @Resource + private BackflushRecordDetailbMapper backflushRecordDetailbMapper; + @Resource + private BalanceService balanceService; + @Resource + private WorkstationService workstationService; + @Resource + private BackflushRequestDetailbMapper backflushRequestDetailbMapper; + @Resource + private ProductreceiptRequestMainService productreceiptRequestService; + @Resource + private ProductreceiptRequestDetailService productreceiptRequestDetailService; + @Resource + private ExpectinService expectinService; + @Resource + private TransactionService transactionService; + @Resource + private ProductreceiptRecordDetailMapper productreceiptRecordDetailMapper; + @Resource + private LocationService locationService; + @Resource + private ProductreceiptRecordMainMapper productreceiptRecordMainMapper; + @Resource + private JobUtils jobUtils; + @Resource + private RecordsettingService recordsettingService; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private ProductreceiptJobDetailService productreceiptJobDetailService; + @Resource + private TrendsApi trendsApi; + @Resource + private AdminUserApi userApi; @Resource private ProductreceiptJobMainMapper productreceiptJobMainMapper; - @Resource private ProductionMainService productionMainService; @@ -66,10 +152,12 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe productreceiptJobMainMapper.deleteById(id); } - private void validateProductreceiptJobMainExists(Long id) { - if (productreceiptJobMainMapper.selectById(id) == null) { + private ProductreceiptJobMainDO validateProductreceiptJobMainExists(Long id) { + ProductreceiptJobMainDO productreceiptJobMainDO = productreceiptJobMainMapper.selectById(id); + if ( productreceiptJobMainDO == null) { throw exception(PRODUCTRECEIPT_JOB_MAIN_NOT_EXISTS); } + return productreceiptJobMainDO; } @Override @@ -123,4 +211,267 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe map.put("count", l.intValue()); return map; } + + @Override + public List getProductreceiptJobMainList(CustomConditions conditions) { + return productreceiptJobMainMapper.selectSeniorList(conditions); + } + + @Override + @Transactional + public Integer acceptProductreceiptJobMain(Long id) { + ProductreceiptJobMainDO productreceiptJobMainDO = this.validateProductreceiptJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(productreceiptJobMainDO.getStatus()); + if(!jobStatusState.accept()) { + throw exception(PRODUCTRECEIPT_JOB_MAIN_STATUS_ERROR); + } + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + productreceiptJobMainDO.setStatus(jobStatusState.getState().getCode()); + productreceiptJobMainDO.setAcceptUserId(String.valueOf(userId)); + productreceiptJobMainDO.setAcceptUserName(userRespDTO.getNickname()); + productreceiptJobMainDO.setAcceptTime(LocalDateTime.now()); + trendsApi.createTrends(id, "productreceiptJob", "承接了制品收货任务", TrendsTypeEnum.UPDATE); + return productreceiptJobMainMapper.updateById(productreceiptJobMainDO); + } + + @Override + @Transactional + public Integer abandonProductreceiptJobMain(Long id) { + ProductreceiptJobMainDO productreceiptJobMainDO = this.validateProductreceiptJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(productreceiptJobMainDO.getStatus()); + if(!jobStatusState.cancelAccept()) { + throw exception(PRODUCTRECEIPT_JOB_MAIN_STATUS_ERROR); + } + productreceiptJobMainDO.setStatus(jobStatusState.getState().getCode()); + productreceiptJobMainDO.setAcceptUserId(null); + productreceiptJobMainDO.setAcceptUserName(null); + productreceiptJobMainDO.setAcceptTime(null); + trendsApi.createTrends(id, "productreceiptJob", "取消了制品收货任务", TrendsTypeEnum.UPDATE); + return productreceiptJobMainMapper.updateById(productreceiptJobMainDO); + } + + @Override + @Transactional + public Integer closeProductreceiptJobMain(Long id) { + ProductreceiptJobMainDO productreceiptJobMainDO = this.validateProductreceiptJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(productreceiptJobMainDO.getStatus()); + if(!jobStatusState.close()) { + throw exception(PRODUCTRECEIPT_JOB_MAIN_STATUS_ERROR); + } + productreceiptJobMainDO.setStatus(jobStatusState.getState().getCode()); + trendsApi.createTrends(id, "productreceiptJob", "关闭了制品收货任务", TrendsTypeEnum.UPDATE); + return productreceiptJobMainMapper.updateById(productreceiptJobMainDO); + } + + @Override + @Transactional + public String executeProductreceiptJobMain(ProductreceiptJobMainUpdateReqVO updateReqVO) { + //查询数据 + ProductreceiptJobMainDO productreceiptJobMainDO = this.validateProductreceiptJobMainExists(updateReqVO.getId()); + List subList = productreceiptJobDetailService.selectList(productreceiptJobMainDO.getId()); + JobStatusState jobStatusState = new JobStatusState(productreceiptJobMainDO.getStatus()); + boolean flag = jobStatusState.execute(); + if(!flag) { + throw new ServiceException(PRODUCTRECEIPT_JOB_MAIN_STATUS_ERROR); + } + //更新完成信息 + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + productreceiptJobMainDO.setStatus(jobStatusState.getState().getCode()); + productreceiptJobMainDO.setCompleteTime(LocalDateTime.now()); + productreceiptJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId())); + productreceiptJobMainDO.setCompleteUserName(userRespDTO.getNickname()); + //更新任务表状态 + int result = productreceiptJobMainMapper.updateById(productreceiptJobMainDO); + //创建 记录 主表 + ProductreceiptRecordMainDO productreceiptRecordMainDO = new ProductreceiptRecordMainDO(); + BeanUtils.copyProperties(productreceiptJobMainDO, productreceiptRecordMainDO); + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_RECEIPT_RECORD.getCode()); + productreceiptRecordMainDO.setNumber(number); + productreceiptRecordMainDO.setRequestNumber(productreceiptJobMainDO.getRequestNumber()); + productreceiptRecordMainDO.setJobNumber(productreceiptJobMainDO.getNumber()); + productreceiptRecordMainDO.setWorkshopCode(productreceiptJobMainDO.getWorkShopCode()); + productreceiptRecordMainDO.setExecuteTime(LocalDateTime.now()); + productreceiptRecordMainDO.setActiveDate(LocalDateTime.now()); + productreceiptRecordMainDO.setAvailable("TRUE"); + productreceiptRecordMainDO.setDueTime(productreceiptJobMainDO.getRequestDueTime()); + productreceiptRecordMainDO.setId(null); + productreceiptRecordMainDO.setCreator(null); + productreceiptRecordMainDO.setCreateTime(null); + productreceiptRecordMainDO.setUpdater(null); + productreceiptRecordMainDO.setUpdateTime(null); + // 接口类型 + productreceiptRecordMainDO.setInterfaceType(recordsettingService.selectRecordsettingExist("IssueRecord").getInterfaceType()); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRecord"); + productreceiptRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); + productreceiptRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType()); + productreceiptRecordMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + productreceiptRecordMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + productreceiptRecordMainDO.setBusinessType(businesstypeDO.getCode()); + productreceiptRecordMainMapper.insert(productreceiptRecordMainDO); + // 获取参数中的sublist + List productreceiptJobDetailUpdateReqVOList = updateReqVO.getSubList(); + //发料记录子 + List productreceiptRecordDetailDOList = new ArrayList<>(); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + subList.forEach(subListItem -> { + // 获取参数中recordLst + productreceiptJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> { + // 匹配任务子表与参数中子表 + if (DetailUpdateItem.getId().equals(subListItem.getId())) { + ProductreceiptRecordDetailDO productreceiptRecordDetailDO = new ProductreceiptRecordDetailDO(); + BeanUtils.copyProperties(subListItem, productreceiptRecordDetailDO); + productreceiptRecordDetailDO.setNumber(number); + productreceiptRecordDetailDO.setMasterId(productreceiptRecordMainDO.getId()); + productreceiptRecordDetailDO.setProductionlineCode(subListItem.getProductionLineCode()); + productreceiptRecordDetailDO.setId(null); + productreceiptRecordDetailDO.setCreator(null); + productreceiptRecordDetailDO.setCreateTime(null); + productreceiptRecordDetailDO.setUpdater(null); + productreceiptRecordDetailDO.setUpdateTime(null); + // 根据recordLst 进行赋值子表部分数据 + productreceiptRecordDetailDO.setQty(DetailUpdateItem.getHandleQty()); + productreceiptRecordDetailDO.setPackingNumber(DetailUpdateItem.getToPackingNumber()); + productreceiptRecordDetailDO.setContainerNumber(DetailUpdateItem.getToContainerNumber()); + productreceiptRecordDetailDO.setBatch(DetailUpdateItem.getToBatch()); + productreceiptRecordDetailDO.setToLocationCode(DetailUpdateItem.getToLocationCode()); + productreceiptRecordDetailDO.setInventoryStatus(DetailUpdateItem.getToInventoryStatus()); + // 根据 to库位 查询 库位组 库区 + LocationDO locationDO = locationService.selectLocation(DetailUpdateItem.getToLocationCode()); + productreceiptRecordDetailDO.setToLocationGroupCode(locationDO.getLocationGroupCode()); + productreceiptRecordDetailDO.setToAreaCode(locationDO.getAreaCode()); + productreceiptRecordDetailMapper.insert(productreceiptRecordDetailDO); + productreceiptRecordDetailDOList.add(productreceiptRecordDetailDO); // 不用批量执行 因为要用到返回的id 赋值回冲用 + //添加库存事务list + // 入动作 + TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); + BeanUtils.copyProperties(productreceiptRecordDetailDO, transactionCreateReqVO); + TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); + transactionCreateReqVO.setBusinessType(productreceiptRecordMainDO.getBusinessType()); + transactionCreateReqVO.setOwnerCode(productreceiptRecordDetailDO.getToOwnerCode()); + transactionCreateReqVO.setRecordNumber(number); + transactionCreateReqVO.setId(null); + transactionCreateReqVO.setPackingNumber(productreceiptRecordDetailDO.getPackingNumber()); + transactionCreateReqVO.setBatch(productreceiptRecordDetailDO.getBatch()); + transactionCreateReqVO.setContainerNumber(productreceiptRecordDetailDO.getContainerNumber()); + transactionCreateReqVO.setAmount(BigDecimal.ZERO); + transactionCreateReqVO.setWarehouseCode(productreceiptRecordMainDO.getToWarehouseCode()); + transactionCreateReqVO.setLocationCode(DetailUpdateItem.getToLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVO); + } + }); + }); +// if(!productreceiptRecordDetailDOList.isEmpty()) { +// productreceiptRecordDetailMapper.insertBatch(productreceiptRecordDetailDOList); +// } + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + //移除预计入 + expectinService.deleteExpectinByJobNumber(productreceiptJobMainDO.getNumber()); + //变更记录 + trendsApi.createTrends(productreceiptJobMainDO.getId(), "productreceiptJob", "执行了制品收货任务", TrendsTypeEnum.UPDATE); + // 根据单据开关判断是否创建 回冲记录 + SwitchDO switchDOBack = switchService.selectSwitchExist("CreateBackflushRecordAfterProductreceiptRecordCreated"); + if (switchDOBack.getEffectiveSetValue().equals("TRUE")) { + // 创建 回冲记录(record_backflush_detailb) + generateBackflushRecord(productreceiptRecordMainDO, productreceiptRecordDetailDOList); + } + // 根据单据开关判断是否创建 制品上架申请 + SwitchDO switchDO = switchService.selectSwitchExist("CreateProductputawayRequestAfterProductreceiptRecordCreated"); + if (switchDO.getEffectiveSetValue().equals("TRUE")) { + // TODO: 创建 制品上架申请 + + } + return number; + } + + /** + * 创建 回冲记录 + * @param productreceiptRecordMainDO + * @param productreceiptRecordDetailDOList + */ + private void generateBackflushRecord(ProductreceiptRecordMainDO productreceiptRecordMainDO, List productreceiptRecordDetailDOList) { + List productreceiptRequestDetailDOList = productreceiptRequestService.getProductreceiptRequestDetailDOByNumber(productreceiptRecordMainDO.getRequestNumber()); + List backflushRecordDetailbDOList = new ArrayList<>(); + // 下线结算集合 + List offlinesettlementRecordList = new ArrayList<>(); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + for(ProductreceiptRequestDetailDO productreceiptRequestDetailDO: productreceiptRequestDetailDOList){ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("master_id",productreceiptRequestDetailDO.getId().toString()); + List backflushRequestDetailbDOList = backflushRequestDetailbMapper.selectList(queryWrapper); + for(BackflushRequestDetailbDO backflushRequestDetailbDO: backflushRequestDetailbDOList ) { + ProductreceiptRecordDetailDO productreceiptRecordDetailDO = productreceiptRecordDetailDOList.stream().filter(item -> item.getItemCode().equals(productreceiptRequestDetailDO.getItemCode())).collect(Collectors.toList()).get(0); + BackflushRecordDetailbDO backflushRecordDetailbDO = new BackflushRecordDetailbDO(); + BeanUtils.copyProperties(backflushRequestDetailbDO,backflushRecordDetailbDO); + backflushRecordDetailbDO.setMasterId(productreceiptRecordDetailDO.getId()); + backflushRecordDetailbDO.setNumber(productreceiptRecordDetailDO.getNumber()); + backflushRecordDetailbDO.setId(null); + backflushRecordDetailbDO.setCreator(null); + backflushRecordDetailbDO.setCreateTime(null); + backflushRecordDetailbDO.setUpdater(null); + backflushRecordDetailbDO.setUpdateTime(null); + // from_location_code 工位表中原料库位 + // 根据 生产线 工位 查询工位信息 并赋值 from_location_code + WorkstationDO workstationDO = workstationService.selectWorkstationExist(productreceiptRecordDetailDO.getWorkStationCode(),productreceiptRecordMainDO.getWorkshopCode(),productreceiptRecordDetailDO.getProductionlineCode()); + backflushRecordDetailbDO.setFromLocationCode(workstationDO.getRawLocationCode()); + // 根据 from_location_code 查询库存余额 + List inventoryStatus = new ArrayList(); + inventoryStatus.add("OK"); + List balanceDOList = balanceService.selectNumber(backflushRequestDetailbDO.getItemCode(),inventoryStatus,workstationDO.getRawLocationCode()); + backflushRecordDetailbDO.setPackingNumber(balanceDOList.get(0).getPackingNumber()); + backflushRecordDetailbDO.setBatch(balanceDOList.get(0).getBatch()); + backflushRecordDetailbDO.setInventoryStatus("OK"); + backflushRecordDetailbDO.setFromAreaCode(balanceDOList.get(0).getAreaCode()); + backflushRecordDetailbDO.setFromLocationGroupCode(balanceDOList.get(0).getLocationGroupCode()); + backflushRecordDetailbDOList.add(backflushRecordDetailbDO); + //添加库存事务list + // 出动作 + TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); + BeanUtils.copyProperties(backflushRecordDetailbDO, transactionCreateReqVO); + BusinesstypeDO businesstypeDO = businesstypeService.selectBusinesstypeExist(productreceiptRecordMainDO.getBusinessType()); + TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); + transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); + transactionCreateReqVO.setBusinessType(businesstypeDO.getCode()); + transactionCreateReqVO.setOwnerCode(""); + transactionCreateReqVO.setRecordNumber(backflushRecordDetailbDO.getNumber()); + transactionCreateReqVO.setId(null); + transactionCreateReqVO.setPackingNumber(backflushRecordDetailbDO.getPackingNumber()); + transactionCreateReqVO.setBatch(backflushRecordDetailbDO.getBatch()); + transactionCreateReqVO.setContainerNumber(""); + transactionCreateReqVO.setAmount(BigDecimal.ZERO); + transactionCreateReqVO.setWarehouseCode(""); + transactionCreateReqVO.setLocationCode(backflushRecordDetailbDO.getFromLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVO); + // 判断 物品 是否为 下线结算物品 创建 下线结算记录 +// ItembasicDO itembasicDO = itembasicService.s +// if (backflushRecordDetailbDO.getItemCode()) { +// +// } + offlinesettlementRecordList.add(backflushRecordDetailbDO); + } + } + backflushRecordDetailbMapper.insertBatch(backflushRecordDetailbDOList); + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + // TODO:判断 物品 是否为 下线结算物品 创建 下线结算记录 + generateOfflinesettlementRecord(productreceiptRecordMainDO, offlinesettlementRecordList); + } + + /** + * 创建 下线结算 记录 + * @param productreceiptRecordMainDO + * @param offlinesettlementRecordList + */ + private void generateOfflinesettlementRecord(ProductreceiptRecordMainDO productreceiptRecordMainDO, List offlinesettlementRecordList) { + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordDetailService.java index adac95a0..5180a3e4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordDetailService.java @@ -80,4 +80,6 @@ public interface ProductreceiptRecordDetailService { * @return 分页列表 */ PageResult getProductreceiptRecordDetailSenior(CustomConditions conditions); + + List selectList(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordDetailServiceImpl.java index b27f2856..d49b9eab 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordDetailServiceImpl.java @@ -88,4 +88,9 @@ public class ProductreceiptRecordDetailServiceImpl implements ProductreceiptReco public PageResult getProductreceiptRecordDetailSenior(CustomConditions conditions) { return productreceiptRecordDetailMapper.selectSenior(conditions); } + + @Override + public List selectList(Long masterId) { + return productreceiptRecordDetailMapper.selectList(masterId); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordMainService.java index 792f8c40..f259029e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordMainService.java @@ -80,4 +80,6 @@ public interface ProductreceiptRecordMainService { * @return 分页列表 */ PageResult getProductreceiptRecordMainSenior(CustomConditions conditions); + + List getProductreceiptRecordMainList(CustomConditions conditions); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordMainServiceImpl.java index ca9bbdd2..65a03c94 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRecord/ProductreceiptRecordMainServiceImpl.java @@ -88,4 +88,9 @@ public class ProductreceiptRecordMainServiceImpl implements ProductreceiptRecord public PageResult getProductreceiptRecordMainSenior(CustomConditions conditions) { return productreceiptRecordMainMapper.selectSenior(conditions); } + + @Override + public List getProductreceiptRecordMainList(CustomConditions conditions) { + return productreceiptRecordMainMapper.selectSeniorList(conditions); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainService.java index f4cbb959..ff3ba0bb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainService.java @@ -84,6 +84,8 @@ public interface ProductreceiptRequestMainService { List importProductreceiptRequestList(List createReqVOList, Integer mode, Boolean updatePart); + List getProductreceiptRequestDetailDOByNumber(String requestNumber); + void generateBackflushRequest(ProductreceiptRequestDetailDO detailbDO); Integer closeProductreceiptRequestMain(Long id); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainServiceImpl.java index 3524812b..0bf7cce5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +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.framework.common.pojo.PageResult; @@ -500,6 +501,13 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque return errorList; } + @Override + public List getProductreceiptRequestDetailDOByNumber(String requestNumber) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("number", requestNumber); + return productreceiptRequestDetailMapper.selectList(queryWrapper); + } + /** * 创建 制品收货申请第二子表(bom相关) * @param detailbDO