fix(wms):出入库复制新增时清空数量相关数据
This commit is contained in:
+154
-12
@@ -285,6 +285,159 @@ public class StockOutOrderDomainService {
|
|||||||
stockOutOrderDO.setSignaturePic(null);
|
stockOutOrderDO.setSignaturePic(null);
|
||||||
stockOutOrderDO.setEvidencePics(null);
|
stockOutOrderDO.setEvidencePics(null);
|
||||||
stockOutOrderDO.setSignatureRemark(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);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增出库单(含复制新建)时重置明细的「执行态」字段
|
||||||
|
*
|
||||||
|
* <p>前端「复制」出库单是把原单详情(getInfo)整体提交到新增接口,明细会带出原单的
|
||||||
|
* 主键、已分配库存/批次/库区库位/容器、拣货复核数量、抄码重量、收费等执行数据。
|
||||||
|
* 规则:只清空「复制时额外多传」的字段(新增时前端不传的),让新单与直接新增行为一致;
|
||||||
|
* 新增时前端会传的业务属性(料号、规格、申报要素、报关字段、备注、出库数量等)保留不清理。
|
||||||
|
* 明细的组织/创建人/计划数量等由 batchInsert 按当前登录人重新赋值,清理后即恢复初始态。</p>
|
||||||
|
*/
|
||||||
|
private void resetNewOrderDetailState(List<OutMaterialDetailDO> 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);
|
stockOutOrderDO.setCheckTaskDistribution(2);
|
||||||
}
|
}
|
||||||
//复制新建时原单明细的库存数量、分配数量、拣货/复核数量等执行数据不能带入新单,统一清空
|
//复制新建时原单明细的库存数量、分配数量、拣货/复核数量等执行数据不能带入新单,统一清空
|
||||||
if (!CollectionUtils.isEmpty(stockOutOrderDO.getMaterialDetailList())) {
|
resetNewOrderDetailState(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);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
stockOutOrderService.insert(stockOutOrderDO);
|
stockOutOrderService.insert(stockOutOrderDO);
|
||||||
return outMaterialDetailService.batchInsert(stockOutOrderDO.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList());
|
return outMaterialDetailService.batchInsert(stockOutOrderDO.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user