| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | 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) { |