yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/item/MesMdItemTypeMapper.java
@@ -6,6 +6,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemTypeDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Comparator;
import java.util.List;
/**
@@ -31,8 +32,21 @@
        return selectOne(MesMdItemTypeDO::getParentId, parentId, MesMdItemTypeDO::getCode, code);
    }
    default List<MesMdItemTypeDO> selectListByCode(String code) {
        return selectList(MesMdItemTypeDO::getCode, code);
    }
    default MesMdItemTypeDO selectByCode(String code) {
        return selectOne(MesMdItemTypeDO::getCode, code);
        // 编码在历史数据中并不是唯一约束(如父分类下的「缆线」与顶层「辅材」都曾用过 IT_002),
        // 直接用 selectOne 会在命中多行时抛 TooManyResultsException;这里改为按列表查询。
        List<MesMdItemTypeDO> list = selectListByCode(code);
        if (list.isEmpty()) {
            return null;
        }
        // 命中多行时取 id 最小的一条(最早创建的分类),保证同步链路可用
        return list.stream()
                .min(Comparator.comparing(MesMdItemTypeDO::getId))
                .orElse(null);
    }
    default Long selectCountByParentId(Long parentId) {