From 05f0b24488be6415f9a286ad3229733fb5c02d26 Mon Sep 17 00:00:00 2001 From: yejiaxing <591141169@qq.com> Date: Tue, 5 Dec 2023 15:07:34 +0800 Subject: [PATCH 1/4] =?UTF-8?q?BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SupplierdeliverRequestMainController.java | 8 ++++++ .../dataobject/packageMassage/PackageDO.java | 2 +- .../mysql/packageMassage/PackageMapper.java | 2 +- .../SupplierdeliverRequestMainService.java | 9 +++++++ ...SupplierdeliverRequestMainServiceImpl.java | 25 +++++++++++++++++++ 5 files changed, 44 insertions(+), 2 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/SupplierdeliverRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/SupplierdeliverRequestMainController.java index cd2afac8..1542ab38 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/SupplierdeliverRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/SupplierdeliverRequestMainController.java @@ -209,4 +209,12 @@ public class SupplierdeliverRequestMainController { return success(count > 0); } + @PostMapping("/genLabel") + @Operation(summary = "生成标签") + @Parameter(name = "id", description = "编号", required = true) + public CommonResult genLabel(@RequestParam("id") String id) { + Integer count = supplierdeliverRequestMainService.genLabel(id); + return success(count > 0); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/packageMassage/PackageDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/packageMassage/PackageDO.java index 80ebbae8..f6ae080a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/packageMassage/PackageDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/packageMassage/PackageDO.java @@ -136,7 +136,7 @@ public class PackageDO{ /** * 采购计划单号 */ - private String rpNumber; + private String ppNumber; /** * 发货单号 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/packageMassage/PackageMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/packageMassage/PackageMapper.java index 6ad2ce51..d4ba53fe 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/packageMassage/PackageMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/packageMassage/PackageMapper.java @@ -66,7 +66,7 @@ public interface PackageMapper extends BaseMapperX { .eqIfPresent(PackageDO::getSupplierItemCode, reqVO.getSupplierItemCode()) .eqIfPresent(PackageDO::getPoNumber, reqVO.getPoNumber()) .eqIfPresent(PackageDO::getPoLine, reqVO.getPoLine()) - .eqIfPresent(PackageDO::getRpNumber, reqVO.getRpNumber()) + .eqIfPresent(PackageDO::getPpNumber, reqVO.getRpNumber()) .eqIfPresent(PackageDO::getAsnNumber, reqVO.getAsnNumber()) .eqIfPresent(PackageDO::getWoNumber, reqVO.getWoNumber()) .eqIfPresent(PackageDO::getWoLine, reqVO.getWoLine()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainService.java index d3d2cf1b..09a2a67f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainService.java @@ -126,6 +126,15 @@ public interface SupplierdeliverRequestMainService { * @return 更新数量 */ Integer rejSupplierdeliverRequestMain(Long id); + + /** + * 生成标签 + * + * @param id 采采购订单申请主ID + * @return 更新数量 + */ + Integer genLabel(String id); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java index 1fb578ad..93c33a87 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestMainServiceImpl.java @@ -24,6 +24,7 @@ import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; +import com.win.module.wms.dal.dataobject.packageMassage.PackageDO; import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO; import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO; import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO; @@ -466,4 +467,28 @@ public class SupplierdeliverRequestMainServiceImpl implements SupplierdeliverReq return supplierdeliverRequestMainMapper.updateById(mainDO); } + + /** + * 生成标签 + * + * @param id 采采购订单申请主ID + * @return 更新数量 + */ + @Override + @Transactional + public Integer genLabel(String id) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("number", id); + SupplierdeliverRequestMainDO mainDO = supplierdeliverRequestMainMapper.selectOne(queryWrapper); + PackageDO packageDO = new PackageDO(); + packageDO.setSupplierCode(mainDO.getSupplierCode()); + packageDO.setSupplierItemCode(null); + packageDO.setPpNumber(mainDO.getPpNumber()); + + packageDO.setAsnNumber(mainDO.getAsnNumber()); + + + return 0; + } + } From 518e767d0f19994c8e62859411fd4a2f5721ffbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Tue, 5 Dec 2023 16:22:25 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E9=80=80=E6=96=99?= =?UTF-8?q?=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 3 + .../IssueRequestMainController.java | 23 ++ .../packageMassage/PackageController.java | 7 + ...ProductionreturnRequestMainController.java | 116 +++++++- .../ProductionreturnRequestDetailBaseVO.java | 3 + ...roductionreturnRequestDetailPageReqVO.java | 3 + .../ProductionreturnRequestMainExcelVO.java | 117 ++++++--- ...roductionreturnRequestMainUpdateReqVO.java | 3 +- .../ProductionreturnRequestMainConvert.java | 10 + .../ProductionreturnJobMainMapper.java | 7 + .../ProductionreturnRequestDetailMapper.java | 7 + .../ProductionreturnRequestMainMapper.java | 5 + .../issueJob/IssueJobMainServiceImpl.java | 20 ++ .../issueRequest/IssueRequestMainService.java | 4 + .../IssueRequestMainServiceImpl.java | 25 ++ .../packageMassage/PackageService.java | 2 + .../packageMassage/PackageServiceImpl.java | 49 ++++ .../ProductionreceiptJobMainServiceImpl.java | 18 ++ .../ProductionreturnRequestDetailService.java | 2 + ...ductionreturnRequestDetailServiceImpl.java | 73 +++++- .../ProductionreturnRequestMainService.java | 14 + ...roductionreturnRequestMainServiceImpl.java | 248 +++++++++++++++++- .../RepleinshJobMainServiceImpl.java | 18 ++ .../com/win/module/wms/util/JobUtils.java | 2 + 24 files changed, 716 insertions(+), 63 deletions(-) diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java index 0d1917ea..5fefd1a4 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 @@ -611,6 +611,9 @@ public interface ErrorCodeConstants { //生产退料申请子ErrorCode ErrorCode PRODUCTIONRETURN_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_097_001, "生产退料申请子不存在"); ErrorCode PRODUCTIONRETURN_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_097_002, "导入生产退料申请不能为空"); + ErrorCode PRODUCTIONRETURN_REQUEST_JOB_EXISTS = new ErrorCode(1_000_097_003, "生产退料申请存在任务单"); + ErrorCode PRODUCTIONRETURN_REQUEST_MAIN_ERROR = new ErrorCode(1_000_097_004, "生产退料申请状态错误"); + //生产退料申请主ErrorCode ErrorCode PRODUCTIONRETURN_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_098_000, "生产退料任务主不存在"); //生产退料任务子ErrorCode 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 e1170466..0429ba47 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 @@ -7,6 +7,7 @@ import com.win.framework.excel.core.util.ConvertUtil; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; @@ -29,6 +30,7 @@ import io.swagger.v3.oas.annotations.Operation; import javax.validation.*; import javax.servlet.http.*; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.*; @@ -310,6 +312,8 @@ public class IssueRequestMainController { Map mapWorkstation = new HashMap<>(); mapWorkstation.put("value", workstationItem.getCode()); mapWorkstation.put("label", workstationItem.getName()); + mapWorkstation.put("rawLocationCode", workstationItem.getRawLocationCode()); + mapWorkstation.put("fgLocationCode", workstationItem.getFgLocationCode()); workstationCodeList.add(mapWorkstation); }); if (workstationCodeList != null && workstationCodeList.size() > 0) { @@ -318,6 +322,8 @@ public class IssueRequestMainController { Map mapworkstationNull = new HashMap<>(); mapworkstationNull.put("value", ""); mapworkstationNull.put("label", ""); + mapworkstationNull.put("rawLocationCode", ""); + mapworkstationNull.put("fgLocationCode", ""); List WorkstationListNUll = new ArrayList(); WorkstationListNUll.add(mapworkstationNull); mapProductionline.put("children", WorkstationListNUll); @@ -333,6 +339,8 @@ public class IssueRequestMainController { Map workstationMapNull = new HashMap<>(); workstationMapNull.put("value", ""); workstationMapNull.put("label", ""); + workstationMapNull.put("rawLocationCode", ""); + workstationMapNull.put("fgLocationCode", ""); workstationListNUll.add(workstationMapNull); productionlineMapNull.put("value", ""); @@ -365,4 +373,19 @@ public class IssueRequestMainController { result.setSubList(vos); return success(result); } + + /** + * PDA 获取库存推荐 + * @param itemCode + * @param qty + * @return + */ + @GetMapping("/getBalanceByBatchOffShelf") + @Operation(summary = "获取库存推荐") + @Parameter(name = "id", description = "编号", required = true) + public CommonResult> getBalanceByBatchOffShelf(@RequestParam("itemCode") String itemCode, + @RequestParam("qty") BigDecimal qty) { + List issueJobDetailDOList = issueRequestMainService.getBalanceByBatchOffShelf(itemCode, qty); + return success(issueJobDetailDOList); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageMassage/PackageController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageMassage/PackageController.java index 3c9c630e..56d2a751 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageMassage/PackageController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/packageMassage/PackageController.java @@ -48,6 +48,13 @@ public class PackageController { return success(packageService.createPackage(createReqVO)); } + @PostMapping("/createLabel") + @Operation(summary = "创建包装标签") + @PreAuthorize("@ss.hasPermission('wms:package:create')") + public CommonResult createPackageLabel(@Valid @RequestBody PackageCreateReqVO createReqVO) { + return success(packageService.createPackageLabel(createReqVO)); + } + @PutMapping("/update") @Operation(summary = "更新包装") @PreAuthorize("@ss.hasPermission('wms:package:update')") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java index 7a517675..962fc344 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java @@ -9,13 +9,18 @@ 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.productionreturnRequest.vo.*; +import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; 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.productionreturnRequest.ProductionreturnRequestDetailDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.service.packageMassage.PackageService; import com.win.module.wms.service.productionreturnRequest.ProductionreturnRequestDetailService; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.productionreturnRequest.ProductionreturnRequestMainService; @@ -103,6 +108,48 @@ public class ProductionreturnRequestMainController { return success(ProductionreturnRequestMainConvert.INSTANCE.convertPage(pageResult)); } + @GetMapping("/export-excel-senior") + @Operation(summary = "导出生产计划主 Excel") + @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:export')") + @OperateLog(type = EXPORT) + public void exportProductionreturnRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = productionreturnRequestMainService.getProductionreturnRequestMainList(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", "生产退料申请", ProductionreturnRequestMainExcelVO.class, resultList, mapDropDown); + } + + private List getExcelVo(List list, Map mapDropDown) { + String[] locationTypes = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(8, locationTypes); + mapDropDown.put(9, locationTypes); + String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(14, available); + mapDropDown.put(15, available); + mapDropDown.put(16, available); + mapDropDown.put(17, available); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(24, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(35, uom); + List resultList = new ArrayList<>(); + // 导出 + for(ProductionreturnRequestMainDO mainDO : list) { + List subList = productionreturnRequestDetailService.selectList(mainDO.getId()); + for(ProductionreturnRequestDetailDO detailDO : subList) { + ProductionreturnRequestMainExcelVO vo = ProductionreturnRequestMainConvert.INSTANCE.convert(mainDO, detailDO); + resultList.add(vo); + } + } + return resultList; + } + @GetMapping("/export-excel") @Operation(summary = "导出生产退料申请主 Excel") @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:export')") @@ -110,14 +157,15 @@ public class ProductionreturnRequestMainController { public void exportProductionreturnRequestMainExcel(@Valid ProductionreturnRequestMainExportReqVO exportReqVO, HttpServletResponse response) throws IOException { List list = productionreturnRequestMainService.getProductionreturnRequestMainList(exportReqVO); - // 导出 Excel - List datas = ProductionreturnRequestMainConvert.INSTANCE.convertList02(list); - for(ProductionreturnRequestMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + resultList.forEach(item -> { //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "生产退料申请主.xls", "数据", ProductionreturnRequestMainExcelVO.class, datas); + item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname()); + item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname()); + }); + ExcelUtils.write(response, "生产退料申请.xls", "生产退料申请", ProductionreturnRequestMainExcelVO.class, resultList); } @PostMapping("/senior") @@ -215,4 +263,58 @@ public class ProductionreturnRequestMainController { } return success(returnMap); } + + @PutMapping("/close") + @Operation(summary = "关闭") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:close')") + public CommonResult closeProductionreturnRequestMain(@RequestParam("id") Long id) { + Integer count = productionreturnRequestMainService.closeProductionreturnRequestMain(id); + return success(count > 0); + } + + @PutMapping("/reAdd") + @Operation(summary = "重新添加") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:reAdd')") + public CommonResult reAddProductionreturnRequestMain(@RequestParam("id") Long id) { + Integer count = productionreturnRequestMainService.reAddProductionreturnRequestMain(id); + return success(count > 0); + } + + @PutMapping("/submit") + @Operation(summary = "提交审批") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:submit')") + public CommonResult submitProductionreturnRequestMain(@RequestParam("id") Long id) { + Integer count = productionreturnRequestMainService.submitProductionreturnRequestMain(id); + return success(count > 0); + } + + @PutMapping("/refused") + @Operation(summary = "驳回") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:refused')") + public CommonResult refusedProductionreturnRequestMain(@RequestParam("id") Long id) { + Integer count = productionreturnRequestMainService.refusedProductionreturnRequestMain(id); + return success(count > 0); + } + + @PutMapping("/agree") + @Operation(summary = "审批通过") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:agree')") + public CommonResult agreeProductionreturnRequestMain(@RequestParam("id") Long id) { + Integer count = productionreturnRequestMainService.agreeProductionreturnRequestMain(id); + return success(count > 0); + } + + @PutMapping("/handle") + @Operation(summary = "处理") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:handle')") + public CommonResult handleProductionreturnRequestMain(@RequestParam("id") Long id) { + Integer count = productionreturnRequestMainService.handleProductionreturnRequestMain(id); + return success(count > 0); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestDetailBaseVO.java index 8b6539ab..33f0d2d7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestDetailBaseVO.java @@ -89,4 +89,7 @@ public class ProductionreturnRequestDetailBaseVO { @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/productionreturnRequest/vo/ProductionreturnRequestDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestDetailPageReqVO.java index 78b63860..1e7a1b04 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestDetailPageReqVO.java @@ -85,4 +85,7 @@ public class ProductionreturnRequestDetailPageReqVO 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/productionreturnRequest/vo/ProductionreturnRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainExcelVO.java index 0543308d..187dffcb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainExcelVO.java @@ -1,5 +1,8 @@ package com.win.module.wms.controller.productionreturnRequest.vo; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.job.JobStatusConverter; +import com.win.module.wms.enums.request.RequestStatusConverter; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -24,15 +27,6 @@ public class ProductionreturnRequestMainExcelVO { @ExcelProperty("车间代码") private String workshopCode; - @ExcelProperty("从仓库代码") - private String fromWarehouseCode; - - @ExcelProperty("从库位类型范围") - private String fromLocationTypes; - - @ExcelProperty("从库区代码范围") - private String fromAreaCodes; - @ExcelProperty("单据号") private String number; @@ -42,12 +36,6 @@ public class ProductionreturnRequestMainExcelVO { @ExcelProperty("备注") private String remark; - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @ExcelProperty("创建者用户名") - private String creator; - @ExcelProperty("申请时间") private LocalDateTime requestTime; @@ -57,36 +45,101 @@ public class ProductionreturnRequestMainExcelVO { @ExcelProperty("部门") private String departmentCode; - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("request_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty(value = "状态", converter = RequestStatusConverter.class) private String status; - @ExcelProperty("最后更新时间") - private LocalDateTime updateTime; - - @ExcelProperty("最后更新者用户名") - private String updater; - - @ExcelProperty("到仓库代码") - private String toWarehouseCode; - + @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) + @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("从库区代码范围") + private String fromAreaCodes; @ExcelProperty("到库区代码范围") private String toAreaCodes; + @ExcelProperty("从仓库代码") + private String fromWarehouseCode; + @ExcelProperty("到仓库代码") + private String toWarehouseCode; - @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 LocalDateTime createTime; + + @ExcelProperty("创建者用户名") + private String creator; + + @ExcelProperty("最后更新时间") + private LocalDateTime updateTime; + + @ExcelProperty("最后更新者用户名") + private String updater; + + // 子表数据 + @ExcelProperty("生产线代码") + private String productionLineCode; + + @ExcelProperty("工位代码") + private String workStationCode; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @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 String qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; + + @ExcelProperty("从货主代码") + private String fromOwnerCode; + + @ExcelProperty("到货主代码") + private String toOwnerCode; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainUpdateReqVO.java index c5957615..4ff8eaac 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainUpdateReqVO.java @@ -8,5 +8,6 @@ import lombok.*; @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductionreturnRequestMainUpdateReqVO extends ProductionreturnRequestMainBaseVO { - + @Schema(description = "是否合格退料") + private Boolean isOK; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java index ff6b47db..ef36e7a9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java @@ -35,4 +35,14 @@ public interface ProductionreturnRequestMainConvert { @Mapping(source = "createReqVO.number", target = "number"), }) ProductionreturnRequestImportErrorVO convert(ProductionreturnRequestMainCreateReqVO createReqVO, ProductionreturnRequestDetailDO 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"), + }) + ProductionreturnRequestMainExcelVO convert(ProductionreturnRequestMainDO mainDO, ProductionreturnRequestDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobMainMapper.java index 2c6e26ff..7f378479 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnJob/ProductionreturnJobMainMapper.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.productionreturnJob.vo.ProductionreturnJobMainExportReqVO; import com.win.module.wms.controller.productionreturnJob.vo.ProductionreturnJobMainPageReqVO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.module.wms.dal.dataobject.productionreceiptJob.ProductionreceiptJobMainDO; import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO; +import com.win.module.wms.enums.order.OrderStatusEnum; import org.apache.ibatis.annotations.Mapper; import java.util.Collection; @@ -122,4 +124,9 @@ public interface ProductionreturnJobMainMapper extends BaseMapperX() + .eq(ProductionreturnJobMainDO::getRequestNumber, requestNumber) + .ne(ProductionreturnJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestDetailMapper.java index d4fba8f9..542f141f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestDetailMapper.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.productionreturnRequest.vo.ProductionreturnRequestDetailExportReqVO; import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailPageReqVO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; import org.apache.ibatis.annotations.Mapper; @@ -22,6 +23,7 @@ public interface ProductionreturnRequestDetailMapper extends BaseMapperX selectPage(ProductionreturnRequestDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProductionreturnRequestDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductionreturnRequestDetailDO::getProductionLineCode, reqVO.getProductionLineCode()) .eqIfPresent(ProductionreturnRequestDetailDO::getWorkStationCode, reqVO.getWorkStationCode()) .eqIfPresent(ProductionreturnRequestDetailDO::getInventoryStatus, reqVO.getInventoryStatus()) @@ -51,6 +53,11 @@ public interface ProductionreturnRequestDetailMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(ProductionreturnRequestDetailDO::getMasterId, masterId)); + } + default List selectList(ProductionreturnRequestDetailExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(ProductionreturnRequestDetailDO::getProductionLineCode, reqVO.getProductionLineCode()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.java index e76ef52a..c063b57e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.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.productionreturnRequest.vo.ProductionreturnRequestMainExportReqVO; import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainPageReqVO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; import org.apache.ibatis.annotations.Mapper; @@ -79,4 +80,8 @@ public interface ProductionreturnRequestMainMapper 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/issueJob/IssueJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueJob/IssueJobMainServiceImpl.java index c65b5f47..5d30b7df 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 @@ -308,6 +308,7 @@ public class IssueJobMainServiceImpl implements IssueJobMainService { issueRecordDetailDO.setFromAreaCode(locationDOFrom.getAreaCode()); issueRecordDetailDOList.add(issueRecordDetailDO); //添加库存事务list + // 入动作 TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); BeanUtils.copyProperties(issueRecordDetailDO, transactionCreateReqVO); TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); @@ -326,6 +327,25 @@ public class IssueJobMainServiceImpl implements IssueJobMainService { // 如果使用在途库 库存事务 库位赋值为 在途库 transactionCreateReqVO.setLocationCode(issueRecordMainDO.getUseOnTheWayLocation().equals("TRUE")?issueRecordDetailDO.getOnTheWayLocationCode():recordLstItem.get("toLocationCode").toString()); transactionCreateReqVOList.add(transactionCreateReqVO); + // 出动作 + TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); + BeanUtils.copyProperties(issueRecordDetailDO, transactionCreateReqVOOut); + TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); + transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); + transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); + transactionCreateReqVOOut.setBusinessType(issueRecordMainDO.getBusinessType()); + transactionCreateReqVOOut.setOwnerCode(issueRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVOOut.setRecordNumber(number); + transactionCreateReqVOOut.setId(null); + transactionCreateReqVOOut.setPackingNumber(issueRecordDetailDO.getToPackingNumber()); + transactionCreateReqVOOut.setBatch(issueRecordDetailDO.getToBatch()); + transactionCreateReqVOOut.setContainerNumber(issueRecordDetailDO.getToContainerNumber()); + transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); + transactionCreateReqVOOut.setWarehouseCode(issueRecordMainDO.getToWarehouseCode()); + // 如果使用在途库 库存事务 库位赋值为 在途库 + transactionCreateReqVOOut.setLocationCode(issueRecordMainDO.getUseOnTheWayLocation().equals("TRUE")?issueRecordDetailDO.getOnTheWayLocationCode():recordLstItem.get("toLocationCode").toString()); + transactionCreateReqVOList.add(transactionCreateReqVOOut); }); } }); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java index 08733817..87bfbf5b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java @@ -1,10 +1,12 @@ package com.win.module.wms.service.issueRequest; +import java.math.BigDecimal; import java.util.*; import javax.validation.*; import com.win.framework.common.pojo.CustomConditions; import com.win.module.wms.controller.issueRequest.vo.*; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.dal.dataobject.production.ProductionMainDO; @@ -99,4 +101,6 @@ public interface IssueRequestMainService { Integer agreeIssueRequestMain(Long id); Integer handleIssueRequestMain(Long id); + + List getBalanceByBatchOffShelf(String itemCode, BigDecimal qty); } 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 04dab20a..2e5d910e 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 @@ -613,6 +613,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { return issueRequestMainMapper.updateById(mainDO); } + /** * 创建任务 OR 创建记录 * @param mainDO @@ -746,4 +747,28 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { expectoutService.createExpectout(expectoutCreateReqVOList); trendsApi.createTrends(issueJobMainDO.getId(), "issueJob", "发料申请生成发料任务", TrendsTypeEnum.CREATE); } + + /** + * PDA 获取库存推荐 + * @param itemCode + * @param qty + * @return + */ + @Override + public List getBalanceByBatchOffShelf(String itemCode, BigDecimal qty) { + List issueJobDetailDOList = new ArrayList<>(); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueJob"); + // 根据批次策略/下架策略 返回 库存余额DO + List balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(itemCode,"OK",null,qty,businesstypeDO.getOutLocationTypes()); + // 根据 查询出所需数据 解析成 任务子表数据 + balanceDOListJob.forEach(balanceDOItem -> { + IssueJobDetailDO issueJobDetailDO = new IssueJobDetailDO(); + issueJobDetailDO.setBatch(balanceDOItem.getBatch()); + issueJobDetailDO.setFromLocationCode(balanceDOItem.getLocationCode()); + issueJobDetailDO.setStdPackQty(itempackagingService.selectItemPackagingExist(itemCode).getStdPackQty()); + issueJobDetailDO.setStdPackUnit(itempackagingService.selectItemPackagingExist(itemCode).getStdPackUnit()); + issueJobDetailDOList.add(issueJobDetailDO); + }); + return issueJobDetailDOList; + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageService.java index 3d63d290..e068c735 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageService.java @@ -87,4 +87,6 @@ public interface PackageService { * @return 分页列表 */ PageResult getPackageSenior(CustomConditions conditions); + + PackageDO createPackageLabel(PackageCreateReqVO createReqVO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageServiceImpl.java index dc506a1d..5d877d42 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageServiceImpl.java @@ -1,20 +1,32 @@ package com.win.module.wms.service.packageMassage; +import cn.hutool.core.exceptions.UtilException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.packageMassage.vo.PackageCreateReqVO; import com.win.module.wms.controller.packageMassage.vo.PackageExportReqVO; import com.win.module.wms.controller.packageMassage.vo.PackagePageReqVO; import com.win.module.wms.controller.packageMassage.vo.PackageUpdateReqVO; import com.win.module.wms.convert.packageMassage.PackageConvert; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; import com.win.module.wms.dal.dataobject.packageMassage.PackageDO; +import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO; import com.win.module.wms.dal.mysql.packageMassage.PackageMapper; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.supplieritem.SupplieritemService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -30,6 +42,14 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PACKAGE_NOT_EXISTS; @Validated public class PackageServiceImpl implements PackageService { + @Resource + private ItempackagingService itempackagingService; + @Resource + private ItembasicService itembasicService; + @Resource + private SupplieritemService supplieritemService; + @Resource + private SerialNumberApi serialNumberApi; @Resource private PackageMapper packageMapper; @@ -102,4 +122,33 @@ public class PackageServiceImpl implements PackageService { public PageResult getPackageSenior(CustomConditions conditions) { return packageMapper.selectSenior(conditions); } + + @Override + @Transactional + public PackageDO createPackageLabel(PackageCreateReqVO createReqVO) { + // 插入 + PackageDO packageDo = PackageConvert.INSTANCE.convert(createReqVO); + // 获取标包数量 + ItempackagingDO itemPackagingDO = itempackagingService.selectItemPackagingExist(packageDo.getItemCode()); + // 赋值 自动生成 包装号 + String number = serialNumberApi.generateCode(RuleCodeEnum.PACKING_NUMBER.getCode()); + packageDo.setNumber(number); + packageDo.setConvertRate(new BigDecimal(1)); + packageDo.setStdPackQty(itemPackagingDO.getStdPackQty()); + packageDo.setStdPackUnit(itemPackagingDO.getStdPackUnit()); + // 采购标签 + if (packageDo.getSupplierCode() != null && !packageDo.getSupplierCode().isEmpty()) { +// TODO: 赋值 仓库代码 月台代码 库位代码 采购订单号 采购订单行 采购计划单号 发货单号 + // 赋值 供应商物品代码 + SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(packageDo.getSupplierCode(),packageDo.getItemCode()); + packageDo.setSupplierItemCode(supplieritemDO.getSupplierItemCode()); + } + // 制造件标签 + if (packageDo.getProductionLineCode() != null && !packageDo.getProductionLineCode().isEmpty()) { +// TODO: 赋值 生产订单号 生产订单行 班组代码 班次代码 + } + packageMapper.insert(packageDo); + // 返回 + return packageDo; + } } 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 0e03d316..b711268d 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 @@ -318,6 +318,7 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob productionreceiptRecordDetailDO.setUpdateTime(null); productionreceiptRecordDetailDOList.add(productionreceiptRecordDetailDO); //添加库存事务list + // 入动作 TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); BeanUtils.copyProperties(productionreceiptRecordDetailDO, transactionCreateReqVO); TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); @@ -334,6 +335,23 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob transactionCreateReqVO.setAmount(BigDecimal.ZERO); transactionCreateReqVO.setLocationCode(productionreceiptRecordDetailDO.getToLocationCode()); transactionCreateReqVOList.add(transactionCreateReqVO); + // 出动作 + TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); + BeanUtils.copyProperties(productionreceiptRecordDetailDO, transactionCreateReqVOOut); + TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); + transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); + transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); + transactionCreateReqVOOut.setBusinessType(productionreceiptRecordMainDO.getBusinessType()); + transactionCreateReqVOOut.setOwnerCode(productionreceiptRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVOOut.setRecordNumber(number); + transactionCreateReqVOOut.setId(null); + transactionCreateReqVOOut.setPackingNumber(productionreceiptRecordDetailDO.getToPackingNumber()); + transactionCreateReqVOOut.setBatch(productionreceiptRecordDetailDO.getToBatch()); + transactionCreateReqVOOut.setContainerNumber(productionreceiptRecordDetailDO.getToContainerNumber()); + transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); + transactionCreateReqVOOut.setLocationCode(productionreceiptRecordDetailDO.getToLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVOOut); } }); }); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java index 78ac1c92..403c10fa 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java @@ -78,4 +78,6 @@ public interface ProductionreturnRequestDetailService { * @return 分页列表 */ PageResult getProductionreturnRequestDetailSenior(CustomConditions conditions); + + List selectList(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java index 01b568e9..d6b4a5c6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java @@ -1,5 +1,7 @@ package com.win.module.wms.service.productionreturnRequest; +import cn.hutool.core.exceptions.UtilException; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.module.infra.api.trends.TrendsApi; @@ -8,21 +10,28 @@ import com.win.module.wms.controller.productionreturnRequest.vo.Productionreturn import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailExportReqVO; import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailPageReqVO; import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailUpdateReqVO; +import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; +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.productionline.ProductionlineDO; +import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper; import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.service.businesstype.BusinesstypeService; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.productionline.ProductionlineService; import com.win.module.wms.service.productionlineitem.ProductionlineitemService; import com.win.module.wms.service.workstation.WorkstationService; import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -43,6 +52,8 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_REQUE @Validated public class ProductionreturnRequestDetailServiceImpl implements ProductionreturnRequestDetailService { + @Resource + private BusinesstypeService businesstypeService; @Resource private ProductionreturnRequestDetailMapper productionreturnRequestDetailMapper; @Resource @@ -60,25 +71,63 @@ public class ProductionreturnRequestDetailServiceImpl implements Productionretur @Resource private TrendsApi trendsApi; @Override + @Transactional public Long createProductionreturnRequestDetail(ProductionreturnRequestDetailCreateReqVO createReqVO) { // 插入 ProductionreturnRequestDetailDO productionreturnRequestDetail = ProductionreturnRequestDetailConvert.INSTANCE.convert(createReqVO); + validatorDetail(productionreturnRequestDetail); productionreturnRequestDetailMapper.insert(productionreturnRequestDetail); // 返回 return productionreturnRequestDetail.getId(); } @Override + @Transactional public void updateProductionreturnRequestDetail(ProductionreturnRequestDetailUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { // 校验存在 validateProductionreturnRequestDetailExists(updateReqVO.getId()); // 更新 - ProductionreturnRequestMainDO productionreturnRequestMainToNumber = productionreturnRequestMainService.getProductionreturnRequestMainToNumber(updateReqVO.getNumber()); ProductionreturnRequestDetailDO updateObj = ProductionreturnRequestDetailConvert.INSTANCE.convert(updateReqVO); - validatorDetailMethod(updateObj,productionreturnRequestMainToNumber); + validatorDetail(updateObj); productionreturnRequestDetailMapper.updateById(updateObj); } + //子表校验 + private ProductionreturnRequestDetailDO validatorDetail(ProductionreturnRequestDetailDO productionreturnRequestDetailDO) { + // 主表信息 + ProductionreturnRequestMainDO productionreturnRequestMainDO = productionreturnRequestMainService.getProductionreturnRequestMain(productionreturnRequestDetailDO.getMasterId()); + // 业务信息 + BusinesstypeDO businesstypeDO = businesstypeService.selectBusinesstypeExist(productionreturnRequestMainDO.getBusinessType()); + // 基础信息 + ItembasicDO itembasicDO = itembasicService.selectItembasic(productionreturnRequestDetailDO.getItemCode()); + // 基础信息赋值 + productionreturnRequestDetailDO.setItemName(itembasicDO.getName()); + productionreturnRequestDetailDO.setItemDesc1(itembasicDO.getDesc1()); + productionreturnRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); + productionreturnRequestDetailDO.setProjectCode(itembasicDO.getProject()); + // 单位校验 + ifUomSuccess(itembasicDO.getUom(), productionreturnRequestDetailDO.getUom()); + // 校验 子表数据 物品类型要一致性(创建标签时 前端好判断 否则前端无法实现) + String itemCodetype = ""; + // 查询其他子表数据物品对应类型 + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("masterId", productionreturnRequestDetailDO.getMasterId()); + List productionreturnRequestDetailDOOrther = productionreturnRequestDetailMapper.selectList(queryWrapper); + if (productionreturnRequestDetailDOOrther != null && productionreturnRequestDetailDOOrther.size() > 0) { + itemCodetype = itembasicService.selectItembasic(productionreturnRequestDetailDOOrther.get(0).getItemCode()).getType(); + } + if (!itemCodetype.equals("") && !itemCodetype.equals(itembasicDO.getType())) { + throw new UtilException("物品代码:" + productionreturnRequestDetailDO.getItemCode() + " 物品类型不一致!"); + } + // 校验 业务类型 + jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); + // 检验 生产线 + productionlineService.productionLineCodeExist(productionreturnRequestDetailDO.getProductionLineCode()); + // 检验 工位 + workstationService.selectWorkstationExist(productionreturnRequestDetailDO.getWorkStationCode(), productionreturnRequestMainDO.getWorkshopCode(), productionreturnRequestDetailDO.getProductionLineCode()); + return productionreturnRequestDetailDO; + } + @Override public void deleteProductionreturnRequestDetail(Long id) { // 校验存在 @@ -118,6 +167,11 @@ public class ProductionreturnRequestDetailServiceImpl implements Productionretur return productionreturnRequestDetailMapper.selectSenior(conditions); } + @Override + public List selectList(Long masterId) { + return productionreturnRequestDetailMapper.selectList(masterId); + } + //校验子表公共方法(适用于新增/修改) private void validatorDetailMethod(ProductionreturnRequestDetailDO detailDo, ProductionreturnRequestMainDO mainDo) { ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); @@ -129,13 +183,14 @@ public class ProductionreturnRequestDetailServiceImpl implements Productionretur ProductionlineDO productionlineDO = validatorProductionline(detailDo.getProductionLineCode()); detailDo.setFromLocationCode(productionlineDO.getRawLocationCode()); this.validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode()); - WorkstationDO workstationDO = validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode()); - if(workstationDO != null){ - detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); - } - ArrayList inventoryStatus = new ArrayList<>(); - inventoryStatus.set(0,detailDo.getInventoryStatus()); - validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); + validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode()); +// if(workstationDO != null){ +// detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); +// } + // TODO:管理精度校验, 暂时注释 +// ArrayList inventoryStatus = new ArrayList<>(); +// inventoryStatus.set(0,detailDo.getInventoryStatus()); +// validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); } private ItembasicDO validatorItembasic(String itemCode){ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java index 7ae58b31..ee037ce5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java @@ -82,4 +82,18 @@ public interface ProductionreturnRequestMainService { PageResult getProductionreturnRequestMainSenior(CustomConditions conditions); List importProductionreturnRequestList(List createReqVOList, Integer mode, Boolean updatePart, Boolean isOK); + + Integer closeProductionreturnRequestMain(Long id); + + Integer reAddProductionreturnRequestMain(Long id); + + Integer submitProductionreturnRequestMain(Long id); + + Integer refusedProductionreturnRequestMain(Long id); + + Integer agreeProductionreturnRequestMain(Long id); + + Integer handleProductionreturnRequestMain(Long id); + + List getProductionreturnRequestMainList(CustomConditions conditions); } 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 857c4ca3..87c702f9 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 @@ -1,6 +1,8 @@ package com.win.module.wms.service.productionreturnRequest; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.exceptions.UtilException; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.common.util.validation.ValidationUtils; @@ -15,7 +17,11 @@ import com.win.module.wms.convert.productionreturnRequest.ProductionreturnReques import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; 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.itempackaging.ItempackagingDO; +import com.win.module.wms.dal.dataobject.packageMassage.PackageDO; import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; @@ -25,24 +31,29 @@ import com.win.module.wms.dal.dataobject.productionreturnRequest.Productionretur import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; +import com.win.module.wms.dal.mysql.productionreturnJob.ProductionreturnJobMainMapper; import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper; import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestMainMapper; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.enums.request.RequestStatusState; import com.win.module.wms.service.businesstype.BusinesstypeService; import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.itempackaging.ItempackagingService; import com.win.module.wms.service.productionline.ProductionlineService; import com.win.module.wms.service.productionlineitem.ProductionlineitemService; import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.workshop.WorkshopService; 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 javax.validation.Validator; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collection; @@ -60,6 +71,10 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Validated public class ProductionreturnRequestMainServiceImpl implements ProductionreturnRequestMainService { + @Resource + private ItempackagingService itempackagingService; + @Resource + private ProductionreturnJobMainMapper productionreturnJobMainMapper; @Resource private BusinesstypeService businesstypeService; @Resource @@ -86,6 +101,8 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR private SerialNumberApi serialNumberApi; @Resource private TrendsApi trendsApi; + + private String itemCodetype; @Override @Transactional public Long createProductionreturnRequestMain(ProductionreturnRequestMainCreateReqVO createReqVO) { @@ -102,7 +119,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR if(RequestStatusEnum.HANDLING.getCode().equals(productionreturnRequestMainDO.getStatus())) { } - trendsApi.createTrends(productionreturnRequestMainDO.getId(), "ProductionreturnRequest", "增加了合格退料申请", TrendsTypeEnum.CREATE); + trendsApi.createTrends(productionreturnRequestMainDO.getId(), "ProductionreturnRequest", "增加了生产退料申请", TrendsTypeEnum.CREATE); // 返回 return createReqVO.getId(); } @@ -112,8 +129,14 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR public void updateProductionreturnRequestMain(ProductionreturnRequestMainUpdateReqVO updateReqVO) { // 校验存在 validateProductionreturnRequestMainExists(updateReqVO.getId()); - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRequest"); - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest"); + BusinesstypeDO businesstypeDO = null; + // 判断是否合格退料 + if (updateReqVO.getIsOK()) { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRequest"); + } else { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToHOldRequest"); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MaterialReturnRequest"); ProductionreturnRequestMainDO productionreturnRequestMainDO = validatorMainMethod(updateReqVO, businesstypeDO, requestsettingDO); if(RequestStatusEnum.HANDLING.getCode().equals(productionreturnRequestMainDO.getStatus())) { @@ -133,10 +156,12 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR productionreturnRequestMainMapper.deleteById(id); } - private void validateProductionreturnRequestMainExists(Long id) { - if (productionreturnRequestMainMapper.selectById(id) == null) { + private ProductionreturnRequestMainDO validateProductionreturnRequestMainExists(Long id) { + ProductionreturnRequestMainDO productionreturnRequestMainDO = productionreturnRequestMainMapper.selectById(id); + if ( productionreturnRequestMainDO == null) { throw exception(PRODUCTIONRETURN_REQUEST_MAIN_NOT_EXISTS); } + return productionreturnRequestMainDO; } @Override @@ -219,18 +244,52 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR //子表校验 List subList = createReqVO.getSubList(); List subDOList = ProductionreturnRequestDetailConvert.INSTANCE.convertList03(subList); + // 子表 物品类型 + itemCodetype = ""; for (ProductionreturnRequestDetailDO detailDO : subDOList) { validatorDetailMethod(detailDO,mainDo); } String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RETURN_REQUEST.getCode()); mainDo.setNumber(number); - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "审批中")); productionreturnRequestMainMapper.insert(mainDo); + // 拆解后 子表集合 + List subDOListPack = new ArrayList<>(); for (ProductionreturnRequestDetailDO detailDO : subDOList) { detailDO.setMasterId(mainDo.getId()); detailDO.setNumber(mainDo.getNumber()); + // 获取标包信息 + ItempackagingDO itemPackagingDO = itempackagingService.selectItemPackagingExist(detailDO.getItemCode()); + // 获取标包数量 + BigDecimal itemPackagingDOQty = itemPackagingDO.getStdPackQty(); + // 库存余额输入数量 + BigDecimal detailDOQty = detailDO.getQty(); + // 判断 库存余额输入的数量 大于 标包数 进行拆分 + if (detailDO.getQty().compareTo(itemPackagingDO.getStdPackQty()) == 1 ) { + // 库存余额 除以 标包 保留0位 具体子表 例如:保留1位 1.60-1.6 1.61-1.7 1.66-1.7 -1.62--1.7 + // 拆分数据总条数 bdCount + BigDecimal bdCount = detailDOQty.divide(itemPackagingDOQty,0, BigDecimal.ROUND_UP); + int forInt = bdCount.intValue(); + // 最后一条数据 插入数量 residueQty = 库存余额数 - (拆分数据总条数-1)*标包数 + BigDecimal residueQty = detailDOQty.subtract(itemPackagingDOQty.multiply(bdCount.subtract(new BigDecimal(1)))); + for(int i = 0; i < forInt; i++) { + ProductionreturnRequestDetailDO detailDOPack = new ProductionreturnRequestDetailDO(); + BeanUtils.copyProperties(detailDO, detailDOPack); + // 最后一条数据 插入数量 + if (i == (forInt-1) ) { + detailDOPack.setQty(residueQty); + } else { + + detailDOPack.setQty(itemPackagingDO.getStdPackQty()); + } + subDOListPack.add(detailDOPack); + } + } else { + // 判断 库存余额输入的数量 小于等于 标包数 + subDOListPack.add(detailDO); + } } - productionreturnRequestDetailMapper.insertBatch(subDOList); + productionreturnRequestDetailMapper.insertBatch(subDOListPack); return mainDo; } @@ -254,16 +313,24 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR detailDo.setItemName(itembasicDO.getName()); detailDo.setProjectCode(itembasicDO.getProject()); this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); - validatorProductionline(detailDo.getProductionLineCode()); - ProductionlineitemDO productionlineitemDO = validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode()); - detailDo.setFromLocationCode(productionlineitemDO.getRawLocationCode()); - WorkstationDO workstationDO = validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode()); - if(workstationDO != null){ - detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); + // 校验 子表数据 物品类型要一致性(创建标签时 前端好判断 否则前端无法实现) + if (itemCodetype.equals("")) { + itemCodetype = itembasicDO.getType(); } + if (!itemCodetype.equals(itembasicDO.getType())) { + throw new UtilException("物品代码:" + detailDo.getItemCode() + " 物品类型不一致!"); + } + validatorProductionline(detailDo.getProductionLineCode()); +// ProductionlineitemDO productionlineitemDO = validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode()); +// detailDo.setFromLocationCode(productionlineitemDO.getRawLocationCode()); + validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode()); +// if(workstationDO != null){ +// detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); +// } List inventoryStatus = new ArrayList<>(); inventoryStatus.add(detailDo.getInventoryStatus()); - validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); + // TODO:管理精度校验, 暂时注释 +// validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); } /** @@ -393,4 +460,157 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR private void validatorManagementAccuracy(String itemCode,String packingNumber,String batch,String locationCode,List inventoryStatus){ jobUtils.selectlocationReturnManagementAccuracy(itemCode,packingNumber,batch,locationCode,inventoryStatus); } + + @Override + @Transactional + public Integer closeProductionreturnRequestMain(Long id) { + ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.close(); + if(!flag) { + throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //增加操作记录 + trendsApi.createTrends(id, "productionreturnRequest", "关闭了生产收料申请", TrendsTypeEnum.UPDATE); + return productionreturnRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer reAddProductionreturnRequestMain(Long id) { + ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.reAdd(); + if(!flag) { + throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 + trendsApi.createTrends(id, "issueRequest", "打开了生产收料申请", TrendsTypeEnum.UPDATE); + return productionreturnRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer submitProductionreturnRequestMain(Long id) { + ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); + if(!flag) { + throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + // 审批通过 生成标签 + this.generateLabel(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId())); + this.generateJob(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "issueRequest", "提交了生产收料申请", TrendsTypeEnum.UPDATE); + return productionreturnRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer refusedProductionreturnRequestMain(Long id) { + ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.refused(); + if(!flag) { + throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + trendsApi.createTrends(id, "issueRequest", "驳回了生产收料申请", TrendsTypeEnum.UPDATE); + return productionreturnRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer agreeProductionreturnRequestMain(Long id) { + ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.agree(mainDO.getAutoExecute()); + if(!flag) { + throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + // 审批通过 生成标签 + this.generateLabel(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId())); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "issueRequest", "审批通过了生产收料申请", TrendsTypeEnum.UPDATE); + return productionreturnRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer handleProductionreturnRequestMain(Long id) { + ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.handle(); + if(!flag) { + throw new ServiceException(ISSUE_REQUEST_MAIN_CANNOT_HANDLE); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用执行方法 + this.generateJob(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId())); + trendsApi.createTrends(id, "issueRequest", "执行了发料申请", TrendsTypeEnum.UPDATE); + return productionreturnRequestMainMapper.updateById(mainDO); + } + + /** + * 创建标签 + * @param mainDO + * @param detailDO + */ + private void generateLabel (ProductionreturnRequestMainDO mainDO, List detailDO) { +// 查询 mainDO.packingNumber 在包装表中,是否存在,如果存在不创建标签,如果不存在,创建 +// PackageDO packageDO = + } + + /** + * 创建任务 OR 创建记录 + * @param mainDO + * @param detailDO + */ + private void generateJob (ProductionreturnRequestMainDO mainDO, List detailDO) { + + } + + @Override + public List getProductionreturnRequestMainList(CustomConditions conditions) { + return productionreturnRequestMainMapper.selectSeniorList(conditions); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshJob/RepleinshJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshJob/RepleinshJobMainServiceImpl.java index 80fa9123..0aa2f68b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshJob/RepleinshJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshJob/RepleinshJobMainServiceImpl.java @@ -298,6 +298,7 @@ public class RepleinshJobMainServiceImpl implements RepleinshJobMainService { repleinshRecordDetailDO.setFromAreaCode(locationDOFrom.getAreaCode()); repleinshRecordDetailDOList.add(repleinshRecordDetailDO); //添加库存事务list + // 入动作 TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); BeanUtils.copyProperties(repleinshRecordDetailDO, transactionCreateReqVO); TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); @@ -314,6 +315,23 @@ public class RepleinshJobMainServiceImpl implements RepleinshJobMainService { transactionCreateReqVO.setAmount(BigDecimal.ZERO); transactionCreateReqVO.setLocationCode(recordLstItem.get("toLocationCode").toString()); transactionCreateReqVOList.add(transactionCreateReqVO); + // 出动作 + TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); + BeanUtils.copyProperties(repleinshRecordDetailDO, transactionCreateReqVOOut); + TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); + transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); + transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); + transactionCreateReqVOOut.setBusinessType(repleinshRecordMainDO.getBusinessType()); + transactionCreateReqVOOut.setOwnerCode(repleinshRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVOOut.setRecordNumber(number); + transactionCreateReqVOOut.setId(null); + transactionCreateReqVOOut.setPackingNumber(repleinshRecordDetailDO.getToPackingNumber()); + transactionCreateReqVOOut.setBatch(repleinshRecordDetailDO.getToBatch()); + transactionCreateReqVOOut.setContainerNumber(repleinshRecordDetailDO.getToContainerNumber()); + transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); + transactionCreateReqVOOut.setLocationCode(recordLstItem.get("toLocationCode").toString()); + transactionCreateReqVOList.add(transactionCreateReqVOOut); }); } }); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java index 2d15f4a6..f6cedf06 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java @@ -890,6 +890,8 @@ public class JobUtils { if (locationList != null && locationList.size() > 0) { queryWrapperExpectout.in("location_code", locationList); } +// TODO: 默认单件管理 箱码不为null 如按批次或其他 需要扩展其他情况 + queryWrapperExpectout.isNotNull("packing_number"); if (balanceDO.getPackingNumber() != null && !balanceDO.getPackingNumber().equals("")) queryWrapperExpectout.eq("packing_number", balanceDO.getPackingNumber()); if (balanceDO.getBatch() != null && !balanceDO.getBatch().equals("")) queryWrapperExpectout.eq("batch", balanceDO.getBatch()); queryWrapperExpectout.groupBy("item_code","packing_number", "batch"); From b3809701675e570032e664993c2f29eb6faade5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Tue, 5 Dec 2023 16:45:19 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E6=B5=81=E6=B0=B4=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/win/module/system/enums/serialNumber/RuleCodeEnum.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/serialNumber/RuleCodeEnum.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/serialNumber/RuleCodeEnum.java index a99e5fc0..f9e08f68 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/serialNumber/RuleCodeEnum.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/serialNumber/RuleCodeEnum.java @@ -141,6 +141,8 @@ public enum RuleCodeEnum { TRANSFER_LOG("TransferLog"), // 库存转移日志 PACKING_NUMBER("PackingNumber"), // 包装号 CUSTOMER_DELIVER_NUMBER("CustomerDeliverNumber"), // 客户发货单号 + LABEL_NUMBER("LabelNumber"), // 标签流水号 + ; private final String code; From b5fb5259543b1c6b113dfbb7e2bd9051b6ff8fe9 Mon Sep 17 00:00:00 2001 From: yejiaxing <591141169@qq.com> Date: Tue, 5 Dec 2023 17:21:39 +0800 Subject: [PATCH 4/4] =?UTF-8?q?BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SupplierdeliverRequestDetailBaseVO.java | 22 +++--- ...SupplierdeliverRequestDetailPageReqVO.java | 4 + .../SupplierdeliverRequestDetailMapper.java | 1 + .../purchase/PurchaseMainServiceImpl.java | 7 +- ...pplierdeliverRequestDetailServiceImpl.java | 76 ++++++++++++++++++- 5 files changed, 94 insertions(+), 16 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestDetailBaseVO.java index 16161978..a05cac0f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestDetailBaseVO.java @@ -34,34 +34,34 @@ public class SupplierdeliverRequestDetailBaseVO { private String altBatch; @Schema(description = "到货日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "到货日期不能为空") +// @NotNull(message = "到货日期不能为空") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime arriveDate; @Schema(description = "生产日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "生产日期不能为空") +// @NotNull(message = "生产日期不能为空") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime produceDate; @Schema(description = "过期日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "过期日期不能为空") +// @NotNull(message = "过期日期不能为空") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime expireDate; @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "订单号不能为空") +// @NotNull(message = "订单号不能为空") private String poNumber; @Schema(description = "订单行", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "订单行不能为空") +// @NotNull(message = "订单行不能为空") private String poLine; @Schema(description = "标包数量", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "标包数量不能为空") +// @NotNull(message = "标包数量不能为空") private BigDecimal stdPackQty; @Schema(description = "标包单位", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "标包单位不能为空") +// @NotNull(message = "标包单位不能为空") private String stdPackUnit; @Schema(description = "供应商计量数量") @@ -71,14 +71,14 @@ public class SupplierdeliverRequestDetailBaseVO { private String supplierPackUnit; @Schema(description = "转换率", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "转换率不能为空") +// @NotNull(message = "转换率不能为空") private BigDecimal convertRate; @Schema(description = "单据号") private String number; @Schema(description = "物品代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "物品代码不能为空") +// @NotNull(message = "物品代码不能为空") private String itemCode; @Schema(description = "备注") @@ -121,5 +121,9 @@ public class SupplierdeliverRequestDetailBaseVO { @Schema(description = "到货主代码") private String toOwnerCode; + /** + * 主表ID + */ + private Long masterId; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestDetailPageReqVO.java index 45bb56ff..7249eb66 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/supplierdeliverRequest/vo/SupplierdeliverRequestDetailPageReqVO.java @@ -102,5 +102,9 @@ public class SupplierdeliverRequestDetailPageReqVO extends PageParam { @Schema(description = "到货主代码") private String toOwnerCode; + /** + * 主表ID + */ + private Long masterId; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/supplierdeliverRequest/SupplierdeliverRequestDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/supplierdeliverRequest/SupplierdeliverRequestDetailMapper.java index 330aa1bd..72b54e3d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/supplierdeliverRequest/SupplierdeliverRequestDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/supplierdeliverRequest/SupplierdeliverRequestDetailMapper.java @@ -22,6 +22,7 @@ public interface SupplierdeliverRequestDetailMapper extends BaseMapperX selectPage(SupplierdeliverRequestDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(SupplierdeliverRequestDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(SupplierdeliverRequestDetailDO::getBatch, reqVO.getBatch()) .eqIfPresent(SupplierdeliverRequestDetailDO::getAltBatch, reqVO.getAltBatch()) .betweenIfPresent(SupplierdeliverRequestDetailDO::getArriveDate, reqVO.getArriveDate()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java index b229f6ae..8be055c7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java @@ -629,10 +629,10 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { purchaseDetailDOQueryWrapper.eq("item_code", itemCode); purchaseDetailDOQueryWrapper.eq("available", "TRUE"); List purchaseDetailDOList = purchaseDetailMapper.selectList(purchaseDetailDOQueryWrapper); - boolean res = false; + boolean res = true; for (PurchaseDetailDO purchaseDetailDO : purchaseDetailDOList) { if ("TRUE".equals(purchaseDetailDO.getAvailable())) { - res = true; + res = false; } } if ("DISCRETE".equals(purchaseMainDO.getType()) && res) { @@ -641,12 +641,11 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { for (PurchaseDetailDO purchaseDetailDO : purchaseDetailDOList) { //如果是离散单 if ("DISCRETE".equals(purchaseMainDO.getType())) { + purchaseDetailDO.setReceivedQty(receivedQty); if (purchaseDetailDO.getReceivedQty().compareTo(purchaseDetailDO.getOrderQty()) == 0 || purchaseDetailDO.getReceivedQty().compareTo(purchaseDetailDO.getOrderQty().multiply(new BigDecimal(1).add(purchaseDetailDO.getOverReceivingPercent()))) >= 0) { purchaseDetailDO.setAvailable("FALSE"); - } else { - purchaseDetailDO.setReceivedQty(receivedQty); } } else { purchaseDetailDO.setReceivedQty(purchaseDetailDO.getReceivedQty().add(receivedQty)); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestDetailServiceImpl.java index e8088c77..22cc5510 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/supplierdeliverRequest/SupplierdeliverRequestDetailServiceImpl.java @@ -1,14 +1,27 @@ package com.win.module.wms.service.supplierdeliverRequest; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.pojo.CustomConditions; import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailCreateReqVO; import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailExportReqVO; import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailPageReqVO; import com.win.module.wms.controller.supplierdeliverRequest.vo.SupplierdeliverRequestDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; +import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO; +import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestMainDO; +import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO; +import com.win.module.wms.dal.mysql.supplierdeliverRequest.SupplierdeliverRequestMainMapper; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.purchasePlan.PurchasePlanMainService; +import com.win.module.wms.service.supplieritem.SupplieritemService; import org.springframework.stereotype.Service; + import javax.annotation.Resource; + import org.springframework.validation.annotation.Validated; +import java.math.BigDecimal; import java.util.*; import com.win.module.wms.dal.dataobject.supplierdeliverRequest.SupplierdeliverRequestDetailDO; @@ -31,14 +44,32 @@ public class SupplierdeliverRequestDetailServiceImpl implements SupplierdeliverR @Resource private SupplierdeliverRequestDetailMapper supplierdeliverRequestDetailMapper; + @Resource + private SupplierdeliverRequestMainMapper supplierdeliverRequestMainMapper; + @Resource + private ItembasicService itembasicService; + @Resource + private SupplieritemService supplieritemService; + @Resource + private ItempackagingService itempackagingService; + @Resource + private PurchasePlanMainService purchasePlanMainService; + @Override public Long createSupplierdeliverRequestDetail(SupplierdeliverRequestDetailCreateReqVO createReqVO) { // 插入 - SupplierdeliverRequestDetailDO supplierdeliverRequestDetail = SupplierdeliverRequestDetailConvert.INSTANCE.convert(createReqVO); - supplierdeliverRequestDetailMapper.insert(supplierdeliverRequestDetail); + SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO = SupplierdeliverRequestDetailConvert.INSTANCE.convert(createReqVO); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("number", createReqVO.getNumber()); + SupplierdeliverRequestMainDO mainDO = supplierdeliverRequestMainMapper.selectOne(queryWrapper); + validatorDetailMethod(supplierdeliverRequestDetailDO, mainDO); + supplierdeliverRequestDetailDO.setMasterId(mainDO.getId()); + supplierdeliverRequestDetailDO.setNumber(mainDO.getNumber()); + supplierdeliverRequestDetailDO.setConvertRate(new BigDecimal(0)); + supplierdeliverRequestDetailMapper.insert(supplierdeliverRequestDetailDO); // 返回 - return supplierdeliverRequestDetail.getId(); + return supplierdeliverRequestDetailDO.getId(); } @Override @@ -49,6 +80,7 @@ public class SupplierdeliverRequestDetailServiceImpl implements SupplierdeliverR SupplierdeliverRequestDetailDO updateObj = SupplierdeliverRequestDetailConvert.INSTANCE.convert(updateReqVO); supplierdeliverRequestDetailMapper.updateById(updateObj); } + @Override public PageResult getSupplierdeliverRequestDetailSenior(CustomConditions conditions) { return supplierdeliverRequestDetailMapper.selectSenior(conditions); @@ -88,4 +120,42 @@ public class SupplierdeliverRequestDetailServiceImpl implements SupplierdeliverR return supplierdeliverRequestDetailMapper.selectList(exportReqVO); } + //子表校验 校验供应商基础信息 + private void validatorItembasic(String itemCode) { + itembasicService.selectItembasic(itemCode); + } + + //子表校验 校验供应商物品 + private SupplieritemDO validatorSupplierItemExist(String supplierCode, String itemCode) { + return supplieritemService.selectSupplierItemExist(supplierCode, itemCode); + } + + //子表校验 校验物品标包信息 + private ItempackagingDO validatorItemPackagingExist(String itemCode) { + return itempackagingService.selectItemPackagingExist(itemCode); + } + + //子表校验 校验要货计划 + private PurchasePlanDetailDO validatorPurchasePlan(SupplierdeliverRequestMainDO supplierdeliverRequestMainDO, SupplierdeliverRequestDetailDO supplierdeliverRequestDetailDO) { + PurchasePlanDetailDO purchasePlanDetailDO = + purchasePlanMainService.selectPurchasePlan(supplierdeliverRequestMainDO.getPpNumber(), supplierdeliverRequestMainDO.getSupplierCode(), + supplierdeliverRequestDetailDO.getPoNumber(), supplierdeliverRequestDetailDO.getPoLine(), supplierdeliverRequestDetailDO.getItemCode()); + return purchasePlanDetailDO; + } + + //校验子表公共方法(适用于新增/修改) + private void validatorDetailMethod(SupplierdeliverRequestDetailDO detailDo, SupplierdeliverRequestMainDO mainDo) { + this.validatorItembasic(detailDo.getItemCode()); + this.validatorSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode()); + PurchasePlanDetailDO purchasePlanDetailDO = this.validatorPurchasePlan(mainDo, detailDo); + if ((purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty())).compareTo(detailDo.getQty()) == -1) { + throw exception(QTY_ERROR, detailDo.getQty(), null, detailDo.getPoLine(), null, purchasePlanDetailDO.getPlanQty().subtract(purchasePlanDetailDO.getShippedQty())); + } + ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode()); + if (itempackagingDO != null) { + detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit()); + detailDo.setStdPackQty(itempackagingDO.getStdPackQty()); + } + } + }