diff --git a/src/main/java/com/biutag/supervision/controller/sensitivePerception/RiskClueController.java b/src/main/java/com/biutag/supervision/controller/sensitivePerception/RiskClueController.java index f80d0ec..da790e8 100644 --- a/src/main/java/com/biutag/supervision/controller/sensitivePerception/RiskClueController.java +++ b/src/main/java/com/biutag/supervision/controller/sensitivePerception/RiskClueController.java @@ -36,7 +36,7 @@ public class RiskClueController { public Result> page(RiskModelTaskClueQueryParam param) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if (Objects.nonNull(param.getRiskScoreRuleId()) && !param.getRiskScoreRuleId().isEmpty()) { - List models = modelService.list(new LambdaQueryWrapper().in(Model::getRiskScoreRuleId, param.getRiskScoreRuleId())); + List models = modelService.list(new LambdaQueryWrapper().in(Model::getId, param.getRiskScoreRuleId())); if (models.isEmpty()) { return Result.success(new Page().setRecords(new ArrayList<>()).setTotal(0)); } diff --git a/src/main/java/com/biutag/supervision/controller/sensitivePerception/RiskScoreRuleController.java b/src/main/java/com/biutag/supervision/controller/sensitivePerception/RiskScoreRuleController.java index be705f2..ee3a5fd 100644 --- a/src/main/java/com/biutag/supervision/controller/sensitivePerception/RiskScoreRuleController.java +++ b/src/main/java/com/biutag/supervision/controller/sensitivePerception/RiskScoreRuleController.java @@ -3,6 +3,7 @@ package com.biutag.supervision.controller.sensitivePerception; import com.biutag.supervision.pojo.Result; import com.biutag.supervision.pojo.entity.RiskScoreRule; import com.biutag.supervision.pojo.vo.RiskScoreRuleTree; +import com.biutag.supervision.pojo.vo.RiskTree; import com.biutag.supervision.service.RiskScoreRuleService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -22,10 +23,15 @@ public class RiskScoreRuleController { private final RiskScoreRuleService riskScoreRuleService; @GetMapping("tree") - public Result> list() { + public Result> list() { return Result.success(riskScoreRuleService.buildTree()); } + @GetMapping("oldTree") + public Result> oldList() { + return Result.success(riskScoreRuleService.oldBuildTree()); + } + @PostMapping public Result add(@RequestBody RiskScoreRule scoreRule) { scoreRule.setCreateTime(LocalDateTime.now()); diff --git a/src/main/java/com/biutag/supervision/mapper/RiskScoreRuleMapper.java b/src/main/java/com/biutag/supervision/mapper/RiskScoreRuleMapper.java index 3ddb5c3..920f935 100644 --- a/src/main/java/com/biutag/supervision/mapper/RiskScoreRuleMapper.java +++ b/src/main/java/com/biutag/supervision/mapper/RiskScoreRuleMapper.java @@ -2,7 +2,17 @@ package com.biutag.supervision.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.biutag.supervision.pojo.entity.RiskScoreRule; +import com.biutag.supervision.pojo.model.RiskClassModel; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface RiskScoreRuleMapper extends BaseMapper { + @Select("select mc.id, mc.pid, mc.risk_name NAME, mc.sort_id, count(mc2.id) size from risk_score_rule mc left join model m on mc.id = m.risk_score_rule_id LEFT JOIN risk_score_rule mc2 on mc.id = mc2.pid where mc.pid = 0 GROUP BY mc.id, mc.risk_name, mc.sort_id order by sort_id") + List selectListRoot(); + + @Select("select mc.id, mc.pid, mc.risk_name NAME, mc.sort_id, count(m.risk_score_rule_id) size from risk_score_rule mc left join model m on mc.id = m.risk_score_rule_id GROUP BY mc.id, mc.risk_name, mc.sort_id order by sort_id") + List selectListAll(); + } \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/entity/RiskClass.java b/src/main/java/com/biutag/supervision/pojo/entity/RiskClass.java new file mode 100644 index 0000000..9760946 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/entity/RiskClass.java @@ -0,0 +1,25 @@ +package com.biutag.supervision.pojo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Getter; +import lombok.Setter; + +@Setter +@Getter +public class RiskClass { + + // + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + // + @TableField("name") + private String name; + + // + @TableField("sort") + private Integer sort; + +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/model/RiskClassModel.java b/src/main/java/com/biutag/supervision/pojo/model/RiskClassModel.java new file mode 100644 index 0000000..2bd7ce8 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/model/RiskClassModel.java @@ -0,0 +1,24 @@ +package com.biutag.supervision.pojo.model; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author wxc + * @date 2024/11/13 + */ +@Setter +@Getter +public class RiskClassModel { + + private Integer id; + + private Integer pid; + + private String name; + + private Integer sort; + + private Integer size; + +} diff --git a/src/main/java/com/biutag/supervision/pojo/vo/RiskTree.java b/src/main/java/com/biutag/supervision/pojo/vo/RiskTree.java new file mode 100644 index 0000000..6c369b3 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/vo/RiskTree.java @@ -0,0 +1,36 @@ +package com.biutag.supervision.pojo.vo; + +import com.biutag.supervision.pojo.entity.Model; +import lombok.Getter; +import lombok.Setter; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author wxc + * @date 2024/10/15 + */ +@Setter +@Getter +public class RiskTree { + + private Integer id; + + private String riskName; + + private String type; + + private Integer size; + + private List children = new ArrayList<>(); + + public static RiskTree of(Model model) { + RiskTree child = new RiskTree(); + child.setId(model.getId()); + child.setRiskName(model.getModelName()); + child.setType("model"); + return child; + } + +} diff --git a/src/main/java/com/biutag/supervision/service/RiskScoreRuleService.java b/src/main/java/com/biutag/supervision/service/RiskScoreRuleService.java index a8fb130..a4939c1 100644 --- a/src/main/java/com/biutag/supervision/service/RiskScoreRuleService.java +++ b/src/main/java/com/biutag/supervision/service/RiskScoreRuleService.java @@ -4,8 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.biutag.supervision.constants.AppConstants; import com.biutag.supervision.mapper.RiskScoreRuleMapper; +import com.biutag.supervision.pojo.entity.Model; import com.biutag.supervision.pojo.entity.RiskScoreRule; +import com.biutag.supervision.pojo.model.RiskClassModel; import com.biutag.supervision.pojo.vo.RiskScoreRuleTree; +import com.biutag.supervision.pojo.vo.RiskTree; +import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -14,10 +18,58 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +@RequiredArgsConstructor @Service public class RiskScoreRuleService extends ServiceImpl { - public List buildTree() { + private final RiskScoreRuleMapper riskScoreRuleMapper; + + private final ModelService modelService; + + public List buildTree() { + List rootsList = riskScoreRuleMapper.selectListRoot(); + List riskClasses = riskScoreRuleMapper.selectListAll(); + List treeList = riskClasses.stream().filter(item -> item.getPid() != 0).toList(); + List models = modelService.list(); + List list = new ArrayList<>(); + list.addAll(rootsList.stream().map(item -> { + RiskTree node = new RiskTree(); + node.setId(item.getId()); + node.setRiskName(item.getName()); + node.setSize(item.getSize()); + node.setType("modelClass"); + List children = models.stream().filter( + model -> { + for (RiskClassModel riskClassModel : treeList) { + return item.getId().equals(riskClassModel.getPid()) && riskClassModel.getId().equals(model.getRiskScoreRuleId()); + } + return false; + } + ).map(RiskTree::of).toList(); + node.setChildren(children); + return node; + }).toList()); + return list; +// List scoreRules = list(new LambdaQueryWrapper().orderByAsc(RiskScoreRule::getSortId)); +// Map> childMap = new HashMap<>(); +// List tree = new ArrayList<>(); +// for (RiskScoreRule rule: scoreRules) { +// RiskScoreRuleTree node = new RiskScoreRuleTree(); +// BeanUtils.copyProperties(rule, node); +// List children = childMap.computeIfAbsent(node.getPid(), k -> new ArrayList<>()); +// children.add(node); +// Integer pid = node.getPid(); +// if (AppConstants.TREE_ROOT_ID.equals(pid)) { +// tree.add(node); +// } +// } +// for (RiskScoreRuleTree node : tree) { +// buildTreeRecursive(node, childMap); +// } +// return tree; + } + + public List oldBuildTree() { List scoreRules = list(new LambdaQueryWrapper().orderByAsc(RiskScoreRule::getSortId)); Map> childMap = new HashMap<>(); List tree = new ArrayList<>(); diff --git a/src/main/resources/static/templates/长沙公安数字督察灵敏感知体系问题赋分及风险预警机制.pdf b/src/main/resources/static/templates/长沙公安数字督察灵敏感知体系问题赋分及风险预警机制.pdf index 34533b8..2d00df3 100644 Binary files a/src/main/resources/static/templates/长沙公安数字督察灵敏感知体系问题赋分及风险预警机制.pdf and b/src/main/resources/static/templates/长沙公安数字督察灵敏感知体系问题赋分及风险预警机制.pdf differ