fix(wms): 优化发货计划删除验证逻辑
- 修改删除验证条件,从检查待操作记录数量改为检查关联钢卷是否存在 - 添加钢卷存在性验证,确保只有当关联钢卷都已删除时才允许删除计划 - 实现逐个检查关联钢卷的删除状态,提高验证准确性 - 更新异常提示信息,明确指出存在有效明细时无法删除 - 优化查询逻辑,先获取待操作记录列表再逐一验证钢卷状态
This commit is contained in:
@@ -137,19 +137,40 @@ public class WmsDeliveryPlanServiceImpl implements IWmsDeliveryPlanService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
if(isValid){
|
if (isValid) {
|
||||||
// 检查是否有关联的收货计划明细(actionType为401的操作记录)
|
// 检查是否有关联的收货计划明细(actionType为401的操作记录)
|
||||||
for (Long planId : ids) {
|
for (Long planId : ids) {
|
||||||
// 查询与该计划关联的待操作记录数量
|
// 查询与该计划关联的待操作记录
|
||||||
long count = coilPendingActionMapper.selectCount(
|
List<WmsCoilPendingAction> pendingActions = coilPendingActionMapper.selectList(
|
||||||
Wrappers.<WmsCoilPendingAction>lambdaQuery()
|
Wrappers.<WmsCoilPendingAction>lambdaQuery()
|
||||||
.eq(WmsCoilPendingAction::getActionType, 401)
|
.eq(WmsCoilPendingAction::getActionType, 401)
|
||||||
.eq(WmsCoilPendingAction::getWarehouseId, planId)
|
.eq(WmsCoilPendingAction::getWarehouseId, planId)
|
||||||
.eq(WmsCoilPendingAction::getDelFlag, 0)
|
.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.<WmsMaterialCoil>lambdaQuery()
|
||||||
|
.eq(WmsMaterialCoil::getCoilId, pendingAction.getCoilId())
|
||||||
|
.eq(WmsMaterialCoil::getDelFlag, 0)
|
||||||
|
);
|
||||||
|
|
||||||
|
// 如果存在任意一个未被删除的钢卷,标记为不允许删除
|
||||||
|
if (coil != null) {
|
||||||
|
hasValidCoil = true;
|
||||||
|
break; // 只要有一个存在就无需继续检查
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 只要有一个关联的钢卷还存在,就不允许删除计划
|
||||||
|
if (hasValidCoil) {
|
||||||
|
throw new ServiceException("计划下存在有效明细,无法删除");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user