package cn.iocoder.yudao.module.mes.dal.mysql.md.item;
|
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.type.MesMdItemTypeListReqVO;
|
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;
|
|
/**
|
* MES 物料产品分类 Mapper
|
*
|
* @author 超级管理员
|
*/
|
@Mapper
|
public interface MesMdItemTypeMapper extends BaseMapperX<MesMdItemTypeDO> {
|
|
default List<MesMdItemTypeDO> selectList(MesMdItemTypeListReqVO reqVO) {
|
return selectList(new LambdaQueryWrapperX<MesMdItemTypeDO>()
|
.likeIfPresent(MesMdItemTypeDO::getName, reqVO.getName())
|
.eqIfPresent(MesMdItemTypeDO::getStatus, reqVO.getStatus())
|
.orderByAsc(MesMdItemTypeDO::getSort));
|
}
|
|
default MesMdItemTypeDO selectByParentIdAndName(Long parentId, String name) {
|
return selectOne(MesMdItemTypeDO::getParentId, parentId, MesMdItemTypeDO::getName, name);
|
}
|
|
default MesMdItemTypeDO selectByParentIdAndCode(Long parentId, String code) {
|
return selectOne(MesMdItemTypeDO::getParentId, parentId, MesMdItemTypeDO::getCode, code);
|
}
|
|
default List<MesMdItemTypeDO> selectListByCode(String code) {
|
return selectList(MesMdItemTypeDO::getCode, code);
|
}
|
|
default MesMdItemTypeDO selectByCode(String 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) {
|
return selectCount(MesMdItemTypeDO::getParentId, parentId);
|
}
|
|
}
|