From cdb5d52b4d45bd9b0e3d13cce554a0bb6ebd4c06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 7 Apr 2026 14:21:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E8=B4=A7=E7=A1=AE=E8=AE=A4=E6=97=B6?= =?UTF-8?q?=E8=A6=86=E7=9B=96=E5=8E=9F=E6=9D=A5=E7=9A=84=E6=94=B6=E8=B4=A7?= =?UTF-8?q?=E6=95=B0=E9=87=8F=EF=BC=8C=E8=B4=B9=E7=94=A8=E4=BB=A5=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E9=A1=B5=E9=9D=A2=E6=8F=90=E4=BA=A4=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StockReceiptOrderApplicationService.java | 225 +++++++++++++++++- .../repository/todo/StockReceiptOrderDO.java | 7 + .../StockReceiptOrderDomainService.java | 27 ++- 3 files changed, 246 insertions(+), 13 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java index f95481384..e7190ac8f 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java @@ -1372,8 +1372,8 @@ public class StockReceiptOrderApplicationService { * @return Boolean */ public Boolean receivingGoods(StockReceiptOrderDO stockReceiptOrderDO){ - //收货装配参数 - StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO); + //收货装配参数(PC:页面全量覆盖累计已收与费用,不与历史累加) + StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO, true); assembleStockReceiptOrderDO.setFromPda(false); // PC收货完成,上架单是否下发=否 return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO); } @@ -1400,7 +1400,7 @@ public class StockReceiptOrderApplicationService { // 主项子项结构:将 children 第一条(parent_copy)赋值给主项并删除 assignFirstChildToParentAndRemove(stockReceiptOrderDO); } - StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO); + StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO, false); if (CollectionUtils.isEmpty(assembleStockReceiptOrderDO.getMaterialDetailList())) { throw new ServiceException("无有效收货数据,请确认已填写收货数量(收货数量不能全部为0)"); } @@ -1698,14 +1698,212 @@ public class StockReceiptOrderApplicationService { return totalField; } + /** + * PC 收货确认:页面提交为「当前全量实绩」,直接取 receipt* / total* 落库,不与历史累计做差或相加。 + */ + private static BigDecimal pickAbsoluteMetricFromPage(BigDecimal receiptField, BigDecimal totalField) { + if (receiptField != null) { + return receiptField; + } + if (totalField != null) { + return totalField; + } + return BigDecimal.ZERO; + } + + /** + * PC 收货:按页面全量覆盖累计已收(主行、子行毛净重体面积件数)。 + */ + private void appendReceiptLinePcFullPageOverwrite( + ReceiptMaterialDetailDO receiptMaterialDetailDO, + ReceiptMaterialDetailPO receiptMaterialDetailPO, + Map receiptMaterialDetailDbMap, + Map receiptMaterialDetailDbMapByUniqueId, + List returnReceiptMaterialDetailDOList, + BigDecimal[] wholeOrderReceiptQtySumHolder, + int[] materialKindsCompleteHolder) { + BigDecimal receiptQuantity = receiptMaterialDetailDO.getReceiptQuantity(); + if (receiptQuantity == null) { + receiptQuantity = BigDecimal.ZERO; + } + List children = receiptMaterialDetailDO.getChildren(); + BigDecimal childrenTotalQuantity = BigDecimal.ZERO; + if (!CollectionUtils.isEmpty(children)) { + childrenTotalQuantity = children.stream() + .map(ReceiptMaterialDetailDO::getReceiptQuantity) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + } + boolean hasReceiptByMetrics = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptNetWeight(), receiptMaterialDetailDO.getTotalNetWeight()).compareTo(BigDecimal.ZERO) > 0 + || pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptGrossWeight(), receiptMaterialDetailDO.getTotalGrossWeight()).compareTo(BigDecimal.ZERO) > 0; + if (!hasReceiptByMetrics && !CollectionUtils.isEmpty(children)) { + for (ReceiptMaterialDetailDO c : children) { + if (c == null) { + continue; + } + if (pickAbsoluteMetricFromPage(c.getReceiptNetWeight(), c.getTotalNetWeight()).compareTo(BigDecimal.ZERO) > 0 + || pickAbsoluteMetricFromPage(c.getReceiptGrossWeight(), c.getTotalGrossWeight()).compareTo(BigDecimal.ZERO) > 0) { + hasReceiptByMetrics = true; + break; + } + } + } + boolean hasReceipt = receiptQuantity.compareTo(BigDecimal.ZERO) > 0 || childrenTotalQuantity.compareTo(BigDecimal.ZERO) > 0 + || hasReceiptByMetrics; + List returnReceiptMaterialDetailDOChildList = new ArrayList<>(); + BigDecimal planQty = receiptMaterialDetailPO.getQuantity() != null ? receiptMaterialDetailPO.getQuantity() : BigDecimal.ZERO; + + if (hasReceipt) { + BigDecimal poReceiptQty = receiptMaterialDetailPO.getReceiptQuantity() != null + ? receiptMaterialDetailPO.getReceiptQuantity() : BigDecimal.ZERO; + if (poReceiptQty.compareTo(BigDecimal.ZERO) == 0) { + receiptMaterialDetailDO.setAllowModify(2); + setMaterialMoreDetailInfo(receiptMaterialDetailDO); + } + List receiptMaterialDetailDOChildList = receiptMaterialDetailDO.getChildren(); + if (!CollectionUtils.isEmpty(receiptMaterialDetailDOChildList)) { + for (ReceiptMaterialDetailDO receiptMaterialDetailDOChild : receiptMaterialDetailDOChildList) { + ReceiptMaterialDetailPO receiptMaterialDetailPOChildDb = receiptMaterialDetailDbMap.get(receiptMaterialDetailDOChild.getMaterialDetailId()); + if (receiptMaterialDetailPOChildDb == null && receiptMaterialDetailDOChild.getUniqueId() != null) { + receiptMaterialDetailPOChildDb = receiptMaterialDetailDbMapByUniqueId.get(receiptMaterialDetailDOChild.getUniqueId()); + } + BigDecimal childQty = receiptMaterialDetailDOChild.getReceiptQuantity() != null ? receiptMaterialDetailDOChild.getReceiptQuantity() : BigDecimal.ZERO; + BigDecimal childGross = pickAbsoluteMetricFromPage(receiptMaterialDetailDOChild.getReceiptGrossWeight(), receiptMaterialDetailDOChild.getTotalGrossWeight()); + BigDecimal childNet = pickAbsoluteMetricFromPage(receiptMaterialDetailDOChild.getReceiptNetWeight(), receiptMaterialDetailDOChild.getTotalNetWeight()); + BigDecimal childVol = pickAbsoluteMetricFromPage(receiptMaterialDetailDOChild.getReceiptVolume(), receiptMaterialDetailDOChild.getTotalVolume()); + BigDecimal childArea = pickAbsoluteMetricFromPage(receiptMaterialDetailDOChild.getReceiptArea(), receiptMaterialDetailDOChild.getTotalArea()); + if (childQty.compareTo(BigDecimal.ZERO) == 0 && childNet.compareTo(BigDecimal.ZERO) > 0) { + childQty = childNet; + } + if (childQty.compareTo(BigDecimal.ZERO) == 0 && childGross.compareTo(BigDecimal.ZERO) > 0) { + childQty = childGross; + } + ReceiptMaterialDetailDO returnReceiptMaterialDetailDOChild = new ReceiptMaterialDetailDO(); + if (receiptMaterialDetailPOChildDb != null) { + BeanUtils.copyProperties(receiptMaterialDetailPOChildDb, returnReceiptMaterialDetailDOChild); + BeanUtils.copyProperties(receiptMaterialDetailDOChild, returnReceiptMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDOChild)); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptQuantity(childQty); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptGrossWeight(childGross); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptNetWeight(childNet); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptVolume(childVol); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptArea(childArea); + returnReceiptMaterialDetailDOChild.setAllowModify(2); + returnReceiptMaterialDetailDOChild.setLevel(2); + returnReceiptMaterialDetailDOChild.setParentUniqueId(receiptMaterialDetailPO.getUniqueId()); + setMaterialMoreDetailInfo(returnReceiptMaterialDetailDOChild); + } else { + BeanUtils.copyProperties(receiptMaterialDetailPO, returnReceiptMaterialDetailDOChild, "materialDetailId", "createBy", "createByName", "createTime", + "updateBy", "updateByName", "updateTime"); + BeanUtils.copyProperties(receiptMaterialDetailDOChild, returnReceiptMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDOChild)); + if (ObjectUtil.isNotNull(returnReceiptMaterialDetailDOChild.getMaterialDetailId()) && returnReceiptMaterialDetailDOChild.getMaterialDetailId() == 0) { + returnReceiptMaterialDetailDOChild.setMaterialDetailId(null); + } + returnReceiptMaterialDetailDOChild.setAllowModify(2); + returnReceiptMaterialDetailDOChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + returnReceiptMaterialDetailDOChild.setLevel(2); + returnReceiptMaterialDetailDOChild.setParentUniqueId(receiptMaterialDetailPO.getUniqueId()); + setMaterialMoreDetailInfo(returnReceiptMaterialDetailDOChild); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptGrossWeight(childGross); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptNetWeight(childNet); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptVolume(childVol); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptArea(childArea); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptQuantity(childQty); + } + returnReceiptMaterialDetailDOChild.setTotalNetWeight(returnReceiptMaterialDetailDOChild.getAlreadyReceiptNetWeight()); + returnReceiptMaterialDetailDOChild.setTotalGrossWeight(returnReceiptMaterialDetailDOChild.getAlreadyReceiptGrossWeight()); + returnReceiptMaterialDetailDOChild.setTotalVolume(returnReceiptMaterialDetailDOChild.getAlreadyReceiptVolume()); + returnReceiptMaterialDetailDOChild.setTotalArea(returnReceiptMaterialDetailDOChild.getAlreadyReceiptArea()); + if (receiptMaterialDetailPO.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(receiptMaterialDetailDOChild.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + receiptMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + returnReceiptMaterialDetailDOChild.setMaterialDetailSerialNumberList(receiptMaterialDetailDOChild.getMaterialDetailSerialNumberList()); + returnReceiptMaterialDetailDOChild.setMaterialMoreDetailList(receiptMaterialDetailDOChild.getMaterialMoreDetailList()); + if (returnReceiptMaterialDetailDOChild.getAlreadyReceiptQuantity() != null) { + returnReceiptMaterialDetailDOChild.setReceiptQuantity(returnReceiptMaterialDetailDOChild.getAlreadyReceiptQuantity()); + } + returnReceiptMaterialDetailDOChild.setQuantity(null); + returnReceiptMaterialDetailDOChildList.add(returnReceiptMaterialDetailDOChild); + } + } + BigDecimal mainItemActualQuantity = receiptQuantity; + BigDecimal parentReceiptGross = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptGrossWeight(), receiptMaterialDetailDO.getTotalGrossWeight()); + BigDecimal parentReceiptNet = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptNetWeight(), receiptMaterialDetailDO.getTotalNetWeight()); + BigDecimal parentReceiptVol = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptVolume(), receiptMaterialDetailDO.getTotalVolume()); + BigDecimal parentReceiptArea = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptArea(), receiptMaterialDetailDO.getTotalArea()); + receiptMaterialDetailDO.setAlreadyReceiptQuantity(mainItemActualQuantity); + receiptMaterialDetailDO.setAlreadyReceiptGrossWeight(parentReceiptGross); + receiptMaterialDetailDO.setAlreadyReceiptNetWeight(parentReceiptNet); + receiptMaterialDetailDO.setAlreadyReceiptVolume(parentReceiptVol); + receiptMaterialDetailDO.setAlreadyReceiptArea(parentReceiptArea); + receiptMaterialDetailDO.setTotalNetWeight(receiptMaterialDetailDO.getAlreadyReceiptNetWeight()); + receiptMaterialDetailDO.setTotalGrossWeight(receiptMaterialDetailDO.getAlreadyReceiptGrossWeight()); + receiptMaterialDetailDO.setTotalVolume(receiptMaterialDetailDO.getAlreadyReceiptVolume()); + receiptMaterialDetailDO.setTotalArea(receiptMaterialDetailDO.getAlreadyReceiptArea()); + BigDecimal groupReceived = receiptMaterialDetailDO.getAlreadyReceiptQuantity() != null + ? receiptMaterialDetailDO.getAlreadyReceiptQuantity() : BigDecimal.ZERO; + if (!CollectionUtils.isEmpty(returnReceiptMaterialDetailDOChildList)) { + for (ReceiptMaterialDetailDO ch : returnReceiptMaterialDetailDOChildList) { + BigDecimal ca = ch.getAlreadyReceiptQuantity() != null ? ch.getAlreadyReceiptQuantity() : BigDecimal.ZERO; + groupReceived = groupReceived.add(ca); + } + } + Integer receiptStatus = judgeReceiptQuantity(groupReceived, planQty); + receiptMaterialDetailDO.setReceiptStatus(receiptStatus); + if (!CollectionUtils.isEmpty(returnReceiptMaterialDetailDOChildList)) { + for (ReceiptMaterialDetailDO ch : returnReceiptMaterialDetailDOChildList) { + ch.setReceiptStatus(receiptStatus); + } + } + wholeOrderReceiptQtySumHolder[0] = wholeOrderReceiptQtySumHolder[0].add(groupReceived); + if (receiptStatus > 2) { + materialKindsCompleteHolder[0] = materialKindsCompleteHolder[0] + 1; + } + } else { + receiptMaterialDetailDO.setAlreadyReceiptQuantity(BigDecimal.ZERO); + receiptMaterialDetailDO.setAlreadyReceiptGrossWeight(BigDecimal.ZERO); + receiptMaterialDetailDO.setAlreadyReceiptNetWeight(BigDecimal.ZERO); + receiptMaterialDetailDO.setAlreadyReceiptVolume(BigDecimal.ZERO); + receiptMaterialDetailDO.setAlreadyReceiptArea(BigDecimal.ZERO); + receiptMaterialDetailDO.setReceiptStatus(judgeReceiptQuantity(BigDecimal.ZERO, planQty)); + } + ReceiptMaterialDetailDO returnReceiptMaterialDetailDO = new ReceiptMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailPO, returnReceiptMaterialDetailDO); + BeanUtils.copyProperties(receiptMaterialDetailDO, returnReceiptMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDO)); + returnReceiptMaterialDetailDO.setTotalNetWeight(receiptMaterialDetailDO.getTotalNetWeight()); + returnReceiptMaterialDetailDO.setTotalGrossWeight(receiptMaterialDetailDO.getTotalGrossWeight()); + returnReceiptMaterialDetailDO.setTotalVolume(receiptMaterialDetailDO.getTotalVolume()); + returnReceiptMaterialDetailDO.setTotalArea(receiptMaterialDetailDO.getTotalArea()); + BigDecimal parentRetAlreadyQty = receiptMaterialDetailDO.getAlreadyReceiptQuantity() != null + ? receiptMaterialDetailDO.getAlreadyReceiptQuantity() : BigDecimal.ZERO; + returnReceiptMaterialDetailDO.setAlreadyReceiptQuantity(parentRetAlreadyQty); + returnReceiptMaterialDetailDO.setReceiptQuantity(parentRetAlreadyQty); + if (receiptMaterialDetailPO.getReceiptStatus() == 1) { + if (receiptMaterialDetailPO.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + receiptMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + returnReceiptMaterialDetailDO.setMaterialDetailSerialNumberList(receiptMaterialDetailDO.getMaterialDetailSerialNumberList()); + returnReceiptMaterialDetailDO.setMaterialMoreDetailList(receiptMaterialDetailDO.getMaterialMoreDetailList()); + } else { + returnReceiptMaterialDetailDO.setMaterialDetailSerialNumberList(new ArrayList<>()); + returnReceiptMaterialDetailDO.setMaterialMoreDetailList(new ArrayList<>()); + } + returnReceiptMaterialDetailDO.setChildren(returnReceiptMaterialDetailDOChildList); + returnReceiptMaterialDetailDOList.add(returnReceiptMaterialDetailDO); + } + /** * @description 收货装配参数 * @author ZhouGY * @date 2024/5/22 9:27 * @param stockReceiptOrderDO + * @param pcFullPageOverwrite PC 收货确认 true=页面全量覆盖累计已收(不累加历史) * @return Boolean */ - private StockReceiptOrderDO assembleParamByReceipt(StockReceiptOrderDO stockReceiptOrderDO) { + private StockReceiptOrderDO assembleParamByReceipt(StockReceiptOrderDO stockReceiptOrderDO, boolean pcFullPageOverwrite) { StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderDomainService.getInfo(stockReceiptOrderDO.getReceiptOrderId()); if (stockReceiptOrderPO == null){ throw new ServiceException("收货单不存在"); @@ -1734,6 +1932,8 @@ public class StockReceiptOrderApplicationService { .collect(Collectors.toMap(ReceiptMaterialDetailPO::getUniqueId, Function.identity())); BigDecimal totalActualQuantity = BigDecimal.ZERO;//收货单当前作业收货数 int totalActualReceiptMaterialQuantity = 0;//收货单收货物料种数 + BigDecimal[] wholeOrderReceiptQtySumHolder = new BigDecimal[]{BigDecimal.ZERO}; + int[] materialKindsCompleteHolder = new int[]{0}; List returnReceiptMaterialDetailDOList = new ArrayList<>(); for (ReceiptMaterialDetailDO receiptMaterialDetailDO : stockReceiptOrderDO.getMaterialDetailList()){ //设置物料更多属性信息:优先用 materialDetailId 查找,若为空则用 uniqueId 查找(兼容 PDA 只传 uniqueId 的场景) @@ -1747,6 +1947,11 @@ public class StockReceiptOrderApplicationService { if (receiptMaterialDetailPO == null){ throw new ServiceException("物料明细不存在"); } + if (pcFullPageOverwrite) { + appendReceiptLinePcFullPageOverwrite(receiptMaterialDetailDO, receiptMaterialDetailPO, receiptMaterialDetailDbMap, + receiptMaterialDetailDbMapByUniqueId, returnReceiptMaterialDetailDOList, wholeOrderReceiptQtySumHolder, materialKindsCompleteHolder); + continue; + } // receiptQuantity 空值保护,PDA 未传时按 0 处理 BigDecimal receiptQuantity = receiptMaterialDetailDO.getReceiptQuantity(); if (receiptQuantity == null) { @@ -1999,8 +2204,16 @@ public class StockReceiptOrderApplicationService { returnReceiptMaterialDetailDOList.add(returnReceiptMaterialDetailDO); } returnStockReceiptOrderDO.setMaterialDetailList(returnReceiptMaterialDetailDOList); - returnStockReceiptOrderDO.setActualQuantity(totalActualQuantity); - returnStockReceiptOrderDO.setActualReceiptMaterialQuantity(totalActualReceiptMaterialQuantity); + if (pcFullPageOverwrite) { + returnStockReceiptOrderDO.setReceiptSubmitOverwriteFromPage(true); + returnStockReceiptOrderDO.setReceiptQuantity(wholeOrderReceiptQtySumHolder[0]); + returnStockReceiptOrderDO.setReceiptMaterialQuantity(materialKindsCompleteHolder[0]); + returnStockReceiptOrderDO.setActualQuantity(BigDecimal.ZERO); + returnStockReceiptOrderDO.setActualReceiptMaterialQuantity(0); + } else { + returnStockReceiptOrderDO.setActualQuantity(totalActualQuantity); + returnStockReceiptOrderDO.setActualReceiptMaterialQuantity(totalActualReceiptMaterialQuantity); + } return returnStockReceiptOrderDO; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/StockReceiptOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/StockReceiptOrderDO.java index 97ed85d4f..612ad1a7c 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/StockReceiptOrderDO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/StockReceiptOrderDO.java @@ -170,6 +170,13 @@ public class StockReceiptOrderDO extends StockInOrderBaseDO { @ApiModelProperty("是否来自PDA收货:true-PDA收货完成,false-PC收货完成(用于上架单是否下发:PDA=是,PC=否)") private Boolean fromPda; + + /** + * PC 收货确认:以页面提交数据为全量实绩覆盖落库(由 Application 层根据入口设置,非前端传入) + */ + @ApiModelProperty(hidden = true) + private Boolean receiptSubmitOverwriteFromPage; + @ApiModelProperty("费用") List receiptOrderAccountList; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java index c12cb8157..b527af8be 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java @@ -429,12 +429,14 @@ public class StockReceiptOrderDomainService { private void saveAmount(StockReceiptOrderDO stockReceiptOrderDO) { Long receiptOrderId = stockReceiptOrderDO.getReceiptOrderId(); - List receiptOrderAccountList = stockReceiptOrderDO.getReceiptOrderAccountList(); - for (ReceiptOrderAccount receiptOrderAccount : receiptOrderAccountList) { - receiptOrderAccount.setOrderId(receiptOrderId); - } receiptOrderAccountService.remove(new QueryWrapper().lambda().eq(ReceiptOrderAccount::getOrderId, receiptOrderId)); - receiptOrderAccountService.saveBatch(receiptOrderAccountList); + List receiptOrderAccountList = stockReceiptOrderDO.getReceiptOrderAccountList(); + if (receiptOrderAccountList != null && !receiptOrderAccountList.isEmpty()) { + for (ReceiptOrderAccount receiptOrderAccount : receiptOrderAccountList) { + receiptOrderAccount.setOrderId(receiptOrderId); + } + receiptOrderAccountService.saveBatch(receiptOrderAccountList); + } } /** @@ -694,8 +696,19 @@ public class StockReceiptOrderDomainService { LoginUser loginUser = SecurityUtils.getLoginUser(); StockReceiptOrder stockReceiptOrder = new StockReceiptOrder(); stockReceiptOrder.setReceiptOrderId(stockReceiptOrderPO.getReceiptOrderId()); - stockReceiptOrder.setReceiptQuantity(stockReceiptOrderPO.getReceiptQuantity().add(stockReceiptOrderDO.getActualQuantity())); - stockReceiptOrder.setReceiptMaterialQuantity(stockReceiptOrderPO.getReceiptMaterialQuantity() + stockReceiptOrderDO.getActualReceiptMaterialQuantity()); + if (Boolean.TRUE.equals(stockReceiptOrderDO.getReceiptSubmitOverwriteFromPage())) { + BigDecimal rq = stockReceiptOrderDO.getReceiptQuantity(); + stockReceiptOrder.setReceiptQuantity(rq != null ? rq : BigDecimal.ZERO); + Integer rmq = stockReceiptOrderDO.getReceiptMaterialQuantity(); + stockReceiptOrder.setReceiptMaterialQuantity(rmq != null ? rmq : 0); + } else { + BigDecimal prevRq = stockReceiptOrderPO.getReceiptQuantity() != null ? stockReceiptOrderPO.getReceiptQuantity() : BigDecimal.ZERO; + BigDecimal addAq = stockReceiptOrderDO.getActualQuantity() != null ? stockReceiptOrderDO.getActualQuantity() : BigDecimal.ZERO; + stockReceiptOrder.setReceiptQuantity(prevRq.add(addAq)); + int prevRmq = stockReceiptOrderPO.getReceiptMaterialQuantity() != null ? stockReceiptOrderPO.getReceiptMaterialQuantity() : 0; + int addArm = stockReceiptOrderDO.getActualReceiptMaterialQuantity() != null ? stockReceiptOrderDO.getActualReceiptMaterialQuantity() : 0; + stockReceiptOrder.setReceiptMaterialQuantity(prevRmq + addArm); + } stockReceiptOrder.setStatus(2); stockReceiptOrder.setUpdateBy(loginUser.getUserid()); stockReceiptOrder.setUpdateByName(loginUser.getUsername());