feat(delivery): 实现发货计划和发货明细的级联删除功能
- 在WmsDeliveryPlanServiceImpl中添加LambdaUpdateWrapper导入 - 为发货计划删除操作添加级联删除逻辑,遍历计划ID并删除相关发货单及明细 - 新增cascadeDeleteDeliveryWaybillsByPlanId方法处理发货单及其明细的级联删除 - 在WmsDeliveryWaybillServiceImpl中添加WmsDeliveryWaybillDetail和WmsDeliveryWaybillDetailMapper依赖 - 为发货单删除操作添加级联删除发货单明细的功能 - 使用LambdaQueryWrapper构建查询条件删除关联的发货单明细记录
This commit is contained in:
@@ -7,6 +7,7 @@ import com.klp.common.core.domain.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.klp.common.exception.ServiceException;
|
||||
import com.klp.common.utils.StringUtils;
|
||||
@@ -176,6 +177,17 @@ public class WmsDeliveryPlanServiceImpl implements IWmsDeliveryPlanService {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 对于发货计划(planType = 0),需要先级联删除相关的发货单及明细
|
||||
// 遍历所有要删除的计划,对发货计划进行级联删除
|
||||
for (Long planId : ids) {
|
||||
WmsDeliveryPlan plan = baseMapper.selectById(planId);
|
||||
if (plan != null && plan.getPlanType() != null && plan.getPlanType() == 0) { // 发货计划
|
||||
// 删除关联的发货单及明细
|
||||
cascadeDeleteDeliveryWaybillsByPlanId(planId);
|
||||
}
|
||||
}
|
||||
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
@@ -281,4 +293,43 @@ public class WmsDeliveryPlanServiceImpl implements IWmsDeliveryPlanService {
|
||||
return coilMapper.selectVoListWithDynamicJoin(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 级联删除发货单及其明细数据
|
||||
*
|
||||
* @param planId 计划ID
|
||||
*/
|
||||
private void cascadeDeleteDeliveryWaybillsByPlanId(Long planId) {
|
||||
// 先查询该计划下的所有发货单
|
||||
List<WmsDeliveryWaybill> waybills = waybillMapper.selectList(
|
||||
Wrappers.<WmsDeliveryWaybill>lambdaQuery()
|
||||
.eq(WmsDeliveryWaybill::getPlanId, planId)
|
||||
.eq(WmsDeliveryWaybill::getDelFlag, 0)
|
||||
);
|
||||
|
||||
if (!waybills.isEmpty()) {
|
||||
// 获取所有发货单ID
|
||||
List<Long> waybillIds = waybills.stream()
|
||||
.map(WmsDeliveryWaybill::getWaybillId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 先删除发货单明细
|
||||
if (!waybillIds.isEmpty()) {
|
||||
LambdaQueryWrapper<WmsDeliveryWaybillDetail> detailWrapper =
|
||||
Wrappers.<WmsDeliveryWaybillDetail>lambdaQuery()
|
||||
.in(WmsDeliveryWaybillDetail::getWaybillId, waybillIds)
|
||||
.eq(WmsDeliveryWaybillDetail::getDelFlag, 0);
|
||||
|
||||
// 直接删除
|
||||
waybillDetailMapper.delete(detailWrapper);
|
||||
}
|
||||
|
||||
// 再删除发货单主表
|
||||
LambdaQueryWrapper<WmsDeliveryWaybill> waybillWrapper =
|
||||
Wrappers.<WmsDeliveryWaybill>lambdaQuery()
|
||||
.in(WmsDeliveryWaybill::getWaybillId, waybillIds)
|
||||
.eq(WmsDeliveryWaybill::getDelFlag, 0);
|
||||
waybillMapper.delete(waybillWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user