diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanServiceImpl.java index 795213be..6903737a 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanServiceImpl.java @@ -137,19 +137,40 @@ public class WmsDeliveryPlanServiceImpl implements IWmsDeliveryPlanService { */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { // 检查是否有关联的收货计划明细(actionType为401的操作记录) for (Long planId : ids) { - // 查询与该计划关联的待操作记录数量 - long count = coilPendingActionMapper.selectCount( + // 查询与该计划关联的待操作记录 + List pendingActions = coilPendingActionMapper.selectList( Wrappers.lambdaQuery() .eq(WmsCoilPendingAction::getActionType, 401) .eq(WmsCoilPendingAction::getWarehouseId, planId) .eq(WmsCoilPendingAction::getDelFlag, 0) ); - if (count > 0) { - throw new ServiceException("计划下存在明细,无法删除"); + // 如果有待操作记录,检查这些记录关联的钢卷是否至少有一个还存在 + if (!pendingActions.isEmpty()) { + boolean hasValidCoil = false; + + for (WmsCoilPendingAction pendingAction : pendingActions) { + // 检查关联的钢卷是否还存在(未被删除) + WmsMaterialCoil coil = coilMapper.selectOne( + Wrappers.lambdaQuery() + .eq(WmsMaterialCoil::getCoilId, pendingAction.getCoilId()) + .eq(WmsMaterialCoil::getDelFlag, 0) + ); + + // 如果存在任意一个未被删除的钢卷,标记为不允许删除 + if (coil != null) { + hasValidCoil = true; + break; // 只要有一个存在就无需继续检查 + } + } + + // 只要有一个关联的钢卷还存在,就不允许删除计划 + if (hasValidCoil) { + throw new ServiceException("计划下存在有效明细,无法删除"); + } } } }