459242451@qq.com 3 年之前
父節點
當前提交
83ac4f36f7

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

@@ -80,7 +80,6 @@ public class NoticeInfoListiner {
      * A:事件派发。B:处置方案
      */
     @Bean
-
     public void sendNotice() {
         RedisUtils.subscribe(Constants.NOTICE_PUSH, String.class, msg -> {
             try {

+ 52 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhdd/IncidentController.java

@@ -255,6 +255,58 @@ public class IncidentController extends BaseController {
         return AjaxResult.success(map);
     }
 
+    @ApiOperation("获取事件执行日志详细信息")
+    @GetMapping("/process/{id}")
+    public AjaxResult<Map<String, Object>> getProcessInfo(@NotNull(message = "主键不能为空")
+                                                          @PathVariable("id") String id) {
+        Map<String, Object> map = new HashMap<>();
+        List<IncidentProcess> list = processService.list(Wrappers.<IncidentProcess>lambdaQuery()
+            .eq(IncidentProcess::getIncidentId, id)
+            .orderByAsc(IncidentProcess::getCreateTime));
+        String distributeTime = "";
+        String dealTime = "";
+        if (!"dev".equals(env)) {
+            for (IncidentProcess incidentProcess : list) {
+                // 处理首次派发和首页处理的时间
+                if (StrUtil.isBlank(distributeTime) && incidentProcess.getIncidentStatus() == 2 && StrUtil.contains(incidentProcess.getDes(), "事件派发")) {
+                    distributeTime = DateUtil.formatDateTime(incidentProcess.getCreateTime());
+                }
+                if (StrUtil.isBlank(dealTime) && incidentProcess.getIncidentStatus() == 3 && !StrUtil.contains(incidentProcess.getDes(), "再次派发")) {
+                    dealTime = DateUtil.formatDateTime(incidentProcess.getCreateTime());
+                }
+
+                if (incidentProcess.getStatus() == 1) {
+                    // 查询阅读情况
+                    JSONObject o = feignNoticeInfoService.messagePushInfoList("1", "2", incidentProcess.getId());
+                    // 解析
+                    if (ObjectUtil.isNotEmpty(o)) {
+                        Integer total = o.getInt("total");
+                        if (total > 0) {
+                            JSONArray jsonArray = JSONUtil.parseObj(o.getJSONArray("rows").get(0)).getJSONArray("messageReadInfoList");
+                            StringBuilder unMessage = new StringBuilder();
+                            StringBuilder message = new StringBuilder();
+                            for (Object o1 : jsonArray) {
+                                JSONObject jsonObject = JSONUtil.parseObj(o1);
+                                if ("0".equals(jsonObject.getStr("readState"))) {
+                                    // 未读
+                                    unMessage.append(jsonObject.getStr("nickName")).append("、");
+                                } else if ("1".equals(jsonObject.getStr("readState"))) {
+                                    // 已读
+                                    message.append(jsonObject.getStr("nickName")).append("、");
+                                }
+                            }
+                            // 循环完之后,去除最后一个顿号
+                            incidentProcess.setUserRead(message.toString());
+                            incidentProcess.setUserUnRead(unMessage.toString());
+                        }
+                    }
+                }
+            }
+        }
+        map.put("process", list);
+        return AjaxResult.success(map);
+    }
+
     /**
      * 新增事件基础
      */

+ 10 - 3
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/Plan.java

@@ -1,12 +1,17 @@
 package com.ruoyi.zhdd.domain;
 
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
+
 import java.io.Serializable;
 import java.util.Date;
-import java.math.BigDecimal;
 
 /**
  * 预案管理对象 b_plan
@@ -20,7 +25,7 @@ import java.math.BigDecimal;
 @TableName("b_plan")
 public class Plan implements Serializable {
 
-    private static final long serialVersionUID=1L;
+    private static final long serialVersionUID = 1L;
 
 
     /**
@@ -39,6 +44,8 @@ public class Plan implements Serializable {
      */
     private Integer type;
 
+    private String reviseDay;
+
     /**
      * 创建人
      */

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

@@ -24,4 +24,5 @@ public class IncidentTasksBo {
     // 是否发送。0-未发送,1-已发送
     private String taskSend;
     private String backLogFlag;
+    private String saveAndSend;
 }

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

@@ -1,5 +1,6 @@
 package com.ruoyi.zhdd.domain.bo;
 
+import com.ruoyi.common.core.domain.entity.SysDept;
 import lombok.Data;
 
 /**
@@ -15,4 +16,6 @@ public class MessagePushUser {
     private String nickName;
     private String deptId;
     private String deptName;
+    private String userName;
+    private SysDept dept;
 }

+ 8 - 7
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/PlanBo.java

@@ -1,5 +1,6 @@
 package com.ruoyi.zhdd.domain.bo;
 
+import com.ruoyi.common.core.domain.BaseEntity;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.zhdd.domain.PlanFile;
@@ -8,13 +9,11 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import javax.validation.constraints.*;
 
-import java.util.Date;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import java.util.List;
 
-import com.ruoyi.common.core.domain.BaseEntity;
-
 /**
  * 预案管理业务对象 b_plan
  *
@@ -37,21 +36,21 @@ public class PlanBo extends BaseEntity {
      * 预案名称
      */
     @ApiModelProperty(value = "预案名称")
-    @NotBlank(message = "name不能为空", groups = { AddGroup.class, EditGroup.class })
+    @NotBlank(message = "name不能为空", groups = {AddGroup.class, EditGroup.class})
     private String name;
 
     /**
      * 预案类型
      */
     @ApiModelProperty(value = "预案类型")
-    @NotNull(message = "type不能为空", groups = { AddGroup.class, EditGroup.class })
+    @NotNull(message = "type不能为空", groups = {AddGroup.class, EditGroup.class})
     private Integer type;
 
     /**
      * 创建部门
      */
     @ApiModelProperty(value = "创建部门")
-    @NotBlank(message = "createDept不能为空", groups = { AddGroup.class, EditGroup.class })
+    @NotBlank(message = "createDept不能为空", groups = {AddGroup.class, EditGroup.class})
     private String createDept;
 
     /**
@@ -91,4 +90,6 @@ public class PlanBo extends BaseEntity {
     @ApiModelProperty("预案文件")
     private List<PlanFile> planFiles;
 
+    private String reviseDay;
+
 }

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

@@ -42,6 +42,8 @@ public class PlanVo {
     @ApiModelProperty("预案类型")
     private Integer type;
 
+    private String reviseDay;
+
     /**
      * 创建部门
      */

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

@@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.entity.SysDept;
-import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.PagePlus;
 import com.ruoyi.common.core.page.TableDataInfo;
@@ -28,6 +27,7 @@ import com.ruoyi.zhdd.domain.IncidentUser;
 import com.ruoyi.zhdd.domain.Plan;
 import com.ruoyi.zhdd.domain.bo.BacklogMessageUpdateBo;
 import com.ruoyi.zhdd.domain.bo.IncidentBo;
+import com.ruoyi.zhdd.domain.bo.IncidentTasksBo;
 import com.ruoyi.zhdd.domain.bo.MessagePushUser;
 import com.ruoyi.zhdd.domain.vo.IncidentVo;
 import com.ruoyi.zhdd.domain.vo.PlanTaskVo;
@@ -217,18 +217,20 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
             && bo.getStatus() == 3
             && (
 //                !StrUtil.equals(bo.getAssistDept(), beforeInfo.getAssistDept())
-//            || !StrUtil.equals(bo.getCommander(), beforeInfo.getCommander())
-            !StrUtil.equals(bo.getAssistTaskUser(), beforeInfo.getAssistTaskUser())
+            !StrUtil.equals(bo.getCommanderUser(), beforeInfo.getCommanderUser())
+                || !StrUtil.equals(bo.getAssistTaskUser(), beforeInfo.getAssistTaskUser())
                 || !StrUtil.equals(bo.getAssistDeptUser(), beforeInfo.getAssistDeptUser()))) {
             // 协办部门派发或再次对协办修改
             // 重新冗余协办部门、总指挥
             /*if (StrUtil.isBlank(bo.getCommander())) {
                 throw new ServiceException("请选择总指挥!");
             }*/
-            if (StrUtil.isNotBlank(bo.getCommander())) {
-                SysUser commanderText = sysUserService.selectUserById(bo.getCommander());
-                if (commanderText != null) {
-                    update.setCommanderText(commanderText.getNickName());
+            if (StrUtil.isNotBlank(bo.getCommanderUser())) {
+                List<MessagePushUser> commandUser = JSONUtil.toList(StrUtil.blankToDefault(beforeInfo.getCommanderUser(), "[]"), MessagePushUser.class);
+                if (commandUser.size() > 0) {
+                    bo.setCommander(commandUser.get(0).getUserId());
+                    update.setCommanderText(commandUser.get(0).getNickName());
+                    update.setCommander(bo.getCommander());
                 }
             }
 
@@ -404,15 +406,13 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
                 if (integerListMap != null) {
                     List<PlanTaskVo> planTaskVos = integerListMap.get(bo.getLevel());
                     if (planTaskVos != null) {
-                        List<IncidentTask> incidentTaskList = new ArrayList<>();
                         for (PlanTaskVo planTaskVo : planTaskVos) {
-                            IncidentTask task = new IncidentTask();
+                            IncidentTasksBo task = new IncidentTasksBo();
                             task.setIncidentId(bo.getId());
                             task.setTaskName(planTaskVo.getTaskName() + ":" + planTaskVo.getTaskDes());
-                            task.setSendFlag("1");
-                            incidentTaskList.add(task);
+                            task.setSendFlag("2");
+                            incidentTaskService.insertByBo(task);
                         }
-                        incidentTaskService.saveAll(incidentTaskList);
                     }
                 }
             }

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

@@ -15,6 +15,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.RedisUtils;
+import com.ruoyi.system.service.ISysDeptService;
 import com.ruoyi.zhdd.domain.IncidentTask;
 import com.ruoyi.zhdd.domain.IncidentUser;
 import com.ruoyi.zhdd.domain.bo.IncidentTaskBo;
@@ -24,6 +25,7 @@ import com.ruoyi.zhdd.domain.vo.IncidentTaskVo;
 import com.ruoyi.zhdd.mapper.IncidentTaskMapper;
 import com.ruoyi.zhdd.service.IIncidentTaskService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -43,6 +45,9 @@ import java.util.stream.Collectors;
 @Slf4j
 public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper, IncidentTask, IncidentTaskVo> implements IIncidentTaskService {
 
+    @Autowired
+    private ISysDeptService sysDeptService;
+
     @Override
     public IncidentTaskVo queryById(String id) {
         return getVoById(id);
@@ -74,6 +79,9 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
         JSONArray removeJsonArray = new JSONArray();
         // 待新增事件用户关系的array
         JSONArray saveJsonArray = new JSONArray();
+        // 查询所有的部门数据,为冗余部门的全称
+        /*List<SysDept> list = sysDeptService.list();
+        Map<String, String> deptMap = list.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getFullName));*/
         if (StrUtil.isNotBlank(bo.getId())) {
             // 更新操作
             // 先查询是否已经发送过
@@ -85,6 +93,11 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
                 throw new ServiceException("该消息已发送,不能再次编辑!");
             }
             IncidentTask update = BeanUtil.toBean(bo, IncidentTask.class);
+            /*for (MessagePushUser messagePushUser : bo.getMessagePushUsers()) {
+                if (StrUtil.isNotBlank(messagePushUser.getDeptId())) {
+                    messagePushUser.setFullName(deptMap.get(messagePushUser.getDeptId()));
+                }
+            }*/
             update.setExprJson(JSONUtil.toJsonStr(bo.getMessagePushUsers()));
             updateById(update);
             jsonObject.set("des", "更新处置方案:" + bo.getTaskName());
@@ -136,8 +149,15 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
         } else {
             IncidentTask add = BeanUtil.toBean(bo, IncidentTask.class);
             add.setId(null);
+            /*for (MessagePushUser messagePushUser : bo.getMessagePushUsers()) {
+                if (StrUtil.isNotBlank(messagePushUser.getDeptId())) {
+                    messagePushUser.setFullName(deptMap.get(messagePushUser.getDeptId()));
+                }
+            }*/
             add.setExprJson(JSONUtil.toJsonStr(bo.getMessagePushUsers()));
             save(add);
+            // 为了发送时知道方案的id
+            bo.setId(add.getId());
             jsonObject.set("des", "新增处置方案:" + bo.getTaskName());
             jsonObject.set("taskId", add.getId());
 
@@ -161,6 +181,11 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
         if (saveJsonArray.size() > 0) {
             RedisUtils.publish(Constants.INCIDENT_USER_BATCH, saveJsonArray);
         }
+        if (StrUtil.equals("1", bo.getSaveAndSend())) {
+            IncidentTasksBo send = new IncidentTasksBo();
+            send.setId(bo.getId());
+            this.taskSend(send);
+        }
 
         return true;
     }
@@ -181,6 +206,12 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
         );
         if (list != null && list.size() > 0) {
             for (IncidentTask incidentTask : list) {
+                // 判断是否存在没有人员的情况
+                if (StrUtil.isBlank(incidentTask.getExprJson())) {
+                    throw new ServiceException("不能发送,要先选择接收人员!");
+                }
+            }
+            for (IncidentTask incidentTask : list) {
                 // 更新方案为已发送状态
                 incidentTask.setTaskSend("1");
                 this.updateById(incidentTask);
@@ -202,7 +233,7 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
 
     @Override
     public List<IncidentTaskVo> listTaskInfo(String id) {
-        List<IncidentTaskVo> incidentTaskVo = listVo(Wrappers.<IncidentTask>lambdaQuery().eq(IncidentTask::getIncidentId, id).orderByAsc(IncidentTask::getCreateTime));
+        List<IncidentTaskVo> incidentTaskVo = listVo(Wrappers.<IncidentTask>lambdaQuery().eq(IncidentTask::getIncidentId, id).orderByAsc(IncidentTask::getCreateTime, IncidentTask::getId));
         if (incidentTaskVo != null) {
             // 查询指令和人员
             for (IncidentTaskVo taskVo : incidentTaskVo) {