11f0f90f7a
- 新增 gxmu/module 包:ModuleRegistry 实体/Mapper/Service,listEnabled 按 sort_number 升序,titleOf 未注册回退 module 原串 - 新增 GET /api/gxmu/module-registry/list(需登录),返回启用模块元数据 - ReviewFlowConfigServiceImpl / ReviewListServiceImpl 的模块名映射改读注册表,查不到回退原串 - DeclareGuardServiceImpl 的模块集合改为注册表驱动,含 enabled=0(停用模块存量仍可撤回/作废) - 启动期一致性校验:table_name≠module 或业务表缺失即启动失败,gxmu.module-registry.strict=false 可关闭 - 单测 13 例:注册表加载与排序、titleOf 回退、启动校验、module 名回退
116 lines
4.6 KiB
Java
116 lines
4.6 KiB
Java
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<ReviewFlowConfigMapper, ReviewFlowConfig> implements ReviewFlowConfigService {
|
|
|
|
@Resource
|
|
private ReviewFlowService reviewFlowService;
|
|
@Resource
|
|
private OrganizationService organizationService;
|
|
@Resource
|
|
private ModuleRegistryService moduleRegistryService;
|
|
|
|
@Override
|
|
public PageResult<ReviewFlowConfig> pageRel(ReviewFlowConfigParam param) {
|
|
PageParam<ReviewFlowConfig, ReviewFlowConfigParam> page = new PageParam<>(param);
|
|
page.setDefaultOrder("create_time desc");
|
|
List<ReviewFlowConfig> list = baseMapper.selectPageRel(page, param);
|
|
fillReviewFlowConfigNames(list);
|
|
return new PageResult<>(list, page.getTotal());
|
|
}
|
|
|
|
@Override
|
|
public List<ReviewFlowConfig> listRel(ReviewFlowConfigParam param) {
|
|
List<ReviewFlowConfig> list = baseMapper.selectListRel(param);
|
|
fillReviewFlowConfigNames(list);
|
|
// 排序
|
|
PageParam<ReviewFlowConfig, ReviewFlowConfigParam> 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<ReviewFlowConfig>()
|
|
.eq(ReviewFlowConfig::getModule, module)
|
|
.last("limit 1")
|
|
);
|
|
}
|
|
|
|
private void fillReviewFlowConfigNames(List<ReviewFlowConfig> list) {
|
|
if (list == null || list.isEmpty()) {
|
|
return;
|
|
}
|
|
Set<Integer> organizationIds = list.stream()
|
|
.map(ReviewFlowConfig::getOrganizationId)
|
|
.filter(organizationId -> organizationId != null)
|
|
.collect(Collectors.toSet());
|
|
Map<Integer, String> organizationNameMap = new HashMap<>();
|
|
if (!organizationIds.isEmpty()) {
|
|
organizationNameMap = organizationService.listByIds(organizationIds).stream()
|
|
.collect(Collectors.toMap(Organization::getOrganizationId, Organization::getOrganizationName, (left, right) -> left));
|
|
}
|
|
Set<Integer> flowIds = list.stream()
|
|
.map(ReviewFlowConfig::getFlowId)
|
|
.filter(flowId -> flowId != null)
|
|
.collect(Collectors.toSet());
|
|
Map<Integer, String> flowNameMap = new HashMap<>();
|
|
if (!flowIds.isEmpty()) {
|
|
flowNameMap = reviewFlowService.listByIds(flowIds).stream()
|
|
.collect(Collectors.toMap(ReviewFlow::getId, ReviewFlow::getTitle, (left, right) -> left));
|
|
}
|
|
// 模块标题以注册表为唯一来源;注册表里查不到的历史 module 回退原串,不让列表报错
|
|
Map<String, String> 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<String, String> moduleTitleMap, String module) {
|
|
if (module == null) {
|
|
return null;
|
|
}
|
|
String title = moduleTitleMap.get(module);
|
|
return title == null || title.isEmpty() ? module : title;
|
|
}
|
|
|
|
}
|