From 85c0ef48ae6528606783eee11687a7b722f98998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Sat, 14 Mar 2026 17:33:36 +0800 Subject: [PATCH] =?UTF-8?q?PDA=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StockReceiptOrderApplicationService.java | 5 +++-- .../StockShelfOrderApplicationService.java | 14 ++++++++++++++ .../repository/po/TaskMaterialPO.java | 9 +++++++++ .../service/StockReceiptOrderDomainService.java | 15 ++++++++++++++- .../stockOutOrder/StockOutOrderAppApi.java | 4 ++-- 5 files changed, 42 insertions(+), 5 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 068f9d9c1..daad3e047 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 @@ -413,8 +413,9 @@ public class StockReceiptOrderApplicationService { if (CollectionUtils.isEmpty(children)) { continue; } - // 主行 alreadyReceiptQuantity = 主行 receiptQuantity + 所有子项 receiptQuantity - BigDecimal alreadyReceiptQuantitySum = parent.getReceiptQuantity() != null ? parent.getReceiptQuantity() : BigDecimal.ZERO; + // 若存在 parent_copy(子项 uniqueId 与主项相同),主行数量仅取自子项,避免重复累加 + boolean hasParentCopy = children.stream().anyMatch(c -> parent.getUniqueId() != null && parent.getUniqueId().equals(c.getUniqueId())); + BigDecimal alreadyReceiptQuantitySum = (hasParentCopy ? BigDecimal.ZERO : (parent.getReceiptQuantity() != null ? parent.getReceiptQuantity() : BigDecimal.ZERO)); Integer maxReceiptStatus = parent.getReceiptStatus(); for (ReceiptMaterialDetailPO child : children) { if (child.getReceiptQuantity() != null) { diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java index 2685051f2..6354c87f5 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java @@ -194,6 +194,20 @@ public class StockShelfOrderApplicationService { ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO(); shelfMaterialDetailDO.setShelfOrderNumber(stockShelfOrderPO.getShelfOrderNumber()); List shelfMaterialDetailPOList = shelfMaterialDetailDomainService.queryListChildren(shelfMaterialDetailDO); + // 主项无子项时:添加 parent_copy 到 children,供详情页展示(详情页从 children 读取数据) + for (ShelfMaterialDetailPO parent : shelfMaterialDetailPOList) { + if (CollectionUtils.isEmpty(parent.getChildren())) { + ShelfMaterialDetailPO parentCopy = new ShelfMaterialDetailPO(); + BeanUtils.copyProperties(parent, parentCopy, "children"); + parentCopy.setLevel(2); + parentCopy.setParentUniqueId(parent.getUniqueId()); + parentCopy.setQuantity(null); + parentCopy.setChildren(new ArrayList<>()); + List children = new ArrayList<>(); + children.add(parentCopy); + parent.setChildren(children); + } + } // 性能优化:批量获取批次属性,避免N+1查询问题 // 1. 收集所有唯一的materialBaseInfoId diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/TaskMaterialPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/TaskMaterialPO.java index 666e74897..a159142cd 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/TaskMaterialPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/TaskMaterialPO.java @@ -1,5 +1,6 @@ package com.mhd.wms.domain.stockOutTaskOrder.repository.po; +import com.fasterxml.jackson.annotation.JsonProperty; import com.mhd.common.core.annotation.Excel; import com.mhd.common.core.web.domain.BaseVOEntity; import com.mhd.wms.domain.taskPickingMaterialDetail.repository.po.TaskPickingMaterialDetailPO; @@ -68,4 +69,12 @@ public class TaskMaterialPO extends BaseVOEntity { @ApiModelProperty("拣货作业物料详情") private List taskPickingMaterialDetailList; + /** + * 与 taskPickingMaterialDetailList 同值,供详情页从 children 读取(与收货单、上架单结构一致) + */ + @JsonProperty("children") + public List getChildren() { + return taskPickingMaterialDetailList; + } + } 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 4944fd694..c682234e2 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 @@ -228,10 +228,23 @@ public class StockReceiptOrderDomainService { receiptMaterialDetailPOChildren.setQuantity(null); }); } else { - // 主项无子项时(点击分批收货前):确保主项也有批次属性,否则 PDA 不显示 + // 主项无子项时:添加 parent_copy 到 children,供详情页展示(详情页从 children 读取数据) if (CollectionUtils.isEmpty(receiptMaterialDetailPO.getMaterialMoreDetailList())) { receiptMaterialDetailPO.setMaterialMoreDetailList(getMaterialMoreDetail(receiptMaterialDetailPO)); } + ReceiptMaterialDetailPO parentCopy = new ReceiptMaterialDetailPO(); + BeanUtils.copyProperties(receiptMaterialDetailPO, parentCopy, "children"); + parentCopy.setLevel(2); + parentCopy.setParentUniqueId(receiptMaterialDetailPO.getUniqueId()); + parentCopy.setQuantity(null); + parentCopy.setChildren(new ArrayList<>()); + if (CollectionUtils.isEmpty(parentCopy.getMaterialMoreDetailList())) { + parentCopy.setMaterialMoreDetailList(receiptMaterialDetailPO.getMaterialMoreDetailList()); + } + List serialList = inMaterialDetailSerialNumberMap.get(receiptMaterialDetailPO.getUniqueId()); + parentCopy.setMaterialDetailSerialNumberList(serialList != null ? serialList : new ArrayList<>()); + receiptMaterialDetailPOChildrenList = new ArrayList<>(); + receiptMaterialDetailPOChildrenList.add(parentCopy); } receiptMaterialDetailPO.setChildren(receiptMaterialDetailPOChildrenList != null ? receiptMaterialDetailPOChildrenList : new ArrayList<>()); }); diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutOrder/StockOutOrderAppApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutOrder/StockOutOrderAppApi.java index 2589461f2..89e0e2793 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutOrder/StockOutOrderAppApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutOrder/StockOutOrderAppApi.java @@ -38,7 +38,7 @@ public class StockOutOrderAppApi extends BaseController { /** * 分页查询出库单列表(PDA复核查询) - * 查询条件:warehouse_id(用户关联仓库)、check_operators_by(当前用户)、check_status<3 等 + * 查询条件:warehouse_id(用户关联仓库)、check_operators_by(当前用户)、check_status>2 等 */ @ApiOperation("查询出库单列表") @GetMapping("/list") @@ -50,7 +50,7 @@ public class StockOutOrderAppApi extends BaseController { stockOutOrderDO.setCheckOperatorsBy(userPo.getUserId()); stockOutOrderDO.setOrganizationId(userPo.getOrganizationId()); stockOutOrderDO.setTopOrganizationId(userPo.getTopOrganizationId()); - stockOutOrderDO.setLtCheckStatus(3); + stockOutOrderDO.setGtCheckStatus(2); stockOutOrderDO.setDelFlag(1); AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); if (associationWarehouseCacheDO != null) {