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) {