package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiCompany; import cc.mrbird.febs.ai.entity.AiCompanyWorkflow; import cc.mrbird.febs.ai.enums.LlmApplicationAppIdEnum; import cc.mrbird.febs.ai.mapper.AiCompanyMapper; import cc.mrbird.febs.ai.mapper.AiCompanyWorkflowMapper; import cc.mrbird.febs.ai.service.AiCompanyService; import cc.mrbird.febs.ai.util.UUID; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; @Slf4j @Service @RequiredArgsConstructor public class AiCompanyServiceImpl extends ServiceImpl implements AiCompanyService { private final AiCompanyMapper aiCompanyMapper; private final AiCompanyWorkflowMapper aiCompanyWorkflowMapper; @Override public AiCompany getById(String id) { return aiCompanyMapper.selectById( id); } @Override public List getListById(List ids) { LambdaQueryWrapper aiCompanyLambdaQueryWrapper = Wrappers.lambdaQuery(AiCompany.class); aiCompanyLambdaQueryWrapper.in(AiCompany::getId, ids); return aiCompanyMapper.selectList(aiCompanyLambdaQueryWrapper); } @Override public FebsResponse add(AiCompany dto) { Date createTime = new Date(); AiCompany entity = new AiCompany(); entity.setId(UUID.getSimpleUUIDString()); entity.setName(dto.getName()); entity.setCreatedTime(createTime); this.baseMapper.insert( entity); this.addWorkflow(entity.getId(), LlmApplicationAppIdEnum.HIGH_LIGHT.getCode(),null,createTime); this.addWorkflow(entity.getId(), LlmApplicationAppIdEnum.SUGGESTION.getCode(),null,createTime); this.addWorkflow(entity.getId(), LlmApplicationAppIdEnum.REFERENCE_ANSWER.getCode(),null,createTime); this.addWorkflow(entity.getId(), LlmApplicationAppIdEnum.KEY_KNOWLEDGE.getCode(),null,createTime); this.addWorkflow(entity.getId(), LlmApplicationAppIdEnum.REPORT.getCode(),null,createTime); this.addWorkflow(entity.getId(), LlmApplicationAppIdEnum.ADMIN_QUESTION.getCode(),null,createTime); return new FebsResponse().success().message("操作成功"); } @Override public FebsResponse update(AiCompany dto) { String id = dto.getId(); AiCompany entity = this.getById(id); if(ObjectUtil.isNotNull( entity)){ this.update(null, Wrappers.lambdaUpdate(AiCompany.class) .set(AiCompany::getName, dto.getName()) .set(AiCompany::getUpdatedTime, new Date()) .eq(AiCompany::getId, id)); } return new FebsResponse().success().message("操作成功"); } @Override public IPage listInPage(AiCompany dto, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); LambdaQueryWrapper query = Wrappers.lambdaQuery(AiCompany.class); query.orderByDesc(AiCompany::getCreatedTime); Page pages = this.baseMapper.selectPage(page, query); return pages; } @Override public AiCompanyWorkflow getWorkflowById(String id) { return aiCompanyWorkflowMapper.selectById( id); } @Override public AiCompanyWorkflow getWorkflowByTypeAndCompanyId(int type, String companyId) { LambdaQueryWrapper query = Wrappers.lambdaQuery(AiCompanyWorkflow.class); query.eq(AiCompanyWorkflow::getCompanyId, companyId); query.eq(AiCompanyWorkflow::getType, type); query.last("limit 1"); return aiCompanyWorkflowMapper.selectOne(query); } @Override public IPage workflowListInPage(AiCompanyWorkflow dto, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); LambdaQueryWrapper query = Wrappers.lambdaQuery(AiCompanyWorkflow.class); query.orderByDesc(AiCompanyWorkflow::getCreatedTime); Page pages = aiCompanyWorkflowMapper.selectPage(page, query); List records = pages.getRecords(); if (CollUtil.isNotEmpty( records)){ Set collect = records.stream().map(AiCompanyWorkflow::getCompanyId).collect(Collectors.toSet()); Map map = new HashMap<>(); if (CollUtil.isNotEmpty( collect)){ //set转list List collect1 = new ArrayList<>(collect); List listById = this.getListById((collect1)); map = listById.stream().collect(Collectors.toMap(AiCompany::getId, aiCompany -> aiCompany)); } for (AiCompanyWorkflow aiCompanyWorkflow : records){ if (map.containsKey(aiCompanyWorkflow.getCompanyId())){ aiCompanyWorkflow.setCompanyName(map.get(aiCompanyWorkflow.getCompanyId()).getName()); } } } return pages; } @Override public FebsResponse addWorkflow(AiCompanyWorkflow dto) { AiCompanyWorkflow entity = new AiCompanyWorkflow(); entity.setId(UUID.getSimpleUUIDString()); entity.setType(dto.getType()); entity.setCode(dto.getCode()); entity.setCreatedTime(new Date()); aiCompanyWorkflowMapper.insert( entity); return new FebsResponse().success().message("操作成功"); } @Override public FebsResponse updateWorkflow(AiCompanyWorkflow dto) { String id = dto.getId(); AiCompanyWorkflow entity = this.getWorkflowById(id); if(ObjectUtil.isNotNull( entity)){ aiCompanyWorkflowMapper.update(null, Wrappers.lambdaUpdate(AiCompanyWorkflow.class) .set(AiCompanyWorkflow::getType, dto.getType()) .set(AiCompanyWorkflow::getCode, dto.getCode()) .set(AiCompanyWorkflow::getUpdatedTime, new Date()) .eq(AiCompanyWorkflow::getId, id)); } return new FebsResponse().success().message("操作成功"); } @Override public void addWorkflow(String companyId, int type,String code, Date createTime) { AiCompanyWorkflow entity = new AiCompanyWorkflow(); entity.setId(UUID.getSimpleUUIDString()); entity.setCompanyId(companyId); entity.setType(type); entity.setCode(code); entity.setCreatedTime(createTime); aiCompanyWorkflowMapper.insert( entity); } }