From cba6860b76e73b139c948e81d0183aecbaeb9c01 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:04:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E6=96=99=E7=94=B3=E8=AF=B7=20?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E7=94=9F=E6=88=90=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/IssueRecordDetailCreateReqVO.java | 6 +- .../vo/IssueRecordDetailRespVO.java | 6 +- .../issueRecord/vo/IssueRecordMainBaseVO.java | 1 - .../IssueRecordMainServiceImpl.java | 126 ++++++++++-------- 4 files changed, 81 insertions(+), 58 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordDetailCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordDetailCreateReqVO.java index f2d21491..edd84d43 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordDetailCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordDetailCreateReqVO.java @@ -3,10 +3,14 @@ package com.win.module.wms.controller.issueRecord.vo; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; +import java.util.Map; + @Schema(description = "管理后台 - 发料记录子创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class IssueRecordDetailCreateReqVO extends IssueRecordDetailBaseVO { - + @Schema(description = "子表记录数据") + private List> recordList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordDetailRespVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordDetailRespVO.java index 3fb506a6..0df7e6d5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordDetailRespVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordDetailRespVO.java @@ -3,10 +3,14 @@ package com.win.module.wms.controller.issueRecord.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.util.List; +import java.util.Map; + @Schema(description = "管理后台 - 发料记录子 Response VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class IssueRecordDetailRespVO extends IssueRecordDetailBaseVO { - + @Schema(description = "子表记录数据") + private List> recordList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordMainBaseVO.java index f010695e..8a3166a6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRecord/vo/IssueRecordMainBaseVO.java @@ -24,7 +24,6 @@ public class IssueRecordMainBaseVO { private Long id; @Schema(description = "申请单号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "申请单号不能为空") private String requestNumber; @Schema(description = "任务单号") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainServiceImpl.java index fcb6ad5d..713b3297 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRecord/IssueRecordMainServiceImpl.java @@ -1,7 +1,6 @@ package com.win.module.wms.service.issueRecord; import com.win.framework.common.pojo.CustomConditions; -import com.win.framework.common.pojo.PageResult; import com.win.module.infra.api.trends.TrendsApi; import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.serialnumber.SerialNumberApi; @@ -14,18 +13,15 @@ import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainPageReqVO; import com.win.module.wms.controller.issueRecord.vo.IssueRecordMainUpdateReqVO; import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.convert.issueRecord.IssueRecordDetailConvert; -import com.win.module.wms.convert.issueRecord.IssueRecordMainConvert; 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.issueRecord.IssueRecordDetailDO; -import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO; 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.issueRecord.IssueRecordDetailMapper; -import com.win.module.wms.dal.mysql.issueRecord.IssueRecordMainMapper; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.recordsetting.RecordsettingService; @@ -33,14 +29,20 @@ import com.win.module.wms.service.transaction.TransactionService; import com.win.module.wms.util.JobUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import javax.annotation.Resource; + import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import javax.annotation.Resource; +import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import java.util.*; + +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; +import com.win.framework.common.pojo.PageResult; + +import com.win.module.wms.convert.issueRecord.IssueRecordMainConvert; +import com.win.module.wms.dal.mysql.issueRecord.IssueRecordMainMapper; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @@ -109,6 +111,7 @@ public class IssueRecordMainServiceImpl implements IssueRecordMainService { //库存事务 List transactionCreateReqVOList = new ArrayList<>(); for (IssueRecordDetailDO detailDO : subDOList) { + List> recordList = IssueRecordDetailConvert.INSTANCE.convert(detailDO).getRecordList(); detailDO.setMasterId(mainDO.getId()); detailDO.setNumber(number); LocationDO locationDOFrom = locationService.selectLocation(detailDO.getFromLocationCode()); @@ -135,53 +138,66 @@ public class IssueRecordMainServiceImpl implements IssueRecordMainService { } else { throw exception(ITEMBASIC_NOT_EXISTS); } - //查询库存余额 - BalanceDO balanceDO = balanceMapper.getBalanceQty(detailDO.getFromPackingNumber(), detailDO.getItemCode(), detailDO.getFromBatch(), detailDO.getInventoryStatus(), detailDO.getFromLocationCode()); - if (balanceDO == null) { - throw exception(BALANCE_NOT_EXISTS); - } - // 库存事务——入 - TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); - BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn); - transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode()); - TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); - transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction()); - transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode()); - transactionCreateReqVOIn.setWorker(String.valueOf(userRespDTO.getId())); - transactionCreateReqVOIn.setBatch(detailDO.getToBatch()); - transactionCreateReqVOIn.setPackingNumber(detailDO.getToPackingNumber()); - transactionCreateReqVOIn.setInventoryStatus(detailDO.getInventoryStatus()); - transactionCreateReqVOIn.setLocationCode(detailDO.getToLocationCode()); - transactionCreateReqVOIn.setSinglePrice(balanceDO.getSinglePrice()); - transactionCreateReqVOIn.setAmount(balanceDO.getAmount()); - transactionCreateReqVOIn.setArriveDate(balanceDO.getArriveDate()); - transactionCreateReqVOIn.setProduceDate(balanceDO.getProduceDate()); - transactionCreateReqVOIn.setExpireDate(balanceDO.getExpireDate()); - transactionCreateReqVOIn.setWarehouseCode(mainDO.getFromWarehouseCode()); - transactionCreateReqVOIn.setRecordNumber(number); - transactionCreateReqVOIn.setId(null); - transactionCreateReqVOList.add(transactionCreateReqVOIn); - // 库存事务——出 - TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); - BeanUtils.copyProperties(detailDO, transactionCreateReqVOOut); - transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode()); - TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); - transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); - transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); - transactionCreateReqVOOut.setRecordNumber(number); - transactionCreateReqVOOut.setInventoryStatus(detailDO.getInventoryStatus()); - transactionCreateReqVOOut.setWorker(String.valueOf(userRespDTO.getId())); - transactionCreateReqVOOut.setBatch(detailDO.getFromBatch()); - transactionCreateReqVOOut.setPackingNumber(detailDO.getFromPackingNumber()); - transactionCreateReqVOOut.setLocationCode(detailDO.getFromLocationCode()); - transactionCreateReqVOOut.setSinglePrice(balanceDO.getSinglePrice()); - transactionCreateReqVOOut.setAmount(balanceDO.getAmount()); - transactionCreateReqVOOut.setArriveDate(balanceDO.getArriveDate()); - transactionCreateReqVOOut.setProduceDate(balanceDO.getProduceDate()); - transactionCreateReqVOOut.setExpireDate(balanceDO.getExpireDate()); - transactionCreateReqVOOut.setWarehouseCode(mainDO.getFromWarehouseCode()); - transactionCreateReqVOOut.setId(null); - transactionCreateReqVOList.add(transactionCreateReqVOOut); + recordList.forEach( recordListItem -> { + // record 相关数据 + String toInventoryStatus = recordListItem.get("toInventoryStatus").toString(); + String fromPackingNumber = recordListItem.get("fromPackingNumber").toString(); + String fromBatch = recordListItem.get("fromBatch").toString(); + String toPackingNumber = recordListItem.get("toPackingNumber").toString(); + String toBatch = recordListItem.get("toBatch").toString(); + String fromLocationCode = recordListItem.get("fromLocationCode").toString(); + String toLocationCode = recordListItem.get("toLocationCode").toString(); + + //查询库存余额 + List inventoryStatusList = new ArrayList<>(); + inventoryStatusList.add(toInventoryStatus); + List balanceDO = jobUtils.selectlocationReturnManagementAccuracyToBalance(detailDO.getItemCode(),fromPackingNumber,fromBatch,fromLocationCode,inventoryStatusList); + if (balanceDO == null || balanceDO.size() == 0) { + throw exception(BALANCE_NOT_EXISTS); + } + // 库存事务——入 + TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); + BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn); + transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode()); + TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction()); + transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode()); + transactionCreateReqVOIn.setWorker(String.valueOf(userRespDTO.getId())); + transactionCreateReqVOIn.setBatch(toBatch); + transactionCreateReqVOIn.setPackingNumber(toPackingNumber); + transactionCreateReqVOIn.setInventoryStatus(toInventoryStatus); + transactionCreateReqVOIn.setLocationCode(toLocationCode); + transactionCreateReqVOIn.setSinglePrice(balanceDO.get(0).getSinglePrice()); + transactionCreateReqVOIn.setAmount(balanceDO.get(0).getAmount()); + transactionCreateReqVOIn.setArriveDate(balanceDO.get(0).getArriveDate()); + transactionCreateReqVOIn.setProduceDate(balanceDO.get(0).getProduceDate()); + transactionCreateReqVOIn.setExpireDate(balanceDO.get(0).getExpireDate()); + transactionCreateReqVOIn.setWarehouseCode(mainDO.getFromWarehouseCode()); + transactionCreateReqVOIn.setRecordNumber(number); + transactionCreateReqVOIn.setId(null); + transactionCreateReqVOList.add(transactionCreateReqVOIn); + // 库存事务——出 + TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); + BeanUtils.copyProperties(detailDO, transactionCreateReqVOOut); + transactionCreateReqVOOut.setBusinessType(businesstypeDO.getCode()); + TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); + transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); + transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); + transactionCreateReqVOOut.setRecordNumber(number); + transactionCreateReqVOOut.setInventoryStatus(toInventoryStatus); + transactionCreateReqVOOut.setWorker(String.valueOf(userRespDTO.getId())); + transactionCreateReqVOOut.setBatch(fromBatch); + transactionCreateReqVOOut.setPackingNumber(fromPackingNumber); + transactionCreateReqVOOut.setLocationCode(fromLocationCode); + transactionCreateReqVOOut.setSinglePrice(balanceDO.get(0).getSinglePrice()); + transactionCreateReqVOOut.setAmount(balanceDO.get(0).getAmount()); + transactionCreateReqVOOut.setArriveDate(balanceDO.get(0).getArriveDate()); + transactionCreateReqVOOut.setProduceDate(balanceDO.get(0).getProduceDate()); + transactionCreateReqVOOut.setExpireDate(balanceDO.get(0).getExpireDate()); + transactionCreateReqVOOut.setWarehouseCode(mainDO.getFromWarehouseCode()); + transactionCreateReqVOOut.setId(null); + transactionCreateReqVOList.add(transactionCreateReqVOOut); + }); } issueRecordDetailMapper.insertBatch(subDOList); //增加库存事务