From 6c80c006d2f7794ae38b42a3b6236ec54a0c0e66 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Wed, 6 Aug 2025 15:02:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A6=E4=BE=A7=E6=A0=91=EF=BC=9A=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E4=B8=BB=E9=A2=98=E5=9F=9F=E7=9A=84=E6=A0=91=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sf/controller/CategoryController.java | 14 +++ .../ustb/sf/controller/HealthController.java | 1 - .../iet/ustb/sf/service/CategoryService.java | 3 + .../sf/service/impl/CategoryServiceImpl.java | 88 +++++++++++++++++++ src/main/java/iet/ustb/sf/vo/CategoryVo.java | 71 +++++++++++++++ 5 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 src/main/java/iet/ustb/sf/vo/CategoryVo.java diff --git a/src/main/java/iet/ustb/sf/controller/CategoryController.java b/src/main/java/iet/ustb/sf/controller/CategoryController.java index d7ede6f..4432af1 100644 --- a/src/main/java/iet/ustb/sf/controller/CategoryController.java +++ b/src/main/java/iet/ustb/sf/controller/CategoryController.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import iet.ustb.sf.common.R; import iet.ustb.sf.domain.Category; import iet.ustb.sf.service.CategoryService; +import iet.ustb.sf.vo.CategoryVo; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; @@ -61,10 +62,23 @@ public class CategoryController { return R.ok(); } + /** + * 聚合列表查询 + */ @Operation(summary = "聚合列表查询") @PostMapping("/getTogethList") public R>> getTogethList(@RequestBody JSONObject params) { List> result = categoryService.getTogethList(params); return R.ok(result); } + + /** + * 获取主题域的树结构 + */ + @Operation(summary = "获取主题域的树结构") + @PostMapping("/getAllTopicTree") + public R>> getAllTopicTree(@RequestBody JSONObject params) { + Map> map = categoryService.getAllTopicTree(params); + return R.ok(map); + } } diff --git a/src/main/java/iet/ustb/sf/controller/HealthController.java b/src/main/java/iet/ustb/sf/controller/HealthController.java index 1688184..37bd7e9 100644 --- a/src/main/java/iet/ustb/sf/controller/HealthController.java +++ b/src/main/java/iet/ustb/sf/controller/HealthController.java @@ -18,7 +18,6 @@ public class HealthController { /** * 健康检测 - * @return */ @GetMapping("/") public R healthCheck() { diff --git a/src/main/java/iet/ustb/sf/service/CategoryService.java b/src/main/java/iet/ustb/sf/service/CategoryService.java index 5611d87..7c72a8d 100644 --- a/src/main/java/iet/ustb/sf/service/CategoryService.java +++ b/src/main/java/iet/ustb/sf/service/CategoryService.java @@ -3,6 +3,7 @@ package iet.ustb.sf.service; import com.alibaba.fastjson.JSONObject; import iet.ustb.sf.domain.Category; import com.baomidou.mybatisplus.extension.service.IService; +import iet.ustb.sf.vo.CategoryVo; import java.util.List; import java.util.Map; @@ -21,4 +22,6 @@ public interface CategoryService extends IService { void delCategory(JSONObject params); List> getTogethList(JSONObject params); + + Map> getAllTopicTree(JSONObject params); } diff --git a/src/main/java/iet/ustb/sf/service/impl/CategoryServiceImpl.java b/src/main/java/iet/ustb/sf/service/impl/CategoryServiceImpl.java index 6ece57b..6622754 100644 --- a/src/main/java/iet/ustb/sf/service/impl/CategoryServiceImpl.java +++ b/src/main/java/iet/ustb/sf/service/impl/CategoryServiceImpl.java @@ -3,14 +3,17 @@ package iet.ustb.sf.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import iet.ustb.sf.domain.Analysis; import iet.ustb.sf.domain.Category; import iet.ustb.sf.domain.Target; import iet.ustb.sf.exception.ErrorCode; import iet.ustb.sf.exception.ThrowUtils; +import iet.ustb.sf.mapper.AnalysisMapper; import iet.ustb.sf.mapper.TargetMapper; import iet.ustb.sf.service.CategoryService; import iet.ustb.sf.mapper.CategoryMapper; import iet.ustb.sf.util.CheckUtils; +import iet.ustb.sf.vo.CategoryVo; import jakarta.annotation.Resource; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -33,6 +36,9 @@ public class CategoryServiceImpl extends ServiceImpl @Resource private TargetMapper targetMapper; + @Resource + private AnalysisMapper analysisMapper; + @Override public List showCategory(Category category) { boolean bl = StringUtils.isEmpty(category.getTopic()) && StringUtils.isEmpty(category.getOrganization()); @@ -171,6 +177,88 @@ public class CategoryServiceImpl extends ServiceImpl } return resultList; } + + @Override + public Map> getAllTopicTree(JSONObject params) { + Map> map = new LinkedHashMap<>(); + + List topicList = Arrays.asList("生产", "质量", "能源", "运维", "成本", "测试"); + for (String topic : topicList) { + map.put(topic, new ArrayList<>()); + } + + Map tmpMap = new HashMap<>(); + List categoryList = categoryMapper.selectList(new QueryWrapper<>()); + for (Category category : categoryList) { + CategoryVo categoryVo = CategoryVo.builder() + .topic(category.getTopic()) + .name(category.getNameCn()) + .show("1") + .key("0") + .children(new ArrayList<>()) + .categoryId(category.getId()) + .build(); + map.computeIfAbsent(category.getTopic(), k -> new ArrayList<>()).add(categoryVo); + tmpMap.put("category:" + category.getId(), categoryVo); + } + + String key = params.getString("key"); + if (key == null) { + key = ""; + } + List ids; + if ("chat".equals(key)) { + List results = analysisMapper.selectList(new QueryWrapper<>()); + ids = results == null ? Collections.emptyList() : + results.stream() + .filter(Objects::nonNull) + .map(Analysis::getTargetId) + .filter(Objects::nonNull) + .collect(Collectors.toCollection(ArrayList::new)); + } else { + ids = Collections.emptyList(); + } + + List targetList = targetMapper.selectList(new QueryWrapper<>()); + for (Target target : targetList) { + CategoryVo categoryVo = CategoryVo.builder() + .topic(target.getTopic()) + .targetId(target.getId()) + .name(target.getName()) + .show("0") + .key(String.valueOf(target.getIsKey())) + .hasDog(ids.contains(target.getId())) + .children(new ArrayList<>()) + .cycle(target.getCycle()) + .build(); + if (target.getParent() == null) { + List children; + if (StringUtils.isEmpty(target.getCategoryId())) { + children = map.get(target.getTopic()); + } else { + children = tmpMap.get("category:" + target.getCategoryId()).getChildren(); + } + int index = ids.contains(target.getId()) ? 0 : children.size(); + children.add(index, categoryVo); + } else { + CategoryVo mbgkCategoryVo = tmpMap.getOrDefault("target:" + target.getParent(), new CategoryVo()); + if (mbgkCategoryVo.getChildren() == null) { + mbgkCategoryVo.setChildren(new ArrayList<>()); + } + int index = ids.contains(target.getId()) ? 0 : mbgkCategoryVo.getChildren().size(); + mbgkCategoryVo.getChildren().add(index, categoryVo); + tmpMap.put("target:" + target.getParent(), mbgkCategoryVo); + } + + if (tmpMap.containsKey("target:" + target.getId())) { + CategoryVo mbgkCategoryVo = tmpMap.get("target:" + target.getId()); + categoryVo.setChildren(mbgkCategoryVo.getChildren()); + } + tmpMap.put("target:" + target.getId(), categoryVo); + } + + return map; + } } diff --git a/src/main/java/iet/ustb/sf/vo/CategoryVo.java b/src/main/java/iet/ustb/sf/vo/CategoryVo.java new file mode 100644 index 0000000..906bae5 --- /dev/null +++ b/src/main/java/iet/ustb/sf/vo/CategoryVo.java @@ -0,0 +1,71 @@ +package iet.ustb.sf.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * CategoryVo + * + * @author huangge1199 + * @since 2025/8/6 14:08:07 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CategoryVo { + + /** + * 主题 + */ + private String topic; + + /** + * 组织 + */ + private String organization; + + /** + * 指标ID + */ + private String targetId; + + /** + * 名称 + */ + private String name; + + /** + * 是否分类,1:是、0:不是 + */ + private String show; + + /** + * 是否启用,1:启用、0:不启用 + */ + private String key; + + /** + * 是否加点和排序 + */ + private boolean hasDog; + + /** + * 子树 + */ + private List children; + + /** + * 分类ID + */ + private String categoryId; + + /** + * 指标周期 + */ + private String cycle; +}