buhuazhen
2026-04-20 91f09b6a09277979ae32126c1d8fc73e0213de65
fix(stock): 修复销售发货出库删除时关联记录校验问题

- 新增对销售发货信息的查询依赖
- 在删除销售-发货出库类型时校验是否存在关联的销售出货记录
- 若存在关联记录则抛出异常,防止误删
- 统一了删除逻辑的异常处理方式
- 优化代码可读性,确保删除操作安全性
已修改1个文件
12 ■■■■■ 文件已修改
src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -1,5 +1,7 @@
package com.ruoyi.stock.service.impl;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -11,6 +13,9 @@
import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
import com.ruoyi.sales.pojo.ShippingInfo;
import com.ruoyi.sales.service.ShippingInfoService;
import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.dto.StockOutRecordDto;
import com.ruoyi.stock.dto.StockUninventoryDto;
@@ -43,6 +48,7 @@
    private StockOutRecordMapper stockOutRecordMapper;
    private StockInventoryMapper stockInventoryMapper;
    private StockUninventoryMapper stockUninventoryMapper;
    private final ShippingInfoService shippingInfoService;
    @Override
    public IPage<StockOutRecordDto> listPage(Page page, StockOutRecordDto stockOutRecordDto) {
@@ -95,6 +101,12 @@
                    stockUninventoryDto.setQualitity(stockOutRecord.getStockOutNum());
                    stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
                }
            }else if ("3".equals(stockOutRecord.getType())){
                // 此为 销售-发货出库 没有关联记录才能成功删除
                // 查询对应是否含有销售出货记录
                ShippingInfo byId = shippingInfoService.getById(stockOutRecord.getRecordId());
                Assert.notNull(byId, StrUtil.format("{}存在销售出货记录,无法删除!!!",stockOutRecord.getOutboundBatches()));
            }
        }
        return stockOutRecordMapper.deleteBatchIds(ids);