diff --git a/src/main/java/com/biutag/supervision/controller/sensitivePerception/RiskClueController.java b/src/main/java/com/biutag/supervision/controller/sensitivePerception/RiskClueController.java new file mode 100644 index 0000000..f80d0ec --- /dev/null +++ b/src/main/java/com/biutag/supervision/controller/sensitivePerception/RiskClueController.java @@ -0,0 +1,55 @@ +package com.biutag.supervision.controller.sensitivePerception; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.biutag.supervision.pojo.Result; +import com.biutag.supervision.pojo.entity.Model; +import com.biutag.supervision.pojo.entity.RiskModelTaskClue; +import com.biutag.supervision.pojo.param.RiskModelTaskClueQueryParam; +import com.biutag.supervision.service.ModelService; +import com.biutag.supervision.service.RiskModelTaskClueService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @author wxc + * @date 2024/11/14 + */ +@RequiredArgsConstructor +@RequestMapping("risk/clues") +@RestController +public class RiskClueController { + + private final RiskModelTaskClueService riskModelTaskClueService; + + private final ModelService modelService; + + @GetMapping + 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())); + if (models.isEmpty()) { + return Result.success(new Page().setRecords(new ArrayList<>()).setTotal(0)); + } + queryWrapper.in(RiskModelTaskClue::getModelId, models.stream().map(Model::getId).collect(Collectors.toSet())); + } + if (Objects.nonNull(param.getEventTime()) && param.getEventTime().size() == 2) { + queryWrapper.between(RiskModelTaskClue::getEventTime, param.getEventTime().get(0), param.getEventTime().get(1)); + } + queryWrapper.like(StrUtil.isNotBlank(param.getName()), RiskModelTaskClue::getName, param.getName()) + .like(StrUtil.isNotBlank(param.getIdCode()), RiskModelTaskClue::getIdCode, param.getIdCode()) + .like(StrUtil.isNotBlank(param.getThingDesc()), RiskModelTaskClue::getThingDesc, param.getThingDesc()); + queryWrapper.orderByDesc(RiskModelTaskClue::getCreateTime); + return Result.success(riskModelTaskClueService.page(Page.of(param.getCurrent(), param.getSize()), queryWrapper)); + } + +} diff --git a/src/main/java/com/biutag/supervision/mapper/RiskModelTaskClueMapper.java b/src/main/java/com/biutag/supervision/mapper/RiskModelTaskClueMapper.java new file mode 100644 index 0000000..7d91b05 --- /dev/null +++ b/src/main/java/com/biutag/supervision/mapper/RiskModelTaskClueMapper.java @@ -0,0 +1,8 @@ +package com.biutag.supervision.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervision.pojo.entity.RiskModelTaskClue; + +public interface RiskModelTaskClueMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/mapper/RiskScoreRuleMapper.java b/src/main/java/com/biutag/supervision/mapper/RiskScoreRuleMapper.java new file mode 100644 index 0000000..3ddb5c3 --- /dev/null +++ b/src/main/java/com/biutag/supervision/mapper/RiskScoreRuleMapper.java @@ -0,0 +1,8 @@ +package com.biutag.supervision.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervision.pojo.entity.RiskScoreRule; + +public interface RiskScoreRuleMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/entity/RiskModelTaskClue.java b/src/main/java/com/biutag/supervision/pojo/entity/RiskModelTaskClue.java new file mode 100644 index 0000000..3dbdd7c --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/entity/RiskModelTaskClue.java @@ -0,0 +1,85 @@ +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 com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Setter +@Getter +public class RiskModelTaskClue { + + // 主键 + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + // 模型id + @TableField("model_id") + private Integer modelId; + + // 姓名 + @TableField("name") + private String name; + + // 证件号码 + @TableField("id_code") + private String idCode; + + // 预警内容 + @TableField("thing_desc") + private String thingDesc; + + // 状态 默认 0-未分发 1-已分发 2-已处理 + @TableField("distribution_state") + private Boolean distributionState; + + // 任务ID + @TableField("task_id") + private Integer taskId; + + // 问题id + @TableField("negative_id") + private String negativeId; + + // 原始id + @TableField("source_id") + private String sourceId; + + // 案件id,“,”分割 + @TableField("case_ids") + private String caseIds; + + // 风险原因 + @TableField("risk_reason") + private String riskReason; + + // 数据详情 JSON + @TableField("data") + private String data; + + // 分数 + @TableField("score") + private Integer score; + + // 发生时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("event_time") + private LocalDateTime eventTime; + + // 创建时间 + @TableField("create_time") + private LocalDateTime createTime; + + // 修改时间 + @TableField("update_time") + private LocalDateTime updateTime; + + // 逻辑删除键0-未删1已删 + @TableField("del") + private Boolean del; + +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/entity/RiskScoreRule.java b/src/main/java/com/biutag/supervision/pojo/entity/RiskScoreRule.java new file mode 100644 index 0000000..289254f --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/entity/RiskScoreRule.java @@ -0,0 +1,56 @@ +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 com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Setter +@Getter +public class RiskScoreRule { + + // + @TableId(type = IdType.AUTO) + private Integer id; + + // + @TableField("pid") + private Integer pid; + + // 风险因素 + @TableField("risk_name") + private String riskName; + + // 分值 + @TableField("score") + private String score; + + // 规则描述 + @TableField("rule_desc") + private String ruleDesc; + + // 权重 + @TableField("weight") + private Integer weight; + + // 状态 + @TableField("status") + private Boolean status; + + // 更新时间 + @TableField("update_time") + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm") + private LocalDateTime updateTime; + + // 创建时间 + @TableField("create_time") + private LocalDateTime createTime; + + private Integer sortId; + +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/param/RiskModelTaskClueQueryParam.java b/src/main/java/com/biutag/supervision/pojo/param/RiskModelTaskClueQueryParam.java new file mode 100644 index 0000000..4c16034 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/param/RiskModelTaskClueQueryParam.java @@ -0,0 +1,29 @@ +package com.biutag.supervision.pojo.param; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author wxc + * @date 2024/11/14 + */ +@Setter +@Getter +public class RiskModelTaskClueQueryParam extends BasePage { + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private List eventTime = new ArrayList<>(); + + private String name; + + private String idCode; + + private String thingDesc; + + private List riskScoreRuleId = new ArrayList<>(); +} diff --git a/src/main/java/com/biutag/supervision/pojo/vo/MenuTree.java b/src/main/java/com/biutag/supervision/pojo/vo/MenuTree.java index ffb622b..9df8593 100644 --- a/src/main/java/com/biutag/supervision/pojo/vo/MenuTree.java +++ b/src/main/java/com/biutag/supervision/pojo/vo/MenuTree.java @@ -46,7 +46,7 @@ public class MenuTree { // 是否打开新页面 默认为false private Boolean openNewPage; - @JsonFormat(pattern = "YYYY-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; private List children; diff --git a/src/main/java/com/biutag/supervision/service/RiskModelTaskClueService.java b/src/main/java/com/biutag/supervision/service/RiskModelTaskClueService.java new file mode 100644 index 0000000..6922335 --- /dev/null +++ b/src/main/java/com/biutag/supervision/service/RiskModelTaskClueService.java @@ -0,0 +1,11 @@ +package com.biutag.supervision.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervision.pojo.entity.RiskModelTaskClue; +import com.biutag.supervision.mapper.RiskModelTaskClueMapper; +import org.springframework.stereotype.Service; + +@Service +public class RiskModelTaskClueService extends ServiceImpl { + +} diff --git a/src/main/java/com/biutag/supervision/service/RiskScoreRuleService.java b/src/main/java/com/biutag/supervision/service/RiskScoreRuleService.java new file mode 100644 index 0000000..a8fb130 --- /dev/null +++ b/src/main/java/com/biutag/supervision/service/RiskScoreRuleService.java @@ -0,0 +1,50 @@ +package com.biutag.supervision.service; + +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.RiskScoreRule; +import com.biutag.supervision.pojo.vo.RiskScoreRuleTree; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class RiskScoreRuleService extends ServiceImpl { + + public List buildTree() { + 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; + } + + private static RiskScoreRuleTree buildTreeRecursive(RiskScoreRuleTree node, Map> childMap) { + List children = childMap.get(node.getId()); + if (children != null) { + node.getChildren().addAll(children.stream() + .map(childNode -> buildTreeRecursive(childNode, childMap)) + .toList()); + } + return node; + } + +} diff --git a/src/main/resources/static/templates/【工作机制】个人极端暴力风险数字督察灵敏感知体系风险赋分及预警处置机制.doc b/src/main/resources/static/templates/【工作机制】个人极端暴力风险数字督察灵敏感知体系风险赋分及预警处置机制.doc new file mode 100644 index 0000000..851ede3 Binary files /dev/null and b/src/main/resources/static/templates/【工作机制】个人极端暴力风险数字督察灵敏感知体系风险赋分及预警处置机制.doc differ