shc před 1 rokem
rodič
revize
f3cc6c7234
16 změnil soubory, kde provedl 464 přidání a 5 odebrání
  1. 1 1
      doc/db/29wm_role_sup_warn_rule.sql
  2. 33 0
      doc/db/30wm_role_sup_warn.sql
  3. 29 0
      doc/db/31wm_warn_user_rel.sql
  4. 46 1
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/WmSupervisionDto.java
  5. 39 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmRoleSupervisionWarn.java
  6. 28 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmWarnUserRelation.java
  7. 26 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmSupervisionController.java
  8. 85 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java
  9. 15 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmRoleSupervisionWarnMapper.java
  10. 15 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmWarnUserRelationMapper.java
  11. 9 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmRoleSupervisionWarnRuleService.java
  12. 11 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmRoleSupervisionWarnService.java
  13. 31 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmWarnUserRelationService.java
  14. 22 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmRoleSupervisionWarnRuleServiceImpl.java
  15. 19 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmRoleSupervisionWarnServiceImpl.java
  16. 55 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmWarnUserRelationServiceImpl.java

+ 1 - 1
doc/db/29wm_role_sup_warn_rule.sql

@@ -13,7 +13,7 @@ CREATE TABLE `wm_role_sup_warn_rule`
     `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_val`    INT UNSIGNED                       NOT NULL COMMENT '预警值',
     `warn_tmpl`   VARCHAR(255)                       NOT NULL COMMENT '预警消息模板',
     `create_by`   VARCHAR(32)                        NOT NULL COMMENT '创建人',
     `update_by`   VARCHAR(32)                        NOT NULL COMMENT '更新人',

+ 33 - 0
doc/db/30wm_role_sup_warn.sql

@@ -0,0 +1,33 @@
+USE `cnbg_20240511_001`;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for wm_role_sup_warn
+-- ----------------------------
+DROP TABLE IF EXISTS `wm_role_sup_warn`;
+CREATE TABLE `wm_role_sup_warn`
+(
+    `warn_id`     BIGINT UNSIGNED AUTO_INCREMENT     NOT NULL COMMENT '警告ID',
+    `warn_type`   VARCHAR(16)                        NOT NULL COMMENT '警告类型',
+    `role_id`     BIGINT UNSIGNED                    NOT NULL COMMENT '角色ID',
+    `target_id`   BIGINT UNSIGNED                    NOT NULL COMMENT '预警对象',
+    `warn_msg`    VARCHAR(255)                       NOT NULL COMMENT '预警类型',
+    `create_by`   VARCHAR(32)                        NOT NULL COMMENT '创建人',
+    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
+    PRIMARY KEY `pk_id` (`warn_id`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_general_ci
+  ROW_FORMAT = DYNAMIC COMMENT ='角色预警信息';
+
+
+-- ----------------------------
+-- Records of wm_role_sup_warn
+-- ----------------------------
+BEGIN;
+COMMIT;
+
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 29 - 0
doc/db/31wm_warn_user_rel.sql

@@ -0,0 +1,29 @@
+USE `cnbg_20240511_001`;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for wm_warn_user_rel
+-- ----------------------------
+DROP TABLE IF EXISTS `wm_warn_user_rel`;
+CREATE TABLE `wm_warn_user_rel`
+(
+    `warn_id`     INT UNSIGNED NOT NULL COMMENT '警告ID',
+    `user_id`     INT UNSIGNED NOT NULL COMMENT '试卷ID',
+    `create_time` DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    PRIMARY KEY `pk_id` (`warn_id`, `user_id`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_general_ci
+  ROW_FORMAT = DYNAMIC COMMENT ='警告信息阅读关系';
+
+
+-- ----------------------------
+-- Records of wm_warn_user_rel
+-- ----------------------------
+BEGIN;
+COMMIT;
+
+
+SET FOREIGN_KEY_CHECKS = 1;

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

@@ -86,7 +86,7 @@ public final class WmSupervisionDto {
 
 
     @Data
-    public static class OnWarnRulPage {
+    public static class OnWarnRulePage {
 
         @NotNull(message = "页码必填")
         @Min(value = 1, message = "页码最小为{value}")
@@ -132,4 +132,49 @@ public final class WmSupervisionDto {
         private String template;
 
     }
+
+    @Data
+    public static class OnWarnRulUpdate {
+
+        /**
+         * 规则ID
+         */
+        @NotNull(message = "规则ID必填")
+        private Integer ruleId;
+
+        /**
+         * 预警逻辑
+         */
+        private String warnLogic;
+
+        /**
+         * 预警值
+         */
+        private Integer value;
+
+        /**
+         * 预警消息模板
+         */
+        private String template;
+    }
+
+    @Data
+    public static class OnWarnPage {
+
+        @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 OnWarnCreate {
+
+        @NotNull(message = "警告信息必填")
+        private Integer warnId;
+    }
 }

+ 39 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmRoleSupervisionWarn.java

@@ -0,0 +1,39 @@
+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;
+
+/**
+ * 角色监察提醒
+ *
+ * @author jimmy
+ * @date 13/07/2024 15:21
+ */
+@Data
+@TableName(value = "wm_role_sup_warn")
+public final class WmRoleSupervisionWarn implements Serializable {
+    private static final long serialVersionUID = -3725683717343818407L;
+
+
+    @TableId(type = IdType.AUTO)
+    private Integer warnId;
+
+    private Integer roleId;
+
+    private String warnType;
+
+    private Integer targetId;
+
+    @TableField(value = "warn_msg")
+    private String message;
+
+    private String createBy;
+
+    private LocalDateTime createTime;
+}

+ 28 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmWarnUserRelation.java

@@ -0,0 +1,28 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 警告信息阅读关系
+ *
+ * @author jimmy
+ * @date 13/07/2024 15:24
+ */
+@Data
+@TableName(value = "wm_warn_user_rel")
+public final class WmWarnUserRelation implements Serializable {
+
+    private static final long serialVersionUID = -3413898957644965494L;
+
+
+    private Integer warnId;
+
+    private Integer userId;
+
+    private LocalDateTime createTime;
+
+}

+ 26 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmSupervisionController.java

@@ -3,6 +3,7 @@ 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.WmRoleSupervisionWarn;
 import com.qunzhixinxi.hnqz.admin.manager.WmSupervisionManager;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
@@ -77,7 +78,7 @@ public class WmSupervisionController {
     }
 
     @GetMapping(value = "/supervision/warn/rule/page")
-    public R<Page<Map<String, Object>>> pageWarnRule(@Validated WmSupervisionDto.OnWarnRulPage query) {
+    public R<Page<Map<String, Object>>> pageWarnRule(@Validated WmSupervisionDto.OnWarnRulePage query) {
         return R.ok(supervisionManager.pageWarnRule(query));
     }
 
@@ -87,4 +88,28 @@ public class WmSupervisionController {
         return R.ok(supervisionManager.createWarnRule(resource, SecurityUtils.getUser()));
     }
 
+
+    @SysLog("修改预警规则")
+    @PostMapping(value = "/supervision/warn/rule/update")
+    public R<Boolean> updateWarnRule(@Validated @RequestBody WmSupervisionDto.OnWarnRulUpdate resource) {
+        return R.ok(supervisionManager.updateWarnRule(resource, SecurityUtils.getUser()));
+    }
+
+    @GetMapping(value = "/supervision/warn/page")
+    public R<Page<Map<String, Object>>> pageRoleSupervisionWarn(@Validated WmSupervisionDto.OnWarnPage query) {
+
+        return R.ok(supervisionManager.pageRoleSupervisionWarn(query, SecurityUtils.getUser()));
+
+    }
+
+    @SysLog("警告信息阅读")
+    @PostMapping(value = "/supervision/warn/read")
+    public R<Boolean> readWarn(@Validated @RequestBody WmSupervisionDto.OnWarnCreate resource){
+
+        return R.ok(supervisionManager.readWarn(resource, SecurityUtils.getUser()));
+
+    }
+
+
+
 }

+ 85 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

@@ -9,21 +9,27 @@ 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.SysUserRole;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageSupervision;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmRoleSupervisionWarn;
 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.api.entity.WmWarnUserRelation;
 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.SysUserRoleService;
 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.WmRoleSupervisionWarnService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskSupervisionService;
+import com.qunzhixinxi.hnqz.admin.service.WmWarnUserRelationService;
 import com.qunzhixinxi.hnqz.common.core.exception.BizException;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import lombok.AllArgsConstructor;
@@ -32,6 +38,7 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -70,6 +77,9 @@ public class WmSupervisionManager {
     private final SysEnterpriseAreaService enterpriseAreaService;
     private final WmRoleSupervisionWarnRuleService warnRuleService;
     private final SysRoleService roleService;
+    private final WmWarnUserRelationService warnUserRelationService;
+    private final WmRoleSupervisionWarnService roleSupervisionWarnService;
+    private final SysUserRoleService userRoleService;
 
 
     /**
@@ -335,7 +345,7 @@ public class WmSupervisionManager {
      * @param query 查询条件
      * @return 分页结果
      */
-    public Page<Map<String, Object>> pageWarnRule(WmSupervisionDto.OnWarnRulPage query) {
+    public Page<Map<String, Object>> pageWarnRule(WmSupervisionDto.OnWarnRulePage query) {
 
         Page<WmRoleSupervisionWarnRule> page = warnRuleService.page(new Page<>(query.getCurrent(), query.getSize()));
 
@@ -384,4 +394,78 @@ public class WmSupervisionManager {
 
         return warnRuleService.createWarnRule(resource, user);
     }
+
+    /**
+     * 修改预警规则
+     *
+     * @param resource 规则信息
+     * @param user     创建人
+     * @return 修改结果
+     */
+    public Boolean updateWarnRule(WmSupervisionDto.OnWarnRulUpdate resource, HnqzUser user) {
+        return warnRuleService.updateWarnRule(resource, user);
+    }
+
+    /**
+     * 获取警告分页
+     *
+     * @param query 查询条件
+     * @param user  查询人
+     * @return 操作结果
+     */
+    public Page<Map<String, Object>> pageRoleSupervisionWarn(WmSupervisionDto.OnWarnPage query, HnqzUser user) {
+
+
+        Set<Integer> roleIds = userRoleService.list(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getUserId, user.getId())).stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
+
+        Page<WmRoleSupervisionWarn> page = roleSupervisionWarnService.page(new Page<>(query.getCurrent(), query.getSize()),
+                Wrappers.<WmRoleSupervisionWarn>lambdaQuery()
+                        .in(CollUtil.isNotEmpty(roleIds), WmRoleSupervisionWarn::getRoleId, roleIds)
+                        .orderByDesc(WmRoleSupervisionWarn::getCreateTime)
+        );
+
+        List<WmRoleSupervisionWarn> warns = page.getRecords();
+
+        List<Map<String, Object>> resList;
+        if (CollUtil.isNotEmpty(warns)) {
+            Set<Integer> warnIds = warns.stream().mapToInt(WmRoleSupervisionWarn::getWarnId).boxed().collect(Collectors.toSet());
+            Set<Integer> collect = warnUserRelationService.list(Wrappers.<WmWarnUserRelation>lambdaQuery()
+                    .eq(WmWarnUserRelation::getUserId, user.getId())
+                    .in(WmWarnUserRelation::getWarnId, warnIds)).stream().mapToInt(WmWarnUserRelation::getWarnId).boxed().collect(Collectors.toSet());
+
+            resList = warns.stream().map(warn -> {
+                Map<String, Object> map = BeanUtil.copyProperties(warn, Map.class);
+                map.put("read", collect.contains(warn.getWarnId()));
+                map.put("targetInfo", "xxxxx");
+                return map;
+            }).collect(Collectors.toList());
+
+        } else {
+            resList = Collections.emptyList();
+        }
+
+        Page<Map<String, Object>> res = new Page<>();
+        res.setTotal(page.getTotal());
+        res.setCurrent(page.getCurrent());
+        res.setSize(page.getSize());
+        res.setRecords(resList);
+        return res;
+    }
+
+    /**
+     * 警告信息
+     *
+     * @param resource 警告信息
+     * @param user     阅读人
+     * @return 阅读结果
+     */
+    public Boolean readWarn(WmSupervisionDto.OnWarnCreate resource, HnqzUser user) {
+
+        boolean read = warnUserRelationService.hasRead(resource.getWarnId(), user.getId());
+        if (read) {
+            return true;
+        }
+
+        return warnUserRelationService.read(resource, user);
+    }
 }

+ 15 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmRoleSupervisionWarnMapper.java

@@ -0,0 +1,15 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmRoleSupervisionWarn;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 角色监察警告
+ *
+ * @author jimmy
+ * @date 13/07/2024 15:27
+ */
+@Mapper
+public interface WmRoleSupervisionWarnMapper extends BaseMapper<WmRoleSupervisionWarn> {
+}

+ 15 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmWarnUserRelationMapper.java

@@ -0,0 +1,15 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmWarnUserRelation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 警告阅读关系
+ *
+ * @author jimmy
+ * @date 13/07/2024 15:26
+ */
+@Mapper
+public interface WmWarnUserRelationMapper extends BaseMapper<WmWarnUserRelation> {
+}

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

@@ -29,4 +29,13 @@ public interface WmRoleSupervisionWarnRuleService extends IService<WmRoleSupervi
      * @return 是否存在
      */
     boolean hasType(String warnType, Integer roleId);
+
+    /**
+     * 修改预警规则
+     *
+     * @param resource 规则信息
+     * @param user     创建人
+     * @return 修改结果
+     */
+    Boolean updateWarnRule(WmSupervisionDto.OnWarnRulUpdate resource, HnqzUser user);
 }

+ 11 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmRoleSupervisionWarnService.java

@@ -0,0 +1,11 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmRoleSupervisionWarn;
+
+/**
+ * @author jimmy
+ * @date 13/07/2024 15:34
+ */
+public interface WmRoleSupervisionWarnService extends IService<WmRoleSupervisionWarn> {
+}

+ 31 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmWarnUserRelationService.java

@@ -0,0 +1,31 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmWarnUserRelation;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+
+/**
+ * @author jimmy
+ * @date 13/07/2024 15:31
+ */
+public interface WmWarnUserRelationService extends IService<WmWarnUserRelation> {
+
+    /**
+     * 阅读警告信息
+     *
+     * @param resource 警告信息
+     * @param user     阅读人
+     * @return 阅读结果
+     */
+    Boolean read(WmSupervisionDto.OnWarnCreate resource, HnqzUser user);
+
+    /**
+     * 判断是否已经阅读了
+     *
+     * @param warnId 警告ID
+     * @param id     阅读人ID
+     * @return 阅读结果
+     */
+    boolean hasRead(Integer warnId, Integer id);
+}

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

@@ -1,6 +1,5 @@
 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;
@@ -11,6 +10,7 @@ import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 
@@ -61,6 +61,27 @@ public class WmRoleSupervisionWarnRuleServiceImpl extends ServiceImpl<WmRoleSupe
                 .eq(WmRoleSupervisionWarnRule::getRoleId, roleId)
                 .eq(WmRoleSupervisionWarnRule::getWarnType, warnType)) > 0;
     }
+
+    /**
+     * 修改预警规则
+     *
+     * @param resource 规则信息
+     * @param user     创建人
+     * @return 修改结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean updateWarnRule(WmSupervisionDto.OnWarnRulUpdate resource, HnqzUser user) {
+
+        WmRoleSupervisionWarnRule rule = new WmRoleSupervisionWarnRule();
+        rule.setRuleId(resource.getRuleId());
+        rule.setWarnLogic(resource.getWarnLogic());
+        rule.setValue(resource.getValue());
+        rule.setTemplate(resource.getTemplate());
+        rule.setUpdateBy(user.getUsername());
+        rule.setUpdateTime(LocalDateTime.now());
+        return this.updateById(rule);
+    }
 }
 
 

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

@@ -0,0 +1,19 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmRoleSupervisionWarn;
+import com.qunzhixinxi.hnqz.admin.mapper.WmRoleSupervisionWarnMapper;
+import com.qunzhixinxi.hnqz.admin.service.WmRoleSupervisionWarnService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author jimmy
+ * @date 13/07/2024 15:34
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class WmRoleSupervisionWarnServiceImpl extends ServiceImpl<WmRoleSupervisionWarnMapper, WmRoleSupervisionWarn> implements WmRoleSupervisionWarnService {
+}

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

@@ -0,0 +1,55 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+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.WmWarnUserRelation;
+import com.qunzhixinxi.hnqz.admin.mapper.WmWarnUserRelationMapper;
+import com.qunzhixinxi.hnqz.admin.service.WmWarnUserRelationService;
+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
+ * @date 13/07/2024 15:32
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class WmWarnUserRelationServiceImpl extends ServiceImpl<WmWarnUserRelationMapper, WmWarnUserRelation> implements WmWarnUserRelationService {
+    /**
+     * 阅读警告信息
+     *
+     * @param resource 警告信息
+     * @param user     阅读人
+     * @return 阅读结果
+     */
+    @Override
+    public Boolean read(WmSupervisionDto.OnWarnCreate resource, HnqzUser user) {
+
+        WmWarnUserRelation relation = new WmWarnUserRelation();
+        relation.setWarnId(resource.getWarnId());
+        relation.setUserId(user.getId());
+        relation.setCreateTime(LocalDateTime.now());
+
+        return this.save(relation);
+    }
+
+    /**
+     * 判断是否已经阅读了
+     *
+     * @param warnId 警告ID
+     * @param id     阅读人ID
+     * @return 阅读结果
+     */
+    @Override
+    public boolean hasRead(Integer warnId, Integer id) {
+        return this.count(Wrappers.<WmWarnUserRelation>lambdaQuery().eq(WmWarnUserRelation::getUserId, id).eq(WmWarnUserRelation::getWarnId, warnId)) > 0;
+    }
+}