From 936ccb01fe600d07611dd000c7f44987b097fa65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Thu, 21 Dec 2023 17:32:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E9=80=80=E6=96=99=20?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E8=AE=B0=E5=BD=95=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 1 + ...ProductionreturnRecordMainServiceImpl.java | 53 ++++++++++++------- 2 files changed, 35 insertions(+), 19 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 c597ba1b..005c532b 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 @@ -627,6 +627,7 @@ public interface ErrorCodeConstants { ErrorCode PRODUCTIONRETURN_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_099_000, "生产退料记录主不存在"); //生产退料任务子ErrorCode ErrorCode PRODUCTIONRETURN_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_099_001, "生产退料记录子不存在"); + ErrorCode PRODUCTIONRETURN_RECORD_QTY_ERROR = new ErrorCode(1_000_099_002, "退料总数:【{}】 大于 库存余额数量:【{}】 "); //生产订单主ErrorCode ErrorCode WORK_MAIN_NOT_EXISTS = new ErrorCode(1_000_100_000, "生产订单主不存在"); //生产订单子ErrorCode diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java index de9030f4..181157ab 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java @@ -30,6 +30,7 @@ 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.productionreturnRecord.ProductionreturnRecordDetailMapper; import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordMainMapper; +import com.win.module.wms.service.balance.BalanceService; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.recordsetting.RecordsettingService; @@ -60,6 +61,8 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Validated public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRecordMainService { + @Resource + private BalanceService balanceService; @Resource private BalanceMapper balanceMapper; @Resource @@ -121,16 +124,21 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe productionreturnRecordMainMapper.insert(mainDO); //库存事务 List transactionCreateReqVOList = new ArrayList<>(); + // 求和 + BigDecimal sumQty = BigDecimal.ZERO; + for (ProductionreturnRecordDetailDO detailDO : subDOList) { + sumQty = sumQty.add(detailDO.getQty()); + } for (ProductionreturnRecordDetailDO detailDO : subDOList) { detailDO.setMasterId(mainDO.getId()); detailDO.setNumber(number); -// LocationDO locationDOFrom = locationService.selectLocation(detailDO.getFromLocationCode()); -// if(locationDOFrom != null) { -// detailDO.setFromAreaCode(locationDOFrom.getAreaCode()); -// detailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode()); -// } else { -// throw exception(LOCATION_NOT_EXISTS); -// } + LocationDO locationDOFrom = locationService.selectLocation(detailDO.getFromLocationCode()); + if(locationDOFrom != null) { + detailDO.setFromAreaCode(locationDOFrom.getAreaCode()); + detailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode()); + } else { + throw exception(LOCATION_NOT_EXISTS); + } LocationDO locationDOTo = locationService.selectLocation(detailDO.getToLocationCode()); if(locationDOTo != null) { detailDO.setToAreaCode(locationDOTo.getAreaCode()); @@ -149,10 +157,17 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe throw exception(ITEMBASIC_NOT_EXISTS); } //查询库存余额 - BalanceDO balanceDO = balanceMapper.getBalanceQty(detailDO.getFromPackingNumber(), detailDO.getItemCode(), detailDO.getFromBatch(), detailDO.getInventoryStatus(), detailDO.getToLocationCode()); - if (balanceDO == null) { + List status = new ArrayList<>(); + status.add(detailDO.getInventoryStatus()); + List balanceDOList = balanceService.selectNumber(detailDO.getItemCode(),status,detailDO.getFromLocationCode()); + if (balanceDOList == null || balanceDOList.size() == 0) { throw exception(UNPLANNEDISSUE_REQUEST_DETAIL_BALANCE_NOT_EXISTS); } + // balanceDOList.get(0) 线边库 管理模式为 数量管理 库存余额应该就是一个 + // 退料总数量 大于 库存余额数量 返回 错误信息 + if (sumQty.compareTo(balanceDOList.get(0).getQty()) == 1) { + throw exception(PRODUCTIONRETURN_RECORD_QTY_ERROR, sumQty, balanceDOList.get(0).getQty()); + } // 库存事务——入 TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn); @@ -165,11 +180,11 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe 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.setSinglePrice(balanceDOList.get(0).getSinglePrice()); + transactionCreateReqVOIn.setAmount(balanceDOList.get(0).getAmount()); + transactionCreateReqVOIn.setArriveDate(balanceDOList.get(0).getArriveDate()); + transactionCreateReqVOIn.setProduceDate(balanceDOList.get(0).getProduceDate()); + transactionCreateReqVOIn.setExpireDate(balanceDOList.get(0).getExpireDate()); transactionCreateReqVOIn.setWarehouseCode(mainDO.getFromWarehouseCode()); transactionCreateReqVOIn.setRecordNumber(number); transactionCreateReqVOIn.setId(null); @@ -187,11 +202,11 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe 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.setSinglePrice(balanceDOList.get(0).getSinglePrice()); + transactionCreateReqVOOut.setAmount(balanceDOList.get(0).getAmount()); + transactionCreateReqVOOut.setArriveDate(balanceDOList.get(0).getArriveDate()); + transactionCreateReqVOOut.setProduceDate(balanceDOList.get(0).getProduceDate()); + transactionCreateReqVOOut.setExpireDate(balanceDOList.get(0).getExpireDate()); transactionCreateReqVOOut.setWarehouseCode(mainDO.getFromWarehouseCode()); transactionCreateReqVOOut.setId(null); transactionCreateReqVOList.add(transactionCreateReqVOOut);