diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java index 75f4b8cbb..aeffc45f4 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java @@ -221,6 +221,126 @@ public class StockInOrderDomainService { stockInOrderDO.setSignaturePic(null); stockInOrderDO.setEvidencePics(null); stockInOrderDO.setSignatureRemark(null); + //复制新增时原单的衍生业务/流程字段不能带入新单(新增时前端不传,保持初始值) + //注意:组织/创建人/货主/供应商/仓库等由 Assembler 与 App 层重新赋值或单号生成依赖,不在本处清理 + stockInOrderDO.setInOrderId(null); + stockInOrderDO.setNoticeNumber(null); + stockInOrderDO.setExpectTime(null); + stockInOrderDO.setSupplyChainNumber(null); + stockInOrderDO.setPriorityLevelCode(null); + stockInOrderDO.setPriorityLevelName(null); + stockInOrderDO.setDirectWarehouse(null); + stockInOrderDO.setAnnexUrl(null); + stockInOrderDO.setWeightLimit(null); + stockInOrderDO.setVolumeLimit(null); + stockInOrderDO.setQuantity(null); + stockInOrderDO.setMobilizeCode(null); + stockInOrderDO.setBusinessOrderNo(null); + stockInOrderDO.setDocumentCreator(null); + stockInOrderDO.setDocumentCreatorName(null); + stockInOrderDO.setDocumentDate(null); + stockInOrderDO.setBillingJson(null); + stockInOrderDO.setReceiptOrderAccountList(null); + } + + /** + * 新增入库单(含复制新建)时重置明细的「执行态」字段 + * + *

前端「复制」入库单是把原单详情(getInfo)整体提交到新增接口,明细会带出原单的 + * 主键、收货/上架状态、已分配库区库位/容器、验收/质检结果、费用等执行数据。 + * 规则:只清空「复制时额外多传」的字段(新增时前端不传的),让新单与直接新增行为一致; + * 新增时前端会传的业务属性(料号、名称、规格、申报要素、报关字段、备注、入库数量等)保留不清理。 + * 明细的组织/创建人/唯一键等由 batchInsert 按当前登录人重新赋值,清理后即恢复初始态。

+ */ + private void resetNewOrderDetailState(List detailList) { + if (CollectionUtils.isEmpty(detailList)) { + return; + } + detailList.forEach(detail -> { + if (detail == null) { + return; + } + //唯一键、单号、组织、审计字段:由 batchInsert 重新生成/赋值 + detail.setUniqueId(null); + detail.setInOrderNumber(null); + 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.setWeightLimit(null); + detail.setVolumeLimit(null); + //收货/上架执行数据 + detail.setReceiptQuantity(null); + detail.setShelvesQuantity(null); + detail.setActualQuantity(null); + detail.setReceiptStatus(null); + detail.setShelvesStatus(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.setBarCode(null); + //批次、仓库/库区/库位、容器 + detail.setBatchNumber(null); + detail.setMaterialStatusCode(null); + detail.setMaterialStatusName(null); + detail.setWarehouseId(null); + detail.setWarehouseCode(null); + detail.setWarehouseName(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); + //层级结构:新单均为一级父行(level 由 batchInsert 强制为 1) + detail.setParentUniqueId(null); + detail.setChildren(null); + //验收/质检结果 + detail.setArrivalAcceptQualified(null); + detail.setPackageDamaged(null); + detail.setIsThawWaterstain(null); + detail.setNotifyCustomerAbnormal(null); + detail.setQualityInspectionResults(null); + //费用/展示 + detail.setContractFee(null); + detail.setMonthlyWarehouseFee(null); + detail.setHalfMonthWhFee(null); + detail.setDiscountRate(null); + detail.setSingleVolume(null); + detail.setSingleGrossWeight(null); + detail.setLotNo(null); + //执行数据 + detail.setCollectQuantity(null); + detail.setShelfJson(null); + //报关推送映射字段 + detail.setLineNumGw(null); + detail.setSpecGw(null); + detail.setUnitGw(null); + detail.setQtyGw(null); + detail.setErpCurrGw(null); + detail.setErpPriceGw(null); + detail.setAmountGw(null); + }); } @@ -281,15 +401,7 @@ public class StockInOrderDomainService { // BigDecimal volumeLimit = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); // stockInOrderDO.setVolumeLimit(volumeLimit); //复制新建时原单明细的收货数量、上架数量、作业数量等执行数据不能带入新单,统一清空 - if (!CollectionUtils.isEmpty(stockInOrderDO.getMaterialDetailList())) { - stockInOrderDO.getMaterialDetailList().forEach(detail -> { - if (detail != null) { - detail.setReceiptQuantity(null); - detail.setShelvesQuantity(null); - detail.setActualQuantity(null); - } - }); - } + resetNewOrderDetailState(stockInOrderDO.getMaterialDetailList()); stockInOrderService.insert(stockInOrderDO); return materialDetailService.batchInsert(stockInOrderDO.getInOrderNumber(), stockInOrderDO.getMaterialDetailList()); }