From e27ae7327f74d6a4f1401a2bb326fdcdd9926f4c Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 10 Jan 2026 11:48:38 +0800 Subject: [PATCH] =?UTF-8?q?fix(wms):=20=E4=BC=98=E5=8C=96=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=E8=AE=A1=E5=88=92=E5=88=A0=E9=99=A4=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改删除验证条件,从检查待操作记录数量改为检查关联钢卷是否存在 - 添加钢卷存在性验证,确保只有当关联钢卷都已删除时才允许删除计划 - 实现逐个检查关联钢卷的删除状态,提高验证准确性 - 更新异常提示信息,明确指出存在有效明细时无法删除 - 优化查询逻辑,先获取待操作记录列表再逐一验证钢卷状态 --- .../impl/WmsDeliveryPlanServiceImpl.java | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) 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("计划下存在有效明细,无法删除"); + } } } }