From 67b4038655ba0523b9743277e3cddbccfe3eb78c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Mon, 25 Dec 2023 16:09:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E6=96=99=E7=94=B3=E8=AF=B7=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E4=BB=BB=E5=8A=A1=20=E6=A0=B9=E6=8D=AEtolocation=20?= =?UTF-8?q?=E6=8B=86=E5=88=86=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RepleinshRequestMainServiceImpl.java | 210 +++++++++--------- 1 file changed, 111 insertions(+), 99 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java index 150ca72d..beae5f3b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/repleinshRequest/RepleinshRequestMainServiceImpl.java @@ -17,6 +17,7 @@ import com.win.module.wms.convert.repleinshRequest.RepleinshRequestDetailConvert import com.win.module.wms.convert.repleinshRequest.RepleinshRequestMainConvert; import com.win.module.wms.dal.dataobject.balance.BalanceDO; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO; import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; @@ -53,9 +54,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import javax.validation.Validator; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import java.util.*; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.module.wms.enums.ErrorCodeConstants.*; @@ -500,105 +499,118 @@ public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainServ if("TRUE".equals(mainDO.getDirectCreateRecord())) { // TODO: 发料申请 跳过任务直接生成记录 未做!! } - // 任务主表信息 - RepleinshJobMainDO repleinshJobMainDO = new RepleinshJobMainDO(); - repleinshJobMainDO.setRequestNumber(mainDO.getNumber()); - repleinshJobMainDO.setFromWarehouseCode(mainDO.getFomWarehouseCode()); - repleinshJobMainDO.setToWarehouseCode(mainDO.getToWarehouseCode()); - repleinshJobMainDO.setRequestTime(mainDO.getRequestTime()); - repleinshJobMainDO.setRequestDueTime(mainDO.getDueTime()); - repleinshJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); - repleinshJobMainDO.setDepartmentCode(mainDO.getDepartmentCode()); - repleinshJobMainDO.setFromLocationTypes(mainDO.getFromLocationTypes()); - repleinshJobMainDO.setToLocationTypes(mainDO.getToLocationTypes()); - String number = serialNumberApi.generateCode(RuleCodeEnum.REPLEINMENT_JOB.getCode()); - repleinshJobMainDO.setNumber(number); + // 根据 子表 toLocationCode 拆分任务 + Map> listMap = new HashMap<>(); + for(RepleinshRequestDetailDO detailItem : detailDO) { + List list = listMap.get(detailItem.getToLocationCode()); + if(list == null) { + list = new ArrayList<>(); + } + //向list增加数据 + list.add(detailItem); + listMap.put(detailItem.getToLocationCode(), list); + } + for(String mapKey : listMap.keySet()) { + // 任务主表信息 + RepleinshJobMainDO repleinshJobMainDO = new RepleinshJobMainDO(); + repleinshJobMainDO.setRequestNumber(mainDO.getNumber()); + repleinshJobMainDO.setFromWarehouseCode(mainDO.getFomWarehouseCode()); + repleinshJobMainDO.setToWarehouseCode(mainDO.getToWarehouseCode()); + repleinshJobMainDO.setRequestTime(mainDO.getRequestTime()); + repleinshJobMainDO.setRequestDueTime(mainDO.getDueTime()); + repleinshJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); + repleinshJobMainDO.setDepartmentCode(mainDO.getDepartmentCode()); + repleinshJobMainDO.setFromLocationTypes(mainDO.getFromLocationTypes()); + repleinshJobMainDO.setToLocationTypes(mainDO.getToLocationTypes()); + String number = serialNumberApi.generateCode(RuleCodeEnum.REPLEINMENT_JOB.getCode()); + repleinshJobMainDO.setNumber(number); // repleinshJobMainDO.setBusinessType(mainDO.getBusinessType()); - repleinshJobMainDO.setCreateTime(LocalDateTime.now()); - repleinshJobMainDO.setFromAreaCodes(mainDO.getFromAreaCodes()); - repleinshJobMainDO.setToAreaCodes(mainDO.getToAreaCodes()); - repleinshJobMainDO.setId(null); - repleinshJobMainDO.setCreateTime(null); - repleinshJobMainDO.setCreator(null); - repleinshJobMainDO.setUpdateTime(null); - repleinshJobMainDO.setUpdater(null); - // 获取任务单据设置 - JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("RepleinmentJob"); - repleinshJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); - repleinshJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); - repleinshJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); - repleinshJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); - repleinshJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); - repleinshJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); - repleinshJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); - repleinshJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); - repleinshJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); - repleinshJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); - //增加业务类型 - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("RepleinmentJob"); - repleinshJobMainDO.setBusinessType(businesstypeDO.getCode()); - repleinshJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); - repleinshJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses()); - repleinshJobMainMapper.insert(repleinshJobMainDO); + repleinshJobMainDO.setCreateTime(LocalDateTime.now()); + repleinshJobMainDO.setFromAreaCodes(mainDO.getFromAreaCodes()); + repleinshJobMainDO.setToAreaCodes(mainDO.getToAreaCodes()); + repleinshJobMainDO.setId(null); + repleinshJobMainDO.setCreateTime(null); + repleinshJobMainDO.setCreator(null); + repleinshJobMainDO.setUpdateTime(null); + repleinshJobMainDO.setUpdater(null); + // 获取任务单据设置 + JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("RepleinmentJob"); + repleinshJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); + repleinshJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); + repleinshJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); + repleinshJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); + repleinshJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); + repleinshJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); + repleinshJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); + repleinshJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); + repleinshJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); + repleinshJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("RepleinmentJob"); + repleinshJobMainDO.setBusinessType(businesstypeDO.getCode()); + repleinshJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); + repleinshJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses()); + repleinshJobMainMapper.insert(repleinshJobMainDO); - List repleinshJobDetailDOList = new ArrayList<>(); - List expectinCreateReqVOList = new ArrayList<>(); - List expectoutCreateReqVOList = new ArrayList<>(); - // 根据发料申请子表数据进行分析 - detailDO.forEach(item -> { - // 根据批次策略/下架策略 返回 库存余额DO - // TODO: 任务 会多生成数据 查下原因 - List balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),item.getInventoryStatus(),item.getProjectCode(),item.getQty(),mainDO.getFromLocationTypes()); - // 根据 查询出所需数据 解析成 任务子表数据 - balanceDOListJob.forEach(balanceDOItem -> { - RepleinshJobDetailDO repleinshJobDetailDO = new RepleinshJobDetailDO(); - repleinshJobDetailDO.setId(null); - repleinshJobDetailDO.setCreateTime(null); - repleinshJobDetailDO.setCreator(null); - repleinshJobDetailDO.setUpdateTime(null); - repleinshJobDetailDO.setUpdater(null); - repleinshJobDetailDO.setPackingNumber(balanceDOItem.getPackingNumber()); - repleinshJobDetailDO.setContainerNumber(balanceDOItem.getContainerNumber()); - repleinshJobDetailDO.setBatch(balanceDOItem.getBatch()); - repleinshJobDetailDO.setFromLocationCode(balanceDOItem.getLocationCode()); - repleinshJobDetailDO.setToLocationCode(item.getToLocationCode()); - repleinshJobDetailDO.setItemCode(item.getItemCode()); - repleinshJobDetailDO.setItemName(item.getItemName()); - repleinshJobDetailDO.setItemDesc1(item.getItemDesc1()); - repleinshJobDetailDO.setItemDesc2(item.getItemDesc2()); - repleinshJobDetailDO.setProjectCode(item.getProjectCode()); - repleinshJobDetailDO.setQty(item.getQty()); - repleinshJobDetailDO.setUom(item.getUom()); - repleinshJobDetailDO.setToOwnerCode(item.getToOwnerCode()); - repleinshJobDetailDO.setFromOwnerCode(item.getFromOwnerCode()); - repleinshJobDetailDO.setNumber(repleinshJobMainDO.getNumber()); - repleinshJobDetailDO.setMasterId(repleinshJobMainDO.getId()); - repleinshJobDetailDO.setInventoryStatus(item.getInventoryStatus()); - repleinshJobDetailDOList.add(repleinshJobDetailDO); - //预计入 - ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); - BeanUtils.copyProperties(repleinshJobDetailDO, expectinCreateReqVO); - expectinCreateReqVO.setJobNumber(number); - expectinCreateReqVO.setBusinessType(repleinshJobMainDO.getBusinessType()); - expectinCreateReqVO.setLocationCode(repleinshJobDetailDO.getFromLocationCode()); - expectinCreateReqVO.setOwnerCode(repleinshJobDetailDO.getFromOwnerCode()); - expectinCreateReqVOList.add(expectinCreateReqVO); - //预计出 - ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO(); - BeanUtils.copyProperties(repleinshJobDetailDO, expectoutCreateReqVO); - expectoutCreateReqVO.setJobNumber(number); - expectoutCreateReqVO.setBusinessType(repleinshJobMainDO.getBusinessType()); - expectoutCreateReqVO.setLocationCode(repleinshJobDetailDO.getFromLocationCode()); - expectoutCreateReqVO.setOwnerCode(repleinshJobDetailDO.getFromOwnerCode()); - expectoutCreateReqVOList.add(expectoutCreateReqVO); + List repleinshJobDetailDOList = new ArrayList<>(); + List expectinCreateReqVOList = new ArrayList<>(); + List expectoutCreateReqVOList = new ArrayList<>(); + // 根据发料申请子表数据进行分析 + listMap.get(mapKey).forEach(item -> { + // 根据批次策略/下架策略 返回 库存余额DO + List balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),item.getInventoryStatus(),item.getProjectCode(),item.getQty(),mainDO.getFromLocationTypes()); + // 根据 查询出所需数据 解析成 任务子表数据 + balanceDOListJob.forEach(balanceDOItem -> { + RepleinshJobDetailDO repleinshJobDetailDO = new RepleinshJobDetailDO(); + repleinshJobDetailDO.setId(null); + repleinshJobDetailDO.setCreateTime(null); + repleinshJobDetailDO.setCreator(null); + repleinshJobDetailDO.setUpdateTime(null); + repleinshJobDetailDO.setUpdater(null); + repleinshJobDetailDO.setPackingNumber(balanceDOItem.getPackingNumber()); + repleinshJobDetailDO.setContainerNumber(balanceDOItem.getContainerNumber()); + repleinshJobDetailDO.setBatch(balanceDOItem.getBatch()); + repleinshJobDetailDO.setFromLocationCode(balanceDOItem.getLocationCode()); + repleinshJobDetailDO.setToLocationCode(item.getToLocationCode()); + repleinshJobDetailDO.setItemCode(item.getItemCode()); + repleinshJobDetailDO.setItemName(item.getItemName()); + repleinshJobDetailDO.setItemDesc1(item.getItemDesc1()); + repleinshJobDetailDO.setItemDesc2(item.getItemDesc2()); + repleinshJobDetailDO.setProjectCode(item.getProjectCode()); + repleinshJobDetailDO.setQty(item.getQty()); + repleinshJobDetailDO.setUom(item.getUom()); + repleinshJobDetailDO.setToOwnerCode(item.getToOwnerCode()); + repleinshJobDetailDO.setFromOwnerCode(item.getFromOwnerCode()); + repleinshJobDetailDO.setNumber(repleinshJobMainDO.getNumber()); + repleinshJobDetailDO.setMasterId(repleinshJobMainDO.getId()); + repleinshJobDetailDO.setInventoryStatus(item.getInventoryStatus()); + repleinshJobDetailDOList.add(repleinshJobDetailDO); + //预计入 + ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); + BeanUtils.copyProperties(repleinshJobDetailDO, expectinCreateReqVO); + expectinCreateReqVO.setJobNumber(number); + expectinCreateReqVO.setBusinessType(repleinshJobMainDO.getBusinessType()); + expectinCreateReqVO.setLocationCode(repleinshJobDetailDO.getFromLocationCode()); + expectinCreateReqVO.setOwnerCode(repleinshJobDetailDO.getFromOwnerCode()); + expectinCreateReqVOList.add(expectinCreateReqVO); + //预计出 + ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO(); + BeanUtils.copyProperties(repleinshJobDetailDO, expectoutCreateReqVO); + expectoutCreateReqVO.setJobNumber(number); + expectoutCreateReqVO.setBusinessType(repleinshJobMainDO.getBusinessType()); + expectoutCreateReqVO.setLocationCode(repleinshJobDetailDO.getFromLocationCode()); + expectoutCreateReqVO.setOwnerCode(repleinshJobDetailDO.getFromOwnerCode()); + expectoutCreateReqVOList.add(expectoutCreateReqVO); + }); }); - }); - repleinshJobDetailMapper.insertBatch(repleinshJobDetailDOList); - //增加预计入 - expectinService.createExpectin(expectinCreateReqVOList); - //增加预计出 - expectoutService.createExpectout(expectoutCreateReqVOList); - trendsApi.createTrends(repleinshJobMainDO.getId(), "repleinshJob", "补料申请生成补料任务", TrendsTypeEnum.CREATE); + repleinshJobDetailMapper.insertBatch(repleinshJobDetailDOList); + //增加预计入 + expectinService.createExpectin(expectinCreateReqVOList); + //增加预计出 + expectoutService.createExpectout(expectoutCreateReqVOList); + trendsApi.createTrends(repleinshJobMainDO.getId(), "repleinshJob", "补料申请生成补料任务", TrendsTypeEnum.CREATE); + } } + }