feat(wms): 添加发货单状态校验防止已发货单据被修改或删除

- 在更新发货单明细前检查关联发货单状态,已发货则拒绝修改
- 在删除发货单明细前验证关联发货单是否已发货,已发货则阻止删除
- 在删除发货单主表前增加状态校验,防止已发货单据被误删
- 使用exists方法优化数据库查询性能,避免全量数据加载
- 添加详细的业务逻辑验证确保数据完整性与一致性
This commit is contained in:
2026-01-28 17:31:15 +08:00
parent 30d6530d9d
commit d41d9e2d46
2 changed files with 49 additions and 1 deletions

View File

@@ -136,6 +136,15 @@ public class WmsDeliveryWaybillServiceImpl implements IWmsDeliveryWaybillService
// 级联删除发货单明细
if (ids != null && !ids.isEmpty()) {
// 检查是否存在已发货的运单状态为1如果存在则抛出异常
LambdaQueryWrapper<WmsDeliveryWaybill> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(WmsDeliveryWaybill::getWaybillId, ids)
.eq(WmsDeliveryWaybill::getStatus, 1);
// 使用 exists 方法替代 selectList提高性能
if (baseMapper.exists(queryWrapper)) {
throw new RuntimeException("已发货的发货单不能删除");
}
// 构建查询条件,查找关联的明细记录
LambdaQueryWrapper<WmsDeliveryWaybillDetail> detailWrapper =
Wrappers.<WmsDeliveryWaybillDetail>lambdaQuery()