fix(wms):出入库复制新增时清空数量相关数据
This commit is contained in:
+121
-9
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增入库单(含复制新建)时重置明细的「执行态」字段
|
||||
*
|
||||
* <p>前端「复制」入库单是把原单详情(getInfo)整体提交到新增接口,明细会带出原单的
|
||||
* 主键、收货/上架状态、已分配库区库位/容器、验收/质检结果、费用等执行数据。
|
||||
* 规则:只清空「复制时额外多传」的字段(新增时前端不传的),让新单与直接新增行为一致;
|
||||
* 新增时前端会传的业务属性(料号、名称、规格、申报要素、报关字段、备注、入库数量等)保留不清理。
|
||||
* 明细的组织/创建人/唯一键等由 batchInsert 按当前登录人重新赋值,清理后即恢复初始态。</p>
|
||||
*/
|
||||
private void resetNewOrderDetailState(List<InMaterialDetailDO> 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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user