From 2c0be42d8e600772f915f7135ed3a43525dfb2cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Thu, 14 Dec 2023 16:28:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=B6=E5=93=81=E4=B8=8A=E6=9E=B6=E7=94=B3?= =?UTF-8?q?=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 2 + .../vo/ProductputawayJobMainBaseVO.java | 6 + .../vo/ProductputawayJobMainPageReqVO.java | 6 + .../ProductputawayRequestMainController.java | 149 ++++++-- .../vo/ProductputawayImportVO.java | 4 +- .../vo/ProductputawayRequestDetailBaseVO.java | 3 + .../ProductputawayRequestDetailPageReqVO.java | 4 + .../vo/ProductputawayRequestImportVO.java | 50 +++ .../vo/ProductputawayRequestMainExcelVO.java | 77 +++- .../ProductreceiptJobMainController.java | 13 +- .../issueRequest/IssueRequestMainConvert.java | 4 +- .../ProductputawayRequestMainConvert.java | 11 +- .../ProductputawayJobMainDO.java | 8 + .../ProductputawayJobMainMapper.java | 7 + .../ProductputawayRequestDetailMapper.java | 7 + .../ProductputawayRequestMainMapper.java | 4 + .../IssueRequestMainServiceImpl.java | 15 +- ...roductionreturnRequestMainServiceImpl.java | 8 +- .../ProductputawayRequestDetailService.java | 2 + ...roductputawayRequestDetailServiceImpl.java | 62 ++++ .../ProductputawayRequestMainService.java | 13 + .../ProductputawayRequestMainServiceImpl.java | 328 +++++++++++++++--- .../ProductreceiptRequestMainServiceImpl.java | 9 +- 23 files changed, 688 insertions(+), 104 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestImportVO.java diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java index 8dc0da78..4ea3b36c 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java @@ -730,6 +730,8 @@ public interface ErrorCodeConstants { ErrorCode PRODUCTPUTAWAY_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_112_001, "制品上架申请子不存在"); //制品上架申请ErrorCode ErrorCode PRODUCTPUTAWAY_REQUEST_NOT_EXISTS = new ErrorCode(1_000_112_002, "制品上架申请不存在"); + ErrorCode PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR = new ErrorCode(1_000_112_003, "制品上架申请状态错误"); + ErrorCode PRODUCTPUTAWAY_REQUEST_JOB_EXISTS = new ErrorCode(1_000_112_004, "制品上架申请存在制品上架任务单"); //制品上架任务ErrorCode ErrorCode PRODUCTPUTAWAY_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_113_000, "制品上架任务主不存在"); ErrorCode PRODUCTPUTAWAY_JOB_DETAIL_NOT_EXISTS = new ErrorCode(1_000_113_001, "制品上架任务子不存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayJob/vo/ProductputawayJobMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayJob/vo/ProductputawayJobMainBaseVO.java index 0d68e4aa..66b57d2d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayJob/vo/ProductputawayJobMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayJob/vo/ProductputawayJobMainBaseVO.java @@ -144,4 +144,10 @@ public class ProductputawayJobMainBaseVO { @Schema(description = "允许修改箱码") private String allowModifyPackingNumber; + @Schema(description = "入库库存状态范围") + private String inInventoryStatuses; + + @Schema(description = "出库库存状态范围") + private String outInventoryStatuses; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayJob/vo/ProductputawayJobMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayJob/vo/ProductputawayJobMainPageReqVO.java index 92187e1a..f4ba9a94 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayJob/vo/ProductputawayJobMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayJob/vo/ProductputawayJobMainPageReqVO.java @@ -133,4 +133,10 @@ public class ProductputawayJobMainPageReqVO extends PageParam { @Schema(description = "允许修改箱码") private String allowModifyPackingNumber; + @Schema(description = "入库库存状态范围") + private String inInventoryStatuses; + + @Schema(description = "出库库存状态范围") + private String outInventoryStatuses; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/ProductputawayRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/ProductputawayRequestMainController.java index d2e63ef0..af4c0629 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/ProductputawayRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/ProductputawayRequestMainController.java @@ -9,9 +9,13 @@ 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.issueRequest.vo.IssueRequestMainExcelVO; import com.win.module.wms.controller.productputawayRequest.vo.*; +import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert; import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert; import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestMainConvert; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; import com.win.module.wms.enums.DictTypeConstants; @@ -102,23 +106,6 @@ public class ProductputawayRequestMainController { return success(ProductputawayRequestMainConvert.INSTANCE.convertPage(pageResult)); } - @GetMapping("/export-excel") - @Operation(summary = "导出制品上架申请主 Excel") - @PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:export')") - @OperateLog(type = EXPORT) - public void exportProductputawayRequestMainExcel(@Valid ProductputawayRequestMainExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = productputawayRequestMainService.getProductputawayRequestMainList(exportReqVO); - // 导出 Excel - List datas = ProductputawayRequestMainConvert.INSTANCE.convertList02(list); - for (ProductputawayRequestMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "制品上架申请主.xls", "数据", ProductputawayRequestMainExcelVO.class, datas); - } - @PostMapping("/senior") @Operation(summary = "高级搜索获得制品上架申请主分页") @PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:query')") @@ -137,18 +124,75 @@ public class ProductputawayRequestMainController { @Operation(summary = "获得导入制品上架申请信息模板") public void importTemplate(HttpServletResponse response) throws IOException { // 手动创建导出 demo - List list = Arrays.asList( -// ProductputawayImportExcelVO.builder().code("code").name("name").build() - ); + List list = new ArrayList<>(); Map mapDropDown = new HashMap<>(); - String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); - mapDropDown.put(3, inventoryStatus); String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); - mapDropDown.put(7, uom); + mapDropDown.put(6, uom); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(7, inventoryStatus); // 输出 - ExcelUtils.write(response, "制品上架申请信息导入模板.xls", "制品上架申请信息列表", ProductputawayImportVO.class, list,mapDropDown); + ExcelUtils.write(response, "检验发料申请导入模板.xlsx", "发料申请信息列表", ProductputawayRequestImportVO.class, list, mapDropDown); + } + + private List getExcelVo(List list, Map mapDropDown) { + String[] locationTypes = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(3, locationTypes); + mapDropDown.put(4, locationTypes); + String[] trueFalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(18, trueFalse); + mapDropDown.put(19, trueFalse); + mapDropDown.put(20, trueFalse); + mapDropDown.put(21, trueFalse); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(25, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(35, uom); + List resultList = new ArrayList<>(); + // 导出 + for(ProductputawayRequestMainDO mainDO : list) { + List subList = productputawayRequestDetailService.selectList(mainDO.getId()); + for(ProductputawayRequestDetailDO detailDO : subList) { + ProductputawayRequestMainExcelVO vo = ProductputawayRequestMainConvert.INSTANCE.convert(mainDO, detailDO); + resultList.add(vo); + } + } + return resultList; + } + + @GetMapping("/export-excel") + @Operation(summary = "导出制品上架申请主 Excel") + @PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:export')") + @OperateLog(type = EXPORT) + public void exportProductputawayRequestMainExcel(@Valid ProductputawayRequestMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productputawayRequestMainService.getProductputawayRequestMainList(exportReqVO); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + resultList.forEach(item -> { + //后端创建个字段作为前端展示的虚拟字段 + item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname()); + item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname()); + }); + ExcelUtils.write(response, "制品上架申请.xls", "制品上架申请", ProductputawayRequestMainExcelVO.class, resultList); } + @GetMapping("/export-excel-senior") + @Operation(summary = "导出发料申请 Excel") + @PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:export')") + @OperateLog(type = EXPORT) + public void exportProductputawayRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = productputawayRequestMainService.getProductputawayRequestMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + resultList.forEach(item -> { + //后端创建个字段作为前端展示的虚拟字段 + item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname()); + item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname()); + }); + ExcelUtils.write(response, "制品上架申请.xlsx", "制品上架申请", ProductputawayRequestMainExcelVO.class, resultList, mapDropDown); + } @PostMapping("/import") @@ -189,8 +233,61 @@ public class ProductputawayRequestMainController { ProductputawayRequestDetailExportReqVO reqVO = new ProductputawayRequestDetailExportReqVO(); reqVO.setMasterId(result.getId()); List list = productputawayRequestDetailService.getProductputawayRequestDetailList(reqVO); - List vos = ProductputawayRequestDetailConvert.INSTANCE.convertList02(list); - result.setSubList(vos); + result.setSubList(list); return success(result); } + + @PutMapping("/close") + @Operation(summary = "关闭") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:close')") + public CommonResult closeProductputawayRequestMain(@RequestParam("id") Long id) { + Integer count = productputawayRequestMainService.closeProductputawayRequestMain(id); + return success(count > 0); + } + + @PutMapping("/reAdd") + @Operation(summary = "重新添加") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:reAdd')") + public CommonResult reAddProductputawayRequestMain(@RequestParam("id") Long id) { + Integer count = productputawayRequestMainService.reAddProductputawayRequestMain(id); + return success(count > 0); + } + + @PutMapping("/submit") + @Operation(summary = "提交审批") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:submit')") + public CommonResult submitProductputawayRequestMain(@RequestParam("id") Long id) { + Integer count = productputawayRequestMainService.submitProductputawayRequestMain(id); + return success(count > 0); + } + + @PutMapping("/refused") + @Operation(summary = "驳回") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:refused')") + public CommonResult refusedProductputawayRequestMain(@RequestParam("id") Long id) { + Integer count = productputawayRequestMainService.refusedProductputawayRequestMain(id); + return success(count > 0); + } + + @PutMapping("/agree") + @Operation(summary = "审批通过") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:agree')") + public CommonResult agreeProductputawayRequestMain(@RequestParam("id") Long id) { + Integer count = productputawayRequestMainService.agreeProductputawayRequestMain(id); + return success(count > 0); + } + + @PutMapping("/handle") + @Operation(summary = "处理") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productputaway-request-main:handle')") + public CommonResult handleProductputawayRequestMain(@RequestParam("id") Long id) { + Integer count = productputawayRequestMainService.handleProductputawayRequestMain(id); + return success(count > 0); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportVO.java index 442d0926..a6d8a6b8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayImportVO.java @@ -37,7 +37,7 @@ public class ProductputawayImportVO { @ExcelProperty("批次") private String batch; - @ExcelProperty("库存状态") + @ExcelProperty(value = "库存状态", converter = DictConvert.class) @DictFormat(DictTypeConstants.INVENTORY_STATUS) private String inventoryStatus; @@ -52,7 +52,7 @@ public class ProductputawayImportVO { @ExcelProperty("数量") private BigDecimal qty; - @ExcelProperty("计量单位") + @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/productputawayRequest/vo/ProductputawayRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestDetailBaseVO.java index b07a5eb3..85e20040 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestDetailBaseVO.java @@ -89,4 +89,7 @@ public class ProductputawayRequestDetailBaseVO { @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/productputawayRequest/vo/ProductputawayRequestDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestDetailPageReqVO.java index 19c4d0c6..9cbf0627 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestDetailPageReqVO.java @@ -85,4 +85,8 @@ public class ProductputawayRequestDetailPageReqVO 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/productputawayRequest/vo/ProductputawayRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestImportVO.java new file mode 100644 index 00000000..4ba2bc91 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestImportVO.java @@ -0,0 +1,50 @@ +package com.win.module.wms.controller.productputawayRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class ProductputawayRequestImportVO { + + @ExcelProperty("截止时间") + private String dueTime; + + // 子表数据 + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainExcelVO.java index a1fde95a..81d79239 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainExcelVO.java @@ -1,7 +1,11 @@ package com.win.module.wms.controller.productputawayRequest.vo; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusConverter; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; + +import java.math.BigDecimal; import java.util.*; import java.time.LocalDateTime; import java.time.LocalDateTime; @@ -21,9 +25,6 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class ProductputawayRequestMainExcelVO { - @ExcelProperty("id") - private Long id; - @ExcelProperty("供应商代码") private String supplierCode; @@ -34,11 +35,11 @@ public class ProductputawayRequestMainExcelVO { private String toWarehouseCode; @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("从库区代码范围") @@ -71,8 +72,7 @@ public class ProductputawayRequestMainExcelVO { @ExcelProperty("部门") private String departmentCode; - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("request_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty(value = "状态", converter = RequestStatusConverter.class) private String status; @ExcelProperty("最后更新时间") @@ -81,16 +81,71 @@ public class ProductputawayRequestMainExcelVO { @ExcelProperty("最后更新者用户名") private String updater; - @ExcelProperty("自动提交") + @ExcelProperty(value = "自动提交", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String autoCommit; - @ExcelProperty("自动通过") + @ExcelProperty(value = "自动通过", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String autoAgree; - @ExcelProperty("自动执行") + @ExcelProperty(value = "自动执行", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String autoExecute; - @ExcelProperty("直接生成记录") + @ExcelProperty(value = "直接生成记录", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) private String directCreateRecord; + // 子表数据 + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("订单号") + private String poNumber; + + @ExcelProperty("订单行") + private String poLine; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; + + @ExcelProperty("从货主代码") + private BigDecimal fromOwnerCode; + + @ExcelProperty("到货主代码") + private BigDecimal toOwnerCode; + } 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 9b8181a4..a2e6eff6 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 @@ -11,6 +11,7 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.productreceiptJob.vo.*; import com.win.module.wms.convert.productreceiptJob.ProductreceiptJobDetailConvert; import com.win.module.wms.convert.productreceiptJob.ProductreceiptJobMainConvert; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; 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; @@ -191,11 +192,13 @@ public class ProductreceiptJobMainController { if(result==null) { return success(result); }; - ProductreceiptJobDetailExportReqVO rxportReqVO = new ProductreceiptJobDetailExportReqVO(); - rxportReqVO.setMasterId(result.getId()); - List productreceiptJobDetailList = productreceiptJobDetailService.getProductreceiptJobDetailList(rxportReqVO); - List productreceiptJobDetailExcelVOS = ProductreceiptJobDetailConvert.INSTANCE.convertList02(productreceiptJobDetailList); - result.setSubList(productreceiptJobDetailExcelVOS); +// ProductreceiptJobDetailExportReqVO rxportReqVO = new ProductreceiptJobDetailExportReqVO(); +// rxportReqVO.setMasterId(result.getId()); +// List productreceiptJobDetailList = productreceiptJobDetailService.getProductreceiptJobDetailList(rxportReqVO); +// List productreceiptJobDetailExcelVOS = ProductreceiptJobDetailConvert.INSTANCE.convertList02(productreceiptJobDetailList); +// result.setSubList(productreceiptJobDetailExcelVOS); + List subList = productreceiptJobDetailService.selectList(id); + result.setSubList(subList); return success(result); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java index 2c711a00..53387513 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java @@ -3,10 +3,13 @@ package com.win.module.wms.convert.issueRequest; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.issueRequest.vo.*; import com.win.module.wms.controller.production.vo.ProductionMainExcelVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainExcelVO; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import com.win.module.wms.dal.dataobject.production.ProductionDetailDO; import com.win.module.wms.dal.dataobject.production.ProductionMainDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; @@ -55,5 +58,4 @@ public interface IssueRequestMainConvert { @Mapping(source = "detailDO.remark", target = "remarkDetail"), }) IssueRequestMainExcelVO convert(IssueRequestMainDO mainDO, IssueRequestDetailDO detailDO); - } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java index 2f48cea1..c559f855 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java @@ -50,6 +50,13 @@ public interface ProductputawayRequestMainConvert { ProductputawayImportErrorVO convert(ProductputawayRequestMainCreateReqVO mainVo, ProductputawayRequestDetailDO detailDo); - - + @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"), + }) + ProductputawayRequestMainExcelVO convert(ProductputawayRequestMainDO mainDO, ProductputawayRequestDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayJob/ProductputawayJobMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayJob/ProductputawayJobMainDO.java index 560cb317..ea11927a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayJob/ProductputawayJobMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayJob/ProductputawayJobMainDO.java @@ -207,5 +207,13 @@ public class ProductputawayJobMainDO extends BaseDO { * 允许修改箱码 */ private String allowModifyPackingNumber; + /** + * 入库库存状态范围 + */ + private String inInventoryStatuses; + /** + * 出库库存状态范围 + */ + private String outInventoryStatuses; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayJob/ProductputawayJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayJob/ProductputawayJobMainMapper.java index 63cdc3e1..1b57e31e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayJob/ProductputawayJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayJob/ProductputawayJobMainMapper.java @@ -7,8 +7,10 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productputawayJob.vo.ProductputawayJobMainExportReqVO; import com.win.module.wms.controller.productputawayJob.vo.ProductputawayJobMainPageReqVO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.module.wms.dal.dataobject.productputawayJob.ProductputawayJobMainDO; import com.win.module.wms.dal.dataobject.purchasereturnJob.PurchasereturnJobMainDO; +import com.win.module.wms.enums.order.OrderStatusEnum; import org.apache.ibatis.annotations.Mapper; import java.util.Collection; @@ -120,4 +122,9 @@ public interface ProductputawayJobMainMapper extends BaseMapperX() + .eq(ProductputawayJobMainDO::getRequestNumber, requestNumber) + .ne(ProductputawayJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestDetailMapper.java index 754ae1f6..e0737b37 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestDetailMapper.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.productputawayRequest.vo.ProductputawayRequestDetailExportReqVO; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailPageReqVO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; import org.apache.ibatis.annotations.Mapper; @@ -22,6 +23,7 @@ public interface ProductputawayRequestDetailMapper extends BaseMapperX selectPage(ProductputawayRequestDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProductputawayRequestDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductputawayRequestDetailDO::getPackingNumber, reqVO.getPackingNumber()) .eqIfPresent(ProductputawayRequestDetailDO::getContainerNumber, reqVO.getContainerNumber()) .eqIfPresent(ProductputawayRequestDetailDO::getBatch, reqVO.getBatch()) @@ -53,6 +55,7 @@ public interface ProductputawayRequestDetailMapper extends BaseMapperX selectList(ProductputawayRequestDetailExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ProductputawayRequestDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductputawayRequestDetailDO::getPackingNumber, reqVO.getPackingNumber()) .eqIfPresent(ProductputawayRequestDetailDO::getContainerNumber, reqVO.getContainerNumber()) .eqIfPresent(ProductputawayRequestDetailDO::getBatch, reqVO.getBatch()) @@ -78,4 +81,8 @@ public interface ProductputawayRequestDetailMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(ProductputawayRequestDetailDO::getMasterId, masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestMainMapper.java index 1210e3b4..6766c5da 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productputawayRequest/ProductputawayRequestMainMapper.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.productputawayRequest.vo.ProductputawayRequestMainExportReqVO; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainPageReqVO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import org.apache.ibatis.annotations.Mapper; @@ -81,4 +82,7 @@ public interface ProductputawayRequestMainMapper 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/issueRequest/IssueRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java index cf0fcbf6..c8eba4b9 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 @@ -231,7 +231,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { IssueRequestMainDO mainDo = IssueRequestMainConvert.INSTANCE.convert(createReqVO); - String messageMain = validateIssueRequestMainImport(mainDo, businesstypeDO); + String messageMain = validateIssueRequestMainImport(mainDo); List subList = createReqVO.getSubList(); List subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList); // 是否有错误数据 @@ -251,7 +251,6 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { if (flag) { String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); mainDo.setNumber(number); - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); issueRequestMainMapper.insert(mainDo); //增加操作记录 trendsApi.createTrends(mainDo.getId(), "issueRequestMain", "导入了发料申请", TrendsTypeEnum.CREATE); @@ -280,14 +279,13 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { * @param mainDo * @return */ - private String validateIssueRequestMainImport(IssueRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + private String validateIssueRequestMainImport(IssueRequestMainDO mainDo) { StringBuilder message = new StringBuilder(); try { this.validatorWorkshop(mainDo.getWorkshopCode()); } catch (Exception ex) { message.append(ex.getMessage()).append(","); } - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); mainDo.setRequestTime(LocalDateTime.now()); RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest"); if (requestsettingDO == null) { @@ -297,8 +295,11 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); + mainDo.setStatus(requestStatusState.getState().getCode()); } - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); if (businesstypeDO == null) { message.append("根据单据设置未查找到发料申请的相关业务类型"); } else { @@ -423,13 +424,15 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { private IssueRequestMainDO validateMainMethod(IssueRequestMainBaseVO baseVO){ IssueRequestMainDO issueRequestMainDO = IssueRequestMainConvert.INSTANCE.convert(baseVO); this.validatorWorkshop(issueRequestMainDO.getWorkshopCode()); - issueRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); issueRequestMainDO.setRequestTime(LocalDateTime.now()); RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest"); issueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); issueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); issueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); issueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); + issueRequestMainDO.setStatus(requestStatusState.getState().getCode()); BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); issueRequestMainDO.setBusinessType(businesstypeDO.getCode()); issueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java index 114443f5..2aa2a41b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java @@ -260,7 +260,6 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR if (flag) { String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); mainDo.setNumber(number); - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); mainDo.setRequestTime(LocalDateTime.now()); productionreturnRequestMainMapper.insert(mainDo); for (ProductionreturnRequestDetailDO detailDO : subDOList) { @@ -286,7 +285,9 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR } String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RETURN_REQUEST.getCode()); mainDo.setNumber(number); - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "审批中")); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); + mainDo.setStatus(requestStatusState.getState().getCode()); mainDo.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); productionreturnRequestMainMapper.insert(mainDo); // 拆解后 子表集合 @@ -400,6 +401,9 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); + mainDo.setStatus(requestStatusState.getState().getCode()); } try { ValidationUtils.validate(validator, mainDo); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestDetailService.java index bfd80d41..10131028 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestDetailService.java @@ -80,4 +80,6 @@ public interface ProductputawayRequestDetailService { * @return 分页列表 */ PageResult getProductputawayRequestDetailSenior(CustomConditions conditions); + + List selectList(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestDetailServiceImpl.java index ae1677d8..ee830e9c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestDetailServiceImpl.java @@ -7,17 +7,30 @@ import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequ import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailPageReqVO; import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO; import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert; +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.issueRequest.IssueRequestDetailDO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; import com.win.module.wms.dal.mysql.productputawayRequest.ProductputawayRequestDetailMapper; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Arrays; import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTPUTAWAY_REQUEST_DETAIL_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.QTY_ERRORR; /** * 制品上架申请子 Service 实现类 @@ -28,6 +41,14 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTPUTAWAY_REQUEST @Validated public class ProductputawayRequestDetailServiceImpl implements ProductputawayRequestDetailService { + @Resource + private JobUtils jobUtils; + @Resource + private LocationService locationService; + @Resource + private ItembasicService itembasicService; + @Resource + private ProductputawayRequestMainService productputawayRequestMainService; @Resource private ProductputawayRequestDetailMapper productputawayRequestDetailMapper; @@ -35,6 +56,7 @@ public class ProductputawayRequestDetailServiceImpl implements ProductputawayReq public Long createProductputawayRequestDetail(ProductputawayRequestDetailCreateReqVO createReqVO) { // 插入 ProductputawayRequestDetailDO productputawayRequestDetail = ProductputawayRequestDetailConvert.INSTANCE.convert(createReqVO); + validatorDetail(productputawayRequestDetail); productputawayRequestDetailMapper.insert(productputawayRequestDetail); // 返回 return productputawayRequestDetail.getId(); @@ -46,9 +68,44 @@ public class ProductputawayRequestDetailServiceImpl implements ProductputawayReq validateProductputawayRequestDetailExists(updateReqVO.getId()); // 更新 ProductputawayRequestDetailDO updateObj = ProductputawayRequestDetailConvert.INSTANCE.convert(updateReqVO); + validatorDetail(updateObj); productputawayRequestDetailMapper.updateById(updateObj); } + //子表校验 + private ProductputawayRequestDetailDO validatorDetail(ProductputawayRequestDetailDO productputawayRequestDetailDO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest"); + // 主表信息 +// ProductputawayRequestMainDO productputawayRequestMainDO = productputawayRequestMainService.getProductputawayRequestMain(productputawayRequestDetailDO.getMasterId()); + ItembasicDO itembasicDO = itembasicService.selectItembasic(productputawayRequestDetailDO.getItemCode()); + productputawayRequestDetailDO.setItemDesc1(itembasicDO.getDesc1()); + productputawayRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); + productputawayRequestDetailDO.setItemName(itembasicDO.getName()); + productputawayRequestDetailDO.setProjectCode(itembasicDO.getProject()); + // 校验 库位 + locationService.selectLocation(productputawayRequestDetailDO.getFromLocationCode()); + // 校验 库位类型是否一致 + jobUtils.ifInToLocationType(productputawayRequestDetailDO.getFromLocationCode(),businesstypeDO); + // 物品类型 与 业务设置类型 是否正确 + jobUtils.selectItembasicExist(productputawayRequestDetailDO.getItemCode(),businesstypeDO); + String value = productputawayRequestDetailDO.getInventoryStatus(); + String[] businessArray = value.split(","); + List business = Arrays.asList(businessArray); + List balance = jobUtils.selectlocationReturnManagementAccuracy(productputawayRequestDetailDO.getItemCode(), productputawayRequestDetailDO.getPackingNumber(), + productputawayRequestDetailDO.getBatch(), productputawayRequestDetailDO.getFromLocationCode(), business); + BalanceDO blance1 = balance.get(0); + isqty(productputawayRequestDetailDO.getQty(),blance1.getQty()); + return productputawayRequestDetailDO; + } + + public String isqty(BigDecimal qty1, BigDecimal qty2) { + if(qty1.compareTo(qty2) < 0){ + return "ture"; + } else { + throw exception(QTY_ERRORR,qty2,qty1); + } + } + @Override public void deleteProductputawayRequestDetail(Long id) { // 校验存在 @@ -88,4 +145,9 @@ public class ProductputawayRequestDetailServiceImpl implements ProductputawayReq return productputawayRequestDetailMapper.selectSenior(conditions); } + @Override + public List selectList(Long masterId) { + return productputawayRequestDetailMapper.selectList(masterId); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainService.java index b8244a7b..52387daa 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainService.java @@ -97,4 +97,17 @@ public interface ProductputawayRequestMainService { public List importProductputawayRequestList(List datas, Integer mode, boolean updatePart); + List getProductputawayRequestMainList(CustomConditions conditions); + + Integer closeProductputawayRequestMain(Long id); + + Integer reAddProductputawayRequestMain(Long id); + + Integer submitProductputawayRequestMain(Long id); + + Integer refusedProductputawayRequestMain(Long id); + + Integer agreeProductputawayRequestMain(Long id); + + Integer handleProductputawayRequestMain(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java index 7125f7e8..19bc3469 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java @@ -4,17 +4,22 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; import cn.hutool.core.util.StrUtil; import com.google.common.annotations.VisibleForTesting; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.util.validation.ValidationUtils; import com.win.framework.datapermission.core.util.DataPermissionUtils; import com.win.module.infra.api.trends.TrendsApi; import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.dict.DictDataApi; import com.win.module.system.api.dict.dto.DictDataRespDTO; +import com.win.module.system.api.user.AdminUserApi; +import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO; +import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO; import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainCreateReqVO; import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainUpdateReqVO; import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainBaseVO; import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainCreateReqVO; import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestImportErrorVO; +import com.win.module.wms.controller.rule.vo.RuleRespVO; import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert; import com.win.module.wms.convert.productreceiptRequest.ProductreceiptRequestMainConvert; import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert; @@ -23,14 +28,25 @@ import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO; import com.win.module.wms.dal.dataobject.location.LocationDO; +import com.win.module.wms.dal.dataobject.productputawayJob.ProductputawayJobDetailDO; +import com.win.module.wms.dal.dataobject.productputawayJob.ProductputawayJobMainDO; import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO; import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.productputawayJob.ProductputawayJobDetailMapper; +import com.win.module.wms.dal.mysql.productputawayJob.ProductputawayJobMainMapper; import com.win.module.wms.dal.mysql.productputawayRequest.ProductputawayRequestDetailMapper; +import com.win.module.wms.enums.job.JobStatusEnum; import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.enums.request.RequestStatusState; +import com.win.module.wms.service.expectin.ExpectinService; +import com.win.module.wms.service.expectout.ExpectoutService; +import com.win.module.wms.service.jobsetting.JobsettingService; import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.rule.RuleService; import com.win.module.wms.util.*; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; @@ -44,6 +60,7 @@ import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayReq import com.win.module.wms.service.businesstype.*; import com.win.module.wms.dal.mysql.productputawayRequest.ProductputawayRequestMainMapper; import com.win.module.wms.enums.DictTypeConstants; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; @@ -59,6 +76,7 @@ import java.util.Collection; import java.util.List; import com.win.module.wms.service.location.*; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static com.win.module.wms.enums.ErrorCodeConstants.*; import com.win.module.wms.service.recordsetting.*; import com.win.module.wms.service.itembasic.*; @@ -72,6 +90,20 @@ import com.win.module.wms.service.itembasic.*; @Validated public class ProductputawayRequestMainServiceImpl implements ProductputawayRequestMainService { + @Resource + private ExpectoutService expectoutService; + @Resource + private ExpectinService expectinService; + @Resource + private ProductputawayJobDetailMapper productputawayJobDetailMapper; + @Resource + private RuleService ruleService; + @Resource + private JobsettingService jobsettingService; + @Resource + private ProductputawayJobMainMapper productputawayJobMainMapper; + @Resource + private AdminUserApi userApi; @Resource private ProductputawayRequestMainMapper productputawayRequestMainMapper; @Resource @@ -102,16 +134,16 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque @Override public Long createProductputawayRequestMain(ProductputawayRequestMainCreateReqVO createReqVO) { - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest"); - ProductputawayRequestMainDO productputawayRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); + ProductputawayRequestMainDO productputawayRequestMainDO = validatorToCreate(createReqVO); //调用自动执行方法 if(RequestStatusEnum.HANDLING.getCode().equals(productputawayRequestMainDO.getStatus())) { } - trendsApi.createTrends(requestsettingDO.getId(), "ProductputawayRequest", "增加了制品上架申请", TrendsTypeEnum.CREATE); + trendsApi.createTrends(productputawayRequestMainDO.getId(), "ProductputawayRequest", "增加了制品上架申请", TrendsTypeEnum.CREATE); return productputawayRequestMainDO.getId(); } - private ProductputawayRequestMainDO validatorToCreate( ProductputawayRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { + private ProductputawayRequestMainDO validatorToCreate( ProductputawayRequestMainCreateReqVO createReqVO) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest"); BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest"); ProductputawayRequestMainDO productputawayRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); //子表校验 @@ -136,10 +168,13 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque productputawayRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); productputawayRequestDetailDO.setItemName(itembasicDO.getName()); productputawayRequestDetailDO.setProjectCode(itembasicDO.getProject()); + // 校验 库位 validatorLocation(productputawayRequestDetailDO.getFromLocationCode()); + // 校验 库位类型是否一致 IfInToLocationType(productputawayRequestDetailDO.getFromLocationCode(),businesstypeDO); - DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(productputawayRequestDetailDO.getInventoryStatus()); - String value = dictDataRespDTO.getValue(); + // 物品类型 与 业务设置类型 是否正确 + jobUtils.selectItembasicExist(productputawayRequestDetailDO.getItemCode(),businesstypeDO); + String value = productputawayRequestDetailDO.getInventoryStatus(); String[] businessArray = value.split(","); List business = Arrays.asList(businessArray); List balance = selectlocationReturnManagement(productputawayRequestDetailDO.getItemCode(), productputawayRequestDetailDO.getPackingNumber(), @@ -150,12 +185,14 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque } BalanceDO blance1 = balance.get(0); isqty(productputawayRequestDetailDO.getQty(),blance1.getQty()); - } private ProductputawayRequestMainDO validateMainMethod(ProductputawayRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){ ProductputawayRequestMainDO productputawayRequestMainDO = ProductputawayRequestMainConvert.INSTANCE.convert(baseVO); - productputawayRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); + productputawayRequestMainDO.setStatus(requestStatusState.getState().getCode()); + productputawayRequestMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); productputawayRequestMainDO.setRequestTime(LocalDateTime.now()); productputawayRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); productputawayRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); @@ -186,14 +223,14 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest"); ProductputawayRequestMainDO productputawayRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); //子表校验 - List subList = updateReqVO.getSubList(); - if(subList!=null) { - List subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList05(subList); - for (ProductputawayRequestDetailDO productputawayRequestDetailDO : subDOList) { - validateDetailMethod(productputawayRequestDetailDO, businesstypeDO, productputawayRequestMainDO); - } - productputawayRequestDetailMapper.updateBatch(subDOList); - } +// List subList = updateReqVO.getSubList(); +// if(subList!=null) { +// List subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList05(subList); +// for (ProductputawayRequestDetailDO productputawayRequestDetailDO : subDOList) { +// validateDetailMethod(productputawayRequestDetailDO, businesstypeDO, productputawayRequestMainDO); +// } +// productputawayRequestDetailMapper.updateBatch(subDOList); +// } productputawayRequestMainMapper.updateById(productputawayRequestMainDO); return productputawayRequestMainDO; } @@ -207,10 +244,12 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque productputawayRequestMainMapper.deleteById(id); } - private void validateProductputawayRequestMainExists(Long id) { - if (productputawayRequestMainMapper.selectById(id) == null) { + private ProductputawayRequestMainDO validateProductputawayRequestMainExists(Long id) { + ProductputawayRequestMainDO productputawayRequestMainDO = productputawayRequestMainMapper.selectById(id); + if ( productputawayRequestMainDO == null) { throw exception(PRODUCTPUTAWAY_REQUEST_MAIN_NOT_EXISTS); } + return productputawayRequestMainDO; } @Override @@ -243,15 +282,6 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque return null; } - - private void validateproductputawayForCreateOrUpdate(Long id,String code,String workshopCode,String productionLineCode,String available) { - // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 - DataPermissionUtils.executeIgnore(() -> { - // 校验code唯一 - - }); - } - @VisibleForTesting private void validateProductputawayExists(Long id) { if (id == null) { @@ -263,16 +293,6 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque } } - - public String Isuom(String uom1, String uom2) { - DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1); - String value = dictDataRespDTO.getLabel(); - if(uom2.equals(value)){ - return "ture"; - }else { - throw exception(UOM_ERRORR,uom2,value); - } - } public String isqty(BigDecimal qty1, BigDecimal qty2) { if(qty1.compareTo(qty2) < 0){ return "ture"; @@ -283,7 +303,7 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque private String validateProductputawayRequestMainImport(ProductputawayRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { StringBuilder message = new StringBuilder(); - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + mainDo.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); mainDo.setRequestTime(LocalDateTime.now()); RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest"); if (requestsettingDO == null) { @@ -293,6 +313,9 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); + mainDo.setStatus(requestStatusState.getState().getCode()); } if (businesstypeDO == null) { message.append("根据单据设置未查找到制品上架申请的相关业务类型"); @@ -322,7 +345,7 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque } List selectlocationReturnManagement(String ItemCode, String packingNumber, String batch, String fromLocationCode ,List business){ - List balanceDO = jobUtils.selectlocationReturnManagementAccuracy(ItemCode, packingNumber, batch,fromLocationCode, business); + List balanceDO = jobUtils.selectlocationReturnManagementAccuracy(ItemCode, packingNumber, batch,fromLocationCode, business); return balanceDO; } @@ -335,26 +358,33 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque detailDo.setItemDesc2(item.getDesc2()); detailDo.setItemName(item.getName()); detailDo.setProjectCode(item.getProject()); - try{ - Isuom(item.getUom(),detailDo.getUom()); - }catch (Exception ex) { - message.append(ex.getMessage()).append(","); + if (!item.getUom().equals(detailDo.getUom())) { + message.append("计量单位【").append(detailDo.getUom()).append("】错误,应该是【").append(item.getUom()).append("】").append(","); } } catch (Exception ex) { message.append(ex.getMessage()).append(","); } + // 物品类型 与 业务设置类型 是否正确 + try { + jobUtils.selectItembasicExist(detailDo.getItemCode(),businesstypeDO); + } catch (Exception ex){ + message.append(ex.getMessage()).append(","); + } try{ + // 校验 库位 validatorLocation(detailDo.getFromLocationCode()); + detailDo.setInventoryStatus(detailDo.getInventoryStatus()); }catch (Exception ex) { message.append(ex.getMessage()).append(","); } try{ + // 校验来源库位 IfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO); - DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(detailDo.getInventoryStatus()); - String value = dictDataRespDTO.getValue(); + String value = detailDo.getInventoryStatus(); String[] businessArray = value.split(","); List business = Arrays.asList(businessArray); try { + // 校验库存余额 List balance = selectlocationReturnManagement(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), business); try{ @@ -406,7 +436,6 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque if (flag) { String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_PUTAWAY_REQUEST.getCode()); mainDo.setNumber(number); - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); productputawayRequestMainMapper.insert(mainDo); for (ProductputawayRequestDetailDO detailDO : subDOList) { detailDO.setMasterId(mainDo.getId()); @@ -418,4 +447,211 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque return errorList; } + @Override + public List getProductputawayRequestMainList(CustomConditions conditions) { + return productputawayRequestMainMapper.selectSeniorList(conditions); + } + + @Override + @Transactional + public Integer closeProductputawayRequestMain(Long id) { + ProductputawayRequestMainDO mainDO = validateProductputawayRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productputawayJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTPUTAWAY_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.close(); + if(!flag) { + throw new ServiceException(PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //增加操作记录 + trendsApi.createTrends(id, "productputawayRequest", "关闭了制品上架申请", TrendsTypeEnum.UPDATE); + return productputawayRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer reAddProductputawayRequestMain(Long id) { + ProductputawayRequestMainDO mainDO = validateProductputawayRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productputawayJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTPUTAWAY_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.reAdd(); + if(!flag) { + throw new ServiceException(PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 + trendsApi.createTrends(id, "productputawayRequest", "打开了制品上架申请", TrendsTypeEnum.UPDATE); + return productputawayRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer submitProductputawayRequestMain(Long id) { + ProductputawayRequestMainDO mainDO = validateProductputawayRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productputawayJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTPUTAWAY_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); + if(!flag) { + throw new ServiceException(PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, productputawayRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "productputawayRequest", "提交了制品上架申请", TrendsTypeEnum.UPDATE); + return productputawayRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer refusedProductputawayRequestMain(Long id) { + // 校验存在 + ProductputawayRequestMainDO mainDO = validateProductputawayRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.refused(); + if(!flag) { + throw new ServiceException(PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + trendsApi.createTrends(id, "productputawayRequest", "驳回了制品上架申请", TrendsTypeEnum.UPDATE); + return productputawayRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer agreeProductputawayRequestMain(Long id) { + // 校验存在 + ProductputawayRequestMainDO mainDO = validateProductputawayRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); + if(!flag) { + throw new ServiceException(PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, productputawayRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "productputawayRequest", "审批通过了制品上架申请", TrendsTypeEnum.UPDATE); + return productputawayRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer handleProductputawayRequestMain(Long id) { + // 校验存在 + ProductputawayRequestMainDO mainDO = validateProductputawayRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.handle(); + if(!flag) { + throw new ServiceException(PRODUCTPUTAWAY_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用执行方法 + this.generateJob(mainDO, productputawayRequestDetailMapper.selectList(mainDO.getId())); + trendsApi.createTrends(id, "productputawayRequest", "执行了制品上架申请", TrendsTypeEnum.UPDATE); + return productputawayRequestMainMapper.updateById(mainDO); + } + + /** + * 创建任务 OR 创建记录 + * @param mainDO + * @param detailDOList + */ + private void generateJob(ProductputawayRequestMainDO mainDO, List detailDOList) { + //跳过任务直接生成记录 + if("TRUE".equals(mainDO.getDirectCreateRecord())) { +// TODO: 发料申请 跳过任务直接生成记录 未做!! + } + // 任务主表信息 + ProductputawayJobMainDO productputawayJobMainDO = new ProductputawayJobMainDO(); + BeanUtils.copyProperties(mainDO,productputawayJobMainDO); + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_PUTAWAY_JOB.getCode()); + productputawayJobMainDO.setNumber(number); + productputawayJobMainDO.setRequestNumber(mainDO.getNumber()); + productputawayJobMainDO.setCompletetime(LocalDateTime.now()); + productputawayJobMainDO.setRequestDueTime(mainDO.getDueTime()); + productputawayJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); + productputawayJobMainDO.setId(null); + productputawayJobMainDO.setCreateTime(null); + productputawayJobMainDO.setCreator(null); + productputawayJobMainDO.setUpdateTime(null); + productputawayJobMainDO.setUpdater(null); + // 获取任务单据设置 + JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("ProductPutawayJob"); + productputawayJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); + productputawayJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); + productputawayJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); + productputawayJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); + productputawayJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); + productputawayJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); + productputawayJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); + productputawayJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); + productputawayJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); + productputawayJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayJob"); + productputawayJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses()); + productputawayJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); + productputawayJobMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + productputawayJobMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + productputawayJobMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + productputawayJobMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + productputawayJobMainDO.setBusinessType(businesstypeDO.getCode()); + productputawayJobMainMapper.insert(productputawayJobMainDO); + + List productputawayJobDetailDOList = new ArrayList<>(); + List expectinCreateReqVOList = new ArrayList<>(); + List expectoutCreateReqVOList = new ArrayList<>(); + for(ProductputawayRequestDetailDO productputawayRequestDetailDO : detailDOList) { + ProductputawayJobDetailDO productputawayJobDetailDO = new ProductputawayJobDetailDO(); + BeanUtils.copyProperties(productputawayRequestDetailDO,productputawayJobDetailDO); + // 获取上架策略 并赋值 to库位 + RuleRespVO ruleRespVO = ruleService.grounding(null,null, productputawayJobDetailDO.getItemCode(),null,null,null,null,null,null); + LocationDO locationDO = locationService.inspectLocation(ruleRespVO, productputawayJobDetailDO.getItemCode(), productputawayJobDetailDO.getBatch(), productputawayJobDetailDO.getInventoryStatus()); + productputawayJobDetailDO.setToLocationCode(locationDO.getCode()); + productputawayJobDetailDO.setNumber(mainDO.getNumber()); + productputawayJobDetailDO.setMasterId(mainDO.getId()); + productputawayJobDetailDO.setId(null); + productputawayJobDetailDO.setCreateTime(null); + productputawayJobDetailDO.setCreator(null); + productputawayJobDetailDO.setUpdateTime(null); + productputawayJobDetailDO.setUpdater(null); + productputawayJobDetailDOList.add(productputawayJobDetailDO); + //预计入 + ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); + BeanUtils.copyProperties(productputawayJobDetailDO, expectinCreateReqVO); + expectinCreateReqVO.setJobNumber(number); + expectinCreateReqVO.setBusinessType(mainDO.getBusinessType()); + expectinCreateReqVO.setLocationCode(productputawayJobDetailDO.getToLocationCode()); + expectinCreateReqVO.setOwnerCode(productputawayJobDetailDO.getToOwnerCode()); + expectinCreateReqVOList.add(expectinCreateReqVO); + //预计出 + ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO(); + BeanUtils.copyProperties(productputawayJobDetailDO, expectoutCreateReqVO); + expectoutCreateReqVO.setJobNumber(number); + expectoutCreateReqVO.setBusinessType(mainDO.getBusinessType()); + expectoutCreateReqVO.setLocationCode(productputawayJobDetailDO.getFromLocationCode()); + expectoutCreateReqVO.setOwnerCode(productputawayJobDetailDO.getFromOwnerCode()); + expectoutCreateReqVOList.add(expectoutCreateReqVO); + } + productputawayJobDetailMapper.insertBatch(productputawayJobDetailDOList); + //增加预计入 + expectinService.createExpectin(expectinCreateReqVOList); + //增加预计出 + expectoutService.createExpectout(expectoutCreateReqVOList); + trendsApi.createTrends(mainDO.getId(), "productputawayJob", "制品上架申请生成制品上架任务", TrendsTypeEnum.CREATE); + } } 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 0bf7cce5..09fecbf9 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 @@ -213,7 +213,6 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque private ProductreceiptRequestMainDO validateMainMethod(ProductreceiptRequestMainBaseVO baseVO){ ProductreceiptRequestMainDO mainDo = ProductreceiptRequestMainConvert.INSTANCE.convert(baseVO); // 赋值 - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); mainDo.setRequestTime(LocalDateTime.now()); // 校验 车间 workshopService.selectWorkshopExist(mainDo.getWorkshopCode()); @@ -229,6 +228,9 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); + mainDo.setStatus(requestStatusState.getState().getCode()); } BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRequest"); if (businesstypeDO == null) { @@ -331,7 +333,6 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque private String validateProductreceiptRequestMainImport(ProductreceiptRequestMainDO mainDo) { StringBuilder message = new StringBuilder(); // 赋值 - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); mainDo.setRequestTime(LocalDateTime.now()); // 校验 车间 try { @@ -359,6 +360,9 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); + mainDo.setStatus(requestStatusState.getState().getCode()); } BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRequest"); if (businesstypeDO == null) { @@ -481,7 +485,6 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque if (flag) { String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_RECEIPT_REQUEST.getCode()); mainDo.setNumber(number); - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); productreceiptRequestMainMapper.insert(mainDo); for (ProductreceiptRequestDetailDO detailDO : subDOList) { detailDO.setMasterId(mainDo.getId());