瀏覽代碼

待办消息处理

459242451@qq.com 3 年之前
父節點
當前提交
793d96cc0a
共有 21 個文件被更改,包括 469 次插入102 次删除
  1. 23 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/NoticeInfoListiner.java
  2. 15 16
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhdd/IncidentController.java
  3. 6 16
      ruoyi-admin/src/main/resources/banner.txt
  4. 1 0
      ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
  5. 0 2
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/IncidentProcess.java
  6. 3 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/IncidentTask.java
  7. 46 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/IncidentUser.java
  8. 0 3
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/IncidentProcessBo.java
  9. 1 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/IncidentTasksBo.java
  10. 53 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/IncidentUserBo.java
  11. 0 2
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/vo/IncidentProcessVo.java
  12. 3 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/vo/IncidentTaskVo.java
  13. 28 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/vo/IncidentUserVo.java
  14. 16 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/mapper/IncidentUserMapper.java
  15. 42 38
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/IIncidentService.java
  16. 56 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/IIncidentUserService.java
  17. 26 13
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentProcessServiceImpl.java
  18. 37 11
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentServiceImpl.java
  19. 14 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentTaskServiceImpl.java
  20. 85 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentUserServiceImpl.java
  21. 14 0
      ruoyi-zhdd/src/main/resources/mapper/zhdd/IncidentUserMapper.xml

+ 23 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/NoticeInfoListiner.java

@@ -11,6 +11,7 @@ import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.RedisUtils;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.zhdd.domain.IncidentProcess;
+import com.ruoyi.zhdd.domain.IncidentUser;
 import com.ruoyi.zhdd.domain.SmsOutbox;
 import com.ruoyi.zhdd.domain.bo.BacklogMessagePushBo;
 import com.ruoyi.zhdd.domain.bo.MessagePushBo;
@@ -22,6 +23,7 @@ import com.ruoyi.zhdd.feign.FeignNoticeInfoService;
 import com.ruoyi.zhdd.service.IIncidentProcessService;
 import com.ruoyi.zhdd.service.IIncidentService;
 import com.ruoyi.zhdd.service.IIncidentTaskService;
+import com.ruoyi.zhdd.service.IIncidentUserService;
 import com.ruoyi.zhdd.service.ISmsOutboxService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -54,13 +56,14 @@ public class NoticeInfoListiner {
     private final IIncidentProcessService incidentProcessService;
     private final ISmsOutboxService smsOutboxService;
     private final ISysUserService sysUserService;
+    private final IIncidentUserService incidentUserService;
 
     @Value("${spring.profiles.active}")
     private String env;
 
     /**
      * 消息发送
-     * A:事件接报。B:处置方案
+     * A:事件派发。B:处置方案
      */
     @Bean
     public void sendNotice() {
@@ -275,4 +278,23 @@ 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);
+            }
+            incidentUserService.saveAll(incidentUsers);
+        });
+    }
+
 }

+ 15 - 16
ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhdd/IncidentController.java

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.annotation.Security;
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.TreeSelect;
@@ -23,6 +24,7 @@ import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.common.core.validate.QueryGroup;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.RedisUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.service.UserUtil;
 import com.ruoyi.system.service.ISysDeptService;
@@ -50,6 +52,7 @@ import com.ruoyi.zhdd.service.IResourceDetailService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -82,6 +85,7 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor(onConstructor_ = @Autowired)
 @RestController
 @RequestMapping("/zhdd/incident")
+@Slf4j
 public class IncidentController extends BaseController {
 
     private final IIncidentService iIncidentService;
@@ -119,22 +123,9 @@ public class IncidentController extends BaseController {
     }
 
     /**
-     * 导出事件基础列表
-     */
-//    @ApiOperation("导出事件基础列表")
-//    @PreAuthorize("@ss.hasPermi('zhdd:incident:export')")
-//    @Log(title = "事件基础", businessType = BusinessType.EXPORT)
-//    @GetMapping("/export")
-//    public void export(@Validated IncidentBo bo, HttpServletResponse response) {
-//        List<IncidentVo> list = iIncidentService.queryList(bo);
-//        ExcelUtil.exportExcel(list, "事件基础", IncidentVo.class, response);
-//    }
-
-    /**
      * 获取事件基础详细信息
      */
     @ApiOperation("获取事件基础详细信息")
-//    @PreAuthorize("@ss.hasPermi('zhdd:incident:query')")
     @GetMapping("/{id}")
 //    @Security
     public AjaxResult<Map<String, Object>> getInfo(@NotNull(message = "主键不能为空")
@@ -234,7 +225,6 @@ public class IncidentController extends BaseController {
      * 新增事件基础
      */
     @ApiOperation("新增事件基础")
-//    @PreAuthorize("@ss.hasPermi('zhdd:incident:add')")
 //    @Log(title = "事件基础", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping()
@@ -246,7 +236,16 @@ public class IncidentController extends BaseController {
         bo.setCreateBy(cacheLoginUser.getUsername());
         bo.setCreateDept(cacheLoginUser.getUser().getDeptId());
         bo.setExpr1(cacheLoginUser.getUser().getPhonenumber());
-        return toAjax(iIncidentService.insertByBo(bo) ? 1 : 0);
+        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);
+        });
+        return toAjax(true);
     }
 
     /**
@@ -417,7 +416,7 @@ public class IncidentController extends BaseController {
     @RepeatSubmit()
     @PostMapping("/backLogFinish")
     public AjaxResult<Void> backLogFinish(@RequestBody JSONObject jsonObject) {
-        String id = jsonObject.getStr("processId");
+        String id = jsonObject.getStr("taskId");
         if (StrUtil.isBlank(id)) {
             return AjaxResult.error("参数存在空值!");
         }

+ 6 - 16
ruoyi-admin/src/main/resources/banner.txt

@@ -1,18 +1,8 @@
 Application Version: ${ruoyi-vue-plus.version}
 Spring Boot Version: ${spring-boot.version}
-
-
-____     ___      ________________ ____    ____           ____      ____
-`MM(     )M'      `MM'MMMMMMMMMMMP `MM'    `MM'          6MMMMb\   6MMMMb
- `MM.    d'        MM /       dMP   MM      MM          6M'    `  8P    Y8
-  `MM.  d'         MM        dMP    MM      MM          MM       6M      Mb
-   `MM d'          MM       dMP     MM      MM          YM.      MM      MM
-    `MM'           MM      dMP      MMMMMMMMMM           YMMMMb  MM      MM
-     MM            MM     dMP       MM      MM               `Mb MM      MM
-     MM            MM    dMP        MM      MM                MM MM      MM
-     MM      (8)   MM   dMP         MM      MM                MM YM      M9
-     MM      ((   ,M9  dMP       /  MM      MM          L    ,M9  8b    d8
-    _MM_      YMMMM9  dMMMMMMMMMMM _MM_    _MM_         MYMMMM9    YMMMM9
-                                                                     MM
-                                               MMMMMMMM              YM.
-                                                                      `Mo
+__     __  _ _______    _        _____  ____
+\ \   / / | |___  / |  | |      / ____|/ __ \
+ \ \_/ /  | |  / /| |__| |_____| (___ | |  | |
+  \   /   | | / / |  __  |______\___ \| |  | |
+   | | |__| |/ /__| |  | |      ____) | |__| |
+   |_|\____//_____|_|  |_|     |_____/ \___\_\

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

@@ -151,6 +151,7 @@ public class Constants {
     public static final String NOTICE_PUSH = "notice_push";
     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";
 
     /**
      * 大华tokon缓存

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

@@ -52,8 +52,6 @@ public class IncidentProcess implements Serializable {
 
     private String taskId;
 
-    private String backLogFlag;
-
     /**
      * 过程创建时间
      */

+ 3 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/IncidentTask.java

@@ -46,6 +46,9 @@ public class IncidentTask implements Serializable {
     // 是否发送。0-未发送,1-已发送
     private String taskSend;
 
+    // 待办消息状态。0-未办。1-已办
+    private String backLogFlag;
+
     @TableLogic
     private String delFlag;
 

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

@@ -0,0 +1,46 @@
+package com.ruoyi.zhdd.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 事件相关人员对象 b_incident_user
+ *
+ * @author xintong
+ * @date 2022-03-21
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("b_incident_user")
+public class IncidentUser implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * $column.columnComment
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private String id;
+
+    /**
+     * $column.columnComment
+     */
+    private String incidentId;
+
+    /**
+     * $column.columnComment
+     */
+    private String userId;
+
+    // 1:接报人员。2-处置人员。3-方案反馈人员
+    private String source;
+
+}

+ 0 - 3
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/IncidentProcessBo.java

@@ -48,9 +48,6 @@ public class IncidentProcessBo extends BaseEntity {
 
     private String taskId;
 
-    private String backLogFlag;
-
-
     /**
      * 分页大小
      */

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

@@ -23,4 +23,5 @@ public class IncidentTasksBo {
     private List<MessagePushUser> messagePushUsers;
     // 是否发送。0-未发送,1-已发送
     private String taskSend;
+    private String backLogFlag;
 }

+ 53 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/IncidentUserBo.java

@@ -0,0 +1,53 @@
+package com.ruoyi.zhdd.domain.bo;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 事件相关人员业务对象 b_incident_user
+ *
+ * @author xintong
+ * @date 2022-03-21
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("事件相关人员业务对象")
+public class IncidentUserBo extends BaseEntity {
+
+    private String id;
+
+    private String incidentId;
+
+    private String userId;
+
+    private String source;
+
+    /**
+     * 分页大小
+     */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+
+    /**
+     * 当前页数
+     */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    /**
+     * 排序列
+     */
+    @ApiModelProperty("排序列")
+    private String orderByColumn;
+
+    /**
+     * 排序的方向desc或者asc
+     */
+    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+    private String isAsc;
+
+}

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

@@ -48,8 +48,6 @@ public class IncidentProcessVo {
 
     private String taskId;
 
-    private String backLogFlag;
-
     @Excel(name = "创建人")
     @ApiModelProperty("创建人")
     private String createBy;

+ 3 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/vo/IncidentTaskVo.java

@@ -45,6 +45,9 @@ public class IncidentTaskVo {
     // 是否发送。0-未发送,1-已发送
     private String taskSend;
 
+    // 待办消息状态。0-未办。1-已办
+    private String backLogFlag;
+
     @Excel(name = "创建人")
     @ApiModelProperty("创建人")
     private String createBy;

+ 28 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/vo/IncidentUserVo.java

@@ -0,0 +1,28 @@
+package com.ruoyi.zhdd.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+
+/**
+ * 事件相关人员视图对象 b_incident_user
+ *
+ * @author xintong
+ * @date 2022-03-21
+ */
+@Data
+@ApiModel("事件相关人员视图对象")
+public class IncidentUserVo {
+
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+
+    private String incidentId;
+
+    private String userId;
+
+    private String source;
+
+
+}

+ 16 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/mapper/IncidentUserMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.zhdd.mapper;
+
+import com.ruoyi.zhdd.domain.IncidentUser;
+import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
+import org.apache.ibatis.annotations.CacheNamespace;
+
+/**
+ * 事件相关人员Mapper接口
+ *
+ * @author xintong
+ * @date 2022-03-21
+ */
+public interface IncidentUserMapper extends BaseMapperPlus<IncidentUser> {
+
+}

+ 42 - 38
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/IIncidentService.java

@@ -1,10 +1,10 @@
 package com.ruoyi.zhdd.service;
 
-import com.ruoyi.zhdd.domain.Incident;
-import com.ruoyi.zhdd.domain.vo.IncidentVo;
-import com.ruoyi.zhdd.domain.bo.IncidentBo;
 import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
 import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.zhdd.domain.Incident;
+import com.ruoyi.zhdd.domain.bo.IncidentBo;
+import com.ruoyi.zhdd.domain.vo.IncidentVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -16,41 +16,45 @@ import java.util.List;
  * @date 2021-09-28
  */
 public interface IIncidentService extends IServicePlus<Incident, IncidentVo> {
-	/**
-	 * 查询单个
-	 * @return
-	 */
-	IncidentVo queryById(String id);
-
-	/**
-	 * 查询列表
-	 */
+    /**
+     * 查询单个
+     *
+     * @return
+     */
+    IncidentVo queryById(String id);
+
+    /**
+     * 查询列表
+     */
     TableDataInfo<IncidentVo> queryPageList(IncidentBo bo);
 
-	/**
-	 * 查询列表
-	 */
-	List<IncidentVo> queryList(IncidentBo bo);
-
-	/**
-	 * 根据新增业务对象插入事件基础
-	 * @param bo 事件基础新增业务对象
-	 * @return
-	 */
-	Boolean insertByBo(IncidentBo bo);
-
-	/**
-	 * 根据编辑业务对象修改事件基础
-	 * @param bo 事件基础编辑业务对象
-	 * @return
-	 */
-	Boolean updateByBo(IncidentBo bo);
-
-	/**
-	 * 校验并删除数据
-	 * @param ids 主键集合
-	 * @param isValid 是否校验,true-删除前校验,false-不校验
-	 * @return
-	 */
-	Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+    /**
+     * 查询列表
+     */
+    List<IncidentVo> queryList(IncidentBo bo);
+
+    /**
+     * 根据新增业务对象插入事件基础
+     *
+     * @param bo 事件基础新增业务对象
+     * @return
+     */
+    String insertByBo(IncidentBo bo);
+
+    /**
+     * 根据编辑业务对象修改事件基础
+     *
+     * @param bo 事件基础编辑业务对象
+     * @return
+     */
+    Boolean updateByBo(IncidentBo bo);
+
+    /**
+     * 校验并删除数据
+     *
+     * @param ids     主键集合
+     * @param isValid 是否校验,true-删除前校验,false-不校验
+     * @return
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
 }

+ 56 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/IIncidentUserService.java

@@ -0,0 +1,56 @@
+package com.ruoyi.zhdd.service;
+
+import com.ruoyi.zhdd.domain.IncidentUser;
+import com.ruoyi.zhdd.domain.vo.IncidentUserVo;
+import com.ruoyi.zhdd.domain.bo.IncidentUserBo;
+import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 事件相关人员Service接口
+ *
+ * @author xintong
+ * @date 2022-03-21
+ */
+public interface IIncidentUserService extends IServicePlus<IncidentUser, IncidentUserVo> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	IncidentUserVo queryById(String id);
+
+	/**
+	 * 查询列表
+	 */
+    TableDataInfo<IncidentUserVo> queryPageList(IncidentUserBo bo);
+
+	/**
+	 * 查询列表
+	 */
+	List<IncidentUserVo> queryList(IncidentUserBo bo);
+
+	/**
+	 * 根据新增业务对象插入事件相关人员
+	 * @param bo 事件相关人员新增业务对象
+	 * @return
+	 */
+	Boolean insertByBo(IncidentUserBo bo);
+
+	/**
+	 * 根据编辑业务对象修改事件相关人员
+	 * @param bo 事件相关人员编辑业务对象
+	 * @return
+	 */
+	Boolean updateByBo(IncidentUserBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+}

+ 26 - 13
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentProcessServiceImpl.java

@@ -9,12 +9,14 @@ import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.zhdd.domain.IncidentProcess;
+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.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.stereotype.Service;
@@ -37,6 +39,8 @@ public class IncidentProcessServiceImpl extends ServicePlusImpl<IncidentProcessM
 
     @Autowired
     private FeignBacklogInfoService feignBacklogInfoService;
+    @Autowired
+    private IIncidentTaskService incidentTaskService;
 
     @Override
     public IncidentProcessVo queryById(String id) {
@@ -95,21 +99,30 @@ public class IncidentProcessServiceImpl extends ServicePlusImpl<IncidentProcessM
         return removeByIds(ids);
     }
 
+    /**
+     * @param id 方案id
+     * @return
+     */
     @Override
     @Transactional
     public boolean backLogFinish(String id) {
-        // 办结
-        List<BacklogMessageUpdateBo> list = new ArrayList<>();
-        BacklogMessageUpdateBo bo = new BacklogMessageUpdateBo();
-        bo.setUuid(id);
-        list.add(bo);
-        Object o = feignBacklogInfoService.backlogMessageUpdate(list);
-        log.info("消息待办办结返回结果:{}", o);
-        // 更新办结状态
-        IncidentProcess incidentProcess = new IncidentProcess();
-        incidentProcess.setId(id);
-        incidentProcess.setBackLogFlag("1");
-        baseMapper.updateById(incidentProcess);
-        return false;
+        // 通过方案id查询处置过程的id值
+        List<IncidentProcess> taskList = this.list(Wrappers.<IncidentProcess>lambdaQuery().eq(IncidentProcess::getTaskId, id).in(IncidentProcess::getStatus, 2, 3));
+        if (taskList != null && taskList.size() > 0) {
+            String uuid = taskList.get(0).getId();
+            // 办结
+            List<BacklogMessageUpdateBo> list = new ArrayList<>();
+            BacklogMessageUpdateBo bo = new BacklogMessageUpdateBo();
+            bo.setUuid(uuid);
+            list.add(bo);
+            Object o = feignBacklogInfoService.backlogMessageUpdate(list);
+            log.info("消息待办办结返回结果:{}", o);
+            // 更新办结状态
+            IncidentTask incidentTask = new IncidentTask();
+            incidentTask.setId(id);
+            incidentTask.setBackLogFlag("1");
+            incidentTaskService.updateById(incidentTask);
+        }
+        return true;
     }
 }

+ 37 - 11
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentServiceImpl.java

@@ -35,10 +35,12 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.sql.Timestamp;
+import java.util.ArrayList;
 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;
 
 /**
@@ -109,17 +111,12 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
     }
 
     @Override
-    public Boolean insertByBo(IncidentBo bo) {
+    public String insertByBo(IncidentBo bo) {
         Incident add = BeanUtil.toBean(bo, Incident.class);
         validEntityBeforeSave(add);
         add.setExprJson(JSONUtil.toJsonStr(bo.getMessagePushUsers()));
         boolean save = save(add);
-        /*if (bo.isSendFlag()) {
-            // A:事件接报。B:处置方案
-            RedisUtils.publish(Constants.NOTICE_PUSH, "A" + add.getId(), msg -> {
-                log.info("发布事件接报消息 => " + msg);
-            });
-        }*/
+
         JSONObject jsonObject = new JSONObject();
         jsonObject.set("des", "事件接报");
         jsonObject.set("incidentId", add.getId());
@@ -127,7 +124,7 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
         RedisUtils.publish(Constants.PROCESS_RECORD, jsonObject, msg -> {
             log.info("事件处置详情消息 => " + msg);
         });
-        return save;
+        return add.getId();
     }
 
     @Override
@@ -153,6 +150,9 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
             if (StrUtil.isBlank(bo.getMadinDept())) {
                 throw new ServiceException("请选择主办单位!");
             }
+            if (StrUtil.isBlank(bo.getCommander())) {
+                throw new ServiceException("请选择总指挥!");
+            }
             jsonObject.set("des", "事件派发");
             // 冗余总指挥、主办、协办部门数据
             if (StrUtil.isNotBlank(bo.getCommander())) {
@@ -173,11 +173,27 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
                     update.setAssistDeptText(sysDepts.stream().map(SysDept::getDeptName).collect(Collectors.joining(",")));
                 }
             }
-        } else if (flag && bo.getStatus() == 4) {
+
+            //保存派发的人员和事件关系数据
+            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);
+            });
+
+        }
+        /*else if (flag && bo.getStatus() == 4) {
             if (StrUtil.isBlank(bo.getConclusion())) {
-                throw new ServiceException("请填写归档总结!");
+                throw new ServiceException("请填写经验总结!");
             }
-        } else if (!flag && !StrUtil.equals(bo.getAssistDept(), beforeInfo.getAssistDept())) {
+        } */
+        else if (!flag && !StrUtil.equals(bo.getAssistDept(), beforeInfo.getAssistDept())) {
             // 第二次对协办部门派发
             // 重新冗余协办部门
             if (StrUtil.isBlank(bo.getAssistDept())) {
@@ -199,6 +215,16 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
             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);

+ 14 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentTaskServiceImpl.java

@@ -15,6 +15,7 @@ import com.ruoyi.common.utils.RedisUtils;
 import com.ruoyi.zhdd.domain.IncidentTask;
 import com.ruoyi.zhdd.domain.bo.IncidentTaskBo;
 import com.ruoyi.zhdd.domain.bo.IncidentTasksBo;
+import com.ruoyi.zhdd.domain.bo.MessagePushUser;
 import com.ruoyi.zhdd.domain.vo.IncidentTaskVo;
 import com.ruoyi.zhdd.mapper.IncidentTaskMapper;
 import com.ruoyi.zhdd.service.IIncidentTaskService;
@@ -26,6 +27,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 事件处置流程Service业务层处理
@@ -100,6 +102,18 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
             log.info("事件处置方案新增消息 => " + msg);
         });
 
+        //对处置反馈的人员保存事件人员关系
+        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);
+            });
+        }
+
         return true;
     }
 

+ 85 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentUserServiceImpl.java

@@ -0,0 +1,85 @@
+package com.ruoyi.zhdd.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.stereotype.Service;
+import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.zhdd.domain.bo.IncidentUserBo;
+import com.ruoyi.zhdd.domain.vo.IncidentUserVo;
+import com.ruoyi.zhdd.domain.IncidentUser;
+import com.ruoyi.zhdd.mapper.IncidentUserMapper;
+import com.ruoyi.zhdd.service.IIncidentUserService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 事件相关人员Service业务层处理
+ *
+ * @author xintong
+ * @date 2022-03-21
+ */
+@Service
+public class IncidentUserServiceImpl extends ServicePlusImpl<IncidentUserMapper, IncidentUser, IncidentUserVo> implements IIncidentUserService {
+
+    @Override
+    public IncidentUserVo queryById(String id){
+        return getVoById(id);
+    }
+
+    @Override
+    public TableDataInfo<IncidentUserVo> queryPageList(IncidentUserBo bo) {
+        PagePlus<IncidentUser, IncidentUserVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
+        return PageUtils.buildDataInfo(result);
+    }
+
+    @Override
+    public List<IncidentUserVo> queryList(IncidentUserBo bo) {
+        return listVo(buildQueryWrapper(bo));
+    }
+
+    private LambdaQueryWrapper<IncidentUser> buildQueryWrapper(IncidentUserBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<IncidentUser> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getIncidentId()), IncidentUser::getIncidentId, bo.getIncidentId());
+        lqw.eq(StringUtils.isNotBlank(bo.getUserId()), IncidentUser::getUserId, bo.getUserId());
+        return lqw;
+    }
+
+    @Override
+    public Boolean insertByBo(IncidentUserBo bo) {
+        IncidentUser add = BeanUtil.toBean(bo, IncidentUser.class);
+        validEntityBeforeSave(add);
+        return save(add);
+    }
+
+    @Override
+    public Boolean updateByBo(IncidentUserBo bo) {
+        IncidentUser update = BeanUtil.toBean(bo, IncidentUser.class);
+        validEntityBeforeSave(update);
+        return updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(IncidentUser entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return removeByIds(ids);
+    }
+}

+ 14 - 0
ruoyi-zhdd/src/main/resources/mapper/zhdd/IncidentUserMapper.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.zhdd.mapper.IncidentUserMapper">
+
+    <resultMap type="com.ruoyi.zhdd.domain.IncidentUser" id="IncidentUserResult">
+        <result property="id" column="id"/>
+        <result property="incidentId" column="incident_id"/>
+        <result property="userId" column="user_id"/>
+    </resultMap>
+
+
+</mapper>