diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnJob/vo/PurchasereturnJobDetailUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnJob/vo/PurchasereturnJobDetailUpdateReqVO.java index a0ca0d4c..d5860390 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnJob/vo/PurchasereturnJobDetailUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnJob/vo/PurchasereturnJobDetailUpdateReqVO.java @@ -3,10 +3,30 @@ package com.win.module.wms.controller.purchasereturnJob.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.math.BigDecimal; + @Schema(description = "管理后台 - 采购退货任务子更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class PurchasereturnJobDetailUpdateReqVO extends PurchasereturnJobDetailBaseVO { + @Schema(description = "实际收货数量") + private BigDecimal handleQty; + + @Schema(description = "到包装") + private String toPackingNumber; + + @Schema(description = "到器具") + private String toContainerNumber; + + @Schema(description = "到批次") + private String toBatch; + + @Schema(description = "到库存状态") + private String toInventoryStatus; + + @Schema(description = "到库位") + private String toLocationCode; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectJob/InspectJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectJob/InspectJobMainServiceImpl.java index f5cdfdc0..e7500bad 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectJob/InspectJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectJob/InspectJobMainServiceImpl.java @@ -25,12 +25,12 @@ import com.win.module.wms.dal.mysql.inspectJob.InspectJobDetailMapper; import com.win.module.wms.dal.mysql.inspectJob.InspectJobMainMapper; import com.win.module.wms.dal.mysql.inspectRecord.InspectRecordDetailMapper; import com.win.module.wms.dal.mysql.inspectRecord.InspectRecordMainMapper; +import com.win.module.wms.dal.mysql.inspectRequest.InspectRequestDetailMapper; import com.win.module.wms.dal.mysql.inspectRequest.InspectRequestMainMapper; import com.win.module.wms.enums.job.JobStatusEnum; import com.win.module.wms.enums.job.JobStatusState; import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.service.expectin.ExpectinService; -import com.win.module.wms.service.inspectRequest.InspectRequestDetailService; import com.win.module.wms.service.transaction.TransactionService; import com.win.module.wms.util.JobUtils; import org.springframework.beans.BeanUtils; @@ -84,7 +84,7 @@ public class InspectJobMainServiceImpl implements InspectJobMainService { @Resource private BalanceMapper balanceMapper; @Resource - private InspectRequestDetailService inspectRequestDetailService; + private InspectRequestDetailMapper inspectRequestDetailMapper; @Override public InspectJobMainDO getInspectJobMain(Long id) { @@ -318,6 +318,7 @@ public class InspectJobMainServiceImpl implements InspectJobMainService { //全检,再次生成检验申请 if(inspectJobMainUpdateReqVO.getNextAction().equals("FULL_INSPECT")) { InspectRequestMainDO requestMainDO = inspectRequestMainMapper.selectByNumber(inspectJobMainUpdateReqVO.getRequestNumber()); + List requestDetailDOList = inspectRequestDetailMapper.selectList(requestMainDO.getId()); String requestNumber = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_REQUEST.getCode()); requestMainDO.setNumber(requestNumber); requestMainDO.setSampleQty(requestMainDO.getReceiveQty()); @@ -330,7 +331,6 @@ public class InspectJobMainServiceImpl implements InspectJobMainService { requestMainDO.setUpdater(null); requestMainDO.setUpdateTime(null); inspectRequestMainMapper.insert(requestMainDO); - List requestDetailDOList = inspectRequestDetailService.selectList(requestMainDO.getId()); for(InspectRequestDetailDO inspectRequestDetailDO : requestDetailDOList) { inspectRequestDetailDO.setId(null); inspectRequestDetailDO.setCreator(null); @@ -340,6 +340,7 @@ public class InspectJobMainServiceImpl implements InspectJobMainService { inspectRequestDetailDO.setMasterId(requestMainDO.getId()); inspectRequestDetailDO.setNumber(requestNumber); } + inspectRequestDetailMapper.insertBatch(requestDetailDOList); } else { //增加库存事务 transactionService.createTransaction(transactionCreateReqVOList); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnJob/PurchasereturnJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnJob/PurchasereturnJobMainServiceImpl.java index 2e66e2ee..a3f58530 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnJob/PurchasereturnJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnJob/PurchasereturnJobMainServiceImpl.java @@ -15,6 +15,8 @@ import com.win.module.wms.controller.purchasereturnJob.vo.PurchasereturnJobMainE import com.win.module.wms.controller.purchasereturnJob.vo.PurchasereturnJobMainPageReqVO; import com.win.module.wms.controller.purchasereturnJob.vo.PurchasereturnJobMainUpdateReqVO; import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.convert.purchasereturnJob.PurchasereturnJobDetailConvert; +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.purchasereturnJob.PurchasereturnJobDetailDO; import com.win.module.wms.dal.dataobject.purchasereturnJob.PurchasereturnJobMainDO; @@ -23,6 +25,7 @@ import com.win.module.wms.dal.dataobject.purchasereturnRecord.PurchasereturnReco import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; import com.win.module.wms.dal.dataobject.supplierdeliverRecord.SupplierdeliverRecordDetailDO; import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; +import com.win.module.wms.dal.mysql.balance.BalanceMapper; import com.win.module.wms.dal.mysql.purchasereturnJob.PurchasereturnJobMainMapper; import com.win.module.wms.dal.mysql.purchasereturnRecord.PurchasereturnRecordDetailMapper; import com.win.module.wms.dal.mysql.purchasereturnRecord.PurchasereturnRecordMainMapper; @@ -86,6 +89,8 @@ public class PurchasereturnJobMainServiceImpl implements PurchasereturnJobMainSe private SerialNumberApi serialNumberApi; @Resource private JobUtils jobUtils; + @Resource + private BalanceMapper balanceMapper; @Override public PageResult getPurchasereturnJobMainSenior(CustomConditions conditions) { @@ -204,7 +209,6 @@ public class PurchasereturnJobMainServiceImpl implements PurchasereturnJobMainSe public String executePurchasereturnJobMain(PurchasereturnJobMainUpdateReqVO purchasereturnJobMainUpdateReqVO) { //查询数据 PurchasereturnJobMainDO purchasereturnJobMainDO = this.validatePurchasereturnJobMainExists(purchasereturnJobMainUpdateReqVO.getId()); - List subList = purchasereturnJobDetailService.selectList(purchasereturnJobMainDO.getId()); JobStatusState jobStatusState = new JobStatusState(purchasereturnJobMainDO.getStatus()); boolean flag = jobStatusState.execute(); if(!flag) { @@ -236,16 +240,22 @@ public class PurchasereturnJobMainServiceImpl implements PurchasereturnJobMainSe List purchasereturnRecordDetailDOList = new ArrayList<>(); //库存事务 List transactionCreateReqVOList = new ArrayList<>(); - for(PurchasereturnJobDetailDO purchasereturnJobDetailDO : subList) { + for(PurchasereturnJobDetailUpdateReqVO purchasereturnJobDetailUpdateReqVO : purchasereturnJobDetailUpdateReqVOList) { + PurchasereturnJobDetailDO purchasereturnJobDetailDO = PurchasereturnJobDetailConvert.INSTANCE.convert(purchasereturnJobDetailUpdateReqVO); PurchasereturnRecordDetailDO purchasereturnRecordDetailDO = new PurchasereturnRecordDetailDO(); BeanUtils.copyProperties(purchasereturnJobDetailDO, purchasereturnRecordDetailDO); purchasereturnRecordDetailDO.setMasterId(purchasereturnRecordMainDO.getId()); purchasereturnRecordDetailDO.setNumber(number); purchasereturnRecordDetailDO.setJobDetailId(String.valueOf(purchasereturnJobDetailDO.getId())); - purchasereturnRecordDetailDO.setFromBatch(purchasereturnJobDetailDO.getBatch()); - purchasereturnRecordDetailDO.setToBatch(purchasereturnJobDetailDO.getBatch()); purchasereturnRecordDetailDO.setFromPackingNumber(purchasereturnJobDetailDO.getPackingNumber()); - purchasereturnRecordDetailDO.setToPackingNumber(purchasereturnJobDetailDO.getPackingNumber()); + purchasereturnRecordDetailDO.setToPackingNumber(purchasereturnJobDetailUpdateReqVO.getToPackingNumber()); + purchasereturnRecordDetailDO.setFromContainerNumber(purchasereturnJobDetailDO.getContainerNumber()); + purchasereturnRecordDetailDO.setToContainerNumber(purchasereturnJobDetailUpdateReqVO.getToContainerNumber()); + purchasereturnRecordDetailDO.setQty(purchasereturnJobDetailUpdateReqVO.getHandleQty()); + purchasereturnRecordDetailDO.setFromBatch(purchasereturnJobDetailDO.getBatch()); + purchasereturnRecordDetailDO.setToBatch(purchasereturnJobDetailUpdateReqVO.getToBatch()); + purchasereturnRecordDetailDO.setInventoryStatus(purchasereturnJobDetailUpdateReqVO.getToInventoryStatus()); + purchasereturnRecordDetailDO.setToLocationCode(purchasereturnJobDetailUpdateReqVO.getToLocationCode()); purchasereturnRecordDetailDO.setId(null); purchasereturnRecordDetailDO.setCreateTime(null); purchasereturnRecordDetailDO.setCreator(null); @@ -254,21 +264,52 @@ public class PurchasereturnJobMainServiceImpl implements PurchasereturnJobMainSe purchasereturnRecordDetailDOList.add(purchasereturnRecordDetailDO); //更新采购订单明细的退货数量 purchaseMainService.updateOrderPurchaseReturnQty(purchasereturnRecordDetailDO.getPoNumber(), purchasereturnRecordDetailDO.getPoLine(), purchasereturnRecordDetailDO.getItemCode(), purchasereturnRecordDetailDO.getQty()); + //查询库存余额 + BalanceDO balanceDO = balanceMapper.getBalanceQty(purchasereturnRecordDetailDO.getFromPackingNumber(), purchasereturnRecordDetailDO.getItemCode(), purchasereturnRecordDetailDO.getFromBatch(), purchasereturnRecordDetailDO.getInventoryStatus(), purchasereturnRecordDetailDO.getFromLocationCode()); //添加库存事务list - TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); - BeanUtils.copyProperties(purchasereturnRecordDetailDO, transactionCreateReqVO); + TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); + BeanUtils.copyProperties(purchasereturnRecordDetailDO, transactionCreateReqVOOut); //增加业务类型 BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReurnJob"); - transactionCreateReqVO.setBusinessType(businesstypeDO.getCode()); - TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); - transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); - transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); - transactionCreateReqVO.setBusinessType(purchasereturnRecordMainDO.getBusinessType()); - transactionCreateReqVO.setLocationCode(purchasereturnJobDetailDO.getFromLocationCode()); - transactionCreateReqVO.setOwnerCode(purchasereturnRecordDetailDO.getFromOwnerCode()); - transactionCreateReqVO.setRecordNumber(number); - transactionCreateReqVO.setId(null); - transactionCreateReqVOList.add(transactionCreateReqVO); + transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode()); + TransactiontypeDO transactionTypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); + transactionCreateReqVOOut.setInventoryAction(transactionTypeDOOut.getInventoryAction()); + transactionCreateReqVOOut.setTransactionType(transactionTypeDOOut.getCode()); + transactionCreateReqVOOut.setBusinessType(purchasereturnRecordMainDO.getBusinessType()); + transactionCreateReqVOOut.setLocationCode(purchasereturnJobDetailDO.getFromLocationCode()); + transactionCreateReqVOOut.setOwnerCode(purchasereturnRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVOOut.setSinglePrice(balanceDO.getSinglePrice()); + transactionCreateReqVOOut.setAmount(balanceDO.getAmount()); + transactionCreateReqVOOut.setArriveDate(balanceDO.getArriveDate()); + transactionCreateReqVOOut.setProduceDate(balanceDO.getProduceDate()); + transactionCreateReqVOOut.setExpireDate(balanceDO.getExpireDate()); + transactionCreateReqVOOut.setRecordNumber(number); + transactionCreateReqVOOut.setQty(purchasereturnJobDetailUpdateReqVO.getHandleQty()); + transactionCreateReqVOOut.setInventoryStatus(purchasereturnJobDetailUpdateReqVO.getInventoryStatus()); + transactionCreateReqVOOut.setId(null); + transactionCreateReqVOList.add(transactionCreateReqVOOut); + //判断businesstypeDO.getInTransactionType()是否为空,不为空时增加入库存事务 + if(businesstypeDO.getInTransactionType() != null && !businesstypeDO.getInTransactionType().isEmpty()) { + //增加入库存事务 + TransactiontypeDO transactionTypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); + BeanUtils.copyProperties(purchasereturnRecordDetailDO, transactionCreateReqVOIn); + transactionCreateReqVOIn.setInventoryAction(transactionTypeDOIn.getInventoryAction()); + transactionCreateReqVOIn.setTransactionType(transactionTypeDOIn.getCode()); + transactionCreateReqVOIn.setBusinessType(purchasereturnRecordMainDO.getBusinessType()); + transactionCreateReqVOIn.setLocationCode(purchasereturnJobDetailDO.getToLocationCode()); + transactionCreateReqVOIn.setOwnerCode(purchasereturnRecordDetailDO.getToOwnerCode()); + transactionCreateReqVOIn.setSinglePrice(balanceDO.getSinglePrice()); + transactionCreateReqVOIn.setAmount(balanceDO.getAmount()); + transactionCreateReqVOIn.setArriveDate(balanceDO.getArriveDate()); + transactionCreateReqVOIn.setProduceDate(balanceDO.getProduceDate()); + transactionCreateReqVOIn.setExpireDate(balanceDO.getExpireDate()); + transactionCreateReqVOIn.setRecordNumber(number); + transactionCreateReqVOIn.setQty(purchasereturnJobDetailUpdateReqVO.getHandleQty()); + transactionCreateReqVOIn.setInventoryStatus(purchasereturnJobDetailUpdateReqVO.getToInventoryStatus()); + transactionCreateReqVOIn.setId(null); + transactionCreateReqVOList.add(transactionCreateReqVOIn); + } } purchasereturnRecordDetailMapper.insertBatch(purchasereturnRecordDetailDOList); List typeList = new ArrayList<>(); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java index 354e6103..51912e83 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java @@ -114,13 +114,14 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque List subDOList = PurchasereturnRequestDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); validatorToCreate(mainDO, subDOList); String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + mainDO.setRequestTime(LocalDateTime.now()); mainDO.setNumber(number); + purchasereturnRequestMainMapper.insert(mainDO); for (PurchasereturnRequestDetailDO detailDO : subDOList) { detailDO.setId(null); detailDO.setMasterId(mainDO.getId()); detailDO.setNumber(number); } - purchasereturnRequestMainMapper.insert(mainDO); purchasereturnRequestDetailMapper.insertBatch(subDOList); //调用自动执行方法 if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { @@ -356,6 +357,7 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque purchasereturnJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); purchasereturnJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); purchasereturnJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); + purchasereturnJobMainDO.setRequestTime(mainDO.getRequestTime()); purchasereturnJobMainDO.setId(null); purchasereturnJobMainDO.setCreateTime(null); purchasereturnJobMainDO.setCreator(null);