diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreturnJob/ProductionreturnJobMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreturnJob/ProductionreturnJobMainDO.java index 42dae553..b80e8655 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreturnJob/ProductionreturnJobMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productionreturnJob/ProductionreturnJobMainDO.java @@ -204,4 +204,13 @@ public class ProductionreturnJobMainDO extends BaseDO { */ private String allowModifyPackingNumber; + /** + * 入库库存状态范围 + */ + private String inInventoryStatuses; + /** + * 出库库存状态范围 + */ + private String outInventoryStatuses; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java index 2e5d910e..bf063012 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 @@ -583,7 +583,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { // 校验存在 IssueRequestMainDO mainDO = validateIssueRequestMainExists(id); RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); - boolean flag = requestStatusState.agree(mainDO.getAutoExecute()); + boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); if(!flag) { throw new ServiceException(ISSUE_REQUEST_MAIN_CANNOT_AGREE); } 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 87c702f9..ae5e182a 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 @@ -10,20 +10,25 @@ import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.infra.api.trends.TrendsApi; import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO; import com.win.module.wms.controller.productionreturnRequest.vo.*; import com.win.module.wms.controller.productionreturnRequest.vo.*; +import com.win.module.wms.controller.rule.vo.RuleRespVO; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; 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.jobsetting.JobsettingDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; 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.productionreturnJob.ProductionreturnJobDetailDO; +import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO; 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.productionreturnRequest.ProductionreturnRequestDetailDO; @@ -31,18 +36,24 @@ 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.ProductionreturnJobDetailMapper; 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.job.JobStatusEnum; 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.expectin.ExpectinService; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.jobsetting.JobsettingService; +import com.win.module.wms.service.location.LocationService; 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.rule.RuleService; import com.win.module.wms.service.workshop.WorkshopService; import com.win.module.wms.service.workstation.WorkstationService; import com.win.module.wms.util.JobUtils; @@ -60,6 +71,7 @@ import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static com.win.module.wms.enums.ErrorCodeConstants.*; /** @@ -71,6 +83,18 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Validated public class ProductionreturnRequestMainServiceImpl implements ProductionreturnRequestMainService { + @Resource + private AdminUserApi userApi; + @Resource + private ExpectinService expectinService; + @Resource + private ProductionreturnJobDetailMapper productionreturnJobDetailMapper; + @Resource + private LocationService locationService; + @Resource + private RuleService ruleService; + @Resource + private JobsettingService jobsettingService; @Resource private ItempackagingService itempackagingService; @Resource @@ -252,6 +276,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RETURN_REQUEST.getCode()); mainDo.setNumber(number); mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "审批中")); + mainDo.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); productionreturnRequestMainMapper.insert(mainDo); // 拆解后 子表集合 List subDOListPack = new ArrayList<>(); @@ -477,7 +502,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR } mainDO.setStatus(requestStatusState.getState().getCode()); //增加操作记录 - trendsApi.createTrends(id, "productionreturnRequest", "关闭了生产收料申请", TrendsTypeEnum.UPDATE); + trendsApi.createTrends(id, "productionreturnRequest", "关闭了生产退料申请", TrendsTypeEnum.UPDATE); return productionreturnRequestMainMapper.updateById(mainDO); } @@ -496,7 +521,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); } mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 - trendsApi.createTrends(id, "issueRequest", "打开了生产收料申请", TrendsTypeEnum.UPDATE); + trendsApi.createTrends(id, "productionreturnRequest", "打开了生产退料申请", TrendsTypeEnum.UPDATE); return productionreturnRequestMainMapper.updateById(mainDO); } @@ -518,10 +543,9 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR //调用自动执行方法 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); + trendsApi.createTrends(id, "productionreturnRequest", "提交了生产退料申请", TrendsTypeEnum.UPDATE); return productionreturnRequestMainMapper.updateById(mainDO); } @@ -540,7 +564,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); } mainDO.setStatus(requestStatusState.getState().getCode()); - trendsApi.createTrends(id, "issueRequest", "驳回了生产收料申请", TrendsTypeEnum.UPDATE); + trendsApi.createTrends(id, "productionreturnRequest", "驳回了生产退料申请", TrendsTypeEnum.UPDATE); return productionreturnRequestMainMapper.updateById(mainDO); } @@ -554,18 +578,16 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); } RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); - boolean flag = requestStatusState.agree(mainDO.getAutoExecute()); + boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); 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); + trendsApi.createTrends(id, "productionreturnRequest", "审批通过了生产退料申请", TrendsTypeEnum.UPDATE); return productionreturnRequestMainMapper.updateById(mainDO); } @@ -581,32 +603,107 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.handle(); if(!flag) { - throw new ServiceException(ISSUE_REQUEST_MAIN_CANNOT_HANDLE); + throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); } mainDO.setStatus(requestStatusState.getState().getCode()); //调用执行方法 this.generateJob(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId())); - trendsApi.createTrends(id, "issueRequest", "执行了发料申请", TrendsTypeEnum.UPDATE); + trendsApi.createTrends(id, "productionreturnRequest", "执行了生产退料申请", 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) { - + //跳过任务直接生成记录 + if("TRUE".equals(mainDO.getDirectCreateRecord())) { +// TODO: 发料申请 跳过任务直接生成记录 未做!! +// PurchasereceiptRecordMainCreateReqVO purchasereceiptRecordMainCreateReqVO = new PurchasereceiptRecordMainCreateReqVO(); +// BeanUtils.copyProperties(mainDO, purchasereceiptRecordMainCreateReqVO); +// purchasereceiptRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); +// String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_RECORD.getCode()); +// purchasereceiptRecordMainCreateReqVO.setNumber(number); +// //增加业务类型 +// BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReceiptRecord"); +// purchasereceiptRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); +// purchasereceiptRecordMainMapper.insert(PurchasereceiptRecordMainConvert.INSTANCE.convert(purchasereceiptRecordMainCreateReqVO)); +// for(PurchasereceiptRequestDetailDO purchasereceiptRequestDetailDO : detailDOList) { +// PurchasereceiptRecordDetailCreateReqVO purchasereceiptRecordDetailCreateReqVO = new PurchasereceiptRecordDetailCreateReqVO(); +// BeanUtils.copyProperties(purchasereceiptRequestDetailDO, purchasereceiptRecordDetailCreateReqVO); +// purchasereceiptRecordDetailCreateReqVO.setNumber(number); +// purchasereceiptRecordDetailMapper.insert(PurchasereceiptRecordDetailConvert.INSTANCE.convert(purchasereceiptRecordDetailCreateReqVO)); +// } +// return; + } + // 任务主表信息 + ProductionreturnJobMainDO productionreturnJobMainDO = new ProductionreturnJobMainDO(); + BeanUtils.copyProperties(mainDO, productionreturnJobMainDO); + productionreturnJobMainDO.setRequestNumber(mainDO.getNumber()); + productionreturnJobMainDO.setRequestDueTime(mainDO.getDueTime()); + productionreturnJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RETURN_JOB.getCode()); + productionreturnJobMainDO.setNumber(number); + // 获取任务单据设置 + JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("MaterialReturnJob"); + productionreturnJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); + productionreturnJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); + productionreturnJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); + productionreturnJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); + productionreturnJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); + productionreturnJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); + productionreturnJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); + productionreturnJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); + productionreturnJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); + productionreturnJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreJob"); + productionreturnJobMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + productionreturnJobMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + productionreturnJobMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + productionreturnJobMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + productionreturnJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses()); + productionreturnJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); + productionreturnJobMainDO.setBusinessType(businesstypeDO.getCode()); + productionreturnJobMainDO.setId(null); + productionreturnJobMainDO.setCreateTime(null); + productionreturnJobMainDO.setCreator(null); + productionreturnJobMainDO.setUpdateTime(null); + productionreturnJobMainDO.setUpdater(null); + productionreturnJobMainMapper.insert(productionreturnJobMainDO); + + List productionreturnJobDetailDOList = new ArrayList<>(); + List expectinCreateReqVOList = new ArrayList<>(); + detailDO.forEach(item -> { + ProductionreturnJobDetailDO productionreturnJobDetailDO = new ProductionreturnJobDetailDO(); + BeanUtils.copyProperties(item, productionreturnJobDetailDO); + productionreturnJobDetailDO.setId(null); + productionreturnJobDetailDO.setCreateTime(null); + productionreturnJobDetailDO.setCreator(null); + productionreturnJobDetailDO.setUpdateTime(null); + productionreturnJobDetailDO.setUpdater(null); + productionreturnJobDetailDO.setMasterId(productionreturnJobMainDO.getId()); + productionreturnJobDetailDO.setNumber(number); + // 获取上架策略 并赋值 to库位 + RuleRespVO ruleRespVO = ruleService.grounding(null,null,null,null,null,null,productionreturnJobDetailDO.getItemCode(),null,null,null,null,null,null); + LocationDO locationDO = locationService.inspectLocation(ruleRespVO,null,productionreturnJobDetailDO.getItemCode(),null); + productionreturnJobDetailDO.setToLocationCode(locationDO.getCode()); + productionreturnJobDetailDOList.add(productionreturnJobDetailDO); + //预计入 + ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); + BeanUtils.copyProperties(productionreturnJobDetailDO, expectinCreateReqVO); + expectinCreateReqVO.setJobNumber(number); + expectinCreateReqVO.setBusinessType(productionreturnJobMainDO.getBusinessType()); + expectinCreateReqVO.setLocationCode(productionreturnJobDetailDO.getToLocationCode()); + expectinCreateReqVO.setOwnerCode(productionreturnJobDetailDO.getToOwnerCode()); + expectinCreateReqVOList.add(expectinCreateReqVO); + }); + productionreturnJobDetailMapper.insertBatch(productionreturnJobDetailDOList); + //增加预计入 + expectinService.createExpectin(expectinCreateReqVOList); + trendsApi.createTrends(productionreturnJobMainDO.getId(), "productionreturnJob", "生产退料申请生成任务", TrendsTypeEnum.CREATE); } @Override 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 97dfc3aa..1b34fa45 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 @@ -367,7 +367,7 @@ public class RepleinshRequestMainServiceImpl implements RepleinshRequestMainServ throw new ServiceException(REPLEINSH_REQUEST_JOB_EXISTS); } RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); - boolean flag = requestStatusState.agree(mainDO.getAutoExecute()); + boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); if(!flag) { throw new ServiceException(REPLEINSH_REQUEST_STATUS_ERROR); }