Browse Source

事件的派发修改流程
用户查询导入

459242451@qq.com 3 years ago
parent
commit
09b65e8440
23 changed files with 418 additions and 131 deletions
  1. 68 14
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
  2. 30 19
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/NoticeInfoListiner.java
  3. 2 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysGatewayUserTask.java
  4. 11 8
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhdd/IncidentController.java
  5. 2 0
      ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
  6. 1 1
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
  7. 1 1
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
  8. 5 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
  9. 29 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/GatewayUserPage.java
  10. 2 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/Incident.java
  11. 1 1
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/IncidentUser.java
  12. 1 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/ResourceDetail.java
  13. 1 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/BacklogMessageUpdateBo.java
  14. 6 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/IncidentBo.java
  15. 2 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/ResourceDetailBo.java
  16. 2 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/vo/IncidentVo.java
  17. 2 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/vo/ResourceDetailVo.java
  18. 4 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/feign/FeignUserManageService.java
  19. 7 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/feign/fallback/FeignUserManageFallback.java
  20. 1 1
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/DhServiceImpl.java
  21. 19 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentProcessServiceImpl.java
  22. 152 73
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentServiceImpl.java
  23. 69 11
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentTaskServiceImpl.java

+ 68 - 14
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -1,8 +1,11 @@
 package com.ruoyi.web.controller.system;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONObject;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.Security;
 import com.ruoyi.common.constant.UserConstants;
@@ -19,25 +22,21 @@ import com.ruoyi.common.utils.UserUtil;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.domain.vo.SysUserExportVo;
 import com.ruoyi.system.domain.vo.SysUserImportVo;
-import com.ruoyi.system.mapper.SysUserRoleMapper;
-import com.ruoyi.system.service.ISysPostService;
 import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.zhdd.domain.GatewayUserDetail;
+import com.ruoyi.zhdd.domain.GatewayUserPage;
+import com.ruoyi.zhdd.feign.FeignUserManageService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -50,6 +49,7 @@ import java.util.stream.Collectors;
  */
 @RestController
 @RequestMapping("/system/user")
+@Slf4j
 public class SysUserController extends BaseController {
     @Autowired
     private ISysUserService userService;
@@ -58,10 +58,7 @@ public class SysUserController extends BaseController {
     private ISysRoleService roleService;
 
     @Autowired
-    private ISysPostService postService;
-
-    @Autowired
-    private SysUserRoleMapper userRoleMapper;
+    private FeignUserManageService feignUserManageService;
 
     /**
      * 获取用户列表
@@ -240,4 +237,61 @@ public class SysUserController extends BaseController {
         }
     }
 
+    @GetMapping("/searchGatewayUser")
+    @Security
+    public AjaxResult searchGatewayUser(@RequestParam String name) {
+        GatewayUserPage gatewayUserPage = feignUserManageService.userPage(name);
+        log.info("获取网关用户数据:{}", gatewayUserPage);
+        List<GatewayUserPage.UserDetail> users = new ArrayList<>();
+        if (gatewayUserPage != null && gatewayUserPage.getCode() == 0) {
+            int total = gatewayUserPage.getData().getTotal();
+            if (total > 0) {
+                users = gatewayUserPage.getData().getRows();
+                for (GatewayUserPage.UserDetail row : users) {
+                    // 查询本系统是否存在该用户
+                    SysUser sysUser = userService.selectUserById(row.getUserId());
+                    if (sysUser != null) {
+                        row.setLocalFlag("1");
+                    } else {
+                        row.setLocalFlag("0");
+                    }
+                }
+            }
+        }
+        return AjaxResult.success(users);
+    }
+
+    @PostMapping("/syncGatewayUser")
+    @Security
+    public AjaxResult<Void> syncGatewayUser(@RequestBody JSONObject jsonObject) {
+        String userId = jsonObject.getStr("userId");
+        if (StrUtil.isBlank(userId)) {
+            return AjaxResult.error("用户id不能为空!");
+        }
+        // 查询网关用户信息,并保存到系统
+        GatewayUserDetail gatewayUserDetail = feignUserManageService.userDetail(userId);
+        log.info("四维用户详情:{}", gatewayUserDetail);
+        // 如果非空则新增到数据库
+        if (gatewayUserDetail.getCode() == 200 && gatewayUserDetail.getData() != null && StrUtil.isNotBlank(gatewayUserDetail.getData().getUserId())) {
+            GatewayUserDetail.UserDetail data = gatewayUserDetail.getData();
+            SysUser newUser = new SysUser();
+            newUser.setUserId(data.getUserId());
+            newUser.setUserName(data.getUserName());
+            newUser.setNickName(data.getName());
+            newUser.setUserType(Convert.toStr(data.getUserGroupId()));
+            newUser.setPhonenumber(data.getMobile());
+            newUser.setPassword(SecurityUtils.encryptPassword("tocc!suqian"));
+            newUser.setStatus("0");
+            newUser.setDelFlag("0");
+            newUser.setUpdateBy("gateway");
+            newUser.setUpdateTime(new Date());
+            newUser.setCreateBy("gateway");
+            newUser.setCreateTime(new Date());
+            userService.insertUser(newUser);
+        } else {
+            AjaxResult.error("网关未查询到该用户信息!");
+        }
+        return AjaxResult.success();
+    }
+
 }

+ 30 - 19
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/NoticeInfoListiner.java

@@ -5,6 +5,7 @@ import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -112,11 +113,11 @@ public class NoticeInfoListiner {
                 synopsis = "请查看派发应急事件消息";
                 text = getDetail(incidentVo);
                 text = text.replace("#task", "");
-                incidentProcess.setDes("事件派发");
+                incidentProcess.setDes("事件派发主办单位");
                 incidentProcess.setIncidentStatus(2);
                 incidentProcess.setIncidentId(msg.substring(2));
-                messageUser = JSONUtil.toJsonStr(CollUtil.unionDistinct(JSONUtil.toList(incidentVo.getCommanderUser(), MessagePushUser.class), JSONUtil.toList(incidentVo.getMadinDeptUser(), MessagePushUser.class),
-                    StrUtil.isNotBlank(incidentVo.getAssistDeptUser()) ? JSONUtil.toList(incidentVo.getAssistDeptUser(), MessagePushUser.class) : new ArrayList<>()));
+                messageUser = JSONUtil.toJsonStr(CollUtil.unionDistinct(JSONUtil.toList(incidentVo.getMadinTaskUser(), MessagePushUser.class),
+                    JSONUtil.toList(StrUtil.blankToDefault(incidentVo.getMadinDeptUser(), "[]"), MessagePushUser.class)));
             } else if ("B".equals(type)) {
                 // 查询处置方案
                 IncidentTaskVo incidentTaskVo = incidentTaskService.queryById(msg.substring(2));
@@ -316,13 +317,13 @@ public class NoticeInfoListiner {
             IncidentProcess incidentProcess = new IncidentProcess();
             if (StrUtil.isBlank(des)) {
                 if (incidentStatus == 2) {
-                    des = "转为事件";
-                } else if (incidentStatus == 1) {
                     des = "事件续报";
                 } else if (incidentStatus == 4) {
                     des = "事件归档";
                 } else if (incidentStatus == 5) {
                     des = "事件忽略";
+                } else {
+                    des = "未知";
                 }
             }
             incidentProcess.setDes(des);
@@ -335,23 +336,33 @@ public class NoticeInfoListiner {
         });
     }
 
+    /**
+     * 批量新增用户和事件的关系
+     */
     @Bean
-    public void saveIncidentUser() {
-        RedisUtils.subscribe(Constants.INCIDENT_USER, JSONObject.class, msg -> {
-            String incidentId = msg.getStr("incidentId");
-            String userIds = msg.getStr("userId");
-            String source = msg.getStr("source");
-            List<IncidentUser> incidentUsers = new ArrayList<>();
-            for (String userId : userIds.split(",")) {
-                // 保存事件和用户关系
-                IncidentUser incidentUser = new IncidentUser();
-                incidentUser.setIncidentId(incidentId);
-                incidentUser.setUserId(userId);
-                incidentUser.setSource(source);
-                incidentUsers.add(incidentUser);
-            }
+    public void saveBatchIncidentUser() {
+        RedisUtils.subscribe(Constants.INCIDENT_USER_BATCH, JSONArray.class, msg -> {
+            log.info("批量保存事件人员关系 => " + msg);
+            List<IncidentUser> incidentUsers = JSONUtil.toList(msg, IncidentUser.class);
             incidentUserService.saveAll(incidentUsers);
         });
     }
 
+    /**
+     * 删除用户和事件的关系
+     */
+    @Bean
+    public void removeIncidentUser() {
+        RedisUtils.subscribe(Constants.INCIDENT_USER_DELETE, JSONArray.class, msg -> {
+            log.info("移出事件人员关系 => " + msg);
+            List<IncidentUser> incidentUsers = JSONUtil.toList(msg, IncidentUser.class);
+            for (IncidentUser incidentUser : incidentUsers) {
+                incidentUserService.remove(Wrappers.<IncidentUser>lambdaQuery()
+                    .eq(IncidentUser::getUserId, incidentUser.getUserId())
+                    .eq(IncidentUser::getIncidentId, incidentUser.getIncidentId())
+                    .eq(IncidentUser::getSource, incidentUser.getSource()));
+            }
+        });
+    }
+
 }

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysGatewayUserTask.java

@@ -163,7 +163,7 @@ public class SysGatewayUserTask {
                     qdept.setCreateBy(gatewayDept.getCreateUser());
                     qdept.setCreateTime(DateUtil.parseDateTime(gatewayDept.getCreateTime()));
                     qdept.setDelFlag(gatewayDept.getDelFlag());
-                    qdept.setFlag(gatewayDept.getFlag());
+                    qdept.setFlag(Convert.toStr(gatewayDept.getFlag()));
                     deptService.insertDept(qdept);
                 } else {
                     //更新
@@ -191,7 +191,7 @@ public class SysGatewayUserTask {
                     qdept.setCreateBy(gatewayDept.getCreateUser());
                     qdept.setCreateTime(DateUtil.parseDateTime(gatewayDept.getCreateTime()));
                     qdept.setDelFlag(gatewayDept.getDelFlag());
-                    qdept.setFlag(gatewayDept.getFlag());
+                    qdept.setFlag(Convert.toStr(gatewayDept.getFlag()));
                     deptService.updateDept(qdept);
                 }
             }

+ 11 - 8
ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhdd/IncidentController.java

@@ -38,6 +38,7 @@ import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.zhdd.domain.Incident;
 import com.ruoyi.zhdd.domain.IncidentProcess;
 import com.ruoyi.zhdd.domain.IncidentTask;
+import com.ruoyi.zhdd.domain.IncidentUser;
 import com.ruoyi.zhdd.domain.Plan;
 import com.ruoyi.zhdd.domain.PlanFile;
 import com.ruoyi.zhdd.domain.bo.IncidentBo;
@@ -234,7 +235,7 @@ public class IncidentController extends BaseController {
     @PostMapping()
     @Security
     public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody IncidentBo bo) {
-        // 新增初始化为预警状态
+        // 新增初始化为待派发状态
         bo.setStatus(2);
         LoginUser cacheLoginUser = UserUtil.getCacheLoginUser();
         bo.setCreateBy(cacheLoginUser.getUsername());
@@ -242,13 +243,15 @@ public class IncidentController extends BaseController {
         bo.setExpr1(cacheLoginUser.getUser().getPhonenumber());
         String id = iIncidentService.insertByBo(bo);
 
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.set("incidentId", id);
-        jsonObject.set("userId", cacheLoginUser.getUserId());
-        jsonObject.set("source", "1");
-        RedisUtils.publish(Constants.INCIDENT_USER, jsonObject, msg -> {
-            log.info("保存事件人员关系 => " + msg);
-        });
+        // 待新增事件用户关系的array
+        JSONArray saveJsonArray = new JSONArray();
+        IncidentUser save = new IncidentUser();
+        save.setIncidentId(id);
+        save.setUserId(cacheLoginUser.getUserId());
+        save.setSource("1");
+        saveJsonArray.add(save);
+        RedisUtils.publish(Constants.INCIDENT_USER_BATCH, saveJsonArray);
+
         return toAjax(true);
     }
 

+ 2 - 0
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java

@@ -152,6 +152,8 @@ public class Constants {
     public static final String NOTICE_PUSH_SINGLE = "notice_push_single";
     public static final String PROCESS_RECORD = "process_record";
     public static final String INCIDENT_USER = "incident_user";
+    public static final String INCIDENT_USER_BATCH = "incident_user_batch";
+    public static final String INCIDENT_USER_DELETE = "incident_user_delete";
 
     /**
      * 大华tokon缓存

+ 1 - 1
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java

@@ -134,6 +134,6 @@ public class SysDept implements Serializable {
     @TableField(exist = false)
     private Map<String, Object> params = new HashMap<>();
 
-    private Integer flag;
+    private String flag;
 
 }

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java

@@ -320,7 +320,7 @@ public class SysDeptServiceImpl extends ServicePlusImpl<SysDeptMapper, SysDept,
 
     @Override
     public SysDept getOrgDept(SysDept sysDept) {
-        if (0 == sysDept.getFlag()) {
+        if ("0".equals(sysDept.getFlag())) {
             return sysDept;
         }
         if (allDept == null) {

+ 5 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -397,6 +397,11 @@ public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser,
             if (list.size() > 0) {
                 userRoleMapper.insertAll(list);
             }
+        } else {
+            SysUserRole ur = new SysUserRole();
+            ur.setUserId(user.getUserId());
+            ur.setRoleId("2");
+            userRoleMapper.insert(ur);
         }
     }
 

+ 29 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/GatewayUserPage.java

@@ -0,0 +1,29 @@
+package com.ruoyi.zhdd.domain;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class GatewayUserPage {
+    private Integer code;
+    private String message;
+    private UserPage data;
+
+    @Data
+    public static class UserDetail {
+        private String userId;
+        private String name;
+        private String userName;
+        private String mobile;
+        private String orgName;
+        // 本数据库标识。0:不存在,1:存在
+        private String localFlag;
+    }
+
+    @Data
+    public static class UserPage {
+        private List<UserDetail> rows;
+        private int total;
+    }
+}

+ 2 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/Incident.java

@@ -157,6 +157,7 @@ public class Incident implements Serializable {
     private String madinDeptText;
 
     private String madinDeptUser;
+    private String madinTaskUser;
 
     /**
      * 协办单位 多个数据用,分割
@@ -165,6 +166,7 @@ public class Incident implements Serializable {
     private String assistDeptText;
 
     private String assistDeptUser;
+    private String assistTaskUser;
 
     // 忽略说明
     private String ignores;

+ 1 - 1
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/IncidentUser.java

@@ -40,7 +40,7 @@ public class IncidentUser implements Serializable {
      */
     private String userId;
 
-    // 1:接报人员。2-处置人员。3-方案反馈人员
+    // 1:接报人员。2-主办处置人员。3-方案反馈人员。4-协办处置人员。5-总指挥。6-派发通知人员。7-方案通知人员
     private String source;
 
 }

+ 1 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/ResourceDetail.java

@@ -59,6 +59,7 @@ public class ResourceDetail implements Serializable {
      */
     private BigDecimal num;
     private BigDecimal availableNum;
+    private String pic;
 
     /**
      * 单位

+ 1 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/BacklogMessageUpdateBo.java

@@ -14,4 +14,5 @@ public class BacklogMessageUpdateBo {
     // 待办类型(华设固定给“3”)
     private String type = "3";
     private String status = "1";
+    private String url;
 }

+ 6 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/IncidentBo.java

@@ -150,6 +150,9 @@ public class IncidentBo extends BaseEntity {
     @ApiModelProperty(value = "主办单位用户结构")
     private String madinDeptUser;
 
+    @ApiModelProperty(value = "主办用户处置人员")
+    private String madinTaskUser;
+
     /**
      * 协办单位 多个数据用,分割
      */
@@ -159,6 +162,9 @@ public class IncidentBo extends BaseEntity {
     @ApiModelProperty(value = "协办单位用户结构")
     private String assistDeptUser;
 
+    @ApiModelProperty(value = "协办单位处置用户")
+    private String assistTaskUser;
+
     /**
      * 分页大小
      */

+ 2 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/ResourceDetailBo.java

@@ -64,6 +64,8 @@ public class ResourceDetailBo extends BaseEntity {
     @ApiModelProperty(value = "单位")
     private String unit;
 
+    private String pic;
+
     /**
      * $column.columnComment
      */

+ 2 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/vo/IncidentVo.java

@@ -155,6 +155,7 @@ public class IncidentVo {
 
     @ApiModelProperty(value = "主办单位用户结构")
     private String madinDeptUser;
+    private String madinTaskUser;
 
     /**
      * 协办单位 多个数据用,分割
@@ -167,6 +168,7 @@ public class IncidentVo {
 
     @ApiModelProperty(value = "协办单位用户结构")
     private String assistDeptUser;
+    private String assistTaskUser;
 
     @Excel(name = "创建人")
     @ApiModelProperty("创建人")

+ 2 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/vo/ResourceDetailVo.java

@@ -63,6 +63,8 @@ public class ResourceDetailVo {
 
     private BigDecimal availableNum;
 
+    private String pic;
+
     /**
      * 单位
      */

+ 4 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/feign/FeignUserManageService.java

@@ -1,6 +1,7 @@
 package com.ruoyi.zhdd.feign;
 
 import com.ruoyi.zhdd.domain.GatewayUserDetail;
+import com.ruoyi.zhdd.domain.GatewayUserPage;
 import com.ruoyi.zhdd.feign.fallback.FeignUserManageFallback;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -23,4 +24,7 @@ public interface FeignUserManageService {
     @GetMapping("/user/detail")
     GatewayUserDetail userDetail(@RequestParam(value = "userId") String userId);
 
+    @GetMapping("/user/pageList")
+    GatewayUserPage userPage(@RequestParam(value = "name") String name);
+
 }

+ 7 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/feign/fallback/FeignUserManageFallback.java

@@ -1,6 +1,7 @@
 package com.ruoyi.zhdd.feign.fallback;
 
 import com.ruoyi.zhdd.domain.GatewayUserDetail;
+import com.ruoyi.zhdd.domain.GatewayUserPage;
 import com.ruoyi.zhdd.feign.FeignUserManageService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
@@ -21,4 +22,10 @@ public class FeignUserManageFallback implements FeignUserManageService {
         log.error("获取用户详情失败");
         return null;
     }
+
+    @Override
+    public GatewayUserPage userPage(String name) {
+        log.error("获取用户列表失败");
+        return null;
+    }
 }

+ 1 - 1
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/DhServiceImpl.java

@@ -205,7 +205,7 @@ public class DhServiceImpl implements IDhService {
         if (getJson.containsKey("code")) {
             // 说明有错误
             log.error("获取设备树出错:{}", getJson);
-            throw new ServiceException("获取设备树出错.稍后再试");
+            throw new ServiceException("调用大华融合通信平台接口创建会话出错,错误:" + getJson.getStr("message"));
         }
         return getJson.getJSONArray("results");
     }

+ 19 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentProcessServiceImpl.java

@@ -13,12 +13,14 @@ import com.ruoyi.zhdd.domain.IncidentTask;
 import com.ruoyi.zhdd.domain.bo.BacklogMessageUpdateBo;
 import com.ruoyi.zhdd.domain.bo.IncidentProcessBo;
 import com.ruoyi.zhdd.domain.vo.IncidentProcessVo;
+import com.ruoyi.zhdd.domain.vo.IncidentTaskVo;
 import com.ruoyi.zhdd.feign.FeignBacklogInfoService;
 import com.ruoyi.zhdd.mapper.IncidentProcessMapper;
 import com.ruoyi.zhdd.service.IIncidentProcessService;
 import com.ruoyi.zhdd.service.IIncidentTaskService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -41,6 +43,10 @@ public class IncidentProcessServiceImpl extends ServicePlusImpl<IncidentProcessM
     private FeignBacklogInfoService feignBacklogInfoService;
     @Autowired
     private IIncidentTaskService incidentTaskService;
+    @Value("${third.incidentUrl}")
+    private String incidentUrl;
+    @Value("${third.resourceUrl}")
+    private String resourceUrl;
 
     @Override
     public IncidentProcessVo queryById(String id) {
@@ -115,6 +121,19 @@ public class IncidentProcessServiceImpl extends ServicePlusImpl<IncidentProcessM
             List<BacklogMessageUpdateBo> list = new ArrayList<>();
             BacklogMessageUpdateBo bo = new BacklogMessageUpdateBo();
             bo.setUuid(uuid);
+            // 查询事件的id
+            IncidentTaskVo incidentTaskVo = incidentTaskService.queryById(id);
+            if (incidentTaskVo == null) {
+                return false;
+            }
+            String sendFlag = incidentTaskVo.getSendFlag();
+            String url = "";
+            if ("2".equals(sendFlag)) {
+                url = incidentUrl.replace("#incidentId", incidentTaskVo.getIncidentId()).replace("#taskId", "");
+            } else if ("3".equals(sendFlag)) {
+                url = resourceUrl.replace("#taskId", "");
+            }
+            bo.setUrl(url);
             list.add(bo);
             Object o = feignBacklogInfoService.backlogMessageUpdate(list);
             log.info("消息待办办结返回结果:{}", o);

+ 152 - 73
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -23,6 +24,7 @@ import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.zhdd.domain.Incident;
 import com.ruoyi.zhdd.domain.IncidentProcess;
 import com.ruoyi.zhdd.domain.IncidentTask;
+import com.ruoyi.zhdd.domain.IncidentUser;
 import com.ruoyi.zhdd.domain.bo.BacklogMessageUpdateBo;
 import com.ruoyi.zhdd.domain.bo.IncidentBo;
 import com.ruoyi.zhdd.domain.bo.MessagePushUser;
@@ -43,7 +45,6 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -122,7 +123,7 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
         JSONObject jsonObject = new JSONObject();
         jsonObject.set("des", "事件接报");
         jsonObject.set("incidentId", add.getId());
-        jsonObject.set("incidentStatus", 1);
+        jsonObject.set("incidentStatus", 2);
         RedisUtils.publish(Constants.PROCESS_RECORD, jsonObject, msg -> {
             log.info("事件处置详情消息 => " + msg);
         });
@@ -136,7 +137,7 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
         bo.setCreateDept(null);
         // 是否为状态变更
         boolean flag;
-        JSONObject jsonObject = new JSONObject();
+
         // 查询变更前信息
         IncidentVo beforeInfo = getVoById(bo.getId());
         if (beforeInfo != null) {
@@ -145,48 +146,148 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
             throw new ServiceException("事件不存在!");
         }
         Incident update = BeanUtil.toBean(bo, Incident.class);
+        // 待删除事件用户关系的array
+        JSONArray removeJsonArray = new JSONArray();
+        // 待新增事件用户关系的array
+        JSONArray saveJsonArray = new JSONArray();
+        // 待发送消息的jsonObject
+        JSONObject sendJsonObject = new JSONObject();
         if (flag && bo.getStatus() == 3) {
-            // 第一次派发
+            // 第一次派发(只派发给主办人员)
             // 待处置状态
             if (StrUtil.isBlank(bo.getMadinDept())) {
                 throw new ServiceException("请选择主办单位!");
             }
+            if (StrUtil.isBlank(bo.getMadinTaskUser())) {
+                throw new ServiceException("请选择主办单位处置人员!");
+            }
+
+            // 冗余主办
+            SysDept sysDept = sysDeptService.selectDeptById(bo.getMadinDept());
+            if (sysDept != null) {
+                update.setMadinDeptText(sysDept.getDeptName());
+            }
+
+            // 组装人员数据
+            // 主办单位处置人员
+            for (MessagePushUser messagePushUser : JSONUtil.toList(bo.getMadinTaskUser(), MessagePushUser.class)) {
+                IncidentUser save = new IncidentUser();
+                save.setIncidentId(bo.getId());
+                save.setUserId(messagePushUser.getUserId());
+                save.setSource("2");
+                saveJsonArray.add(save);
+            }
+
+            // 主办单位通知人员
+            if (StrUtil.isNotBlank(bo.getMadinDeptUser())) {
+                for (MessagePushUser messagePushUser : JSONUtil.toList(bo.getMadinDeptUser(), MessagePushUser.class)) {
+                    IncidentUser save = new IncidentUser();
+                    save.setIncidentId(bo.getId());
+                    save.setUserId(messagePushUser.getUserId());
+                    save.setSource("6");
+                    saveJsonArray.add(save);
+                }
+            }
+
+        } else if (!flag
+            && bo.getStatus() == 3
+            && (!StrUtil.equals(bo.getAssistDept(), beforeInfo.getAssistDept())
+            || !StrUtil.equals(bo.getCommander(), beforeInfo.getCommander())
+            || !StrUtil.equals(bo.getAssistTaskUser(), beforeInfo.getAssistTaskUser())
+            || !StrUtil.equals(bo.getAssistDeptUser(), beforeInfo.getAssistDeptUser()))) {
+            // 协办部门派发或再次对协办修改
+            // 重新冗余协办部门、总指挥
             if (StrUtil.isBlank(bo.getCommander())) {
                 throw new ServiceException("请选择总指挥!");
             }
-            jsonObject.set("des", "事件派发");
-            // 冗余总指挥、主办、协办部门数据
-            if (StrUtil.isNotBlank(bo.getCommander())) {
-                SysUser commanderText = sysUserService.selectUserById(bo.getCommander());
-                if (commanderText != null) {
-                    update.setCommanderText(commanderText.getNickName());
-                }
+            SysUser commanderText = sysUserService.selectUserById(bo.getCommander());
+            if (commanderText != null) {
+                update.setCommanderText(commanderText.getNickName());
             }
-            if (StrUtil.isNotBlank(bo.getMadinDept())) {
-                SysDept sysDept = sysDeptService.selectDeptById(bo.getMadinDept());
-                if (sysDept != null) {
-                    update.setMadinDeptText(sysDept.getDeptName());
+            if (StrUtil.isBlank(bo.getAssistDept())) {
+                update.setAssistDeptText("");
+            } else {
+                // 增加了协办单位后,协办的处置人员非空
+                if (StrUtil.isBlank(bo.getAssistTaskUser())) {
+                    throw new ServiceException("请选择协办单位处置人员!");
                 }
-            }
-            if (StrUtil.isNotBlank(bo.getAssistDept())) {
-                List<SysDept> sysDepts = sysDeptService.listByIds(Arrays.asList(bo.getAssistDept().split(",")));
-                if (sysDepts != null && sysDepts.size() > 0) {
-                    update.setAssistDeptText(sysDepts.stream().map(SysDept::getDeptName).collect(Collectors.joining(",")));
+                if (!StrUtil.equals(beforeInfo.getAssistDept(), bo.getAssistDept())) {
+                    List<SysDept> sysDepts = sysDeptService.listByIds(Arrays.asList(bo.getAssistDept().split(",")));
+                    if (sysDepts != null && sysDepts.size() > 0) {
+                        update.setAssistDeptText(sysDepts.stream().map(SysDept::getDeptName).collect(Collectors.joining(",")));
+                    }
                 }
             }
+            // 分析变更的派发对象
+            // 变更的总指挥
+            String oldCommander = beforeInfo.getCommander();
+            String newCommander = bo.getCommander();
+            if (StrUtil.isNotBlank(oldCommander) && !StrUtil.equals(oldCommander, newCommander)) {
+                // 删除关系
+                IncidentUser remove = new IncidentUser();
+                remove.setIncidentId(bo.getId());
+                remove.setUserId(oldCommander);
+                remove.setSource("5");
+                removeJsonArray.add(remove);
+            }
+            // 将总指挥加入到关系
+            if (!StrUtil.equals(oldCommander, newCommander)) {
+                IncidentUser save = new IncidentUser();
+                save.setIncidentId(bo.getId());
+                save.setUserId(newCommander);
+                save.setSource("5");
+                saveJsonArray.add(save);
+            }
 
-            //保存派发的人员和事件关系数据
-            JSONObject incidentUser = new JSONObject();
-            // 组装人员数据
-            Set<MessagePushUser> messagePushUsers = CollUtil.unionDistinct(JSONUtil.toList(bo.getCommanderUser(), MessagePushUser.class), JSONUtil.toList(bo.getMadinDeptUser(), MessagePushUser.class),
-                StrUtil.isNotBlank(bo.getAssistDeptUser()) ? JSONUtil.toList(bo.getAssistDeptUser(), MessagePushUser.class) : new ArrayList<>());
-            String userId = messagePushUsers.stream().map(MessagePushUser::getUserId).collect(Collectors.joining(","));
-            incidentUser.set("incidentId", bo.getId());
-            incidentUser.set("userId", userId);
-            incidentUser.set("source", "2");
-            RedisUtils.publish(Constants.INCIDENT_USER, incidentUser, msg -> {
-                log.info("保存事件人员关系 => " + msg);
-            });
+            // 变更的协办处置人员
+            List<MessagePushUser> oldAssistTaskUser = JSONUtil.toList(StrUtil.blankToDefault(beforeInfo.getAssistTaskUser(), "[]"), MessagePushUser.class);
+            List<MessagePushUser> newAssistTaskUser = JSONUtil.toList(StrUtil.blankToDefault(bo.getAssistTaskUser(), "[]"), MessagePushUser.class);
+            List<MessagePushUser> removeAssistTaskUser = CollUtil.subtractToList(oldAssistTaskUser, newAssistTaskUser);
+            List<MessagePushUser> addAssistTaskUser = CollUtil.subtractToList(newAssistTaskUser, oldAssistTaskUser);
+            for (MessagePushUser messagePushUser : removeAssistTaskUser) {
+                // 删除关系
+                IncidentUser remove = new IncidentUser();
+                remove.setIncidentId(bo.getId());
+                remove.setUserId(messagePushUser.getUserId());
+                remove.setSource("4");
+                removeJsonArray.add(remove);
+            }
+            for (MessagePushUser messagePushUser : addAssistTaskUser) {
+                IncidentUser save = new IncidentUser();
+                save.setIncidentId(bo.getId());
+                save.setUserId(messagePushUser.getUserId());
+                save.setSource("4");
+                saveJsonArray.add(save);
+            }
+
+            // 变更的协办通知人员
+            List<MessagePushUser> oldAssistDeptUser = JSONUtil.toList(StrUtil.blankToDefault(beforeInfo.getAssistDeptUser(), "[]"), MessagePushUser.class);
+            List<MessagePushUser> newAssistDeptUser = JSONUtil.toList(StrUtil.blankToDefault(bo.getAssistDeptUser(), "[]"), MessagePushUser.class);
+            List<MessagePushUser> removeAssistDeptUser = CollUtil.subtractToList(oldAssistDeptUser, newAssistDeptUser);
+            List<MessagePushUser> addAssistDeptUser = CollUtil.subtractToList(newAssistDeptUser, oldAssistDeptUser);
+            for (MessagePushUser messagePushUser : removeAssistDeptUser) {
+                // 删除关系
+                IncidentUser remove = new IncidentUser();
+                remove.setIncidentId(bo.getId());
+                remove.setUserId(messagePushUser.getUserId());
+                remove.setSource("6");
+                removeJsonArray.add(remove);
+            }
+            for (MessagePushUser messagePushUser : addAssistDeptUser) {
+                IncidentUser save = new IncidentUser();
+                save.setIncidentId(bo.getId());
+                save.setUserId(messagePushUser.getUserId());
+                save.setSource("6");
+                saveJsonArray.add(save);
+            }
+
+            if (addAssistDeptUser.size() > 0 || addAssistTaskUser.size() > 0) {
+                sendJsonObject.set("des", "再次派发总指挥及协办部门");
+                sendJsonObject.set("incidentStatus", bo.getStatus());
+                sendJsonObject.set("incidentId", bo.getId());
+                sendJsonObject.set("messagePushUsers", CollUtil.unionDistinct(addAssistDeptUser, addAssistTaskUser));
+                RedisUtils.publish(Constants.NOTICE_PUSH_SINGLE, sendJsonObject);
+            }
 
         } else if (flag && bo.getStatus() == 4) {
             // 将待办变成已办
@@ -222,55 +323,27 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
                 }
             }
 
-        } else if (!flag && bo.getStatus() == 3 && !StrUtil.equals(bo.getAssistDept(), beforeInfo.getAssistDept())) {
-            // 第二次对协办部门派发
-            // 重新冗余协办部门
-            if (StrUtil.isBlank(bo.getAssistDept())) {
-                update.setAssistDeptText("");
-            } else {
-                List<SysDept> sysDepts = sysDeptService.listByIds(Arrays.asList(bo.getAssistDept().split(",")));
-                if (sysDepts != null && sysDepts.size() > 0) {
-                    update.setAssistDeptText(sysDepts.stream().map(SysDept::getDeptName).collect(Collectors.joining(",")));
-                }
-            }
-            // 查询新增的部门数据。此处需要单独发送消息给相关的人
-            List<MessagePushUser> oldAssistDeptUser = JSONUtil.toList(beforeInfo.getAssistDeptUser(), MessagePushUser.class);
-            List<MessagePushUser> newAssistDeptUser = JSONUtil.toList(bo.getAssistDeptUser(), MessagePushUser.class);
-            List<MessagePushUser> messagePushUsers = CollUtil.subtractToList(newAssistDeptUser, oldAssistDeptUser);
-
-            jsonObject.set("des", "再次派发协办部门");
-            jsonObject.set("incidentStatus", bo.getStatus());
-            jsonObject.set("incidentId", bo.getId());
-            jsonObject.set("messagePushUsers", messagePushUsers);
-
-            RedisUtils.publish(Constants.NOTICE_PUSH_SINGLE, jsonObject);
-
-            //对第二次修改的人员再保存事件人员关系
-            String userId = messagePushUsers.stream().map(MessagePushUser::getUserId).collect(Collectors.joining(","));
-            JSONObject incidentUser = new JSONObject();
-            incidentUser.set("incidentId", bo.getId());
-            incidentUser.set("userId", userId);
-            incidentUser.set("source", "2");
-            RedisUtils.publish(Constants.INCIDENT_USER, incidentUser, msg -> {
-                log.info("保存事件人员关系 => " + msg);
-            });
         }
         // 更新事件信息
         boolean b = updateById(update);
 
+        if (removeJsonArray.size() > 0) {
+            RedisUtils.publish(Constants.INCIDENT_USER_DELETE, removeJsonArray);
+        }
+        if (saveJsonArray.size() > 0) {
+            RedisUtils.publish(Constants.INCIDENT_USER_BATCH, saveJsonArray);
+        }
+
         if (flag) {
             if (bo.getStatus() == 3) {
-                // 推送到派发的待办消息中
-                RedisUtils.publish(Constants.NOTICE_PUSH, 1 + "A" + update.getId(), msg -> {
-                    log.info("事件派发消息 => " + msg);
-                });
+                // 第一次派发给主办部门时
+                RedisUtils.publish(Constants.NOTICE_PUSH, 1 + "A" + update.getId());
                 return b;
             }
-            jsonObject.set("incidentId", update.getId());
-            jsonObject.set("incidentStatus", update.getStatus());
-            RedisUtils.publish(Constants.PROCESS_RECORD, jsonObject, msg -> {
-                log.info("事件处置详情消息 => " + msg);
-            });
+            // 事件状态的变更,将发送到处置日志中
+            sendJsonObject.set("incidentId", update.getId());
+            sendJsonObject.set("incidentStatus", update.getStatus());
+            RedisUtils.publish(Constants.PROCESS_RECORD, sendJsonObject);
         }
         return b;
     }
@@ -282,4 +355,10 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
         }
         return removeByIds(ids);
     }
+
+    public static void main(String[] args) {
+
+
+    }
+
 }

+ 69 - 11
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentTaskServiceImpl.java

@@ -1,7 +1,9 @@
 package com.ruoyi.zhdd.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -14,6 +16,7 @@ import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.RedisUtils;
 import com.ruoyi.zhdd.domain.IncidentTask;
+import com.ruoyi.zhdd.domain.IncidentUser;
 import com.ruoyi.zhdd.domain.bo.IncidentTaskBo;
 import com.ruoyi.zhdd.domain.bo.IncidentTasksBo;
 import com.ruoyi.zhdd.domain.bo.MessagePushUser;
@@ -67,11 +70,18 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
     @Transactional(rollbackFor = Exception.class)
     public Boolean insertByBo(IncidentTasksBo bo) {
         JSONObject jsonObject = new JSONObject();
+        // 待删除事件用户关系的array
+        JSONArray removeJsonArray = new JSONArray();
+        // 待新增事件用户关系的array
+        JSONArray saveJsonArray = new JSONArray();
         if (StrUtil.isNotBlank(bo.getId())) {
             // 更新操作
             // 先查询是否已经发送过
             IncidentTaskVo incidentTaskVo = this.queryById(bo.getId());
-            if (incidentTaskVo != null && "1".equals(incidentTaskVo.getTaskSend())) {
+            if (incidentTaskVo == null) {
+                throw new ServiceException("方案不存在!");
+            }
+            if ("1".equals(incidentTaskVo.getTaskSend())) {
                 throw new ServiceException("该消息已发送,不能再次编辑!");
             }
             IncidentTask update = BeanUtil.toBean(bo, IncidentTask.class);
@@ -79,6 +89,50 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
             updateById(update);
             jsonObject.set("des", "更新处置方案:" + bo.getTaskName());
             jsonObject.set("taskId", update.getId());
+            // 校验原有的人员和新的人员的区别
+            List<String> oldUserId = JSONUtil.toList(StrUtil.blankToDefault(incidentTaskVo.getExprJson(), "[]"), MessagePushUser.class).stream().map(MessagePushUser::getUserId).collect(Collectors.toList());
+            List<String> newUserId = CollUtil.defaultIfEmpty(bo.getMessagePushUsers(), new ArrayList<>()).stream().map(MessagePushUser::getUserId).collect(Collectors.toList());
+
+            // 1:通知消息。2:处置消息
+            String oldSendFlag = StrUtil.equals(incidentTaskVo.getSendFlag(), "1") ? "1" : "2";
+            String newSendFlag = StrUtil.equals(bo.getSendFlag(), "1") ? "1" : "2";
+
+            List<String> removeUserId = CollUtil.subtractToList(oldUserId, newUserId);
+            List<String> addUserId = CollUtil.subtractToList(newUserId, oldUserId);
+
+            // 如果消息类型的变更,则直接将原来的人员删除,保存新的人员。否则按照比对来增删人员
+            String removeSource;
+            String addSource;
+            if (oldSendFlag.equals(newSendFlag)) {
+                if ("1".equals(newSendFlag)) {
+                    removeSource = "7";
+                    addSource = "7";
+                } else {
+                    removeSource = "3";
+                    addSource = "3";
+                }
+            } else {
+                removeSource = oldSendFlag;
+                removeUserId = oldUserId;
+                addSource = newSendFlag;
+                addUserId = newUserId;
+            }
+            for (String userId : removeUserId) {
+                // 删除关系
+                IncidentUser remove = new IncidentUser();
+                remove.setIncidentId(bo.getId());
+                remove.setUserId(userId);
+                remove.setSource(removeSource);
+                removeJsonArray.add(remove);
+            }
+            for (String userId : addUserId) {
+                IncidentUser save = new IncidentUser();
+                save.setIncidentId(bo.getId());
+                save.setUserId(userId);
+                save.setSource(addSource);
+                saveJsonArray.add(save);
+            }
+
         } else {
             IncidentTask add = BeanUtil.toBean(bo, IncidentTask.class);
             add.setId(null);
@@ -86,22 +140,26 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
             save(add);
             jsonObject.set("des", "新增处置方案:" + bo.getTaskName());
             jsonObject.set("taskId", add.getId());
+
+            List<String> newUserId = CollUtil.defaultIfEmpty(bo.getMessagePushUsers(), new ArrayList<>()).stream().map(MessagePushUser::getUserId).collect(Collectors.toList());
+            for (String userId : newUserId) {
+                IncidentUser save = new IncidentUser();
+                save.setIncidentId(bo.getId());
+                save.setUserId(userId);
+                save.setSource(StrUtil.equals(bo.getSendFlag(), "1") ? "1" : "2");
+                saveJsonArray.add(save);
+            }
         }
         // 发送消息(1-应急处置消息、2-应急处置待办、3-资源管理待办)
         jsonObject.set("incidentId", bo.getIncidentId());
         jsonObject.set("incidentStatus", 3);
         RedisUtils.publish(Constants.PROCESS_RECORD, jsonObject);
 
-        //对处置反馈的人员保存事件人员关系
-        if (bo.getMessagePushUsers() != null && bo.getMessagePushUsers().size() > 0) {
-            String userId = bo.getMessagePushUsers().stream().map(MessagePushUser::getUserId).collect(Collectors.joining(","));
-            JSONObject incidentUser = new JSONObject();
-            incidentUser.set("incidentId", bo.getIncidentId());
-            incidentUser.set("userId", userId);
-            incidentUser.set("source", "3");
-            RedisUtils.publish(Constants.INCIDENT_USER, incidentUser, msg -> {
-                log.info("保存事件人员关系 => " + msg);
-            });
+        if (removeJsonArray.size() > 0) {
+            RedisUtils.publish(Constants.INCIDENT_USER_DELETE, removeJsonArray);
+        }
+        if (saveJsonArray.size() > 0) {
+            RedisUtils.publish(Constants.INCIDENT_USER_BATCH, saveJsonArray);
         }
 
         return true;