package cn.iocoder.yudao.module.bpm.dal.mysql.definition; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import org.apache.ibatis.annotations.Mapper; import java.util.Collection; import java.util.List; @Mapper public interface BpmProcessDefinitionInfoMapper extends BaseMapperX { default List selectListByProcessDefinitionIds(Collection processDefinitionIds) { return selectList(BpmProcessDefinitionInfoDO::getProcessDefinitionId, processDefinitionIds); } /** * 查询流程定义的扩展信息 * * 历史原因同一 processDefinitionId 可能存在多条记录(例如重复部署/重复保存模型), * 直接用 selectOne 会抛 TooManyResultsException 导致接口 500, * 这里改为取最新的一条,保证接口可用。 */ default BpmProcessDefinitionInfoDO selectByProcessDefinitionId(String processDefinitionId) { List list = selectList(new LambdaQueryWrapperX() .eq(BpmProcessDefinitionInfoDO::getProcessDefinitionId, processDefinitionId) .orderByDesc(BpmProcessDefinitionInfoDO::getId)); return list.isEmpty() ? null : list.get(0); } default void updateByModelId(String modelId, BpmProcessDefinitionInfoDO updateObj) { update(updateObj, new LambdaQueryWrapperX().eq(BpmProcessDefinitionInfoDO::getModelId, modelId)); } default List selectListByCategory(String category) { return selectList(new LambdaQueryWrapperX() .eq(BpmProcessDefinitionInfoDO::getCategory, category) .eq(BpmProcessDefinitionInfoDO::getVisible, true)); } }