fix(oms): 出入库业务单下发执行单时订单来源继承业务单(数据导入/手动创建/系统生成)不再写死"客户预约"; 手动创建业务单来源为空兜底"手动创建"; 出库下发明细过滤del_flag, 修复编辑后软删旧明细参与仓库分组导致多生成执行单且数量叠加

This commit is contained in:
rcx
2026-09-12 10:00:45 +08:00
parent da76816533
commit 892cc30999
2 changed files with 18 additions and 6 deletions
@@ -176,6 +176,10 @@ public class ReservationStockInOrderDomainService {
// //统计总体积
// BigDecimal volumeLimit = stockInOrderDO.getMaterialDetailList().stream().map(ReservationInMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
// stockInOrderDO.setVolumeLimit(volumeLimit);
// 订单来源为空时兜底为手动创建(导入/预约下发等路径已显式设置,不受影响),下发执行单时随业务单继承
if (stockInOrderDO.getReservationOrderSource() == null || stockInOrderDO.getReservationOrderSource().isEmpty()) {
stockInOrderDO.setReservationOrderSource("手动创建");
}
stockInOrderService.insert(stockInOrderDO);
return materialDetailService.batchInsert(stockInOrderDO.getInOrderNumber(), stockInOrderDO.getMaterialDetailList());
}
@@ -614,7 +618,6 @@ public class ReservationStockInOrderDomainService {
reservationStockInOrder.setOrderTypeName("普通入库");
reservationStockInOrder.setBusinessType("pu_tong_ru_ku");
}
reservationStockInOrder.setReservationOrderSource("客户预约");
reservationStockInOrder.setWarehouseId(warehouseId);
if (warehouseId == null || warehouseId == 0L){
reservationStockInOrder.setWarehouseId(byId.getWarehouseId());
@@ -1042,7 +1045,6 @@ public class ReservationStockInOrderDomainService {
reservationStockInOrder.setOrderTypeName("普通入库");
reservationStockInOrder.setBusinessType("pu_tong_ru_ku");
}
reservationStockInOrder.setReservationOrderSource("客户预约");
reservationStockInOrder.setWarehouseId(warehouseId);
// reservationStockInOrder.setOrganizationId(orgId);
// reservationStockInOrder.setOrganizationName(orgName);
@@ -232,6 +232,10 @@ public class ReservationStockOutOrderDomainService {
if (stockOutOrderDO.getCheckTaskDistribution() == null) {
stockOutOrderDO.setCheckTaskDistribution(2);
}
// 订单来源为空时兜底为手动创建(导入/预约下发等路径已显式设置,不受影响),下发执行单时随业务单继承
if (stockOutOrderDO.getReservationOrderSource() == null || stockOutOrderDO.getReservationOrderSource().isEmpty()) {
stockOutOrderDO.setReservationOrderSource("手动创建");
}
stockOutOrderService.insert(stockOutOrderDO);
List<ReservationDeliveryDetailsLink> reservationDeliveryDetailsLinkList = stockOutOrderDO.getReservationDeliveryDetailsLinkList();
if (reservationDeliveryDetailsLinkList != null && !reservationDeliveryDetailsLinkList.isEmpty()){
@@ -666,7 +670,11 @@ public class ReservationStockOutOrderDomainService {
// 自愈: 历史版本反审/取消下发的归档明细可能仍占用unique_id, 先置空释放键位再重新下发
releaseArchivedDetailUniqueId(inOrderNumber);
List<String> executionInOrderNumbers = new ArrayList<>();
List<ReservationOutMaterialDetail> materialDetailList = outMaterialDetailService.list(new QueryWrapper<ReservationOutMaterialDetail>().lambda().eq(ReservationOutMaterialDetail::getOutOrderNumber, inOrderNumber));
// 下发明细必须过滤软删行(del_flag=1):编辑对账软删的旧行仍留表内,
// 不滤会参与按仓库分组/数量汇总,多生成执行单且数量叠加(入库侧同查询已过滤)
List<ReservationOutMaterialDetail> materialDetailList = outMaterialDetailService.list(new QueryWrapper<ReservationOutMaterialDetail>().lambda()
.eq(ReservationOutMaterialDetail::getOutOrderNumber, inOrderNumber)
.eq(ReservationOutMaterialDetail::getDelFlag, 1));
// 按照 warehouseId 分组
Map<Long, List<ReservationOutMaterialDetail>> materialDetailGroupByWarehouse = materialDetailList.stream()
@@ -684,7 +692,6 @@ public class ReservationStockOutOrderDomainService {
reservationStockInOrder.setOrderTypeCode("pu_tong_chu_ku");
reservationStockInOrder.setOrderTypeName("普通出库");
reservationStockInOrder.setBusinessType("pu_tong_chu_ku");
reservationStockInOrder.setReservationOrderSource("客户预约");
reservationStockInOrder.setWarehouseId(warehouseId);
reservationStockInOrder.setWarehouseCode(warehouseCode);
reservationStockInOrder.setWarehouseName(warehouseName);
@@ -956,7 +963,11 @@ public class ReservationStockOutOrderDomainService {
String inOrderNumber = byId.getOutOrderNumber();
// 自愈: 历史版本反审/取消下发的归档明细可能仍占用unique_id, 先置空释放键位再重新下发
releaseArchivedDetailUniqueId(inOrderNumber);
List<ReservationOutMaterialDetail> materialDetailList = outMaterialDetailService.list(new QueryWrapper<ReservationOutMaterialDetail>().lambda().eq(ReservationOutMaterialDetail::getOutOrderNumber, inOrderNumber));
// 下发明细必须过滤软删行(del_flag=1):编辑对账软删的旧行仍留表内,
// 不滤会参与按仓库分组/数量汇总,多生成执行单且数量叠加(入库侧同查询已过滤)
List<ReservationOutMaterialDetail> materialDetailList = outMaterialDetailService.list(new QueryWrapper<ReservationOutMaterialDetail>().lambda()
.eq(ReservationOutMaterialDetail::getOutOrderNumber, inOrderNumber)
.eq(ReservationOutMaterialDetail::getDelFlag, 1));
// 按照 warehouseId 分组
Map<Long, List<ReservationOutMaterialDetail>> materialDetailGroupByWarehouse = materialDetailList.stream()
@@ -1020,7 +1031,6 @@ public class ReservationStockOutOrderDomainService {
reservationStockInOrder.setOrderTypeCode("pu_tong_chu_ku");
reservationStockInOrder.setOrderTypeName("普通出库");
reservationStockInOrder.setBusinessType("pu_tong_chu_ku");
reservationStockInOrder.setReservationOrderSource("客户预约");
reservationStockInOrder.setWarehouseId(warehouseId);
reservationStockInOrder.setOrganizationId(orgId);
reservationStockInOrder.setOrganizationName(orgName);