Browse Source

feat: sup warn rule

shc 1 year ago
parent
commit
c5b6e16933

+ 3 - 2
doc/db/28sys_user_cert.sql

@@ -9,12 +9,13 @@ SET FOREIGN_KEY_CHECKS = 0;
 DROP TABLE IF EXISTS `sys_user_cert`;
 CREATE TABLE `sys_user_cert`
 (
-    `user_id`     BIGINT UNSIGNED AUTO_INCREMENT     NOT NULL COMMENT '用户ID',
+    `cert_id`     BIGINT UNSIGNED AUTO_INCREMENT     NOT NULL COMMENT '证书ID',
+    `user_id`     BIGINT UNSIGNED                    NOT NULL COMMENT '用户ID',
     `cert_type`   VARCHAR(8)                         NOT NULL COMMENT '证书类型',
     `file_id`     BIGINT UNSIGNED                    NOT NULL COMMENT '证书上传ID',
     `create_by`   VARCHAR(32)                        NOT NULL COMMENT '创建人',
     `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
-    PRIMARY KEY `pk_id` (`user_id`)
+    PRIMARY KEY `pk_id` (`cert_id`)
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4
   COLLATE = utf8mb4_general_ci

+ 36 - 0
doc/db/29wm_role_sup_rule.sql

@@ -0,0 +1,36 @@
+USE `cnbg_20240511_001`;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for wm_role_sup_warn_rule
+-- ----------------------------
+DROP TABLE IF EXISTS `wm_role_sup_warn_rule`;
+CREATE TABLE `wm_role_sup_warn_rule`
+(
+    `rule_id`     BIGINT UNSIGNED AUTO_INCREMENT     NOT NULL COMMENT '规则ID',
+    `role_id`     BIGINT UNSIGNED                    NOT NULL COMMENT '角色ID',
+    `warn_type`   VARCHAR(16)                        NOT NULL COMMENT '预警类型',
+    `warn_logic`  VARCHAR(8)                         NOT NULL COMMENT '预警逻辑',
+    `warn_val`    TINYINT(1)                         NOT NULL COMMENT '预警值',
+    `warn_tmpl`   VARCHAR(255)                       NOT NULL COMMENT '预警消息模板',
+    `create_by`   VARCHAR(32)                        NOT NULL COMMENT '创建人',
+    `update_by`   VARCHAR(32)                        NOT NULL COMMENT '更新人',
+    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
+    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
+    PRIMARY KEY `pk_id` (`rule_id`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_general_ci
+  ROW_FORMAT = DYNAMIC COMMENT ='角色预警规则';
+
+
+-- ----------------------------
+-- Records of wm_role_sup_warn_rule
+-- ----------------------------
+BEGIN;
+COMMIT;
+
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 1 - 1
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/SysUserDTO.java

@@ -33,6 +33,6 @@ public final class SysUserDTO {
         private String type;
 
         @NotEmpty(message = "文件ID必填")
-        private List<Integer> fileIds;
+        private List<Long> fileIds;
     }
 }

+ 48 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/WmSupervisionDto.java

@@ -84,4 +84,52 @@ public final class WmSupervisionDto {
 
     }
 
+
+    @Data
+    public static class OnWarnRulPage {
+
+        @NotNull(message = "页码必填")
+        @Min(value = 1, message = "页码最小为{value}")
+        private Integer current;
+
+        @NotNull(message = "分页数量必填")
+        @Min(value = 10, message = "分页数量最小为{value}")
+        @Max(value = 100, message = "分页数量最大为{value}")
+        private Integer size;
+    }
+
+    @Data
+    public static class OnWarnRulCreate {
+
+        /**
+         * 角色ID
+         */
+        @NotNull(message = "角色ID必填")
+        private Integer roleId;
+
+        /**
+         * 预警类型
+         */
+        @NotBlank(message = "预警类型必填")
+        private String warnType;
+
+        /**
+         * 预警逻辑
+         */
+        @NotBlank(message = "预警逻辑必填")
+        private String warnLogic;
+
+        /**
+         * 预警值
+         */
+        @NotNull(message = "预警值必填")
+        private Integer value;
+
+        /**
+         * 预警消息模板
+         */
+        @NotBlank(message = "预警消息模板必填")
+        private String template;
+
+    }
 }

+ 4 - 2
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SysUserCertificate.java

@@ -18,13 +18,15 @@ import java.time.LocalDateTime;
 public final class SysUserCertificate implements Serializable {
     private static final long serialVersionUID = -8452923730701856808L;
 
-    @TableId(type = IdType.AUTO)
+    @TableId(value = "cert_id", type = IdType.AUTO)
+    private Integer certificateId;
+
     private Integer userId;
 
     @TableField(value = "cert_type")
     private String type;
 
-    private Integer fileId;
+    private Long fileId;
 
     private String createBy;
 

+ 77 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmRoleSupervisionWarnRule.java

@@ -0,0 +1,77 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 角色预警规则
+ *
+ * @TableName wm_role_sup_warn_rule
+ */
+@Data
+@TableName(value = "wm_role_sup_warn_rule")
+public class WmRoleSupervisionWarnRule implements Serializable {
+
+    /**
+     * 规则ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer ruleId;
+
+    /**
+     * 角色ID
+     */
+    private Integer roleId;
+
+    /**
+     * 预警类型
+     */
+    private String warnType;
+
+    /**
+     * 预警逻辑
+     */
+    private String warnLogic;
+
+    /**
+     * 预警值
+     */
+    @TableField(value = "warn_val")
+    private Integer value;
+
+    /**
+     * 预警消息模板
+     */
+    @TableField(value = "warn_tmpl")
+    private String template;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+}

+ 12 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmSupervisionController.java

@@ -3,7 +3,6 @@ package com.qunzhixinxi.hnqz.admin.controller;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageSupervision;
-import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.manager.WmSupervisionManager;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
@@ -71,10 +70,21 @@ public class WmSupervisionController {
     }
 
     @GetMapping(value = "/supervision/task/avail/list")
-    public R<List<Map<String, Object>>> listAvailableTask(@RequestParam(value = "pkgId") Integer pkgId){
+    public R<List<Map<String, Object>>> listAvailableTask(@RequestParam(value = "pkgId") Integer pkgId) {
 
         return R.ok(supervisionManager.listAvailableTask(pkgId));
 
     }
 
+    @GetMapping(value = "/supervision/warn/rule/page")
+    public R<Page<Map<String, Object>>> pageWarnRule(@Validated WmSupervisionDto.OnWarnRulPage query) {
+        return R.ok(supervisionManager.pageWarnRule(query));
+    }
+
+    @SysLog("创建预警规则")
+    @PostMapping(value = "/supervision/warn/rule/create")
+    public R<Boolean> createWarnRule(@Validated @RequestBody WmSupervisionDto.OnWarnRulCreate resource) {
+        return R.ok(supervisionManager.createWarnRule(resource, SecurityUtils.getUser()));
+    }
+
 }

+ 2 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysUserManager.java

@@ -62,7 +62,7 @@ public class SysUserManager {
             return Collections.emptyList();
         }
 
-        Set<Integer> fileIds = certificates.stream().mapToInt(SysUserCertificate::getFileId).boxed().collect(Collectors.toSet());
+        Set<Long> fileIds = certificates.stream().mapToLong(SysUserCertificate::getFileId).boxed().collect(Collectors.toSet());
 
         Map<Long, SysFile> idToFileMap = fileService.listByIds(fileIds).stream().collect(Collectors.toMap(SysFile::getId, Function.identity()));
 
@@ -70,7 +70,7 @@ public class SysUserManager {
         return certificates.stream().map(cert -> {
             Map<String, Object> map = new HashMap<>(6);
             map.put("userId", cert.getUserId());
-            Integer fileId = cert.getFileId();
+            Long fileId = cert.getFileId();
             map.put("fileId", fileId);
             map.put("file", idToFileMap.get(fileId));
             map.put("type", cert.getType());

+ 63 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

@@ -1,20 +1,25 @@
 package com.qunzhixinxi.hnqz.admin.manager;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.text.CharSequenceUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysRole;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageSupervision;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmRoleSupervisionWarnRule;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackageStatus;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSupervision;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.SysEnterpriseAreaService;
+import com.qunzhixinxi.hnqz.admin.service.SysRoleService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
 import com.qunzhixinxi.hnqz.admin.service.WmPackageSupervisionService;
+import com.qunzhixinxi.hnqz.admin.service.WmRoleSupervisionWarnRuleService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
@@ -63,6 +68,8 @@ public class WmSupervisionManager {
     private final SysDeptService deptService;
     private final SysUserService userService;
     private final SysEnterpriseAreaService enterpriseAreaService;
+    private final WmRoleSupervisionWarnRuleService warnRuleService;
+    private final SysRoleService roleService;
 
 
     /**
@@ -321,4 +328,60 @@ public class WmSupervisionManager {
 
         return maps;
     }
+
+    /**
+     * 获取警告分页
+     *
+     * @param query 查询条件
+     * @return 分页结果
+     */
+    public Page<Map<String, Object>> pageWarnRule(WmSupervisionDto.OnWarnRulPage query) {
+
+        Page<WmRoleSupervisionWarnRule> page = warnRuleService.page(new Page<>(query.getCurrent(), query.getSize()));
+
+        Page<Map<String, Object>> res = new Page<>();
+        res.setTotal(page.getTotal());
+        res.setCurrent(page.getCurrent());
+        res.setSize(page.getSize());
+
+        List<WmRoleSupervisionWarnRule> records = page.getRecords();
+        if (CollUtil.isNotEmpty(records)) {
+
+            Set<Integer> roleIds = records.stream().mapToInt(WmRoleSupervisionWarnRule::getRoleId).boxed().collect(Collectors.toSet());
+
+            Map<Integer, SysRole> idToRoleMap = roleService.listByIds(roleIds).stream().collect(Collectors.toMap(SysRole::getRoleId, Function.identity()));
+
+            List<Map<String, Object>> collect = records.stream().map(rule -> {
+                Map<String, Object> map = BeanUtil.copyProperties(rule, Map.class);
+                SysRole role = idToRoleMap.get(rule.getRoleId());
+                map.put("role", role);
+                return map;
+            }).collect(Collectors.toList());
+
+            res.setRecords(collect);
+        } else {
+            res.setRecords(Collections.emptyList());
+        }
+
+        return res;
+    }
+
+
+    /**
+     * 创建预警规则
+     *
+     * @param resource 规则信息
+     * @param user     创建人
+     * @return 创建结果
+     */
+    public Boolean createWarnRule(WmSupervisionDto.OnWarnRulCreate resource, HnqzUser user) {
+
+        boolean checked = warnRuleService.hasType(resource.getWarnType(), resource.getRoleId());
+
+        if (checked) {
+            throw new BizException("类型已经存在, 请勿重新添加");
+        }
+
+        return warnRuleService.createWarnRule(resource, user);
+    }
 }

+ 20 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmRoleSupervisionWarnRuleMapper.java

@@ -0,0 +1,20 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.qunzhixinxi.hnqz.admin.api.entity.WmRoleSupervisionWarnRule;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author jimmy
+ * @description 针对表【wm_role_sup_warn_rule(角色预警规则)】的数据库操作Mapper
+ * @createDate 2024-07-13 12:20:00
+ * @Entity generator.domain.WmRoleSupWarnRule
+ */
+@Mapper
+public interface WmRoleSupervisionWarnRuleMapper extends BaseMapper<WmRoleSupervisionWarnRule> {
+
+}
+
+
+
+

+ 32 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmRoleSupervisionWarnRuleService.java

@@ -0,0 +1,32 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmRoleSupervisionWarnRule;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+
+/**
+ * @author jimmy
+ * @description 针对表【wm_role_sup_warn_rule(角色预警规则)】的数据库操作Service
+ * @createDate 2024-07-13 12:20:00
+ */
+public interface WmRoleSupervisionWarnRuleService extends IService<WmRoleSupervisionWarnRule> {
+
+    /**
+     * 创建预警规则
+     *
+     * @param resource 规则信息
+     * @param user     创建人
+     * @return 创建结果
+     */
+    Boolean createWarnRule(WmSupervisionDto.OnWarnRulCreate resource, HnqzUser user);
+
+    /**
+     * 校验类型是否存在
+     *
+     * @param warnType 类型
+     * @param roleId   角色ID
+     * @return 是否存在
+     */
+    boolean hasType(String warnType, Integer roleId);
+}

+ 68 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmRoleSupervisionWarnRuleServiceImpl.java

@@ -0,0 +1,68 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmRoleSupervisionWarnRule;
+import com.qunzhixinxi.hnqz.admin.mapper.WmRoleSupervisionWarnRuleMapper;
+import com.qunzhixinxi.hnqz.admin.service.WmRoleSupervisionWarnRuleService;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author jimmy
+ * @description 针对表【wm_role_sup_warn_rule(角色预警规则)】的数据库操作Service实现
+ * @createDate 2024-07-13 12:20:00
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class WmRoleSupervisionWarnRuleServiceImpl extends ServiceImpl<WmRoleSupervisionWarnRuleMapper, WmRoleSupervisionWarnRule>
+        implements WmRoleSupervisionWarnRuleService {
+
+    /**
+     * 创建预警规则
+     *
+     * @param resource 规则信息
+     * @param user     创建人
+     * @return 创建结果
+     */
+    @Override
+    public Boolean createWarnRule(WmSupervisionDto.OnWarnRulCreate resource, HnqzUser user) {
+
+        WmRoleSupervisionWarnRule rule = new WmRoleSupervisionWarnRule();
+        rule.setRoleId(resource.getRoleId());
+        rule.setWarnType(resource.getWarnType());
+        rule.setWarnLogic(resource.getWarnLogic());
+        rule.setValue(resource.getValue());
+        rule.setTemplate(resource.getTemplate());
+        rule.setCreateBy(user.getUsername());
+        rule.setUpdateBy(user.getUsername());
+        rule.setCreateTime(LocalDateTime.now());
+        rule.setUpdateTime(LocalDateTime.now());
+
+        return this.save(rule);
+    }
+
+    /**
+     * 校验类型是否存在
+     *
+     * @param warnType 类型
+     * @return 是否存在
+     */
+    @Override
+    public boolean hasType(String warnType, Integer roleId) {
+        return this.count(Wrappers.<WmRoleSupervisionWarnRule>lambdaQuery()
+                .eq(WmRoleSupervisionWarnRule::getRoleId, roleId)
+                .eq(WmRoleSupervisionWarnRule::getWarnType, warnType)) > 0;
+    }
+}
+
+
+
+