From ac349ea8a860efc3557a13b1db91b266d05599c8 Mon Sep 17 00:00:00 2001
From: zhaoqing <3160641494@qq.com>
Date: Fri, 14 Aug 2026 15:55:28 +0800
Subject: [PATCH] =?UTF-8?q?fix(wms):=E5=87=BA=E5=85=A5=E5=BA=93=E5=A4=8D?=
=?UTF-8?q?=E5=88=B6=E6=96=B0=E5=A2=9E=E6=97=B6=E6=B8=85=E7=A9=BA=E6=95=B0?=
=?UTF-8?q?=E9=87=8F=E7=9B=B8=E5=85=B3=E6=95=B0=E6=8D=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../service/StockOutOrderDomainService.java | 166 ++++++++++++++++--
1 file changed, 154 insertions(+), 12 deletions(-)
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java
index 3d431a636..ac4c1cd4e 100644
--- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java
@@ -285,6 +285,159 @@ public class StockOutOrderDomainService {
stockOutOrderDO.setSignaturePic(null);
stockOutOrderDO.setEvidencePics(null);
stockOutOrderDO.setSignatureRemark(null);
+ //复制新增时原单的衍生业务/流程字段不能带入新单(新增时前端不传,保持初始值)
+ //注意:组织/创建人/货主/客户等由 Assembler 与 App 层重新赋值,不在本处清理
+ stockOutOrderDO.setOutOrderId(null);
+ stockOutOrderDO.setNoticeNumber(null);
+ stockOutOrderDO.setExpectTime(null);
+ stockOutOrderDO.setSupplyChainNumber(null);
+ stockOutOrderDO.setPriorityLevelCode(null);
+ stockOutOrderDO.setPriorityLevelName(null);
+ stockOutOrderDO.setDirectWarehouse(null);
+ stockOutOrderDO.setReview(null);
+ stockOutOrderDO.setAnnexUrl(null);
+ stockOutOrderDO.setWeightLimit(null);
+ stockOutOrderDO.setVolumeLimit(null);
+ stockOutOrderDO.setMobilizeCode(null);
+ stockOutOrderDO.setTransportModeCode(null);
+ stockOutOrderDO.setSupervisionModeCode(null);
+ stockOutOrderDO.setContainerNoName(null);
+ stockOutOrderDO.setDocumentCreator(null);
+ stockOutOrderDO.setDocumentCreatorName(null);
+ stockOutOrderDO.setDocumentDate(null);
+ stockOutOrderDO.setCarrierName(null);
+ stockOutOrderDO.setBillingJson(null);
+ stockOutOrderDO.setReceiptOrderAccountList(null);
+ stockOutOrderDO.setReturnQuantity(null);
+ stockOutOrderDO.setTrainNo(null);
+ }
+
+ /**
+ * 新增出库单(含复制新建)时重置明细的「执行态」字段
+ *
+ *
前端「复制」出库单是把原单详情(getInfo)整体提交到新增接口,明细会带出原单的
+ * 主键、已分配库存/批次/库区库位/容器、拣货复核数量、抄码重量、收费等执行数据。
+ * 规则:只清空「复制时额外多传」的字段(新增时前端不传的),让新单与直接新增行为一致;
+ * 新增时前端会传的业务属性(料号、规格、申报要素、报关字段、备注、出库数量等)保留不清理。
+ * 明细的组织/创建人/计划数量等由 batchInsert 按当前登录人重新赋值,清理后即恢复初始态。
+ */
+ private void resetNewOrderDetailState(List detailList) {
+ if (CollectionUtils.isEmpty(detailList)) {
+ return;
+ }
+ detailList.forEach(detail -> {
+ if (detail == null) {
+ return;
+ }
+ //主键与唯一键:重新生成,避免与原单重复/冲突
+ detail.setMaterialDetailId(null);
+ detail.setUniqueId(null);
+ detail.setOutOrderNumber(null);
+ //单据组织、审计字段:由 batchInsert 按当前登录人重新赋值
+ detail.setOrganizationId(null);
+ detail.setOrganizationName(null);
+ detail.setTopOrganizationId(null);
+ detail.setCreateBy(null);
+ detail.setCreateByName(null);
+ detail.setCreateTime(null);
+ detail.setUpdateBy(null);
+ detail.setUpdateByName(null);
+ detail.setUpdateTime(null);
+ detail.setDelFlag(null);
+ //计划数量:由 batchInsert 按出库数量重新计算
+ detail.setQuantity(null);
+ //执行数量
+ detail.setInventoryQuantity(null);
+ detail.setAllocationQuantity(null);
+ detail.setAlreadyAllocationQuantity(null);
+ detail.setNowAllocationQuantity(null);
+ detail.setPickingQuantity(null);
+ detail.setCheckQuantity(null);
+ detail.setActualQuantity(null);
+ //重量/体积限制
+ detail.setWeightLimit(null);
+ detail.setVolumeLimit(null);
+ //物料基础信息(batchInsert 会按主数据重填条码/商品名称等)
+ detail.setMaterialCode(null);
+ detail.setMaterialName(null);
+ detail.setBarCode(null);
+ detail.setCommodityName(null);
+ detail.setCommodityNo(null);
+ //包装/单位
+ detail.setPackId(null);
+ detail.setPackCode(null);
+ detail.setPackName(null);
+ detail.setPackDetailId(null);
+ detail.setUnitCode(null);
+ detail.setUnitName(null);
+ detail.setUnitNumber(null);
+ detail.setMaterialWarehouseControlId(null);
+ detail.setSerialNumberManage(null);
+ //已分配库存、批次、库区/库位、容器
+ detail.setWarehouseId(null);
+ detail.setWarehouseCode(null);
+ detail.setWarehouseName(null);
+ detail.setMaterialInventoryId(null);
+ detail.setBatchNumber(null);
+ detail.setMaterialStatusCode(null);
+ detail.setMaterialStatusName(null);
+ detail.setStorageSectionId(null);
+ detail.setStorageCode(null);
+ detail.setStorageName(null);
+ detail.setStorageLocationId(null);
+ detail.setStorageLocationCode(null);
+ detail.setStorageLocationName(null);
+ detail.setContainerId(null);
+ detail.setContainerCode(null);
+ detail.setContainerType(null);
+ detail.setContainerTypeName(null);
+ //层级结构:新单均为一级父行(子行由 batchInsert 忽略,不落库)
+ detail.setLevel(null);
+ detail.setParentUniqueId(null);
+ detail.setAllowModify(null);
+ detail.setGenPickingOrder(null);
+ detail.setChildren(null);
+ //复核重量、状态标识
+ detail.setCheckNetWeight(null);
+ detail.setCheckGrossWeight(null);
+ detail.setCheckVolume(null);
+ detail.setCheckArea(null);
+ detail.setIsAllocated(null);
+ //抄码数据
+ detail.setCopyCodeReferenceIds(null);
+ detail.setCopyTotalWeight(null);
+ detail.setOutWeight(null);
+ detail.setOutVolume(null);
+ detail.setOutQuantity(null);
+ //库存展示/费用/批次信息
+ detail.setStockQuantity(null);
+ detail.setStockUnit(null);
+ detail.setLotNo(null);
+ detail.setContractFee(null);
+ detail.setMonthlyWarehouseFee(null);
+ detail.setHalfMonthWhFee(null);
+ detail.setDiscountRate(null);
+ detail.setSingleVolume(null);
+ detail.setSingleGrossWeight(null);
+ detail.setInOrderNumber(null);
+ detail.setProductionDate(null);
+ //报关推送映射字段
+ detail.setLineNumGw(null);
+ detail.setSpecGw(null);
+ detail.setUnitGw(null);
+ detail.setQtyGw(null);
+ detail.setErpCurrGw(null);
+ detail.setErpPriceGw(null);
+ detail.setAmountGw(null);
+ detail.setInOrderNumberGw(null);
+ detail.setInLineNumGw(null);
+ detail.setOpWhLocGw(null);
+ detail.setWarehouseGw(null);
+ detail.setInvtRowGw(null);
+ detail.setBondInvtNoGw(null);
+ detail.setWhNoGw(null);
+ detail.setSeatNoGw(null);
+ });
}
@@ -350,18 +503,7 @@ public class StockOutOrderDomainService {
stockOutOrderDO.setCheckTaskDistribution(2);
}
//复制新建时原单明细的库存数量、分配数量、拣货/复核数量等执行数据不能带入新单,统一清空
- if (!CollectionUtils.isEmpty(stockOutOrderDO.getMaterialDetailList())) {
- stockOutOrderDO.getMaterialDetailList().forEach(detail -> {
- if (detail != null) {
- detail.setInventoryQuantity(null);
- detail.setAllocationQuantity(null);
- detail.setAlreadyAllocationQuantity(null);
- detail.setPickingQuantity(null);
- detail.setCheckQuantity(null);
- detail.setActualQuantity(null);
- }
- });
- }
+ resetNewOrderDetailState(stockOutOrderDO.getMaterialDetailList());
stockOutOrderService.insert(stockOutOrderDO);
return outMaterialDetailService.batchInsert(stockOutOrderDO.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList());
}