服务指令树
This commit is contained in:
parent
d8c48e0a36
commit
2344374556
|
@ -1,5 +1,6 @@
|
|||
package com.nu.modules.servicedirective.controller;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
|
@ -7,12 +8,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.nu.dto.DirectiveAsyncMQDto;
|
||||
import com.nu.modules.servicedirective.entity.ConfigServiceDirective;
|
||||
import com.nu.modules.servicedirective.entity.TreeNode;
|
||||
import com.nu.modules.servicedirective.service.IConfigServiceDirectiveService;
|
||||
import com.nu.modules.sysconfig.ISysConfigApi;
|
||||
import com.nu.utils.RabbitMQUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.compress.utils.Lists;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
|
@ -52,6 +55,12 @@ public class ConfigServiceDirectiveController extends JeecgController<ConfigServ
|
|||
@Autowired
|
||||
private ISysBaseAPI sysBaseAPI;
|
||||
|
||||
@GetMapping("/tree")
|
||||
public Result<List<TreeNode>> getTree() {
|
||||
List<TreeNode> data = service.getTreeData();
|
||||
return Result.ok(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
|
@ -173,7 +182,7 @@ public class ConfigServiceDirectiveController extends JeecgController<ConfigServ
|
|||
}
|
||||
|
||||
//如果是未授权 则同步给管理平台进行更新
|
||||
if("1".equals(configServiceDirective.getStatus())){
|
||||
if ("1".equals(configServiceDirective.getStatus())) {
|
||||
DirectiveAsyncMQDto directiveAsyncMQDto = new DirectiveAsyncMQDto();
|
||||
BeanUtils.copyProperties(configServiceDirective, directiveAsyncMQDto);
|
||||
rabbitMQUtil.sendToExchange("hldy.directive", "hldy.directive.audit", directiveAsyncMQDto);
|
||||
|
@ -220,11 +229,18 @@ public class ConfigServiceDirectiveController extends JeecgController<ConfigServ
|
|||
@ApiOperation(value = "服务指令-通过id查询", notes = "服务指令-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<ConfigServiceDirective> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
ConfigServiceDirective configServiceDirective = configServiceDirectiveService.getById(id);
|
||||
if (configServiceDirective == null) {
|
||||
ConfigServiceDirective configServiceDirective = new ConfigServiceDirective();
|
||||
configServiceDirective.setId(id);
|
||||
List<ConfigServiceDirective> param = Lists.newArrayList();
|
||||
param.add(configServiceDirective);
|
||||
Page<ConfigServiceDirective> page = new Page<ConfigServiceDirective>(1, 10);
|
||||
page.setRecords(param);
|
||||
List<ConfigServiceDirective> result = configServiceDirectiveService.pageList(configServiceDirective, page);
|
||||
if (result == null || result.size() < 1) {
|
||||
return Result.error("未找到对应数据");
|
||||
} else {
|
||||
return Result.OK(result.get(0));
|
||||
}
|
||||
return Result.OK(configServiceDirective);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
package com.nu.modules.servicedirective.entity;
|
||||
|
||||
import com.nu.modules.directivetag.body.entity.DirectiveBodyTag;
|
||||
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class TreeNode {
|
||||
|
||||
private String key;
|
||||
private String title;
|
||||
private String cycleTypeName;//周期类型
|
||||
private int level;
|
||||
private String instructionId;
|
||||
private String categoryId;
|
||||
private String typeId;
|
||||
private String izEnabled;
|
||||
private Integer sort;
|
||||
private boolean canAdd;
|
||||
private List<TreeNode> children = new ArrayList<>();
|
||||
private List<DirectiveBodyTag> bodyTagList;
|
||||
private List<DirectiveEmotionTag> emotionTagList;
|
||||
|
||||
public TreeNode(String instructionId,String categoryId,String typeId,String key, String title,int level,String cycleTypeName,String izEnabled,Integer sort,boolean canAdd) {
|
||||
this.instructionId = instructionId;
|
||||
this.categoryId = categoryId;
|
||||
this.typeId = typeId;
|
||||
this.key = key;
|
||||
this.title = title;
|
||||
this.level = level;
|
||||
this.cycleTypeName = cycleTypeName;
|
||||
this.izEnabled = izEnabled;
|
||||
this.sort = sort;
|
||||
this.canAdd = canAdd;
|
||||
}
|
||||
|
||||
public void addChild(TreeNode node) { children.add(node); }
|
||||
}
|
|
@ -2,6 +2,11 @@ package com.nu.modules.servicedirective.mapper;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import com.nu.modules.directivetag.body.entity.DirectiveBodyTag;
|
||||
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag;
|
||||
import com.nu.modules.instructiontag.entity.InstructionTag;
|
||||
import com.nu.modules.servicecategory.entity.ConfigServiceCategory;
|
||||
import com.nu.modules.servicetype.entity.ConfigServiceType;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.nu.modules.servicedirective.entity.ConfigServiceDirective;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
@ -63,4 +68,12 @@ public interface ConfigServiceDirectiveMapper extends BaseMapper<ConfigServiceDi
|
|||
int queryCountByEmotionTagIds(@Param("tagIds") List<String> tagIds);
|
||||
|
||||
int removeAll();
|
||||
|
||||
|
||||
List<ConfigServiceDirective> getActiveDirectivesWithTags();
|
||||
List<InstructionTag> getUsedInstructionTags();
|
||||
List<ConfigServiceCategory> getUsedCategories();
|
||||
List<ConfigServiceType> getUsedTypes();
|
||||
List<DirectiveBodyTag> getBodyTagsByDirective(@Param("id") String directiveId);
|
||||
List<DirectiveEmotionTag> getEmotionTagsByDirective(@Param("id") String directiveId);
|
||||
}
|
||||
|
|
|
@ -147,4 +147,62 @@
|
|||
<delete id="removeAll">
|
||||
delete from nu_config_service_directive
|
||||
</delete>
|
||||
|
||||
|
||||
<!-- Result map 映射 ConfigServiceDirective 包含标签列表 -->
|
||||
<resultMap id="DirectiveWithTagsMap" type="com.nu.modules.servicedirective.entity.ConfigServiceDirective">
|
||||
<id column="id" property="id" />
|
||||
<result column="directive_name" property="directiveName" />
|
||||
<result column="category_id" property="categoryId" />
|
||||
<result column="type_id" property="typeId" />
|
||||
<result column="cycle_type" property="cycleType" />
|
||||
<!-- 一级、二级、三级 ID 可根据需要添加 -->
|
||||
<collection property="bodyTagList" ofType="com.nu.modules.directivetag.body.entity.DirectiveBodyTag" select="getBodyTagsByDirective" column="id"/>
|
||||
<collection property="emotionTagList" ofType="com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag" select="getEmotionTagsByDirective" column="id"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 查询未删除的服务指令,并映射标签 -->
|
||||
<select id="getActiveDirectivesWithTags" resultMap="DirectiveWithTagsMap">
|
||||
SELECT id, instruction_tag_id, category_id, type_id, directive_name, sort, iz_enabled,cycle_type
|
||||
FROM nu_config_service_directive
|
||||
WHERE del_flag = '0'
|
||||
ORDER BY sort ASC
|
||||
</select>
|
||||
|
||||
<!-- 查询被使用的一、二、三级分类(包含已删除,只要存在未删指令引用) -->
|
||||
<select id="getUsedInstructionTags" resultType="com.nu.modules.instructiontag.entity.InstructionTag">
|
||||
SELECT id, instruction_name, sort, iz_enabled
|
||||
FROM nu_config_service_instruction_tag
|
||||
WHERE del_flag = '0'
|
||||
ORDER BY sort ASC
|
||||
</select>
|
||||
|
||||
<select id="getUsedCategories" resultType="com.nu.modules.servicecategory.entity.ConfigServiceCategory">
|
||||
SELECT id, category_name, instruction_id, sort, iz_enabled
|
||||
FROM nu_config_service_category
|
||||
WHERE del_flag = '0'
|
||||
ORDER BY sort ASC
|
||||
</select>
|
||||
|
||||
<select id="getUsedTypes" resultType="com.nu.modules.servicetype.entity.ConfigServiceType">
|
||||
SELECT id, type_name, instruction_id, category_id, sort, iz_enabled
|
||||
FROM nu_config_service_type
|
||||
WHERE del_flag = '0'
|
||||
ORDER BY sort ASC
|
||||
</select>
|
||||
|
||||
<!-- 查询标签中间表方法 -->
|
||||
<select id="getBodyTagsByDirective" resultType="com.nu.modules.directivetag.body.entity.DirectiveBodyTag">
|
||||
SELECT bt.id, bt.tag_name, bt.sort, bt.iz_enabled
|
||||
FROM nu_config_body_tag bt
|
||||
INNER JOIN nu_directive_body_tag dbt ON bt.id = dbt.tag_id
|
||||
WHERE dbt.directive_id = #{directiveId}
|
||||
</select>
|
||||
|
||||
<select id="getEmotionTagsByDirective" resultType="com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag">
|
||||
SELECT et.id, et.tag_name, et.sort, et.iz_enabled
|
||||
FROM nu_config_emotion_tag et
|
||||
INNER JOIN nu_directive_emotion_tag det ON et.id = det.tag_id
|
||||
WHERE det.directive_id = #{directiveId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.nu.dto.DirectiveAsyncMQDto;
|
||||
import com.nu.modules.servicedirective.entity.ConfigServiceDirective;
|
||||
import com.nu.modules.servicedirective.entity.TreeNode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -60,4 +61,7 @@ public interface IConfigServiceDirectiveService extends IService<ConfigServiceDi
|
|||
void handleMediaFile(ConfigServiceDirective configServiceDirective);
|
||||
|
||||
void auditPass(DirectiveAsyncMQDto dto);
|
||||
|
||||
List<TreeNode> getTreeData();
|
||||
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.nu.dto.DirectiveAsyncMQDto;
|
||||
import com.nu.modules.directivetag.body.entity.DirectiveBodyTag;
|
||||
import com.nu.modules.directivetag.body.service.IDirectiveBodyTagService;
|
||||
|
@ -15,6 +16,7 @@ import com.nu.modules.instructiontag.service.IInstructionTagService;
|
|||
import com.nu.modules.servicecategory.entity.ConfigServiceCategory;
|
||||
import com.nu.modules.servicecategory.service.IConfigServiceCategoryService;
|
||||
import com.nu.modules.servicedirective.entity.ConfigServiceDirective;
|
||||
import com.nu.modules.servicedirective.entity.TreeNode;
|
||||
import com.nu.modules.servicedirective.mapper.ConfigServiceDirectiveMapper;
|
||||
import com.nu.modules.servicedirective.service.IConfigServiceDirectiveService;
|
||||
import com.nu.modules.servicetype.entity.ConfigServiceType;
|
||||
|
@ -23,6 +25,7 @@ import com.nu.modules.sysconfig.ISysConfigApi;
|
|||
import com.nu.utils.RabbitMQUtil;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.jeecg.common.system.vo.DictModel;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
@ -31,8 +34,7 @@ import org.springframework.stereotype.Service;
|
|||
|
||||
import java.io.File;
|
||||
import java.nio.file.Files;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
@ -397,4 +399,73 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl<ConfigService
|
|||
emotionTagService.update(emotionTag, emotionTagUW);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TreeNode> getTreeData() {
|
||||
//查询周期类型字典项备用
|
||||
List<DictModel> period_type = sysBaseAPI.getDictItems("period_type");
|
||||
Map<String, String> cycleTypeMap = Maps.newHashMap();
|
||||
period_type.stream().forEach(p -> {
|
||||
cycleTypeMap.put(p.getValue(), p.getLabel());
|
||||
});
|
||||
|
||||
// 查询未删除并带标签的所有服务指令
|
||||
List<ConfigServiceDirective> directives = baseMapper.getActiveDirectivesWithTags();
|
||||
|
||||
// 按 typeId 分组
|
||||
Map<String, List<ConfigServiceDirective>> directiveMap = directives.stream()
|
||||
.collect(Collectors.groupingBy(ConfigServiceDirective::getTypeId));
|
||||
|
||||
// 获取被引用的各级分类
|
||||
List<InstructionTag> instructions = baseMapper.getUsedInstructionTags();
|
||||
List<ConfigServiceCategory> categories = baseMapper.getUsedCategories();
|
||||
List<ConfigServiceType> types = baseMapper.getUsedTypes();
|
||||
|
||||
// 分组
|
||||
Map<String, List<ConfigServiceCategory>> catMap = categories.stream()
|
||||
.collect(Collectors.groupingBy(ConfigServiceCategory::getInstructionId));
|
||||
Map<String, List<ConfigServiceType>> typeMap = types.stream()
|
||||
.collect(Collectors.groupingBy(ConfigServiceType::getCategoryId));
|
||||
|
||||
List<TreeNode> tree = new ArrayList<>();
|
||||
boolean canAdd = true;
|
||||
for (InstructionTag inst : instructions) {
|
||||
canAdd = "0".equals(inst.getIzEnabled());
|
||||
TreeNode instNode = new TreeNode(inst.getId(), "", "", inst.getId(), inst.getInstructionName(), 1, "", inst.getIzEnabled(), inst.getSort(), canAdd);
|
||||
List<ConfigServiceCategory> catList = catMap.get(inst.getId());
|
||||
if (catList != null) {
|
||||
catList.sort(Comparator.comparingInt(ConfigServiceCategory::getSort));
|
||||
for (ConfigServiceCategory cat : catList) {
|
||||
if (canAdd) {
|
||||
canAdd = "0".equals(cat.getIzEnabled());
|
||||
}
|
||||
TreeNode catNode = new TreeNode(inst.getId(), cat.getId(), "", cat.getId(), cat.getCategoryName(), 2, "", cat.getIzEnabled(), cat.getSort(), canAdd);
|
||||
List<ConfigServiceType> typeList = typeMap.get(cat.getId());
|
||||
if (typeList != null) {
|
||||
typeList.sort(Comparator.comparingInt(ConfigServiceType::getSort));
|
||||
for (ConfigServiceType tp : typeList) {
|
||||
if (canAdd) {
|
||||
canAdd = "0".equals(tp.getIzEnabled());
|
||||
}
|
||||
TreeNode typeNode = new TreeNode(inst.getId(), cat.getId(), tp.getId(), tp.getId(), tp.getTypeName(), 3, "", tp.getIzEnabled(), tp.getSort(), canAdd);
|
||||
List<ConfigServiceDirective> dirList = directiveMap.get(tp.getId());
|
||||
if (dirList != null) {
|
||||
dirList.sort(Comparator.comparingInt(ConfigServiceDirective::getSort));
|
||||
for (ConfigServiceDirective dir : dirList) {
|
||||
TreeNode dirNode = new TreeNode(inst.getId(), cat.getId(), tp.getId(), dir.getId(), dir.getDirectiveName(), 4, cycleTypeMap.get(dir.getCycleType()), dir.getIzEnabled(), dir.getSort(), canAdd);
|
||||
dirNode.setBodyTagList(dir.getBodyTagList());
|
||||
dirNode.setEmotionTagList(dir.getEmotionTagList());
|
||||
typeNode.addChild(dirNode);
|
||||
}
|
||||
}
|
||||
catNode.addChild(typeNode);
|
||||
}
|
||||
}
|
||||
instNode.addChild(catNode);
|
||||
}
|
||||
}
|
||||
tree.add(instNode);
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -255,7 +255,7 @@ jeecg:
|
|||
app: http://localhost:8051
|
||||
path:
|
||||
#文件上传根目录 设置
|
||||
upload: /cache/nu/opt/upFiles002
|
||||
upload: /cache/nu/opt/upFiles102
|
||||
#webapp文件路径
|
||||
webapp: /cache/nu/opt/webapp002
|
||||
shiro:
|
||||
|
|
|
@ -255,7 +255,7 @@ jeecg:
|
|||
app: http://localhost:8051
|
||||
path:
|
||||
#文件上传根目录 设置
|
||||
upload: /cache/nu/opt/upFiles003
|
||||
upload: /cache/nu/opt/upFiles103
|
||||
#webapp文件路径
|
||||
webapp: /cache/nu/opt/webapp003
|
||||
shiro:
|
||||
|
|
Loading…
Reference in New Issue