huminmin
8 小时以前 b71e44f6236d9b2fffbd40c74848fcf94897f034
删除单位时会有报错
已修改2个文件
12 ■■■■■ 文件已修改
yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/dal/mysql/unit/MdmUnitMeasureMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/unit/MdmUnitMeasureServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/dal/mysql/unit/MdmUnitMeasureMapper.java
@@ -6,6 +6,7 @@
import cn.iocoder.yudao.module.mdm.controller.admin.unit.vo.MdmUnitMeasurePageReqVO;
import cn.iocoder.yudao.module.mdm.dal.dataobject.unit.MdmUnitMeasureDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Delete;
import java.util.Collection;
import java.util.List;
@@ -47,4 +48,9 @@
        return selectList(MdmUnitMeasureDO::getId, ids);
    }
    /**
     * 物理删除同编码的已软删除记录
     */
    @Delete("DELETE FROM mdm_unit_measure WHERE code = #{code} AND deleted = 1")
    void physicalDeleteByCode(String code);
}
yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/unit/MdmUnitMeasureServiceImpl.java
@@ -11,6 +11,7 @@
import cn.iocoder.yudao.module.mdm.dal.mysql.unit.MdmUnitMeasureMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.util.*;
@@ -65,13 +66,16 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteUnitMeasure(Long id) {
        // 校验存在
        validateUnitMeasureExists(id);
        MdmUnitMeasureDO unitMeasure = validateUnitMeasureExists(id);
        // 校验是否被物料使用(直接使用 Mapper 避免循环依赖)
        if (itemMapper.selectCountByUnitMeasureId(id) > 0) {
            throw exception(MDM_UNIT_MEASURE_EXISTS_ITEM);
        }
        // 先清理同编码的已软删除脏数据,避免当前记录软删时触发唯一键冲突
        unitMeasureMapper.physicalDeleteByCode(unitMeasure.getCode());
        // 删除
        unitMeasureMapper.deleteById(id);
    }