package com.gxwebsoft.gxmu.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gxwebsoft.gxmu.entity.ReviewFlow; import com.gxwebsoft.gxmu.mapper.ReviewFlowConfigMapper; import com.gxwebsoft.gxmu.service.ReviewFlowService; import com.gxwebsoft.gxmu.service.ReviewFlowConfigService; import com.gxwebsoft.gxmu.entity.ReviewFlowConfig; import com.gxwebsoft.gxmu.param.ReviewFlowConfigParam; import com.gxwebsoft.common.system.entity.Organization; import com.gxwebsoft.common.system.service.OrganizationService; import com.gxwebsoft.common.core.web.PageParam; import com.gxwebsoft.common.core.web.PageResult; import com.gxwebsoft.gxmu.module.service.ModuleRegistryService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; /** * Service实现 * * @author LX * @since 2026-03-18 10:37:18 */ @Service public class ReviewFlowConfigServiceImpl extends ServiceImpl implements ReviewFlowConfigService { @Resource private ReviewFlowService reviewFlowService; @Resource private OrganizationService organizationService; @Resource private ModuleRegistryService moduleRegistryService; @Override public PageResult pageRel(ReviewFlowConfigParam param) { PageParam page = new PageParam<>(param); page.setDefaultOrder("create_time desc"); List list = baseMapper.selectPageRel(page, param); fillReviewFlowConfigNames(list); return new PageResult<>(list, page.getTotal()); } @Override public List listRel(ReviewFlowConfigParam param) { List list = baseMapper.selectListRel(param); fillReviewFlowConfigNames(list); // 排序 PageParam page = new PageParam<>(); page.setDefaultOrder("create_time desc"); return page.sortRecords(list); } @Override public ReviewFlowConfig getByIdRel(Integer id) { ReviewFlowConfigParam param = new ReviewFlowConfigParam(); param.setId(id); return param.getOne(baseMapper.selectListRel(param)); } @Override public ReviewFlowConfig getByModule(String module) { return getOne( new LambdaQueryWrapper() .eq(ReviewFlowConfig::getModule, module) .last("limit 1") ); } private void fillReviewFlowConfigNames(List list) { if (list == null || list.isEmpty()) { return; } Set organizationIds = list.stream() .map(ReviewFlowConfig::getOrganizationId) .filter(organizationId -> organizationId != null) .collect(Collectors.toSet()); Map organizationNameMap = new HashMap<>(); if (!organizationIds.isEmpty()) { organizationNameMap = organizationService.listByIds(organizationIds).stream() .collect(Collectors.toMap(Organization::getOrganizationId, Organization::getOrganizationName, (left, right) -> left)); } Set flowIds = list.stream() .map(ReviewFlowConfig::getFlowId) .filter(flowId -> flowId != null) .collect(Collectors.toSet()); Map flowNameMap = new HashMap<>(); if (!flowIds.isEmpty()) { flowNameMap = reviewFlowService.listByIds(flowIds).stream() .collect(Collectors.toMap(ReviewFlow::getId, ReviewFlow::getTitle, (left, right) -> left)); } // 模块标题以注册表为唯一来源;注册表里查不到的历史 module 回退原串,不让列表报错 Map moduleTitleMap = moduleRegistryService.titleMap(); for (ReviewFlowConfig item : list) { item.setFlowName(flowNameMap.get(item.getFlowId())); item.setModuleName(moduleTitleOf(moduleTitleMap, item.getModule())); item.setOrganizationName(organizationNameMap.get(item.getOrganizationId())); } } private String moduleTitleOf(Map moduleTitleMap, String module) { if (module == null) { return null; } String title = moduleTitleMap.get(module); return title == null || title.isEmpty() ? module : title; } }