459242451@qq.com 3 ani în urmă
părinte
comite
404b3d70e8
21 a modificat fișierele cu 283 adăugiri și 172 ștergeri
  1. 2 1
      ruoyi-admin/nacos/yjzh-sq-dev.yaml
  2. 2 1
      ruoyi-admin/nacos/yjzh-sq-test.yaml
  3. 13 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/NoticeInfoListiner.java
  4. 90 96
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysGatewayUserTask.java
  5. 6 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhdd/ChemicalDataController.java
  6. 9 8
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhdd/IncidentController.java
  7. 1 1
      ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
  8. 1 1
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/Incident.java
  9. 3 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/IncidentProcess.java
  10. 6 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/IncidentTask.java
  11. 2 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/BacklogMessagePushBo.java
  12. 2 2
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/IncidentBo.java
  13. 3 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/IncidentProcessBo.java
  14. 2 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/IncidentTasksBo.java
  15. 3 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/vo/IncidentProcessVo.java
  16. 6 0
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/vo/IncidentTaskVo.java
  17. 1 1
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/vo/IncidentVo.java
  18. 44 38
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/IChemicalDataService.java
  19. 21 11
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/ChemicalDataServiceImpl.java
  20. 25 6
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentServiceImpl.java
  21. 41 2
      ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentTaskServiceImpl.java

+ 2 - 1
ruoyi-admin/nacos/yjzh-sq-dev.yaml

@@ -164,5 +164,6 @@ third:
     dhAuthorize: http://10.211.55.3:6699/videoService/accounts/authorize # 大华鉴权创建用户会话
     keepalive: http://10.211.55.3:6699/videoService/accounts/token/keepalive # 大华会话保活
     dhDeviceTree: http://10.211.55.3:6699/videoService/devicesManager/deviceTree # 大华设备树
-    incidentUrl: http://sqmb.xt.wenhq.top:8083/#/status/3/detail?id=#incidentId&taskid=#taskId # 移动端待办跳转链接
+    incidentUrl: http://sqmb.xt.wenhq.top:8083/#/status/3/detaillite?id=#incidentId&taskid=#taskId # 移动端待办跳转链接
     resourceUrl: http://sqmb.xt.wenhq.top:8083/#/warehouse/detail # 移动端资源跳转链接
+    chemicalUrl: http://sqmb.xt.wenhq.top:8083/#/chemical/detail?id= # 危化品详情页面

+ 2 - 1
ruoyi-admin/nacos/yjzh-sq-test.yaml

@@ -159,5 +159,6 @@ third:
     dhAuthorize: http://10.55.134.3:6699/videoService/accounts/authorize # 大华鉴权创建用户会话
     keepalive: http://10.55.134.3:6699/videoService/accounts/token/keepalive # 大华会话保活
     dhDeviceTree: http://10.55.134.3:6699/videoService/devicesManager/deviceTree # 大华设备树
-    incidentUrl: http://sqmb.xt.wenhq.top:8083/#/status/3/detail?id=#incidentId&taskid=#taskId # 移动端待办跳转链接
+    incidentUrl: http://sqmb.xt.wenhq.top:8083/#/status/3/detaillite?id=#incidentId&taskid=#taskId # 移动端待办跳转链接
     resourceUrl: http://sqmb.xt.wenhq.top:8083/#/warehouse/list?taskid=#taskId # 移动端资源跳转链接
+    chemicalUrl: http://sqmb.xt.wenhq.top:8083/#/chemical/detail?id= # 危化品详情页面

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

@@ -128,7 +128,8 @@ public class NoticeInfoListiner {
                 synopsis = incidentTaskVo.getTaskName();
                 text = getDetail(incidentVo);
                 String taskName = "<tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">处置指令</td><td style=\"text-align:left;\">#taskName</td></tr>".replace("#taskName", incidentTaskVo.getTaskName());
-                text = text.replace("#task", taskName);
+                text = text.replace("#task", taskName).replace("#chemcials", incidentTaskVo.getChemicalsHtml());
+
                 url = incidentUrl.replace("#incidentId", incidentId).replace("#taskId", incidentTaskVo.getId());
                 incidentProcess.setDes("发送处置方案:" + incidentTaskVo.getTaskName());
                 incidentProcess.setIncidentStatus(3);
@@ -138,6 +139,8 @@ public class NoticeInfoListiner {
                     title = "应急资源维护";
                     text = incidentTaskVo.getTaskName();
                     url = resourceUrl.replace("#taskId", incidentTaskVo.getId());
+                } else if ("2".equals(messageType)) {
+                    text = incidentTaskVo.getTaskName();
                 }
                 incidentProcess.setTaskId(incidentTaskVo.getId());
             }
@@ -175,6 +178,7 @@ public class NoticeInfoListiner {
                     backlogMessagePushBo.setSubhead(synopsis);
                     backlogMessagePushBo.setText(text);
                     backlogMessagePushBo.setUrl(url);
+                    backlogMessagePushBo.setUrgency("5");
                     List<String> userIds = messagePushUsers.stream().map(MessagePushUser::getUserId).collect(Collectors.toList());
                     backlogMessagePushBo.setUserId(userIds);
                     log.info("待办消息发送 => {}", backlogMessagePushBo);
@@ -238,7 +242,10 @@ public class NoticeInfoListiner {
             incidentVo.setCreateDept(sysDept.getDeptName());
         }
         String htmlContent = "<table style=\"font-size: 3vw;\"><tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">事件类型</td><td style=\"text-align:left;\">#typeText</td></tr><tr><td style=\"color: darkgray;width: 20%;vertical-align: " +
-            "top;\">事件等级</td><td style=\"text-align:left;\">#levelText</td></tr><tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">事件时间</td><td style=\"text-align:left;\">#createTime</td></tr><tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">事件地点</td><td style=\"text-align:left;\">#addr</td></tr><tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">事件来源</td><td style=\"text-align:left;\">#source</td></tr><tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">上报人员</td><td style=\"text-align:left;\">#createBy</td></tr><tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">联系电话</td><td style=\"text-align:left;\">#expr1</td></tr><tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">上报单位</td><td style=\"text-align:left;\">#createDept</td></tr>#task</table>";
+            "top;\">事件等级</td><td style=\"text-align:left;\">#levelText</td></tr><tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">事件时间</td><td style=\"text-align:left;\">#createTime</td></tr><tr><td style=\"color: darkgray;width: " +
+            "20%;vertical-align: top;\">事件地点</td><td style=\"text-align:left;\">#addr</td></tr><tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">事件来源</td><td style=\"text-align:left;\">#source</td></tr><tr><td style=\"color: " +
+            "darkgray;width: 20%;vertical-align: top;\">上报人员</td><td style=\"text-align:left;\">#createBy</td></tr><tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">联系电话</td><td style=\"text-align:left;\">#expr1</td></tr><tr><td " +
+            "style=\"color: darkgray;width: 20%;vertical-align: top;\">上报单位</td><td style=\"text-align:left;\">#createDept</td></tr>#task#chemcials</table>";
         return htmlContent.replace("#typeText", incidentVo.getTypeText())
             .replace("#levelText", incidentVo.getLevelText())
             .replace("#createTime", DateUtil.formatDateTime(incidentVo.getCreateTime()))
@@ -262,6 +269,7 @@ public class NoticeInfoListiner {
             }
             log.info("发送指定用户订阅事件消息 => {}", msg);
             String des = msg.getStr("des");
+            String taskId = msg.getStr("taskId");
             int incidentStatus = msg.getInt("incidentStatus");
             String incidentId = msg.getStr("incidentId");
             List<MessagePushUser> messagePushUsers = JSONUtil.toList(msg.getStr("messagePushUsers"), MessagePushUser.class);
@@ -277,6 +285,7 @@ public class NoticeInfoListiner {
             incidentProcess.setIncidentStatus(incidentStatus);
             incidentProcess.setStatus(1);
             incidentProcess.setIncidentId(incidentId);
+            incidentProcess.setTaskId(taskId);
             incidentProcessService.save(incidentProcess);
 
             IncidentVo incidentVo = incidentService.queryById(incidentId);
@@ -333,6 +342,8 @@ public class NoticeInfoListiner {
                     des = "事件归档";
                 } else if (incidentStatus == 5) {
                     des = "事件忽略";
+                } else if (incidentStatus == 6) {
+                    des = "事件办结";
                 } else {
                     des = "未知";
                 }

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

@@ -7,14 +7,10 @@ import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ruoyi.common.core.domain.entity.SysDept;
-import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.framework.websocket.WebSocketServer;
-import com.ruoyi.framework.websocket.WebsocketConst;
 import com.ruoyi.system.service.ISysDeptService;
 import com.ruoyi.system.service.ISysDictTypeService;
 import com.ruoyi.system.service.ISysUserService;
-import com.ruoyi.zhdd.domain.GatewayDept;
 import com.ruoyi.zhdd.domain.SingleDevice;
 import com.ruoyi.zhdd.domain.bo.SingleDeviceBo;
 import com.ruoyi.zhdd.service.ISingleDeviceService;
@@ -23,8 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.kafka.annotation.KafkaListener;
 import org.springframework.stereotype.Component;
 
-import java.util.List;
-
 @Component
 @Slf4j
 public class SysGatewayUserTask {
@@ -128,78 +122,78 @@ public class SysGatewayUserTask {
      *
      * @param message
      */
-    @KafkaListener(topics = "t_uc_orgdept")
-    public void onDeptMessage(String message) {
-        log.info("kafka部门信息消费:{}", message);
-        try {
-            GatewayDept gatewayDept = JSONUtil.toBean(message, GatewayDept.class);
-            if (gatewayDept != null) {
-                SysDept qdept = new SysDept();
-                qdept.setDeptId(gatewayDept.getId());
-                List<SysDept> deptList = deptService.selectDeptList(qdept);
-                if (deptList.isEmpty()) {
-                    //插入
-//                    SysDept dept = new SysDept();
-                    /*//查询父部门
-                    {
-                        SysDept qdept1 = new SysDept();
-                        if (gatewayDept.getParentId() == null || gatewayDept.getParentId().equals("")) {
-                            qdept1.setParentId("0");
-                            qdept1.setOtherId(gatewayDept.getOrgId());
-                        } else {
-                            qdept1.setOtherId(gatewayDept.getParentId());
-                        }
-                        List<SysDept> deptList1 = deptService.selectDeptList(qdept1);
-                        if (!deptList1.isEmpty()) {
-                            dept.setParentId(deptList1.get(0).getDeptId());
-                        } else {
-                            //无父组织或部门 暂不处理吧
-                        }
-                    }*/
-                    qdept.setParentId(StrUtil.emptyToDefault(gatewayDept.getParentId(), "0"));
-                    qdept.setDeptName(gatewayDept.getName());
-                    qdept.setUpdateBy(gatewayDept.getUpdateUser());
-                    qdept.setUpdateTime(DateUtil.parseDateTime(gatewayDept.getUpdateTime()));
-                    qdept.setCreateBy(gatewayDept.getCreateUser());
-                    qdept.setCreateTime(DateUtil.parseDateTime(gatewayDept.getCreateTime()));
-                    qdept.setDelFlag(gatewayDept.getDelFlag());
-                    qdept.setFlag(Convert.toStr(gatewayDept.getFlag()));
-
-                    deptService.insertDept(qdept);
-                } else {
-                    //更新
-                    qdept = deptList.get(0);
-                    //查询父部门
-                    /*{
-                        SysDept qdept1 = new SysDept();
-                        if (gatewayDept.getParentId() == null || gatewayDept.getParentId().equals("")) {
-                            qdept1.setParentId("0");
-                            qdept1.setOtherId(gatewayDept.getOrgId());
-                        } else {
-                            qdept1.setOtherId(gatewayDept.getParentId());
-                        }
-                        List<SysDept> deptList1 = deptService.selectDeptList(qdept1);
-                        if (!deptList1.isEmpty()) {
-                            dept.setParentId(deptList1.get(0).getDeptId());
-                        } else {
-                            //无父组织或部门 暂不处理吧
-                        }
-                    }*/
-                    qdept.setParentId(StrUtil.emptyToDefault(gatewayDept.getParentId(), "0"));
-                    qdept.setDeptName(gatewayDept.getName());
-                    qdept.setUpdateBy(gatewayDept.getUpdateUser());
-                    qdept.setUpdateTime(DateUtil.parseDateTime(gatewayDept.getUpdateTime()));
-                    qdept.setCreateBy(gatewayDept.getCreateUser());
-                    qdept.setCreateTime(DateUtil.parseDateTime(gatewayDept.getCreateTime()));
-                    qdept.setDelFlag(gatewayDept.getDelFlag());
-                    qdept.setFlag(Convert.toStr(gatewayDept.getFlag()));
-                    deptService.updateDept(qdept);
-                }
-            }
-        } catch (Exception e) {
-            log.error("t_uc_orgdept的kafka消费异常:{}", e.getMessage());
-        }
-    }
+//    @KafkaListener(topics = "t_uc_orgdept")
+//    public void onDeptMessage(String message) {
+//        log.info("kafka部门信息消费:{}", message);
+//        try {
+//            GatewayDept gatewayDept = JSONUtil.toBean(message, GatewayDept.class);
+//            if (gatewayDept != null) {
+//                SysDept qdept = new SysDept();
+//                qdept.setDeptId(gatewayDept.getId());
+//                List<SysDept> deptList = deptService.selectDeptList(qdept);
+//                if (deptList.isEmpty()) {
+//                    //插入
+////                    SysDept dept = new SysDept();
+//                    /*//查询父部门
+//                    {
+//                        SysDept qdept1 = new SysDept();
+//                        if (gatewayDept.getParentId() == null || gatewayDept.getParentId().equals("")) {
+//                            qdept1.setParentId("0");
+//                            qdept1.setOtherId(gatewayDept.getOrgId());
+//                        } else {
+//                            qdept1.setOtherId(gatewayDept.getParentId());
+//                        }
+//                        List<SysDept> deptList1 = deptService.selectDeptList(qdept1);
+//                        if (!deptList1.isEmpty()) {
+//                            dept.setParentId(deptList1.get(0).getDeptId());
+//                        } else {
+//                            //无父组织或部门 暂不处理吧
+//                        }
+//                    }*/
+//                    qdept.setParentId(StrUtil.emptyToDefault(gatewayDept.getParentId(), "0"));
+//                    qdept.setDeptName(gatewayDept.getName());
+//                    qdept.setUpdateBy(gatewayDept.getUpdateUser());
+//                    qdept.setUpdateTime(DateUtil.parseDateTime(gatewayDept.getUpdateTime()));
+//                    qdept.setCreateBy(gatewayDept.getCreateUser());
+//                    qdept.setCreateTime(DateUtil.parseDateTime(gatewayDept.getCreateTime()));
+//                    qdept.setDelFlag(gatewayDept.getDelFlag());
+//                    qdept.setFlag(Convert.toStr(gatewayDept.getFlag()));
+//
+//                    deptService.insertDept(qdept);
+//                } else {
+//                    //更新
+//                    qdept = deptList.get(0);
+//                    //查询父部门
+//                    /*{
+//                        SysDept qdept1 = new SysDept();
+//                        if (gatewayDept.getParentId() == null || gatewayDept.getParentId().equals("")) {
+//                            qdept1.setParentId("0");
+//                            qdept1.setOtherId(gatewayDept.getOrgId());
+//                        } else {
+//                            qdept1.setOtherId(gatewayDept.getParentId());
+//                        }
+//                        List<SysDept> deptList1 = deptService.selectDeptList(qdept1);
+//                        if (!deptList1.isEmpty()) {
+//                            dept.setParentId(deptList1.get(0).getDeptId());
+//                        } else {
+//                            //无父组织或部门 暂不处理吧
+//                        }
+//                    }*/
+//                    qdept.setParentId(StrUtil.emptyToDefault(gatewayDept.getParentId(), "0"));
+//                    qdept.setDeptName(gatewayDept.getName());
+//                    qdept.setUpdateBy(gatewayDept.getUpdateUser());
+//                    qdept.setUpdateTime(DateUtil.parseDateTime(gatewayDept.getUpdateTime()));
+//                    qdept.setCreateBy(gatewayDept.getCreateUser());
+//                    qdept.setCreateTime(DateUtil.parseDateTime(gatewayDept.getCreateTime()));
+//                    qdept.setDelFlag(gatewayDept.getDelFlag());
+//                    qdept.setFlag(Convert.toStr(gatewayDept.getFlag()));
+//                    deptService.updateDept(qdept);
+//                }
+//            }
+//        } catch (Exception e) {
+//            log.error("t_uc_orgdept的kafka消费异常:{}", e.getMessage());
+//        }
+//    }
 
     /**
      * 单兵实时位置消费
@@ -234,23 +228,23 @@ public class SysGatewayUserTask {
      *
      * @param message
      */
-    @KafkaListener(topics = "voice-vcg")
-    public void onVoiceMessage(String message) {
-        log.info("kafka语音指令消费:{}", message);
-        JSONObject jsonObject = JSONUtil.parseObj(message);
-        String id = jsonObject.getStr("id");
-        String wordValue = jsonObject.getStr("wordValue");
-        List<SysDictData> zhdd_voice = sysDictTypeService.selectDictDataByType("zhdd_voice");
-        for (SysDictData sysDictData : zhdd_voice) {
-            if (sysDictData.getDictLabel().contains(wordValue)) {
-                JSONObject obj = new JSONObject();
-                obj.set(WebsocketConst.MSG_CMD, sysDictData.getDictValue());
-                obj.set(WebsocketConst.MSG_ID, id);
-                obj.set(WebsocketConst.MSG_TXT, wordValue);
-                webSocketServer.sendAllMessage(obj.toString());
-                break;
-            }
-        }
-    }
+//    @KafkaListener(topics = "voice-vcg")
+//    public void onVoiceMessage(String message) {
+//        log.info("kafka语音指令消费:{}", message);
+//        JSONObject jsonObject = JSONUtil.parseObj(message);
+//        String id = jsonObject.getStr("id");
+//        String wordValue = jsonObject.getStr("wordValue");
+//        List<SysDictData> zhdd_voice = sysDictTypeService.selectDictDataByType("zhdd_voice");
+//        for (SysDictData sysDictData : zhdd_voice) {
+//            if (sysDictData.getDictLabel().contains(wordValue)) {
+//                JSONObject obj = new JSONObject();
+//                obj.set(WebsocketConst.MSG_CMD, sysDictData.getDictValue());
+//                obj.set(WebsocketConst.MSG_ID, id);
+//                obj.set(WebsocketConst.MSG_TXT, wordValue);
+//                webSocketServer.sendAllMessage(obj.toString());
+//                break;
+//            }
+//        }
+//    }
 
 }

+ 6 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhdd/ChemicalDataController.java

@@ -53,12 +53,17 @@ public class ChemicalDataController extends BaseController {
      * 查询危化品信息列表
      */
     @ApiOperation("查询危化品信息列表")
-//    @PreAuthorize("@ss.hasPermi('zhdd:chemicalData:list')")
     @GetMapping("/list")
     public TableDataInfo<ChemicalDataVo> list(@Validated(QueryGroup.class) ChemicalDataBo bo) {
         return iChemicalDataService.queryPageList(bo);
     }
 
+    @ApiOperation("查询危化品信息列表")
+    @GetMapping("/basicList")
+    public TableDataInfo<ChemicalDataVo> basicList(@Validated(QueryGroup.class) ChemicalDataBo bo) {
+        return iChemicalDataService.queryBasicPageList(bo);
+    }
+
     /**
      * 导出危化品信息列表
      */
@@ -75,7 +80,6 @@ public class ChemicalDataController extends BaseController {
      * 获取危化品信息详细信息
      */
     @ApiOperation("获取危化品信息详细信息")
-    @PreAuthorize("@ss.hasPermi('zhdd:chemicalData:query')")
     @GetMapping("/{id}")
     public AjaxResult<ChemicalDataVo> getInfo(@NotNull(message = "主键不能为空")
                                               @PathVariable("id") String id) {

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

@@ -221,10 +221,11 @@ public class IncidentController extends BaseController {
                 if (incidentProcess.getStatus() == 1) {
                     // 查询阅读情况
                     JSONObject o = feignNoticeInfoService.messagePushInfoList("1", "2", incidentProcess.getId());
+                    log.info("查询消息阅读情况:{}", o);
                     // 解析
                     if (ObjectUtil.isNotEmpty(o)) {
                         Integer total = o.getInt("total");
-                        if (total > 0) {
+                        if (total != null && total > 0) {
                             JSONArray jsonArray = JSONUtil.parseObj(o.getJSONArray("rows").get(0)).getJSONArray("messageReadInfoList");
                             StringBuilder unMessage = new StringBuilder();
                             StringBuilder message = new StringBuilder();
@@ -281,7 +282,7 @@ public class IncidentController extends BaseController {
                     // 解析
                     if (ObjectUtil.isNotEmpty(o)) {
                         Integer total = o.getInt("total");
-                        if (total > 0) {
+                        if (total != null && total > 0) {
                             JSONArray jsonArray = JSONUtil.parseObj(o.getJSONArray("rows").get(0)).getJSONArray("messageReadInfoList");
                             StringBuilder unMessage = new StringBuilder();
                             StringBuilder message = new StringBuilder();
@@ -416,16 +417,16 @@ public class IncidentController extends BaseController {
             map.put("madinDeptText", StrUtil.blankToDefault(incidentVo.getMadinDeptText(), "部门无"));
             map.put("assistDeptText", StrUtil.blankToDefault(incidentVo.getAssistDeptText(), "部门无"));
             // 解析主办部门和协办部门人员
-            String madinDeptUser = incidentVo.getMadinDeptUser();
-            if (StrUtil.isNotBlank(madinDeptUser)) {
-                List<MessagePushUser> messagePushUsers = JSONUtil.toList(madinDeptUser, MessagePushUser.class);
+            String madinTaskUser = incidentVo.getMadinTaskUser();
+            if (StrUtil.isNotBlank(madinTaskUser)) {
+                List<MessagePushUser> messagePushUsers = JSONUtil.toList(madinTaskUser, MessagePushUser.class);
                 map.put("madinDeptUser", messagePushUsers.stream().map(MessagePushUser::getNickName).collect(Collectors.joining(",")));
             } else {
                 map.put("madinDeptUser", "人员无");
             }
-            String assistDeptUser = incidentVo.getAssistDeptUser();
-            if (StrUtil.isNotBlank(assistDeptUser)) {
-                List<MessagePushUser> messagePushUsers = JSONUtil.toList(assistDeptUser, MessagePushUser.class);
+            String assistTaskUser = incidentVo.getAssistTaskUser();
+            if (StrUtil.isNotBlank(assistTaskUser)) {
+                List<MessagePushUser> messagePushUsers = JSONUtil.toList(assistTaskUser, MessagePushUser.class);
                 map.put("assistDeptUser", messagePushUsers.stream().map(MessagePushUser::getNickName).collect(Collectors.joining(",")));
             } else {
                 map.put("assistDeptUser", "人员无");

+ 1 - 1
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -86,7 +86,7 @@
     </sql>
     <!--  -->
     <select id="selectPageUserList" parameterType="SysUser" resultMap="SysUserResult">
-        select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex,
+        select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.org_id,
         u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name,d.full_name, d.leader from
         sys_user u
         left join sys_dept d on u.dept_id = d.dept_id

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

@@ -165,7 +165,7 @@ public class Incident implements Serializable {
     private String assistDept;
     private String assistDeptText;
 
-    private String assistDeptUser;
+    //    private String assistDeptUser;
     private String assistTaskUser;
 
     // 忽略说明

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

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

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

@@ -66,4 +66,10 @@ public class IncidentTask implements Serializable {
 
     private String exprJson;
 
+    private String chemicals;
+
+    private String chemicalsText;
+
+    private String chemicalsHtml;
+
 }

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

@@ -36,4 +36,6 @@ public class BacklogMessagePushBo {
     private String url;
     // 发送的用户
     private List<String> userId;
+    // 紧急程度(0,5,10)
+    private String urgency;
 }

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

@@ -161,8 +161,8 @@ public class IncidentBo extends BaseEntity {
     @ApiModelProperty(value = "协办单位 多个数据用,分割")
     private String assistDept;
 
-    @ApiModelProperty(value = "协办单位用户结构")
-    private String assistDeptUser;
+//    @ApiModelProperty(value = "协办单位用户结构")
+//    private String assistDeptUser;
 
     @ApiModelProperty(value = "协办单位处置用户")
     private String assistTaskUser;

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

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

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

@@ -25,4 +25,6 @@ public class IncidentTasksBo {
     private String taskSend;
     private String backLogFlag;
     private String saveAndSend;
+    // 危化品
+    private String chemicals;
 }

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

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

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

@@ -56,5 +56,11 @@ public class IncidentTaskVo {
 
     private String exprJson;
 
+    private String chemicals;
+
+    private String chemicalsText;
+
+    private String chemicalsHtml;
+
     private List<MessagePushUser> messagePushUsers;
 }

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

@@ -167,7 +167,7 @@ public class IncidentVo {
     private List<TreeSelect> assistDeptList;
 
     @ApiModelProperty(value = "协办单位用户结构")
-    private String assistDeptUser;
+//    private String assistDeptUser;
     private String assistTaskUser;
 
     @Excel(name = "创建人")

+ 44 - 38
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/IChemicalDataService.java

@@ -1,10 +1,10 @@
 package com.ruoyi.zhdd.service;
 
-import com.ruoyi.zhdd.domain.ChemicalData;
-import com.ruoyi.zhdd.domain.vo.ChemicalDataVo;
-import com.ruoyi.zhdd.domain.bo.ChemicalDataBo;
 import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
 import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.zhdd.domain.ChemicalData;
+import com.ruoyi.zhdd.domain.bo.ChemicalDataBo;
+import com.ruoyi.zhdd.domain.vo.ChemicalDataVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -16,41 +16,47 @@ import java.util.List;
  * @date 2022-01-14
  */
 public interface IChemicalDataService extends IServicePlus<ChemicalData, ChemicalDataVo> {
-	/**
-	 * 查询单个
-	 * @return
-	 */
-	ChemicalDataVo queryById(String id);
-
-	/**
-	 * 查询列表
-	 */
+    /**
+     * 查询单个
+     *
+     * @return
+     */
+    ChemicalDataVo queryById(String id);
+
+    /**
+     * 查询列表
+     */
     TableDataInfo<ChemicalDataVo> queryPageList(ChemicalDataBo bo);
 
-	/**
-	 * 查询列表
-	 */
-	List<ChemicalDataVo> queryList(ChemicalDataBo bo);
-
-	/**
-	 * 根据新增业务对象插入危化品信息
-	 * @param bo 危化品信息新增业务对象
-	 * @return
-	 */
-	Boolean insertByBo(ChemicalDataBo bo);
-
-	/**
-	 * 根据编辑业务对象修改危化品信息
-	 * @param bo 危化品信息编辑业务对象
-	 * @return
-	 */
-	Boolean updateByBo(ChemicalDataBo bo);
-
-	/**
-	 * 校验并删除数据
-	 * @param ids 主键集合
-	 * @param isValid 是否校验,true-删除前校验,false-不校验
-	 * @return
-	 */
-	Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+    /**
+     * 查询列表
+     */
+    List<ChemicalDataVo> queryList(ChemicalDataBo bo);
+
+    /**
+     * 根据新增业务对象插入危化品信息
+     *
+     * @param bo 危化品信息新增业务对象
+     * @return
+     */
+    Boolean insertByBo(ChemicalDataBo bo);
+
+    /**
+     * 根据编辑业务对象修改危化品信息
+     *
+     * @param bo 危化品信息编辑业务对象
+     * @return
+     */
+    Boolean updateByBo(ChemicalDataBo bo);
+
+    /**
+     * 校验并删除数据
+     *
+     * @param ids     主键集合
+     * @param isValid 是否校验,true-删除前校验,false-不校验
+     * @return
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+
+    TableDataInfo<ChemicalDataVo> queryBasicPageList(ChemicalDataBo bo);
 }

+ 21 - 11
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/ChemicalDataServiceImpl.java

@@ -1,23 +1,23 @@
 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.common.core.mybatisplus.core.ServicePlusImpl;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.zhdd.domain.ChemicalData;
 import com.ruoyi.zhdd.domain.bo.ChemicalDataBo;
 import com.ruoyi.zhdd.domain.vo.ChemicalDataVo;
-import com.ruoyi.zhdd.domain.ChemicalData;
 import com.ruoyi.zhdd.mapper.ChemicalDataMapper;
 import com.ruoyi.zhdd.service.IChemicalDataService;
+import org.springframework.stereotype.Service;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.Collection;
 
 /**
  * 危化品信息Service业务层处理
@@ -29,7 +29,7 @@ import java.util.Collection;
 public class ChemicalDataServiceImpl extends ServicePlusImpl<ChemicalDataMapper, ChemicalData, ChemicalDataVo> implements IChemicalDataService {
 
     @Override
-    public ChemicalDataVo queryById(String id){
+    public ChemicalDataVo queryById(String id) {
         return getVoById(id);
     }
 
@@ -40,6 +40,15 @@ public class ChemicalDataServiceImpl extends ServicePlusImpl<ChemicalDataMapper,
     }
 
     @Override
+    public TableDataInfo<ChemicalDataVo> queryBasicPageList(ChemicalDataBo bo) {
+        LambdaQueryWrapper<ChemicalData> lqw = Wrappers.lambdaQuery();
+        lqw.select(ChemicalData::getId, ChemicalData::getName);
+        lqw.like(StringUtils.isNotBlank(bo.getName()), ChemicalData::getName, bo.getName());
+        PagePlus<ChemicalData, ChemicalDataVo> result = pageVo(PageUtils.buildPagePlus(), lqw);
+        return PageUtils.buildDataInfo(result);
+    }
+
+    @Override
     public List<ChemicalDataVo> queryList(ChemicalDataBo bo) {
         return listVo(buildQueryWrapper(bo));
     }
@@ -71,15 +80,16 @@ public class ChemicalDataServiceImpl extends ServicePlusImpl<ChemicalDataMapper,
      *
      * @param entity 实体类数据
      */
-    private void validEntityBeforeSave(ChemicalData entity){
+    private void validEntityBeforeSave(ChemicalData entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
     @Override
     public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return removeByIds(ids);
     }
+
 }

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

@@ -151,7 +151,7 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
         bo.setCreateDept(null);
         bo.setAssistDept(StrUtil.nullToEmpty(bo.getAssistDept()));
         bo.setAssistTaskUser(StrUtil.nullToEmpty(bo.getAssistTaskUser()));
-        bo.setAssistDeptUser(StrUtil.nullToEmpty(bo.getAssistDeptUser()));
+//        bo.setAssistDeptUser(StrUtil.nullToEmpty(bo.getAssistDeptUser()));
         // 是否为状态变更
         boolean flag;
 
@@ -219,7 +219,7 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
 //                !StrUtil.equals(bo.getAssistDept(), beforeInfo.getAssistDept())
             !StrUtil.equals(bo.getCommanderUser(), beforeInfo.getCommanderUser())
                 || !StrUtil.equals(bo.getAssistTaskUser(), beforeInfo.getAssistTaskUser())
-                || !StrUtil.equals(bo.getAssistDeptUser(), beforeInfo.getAssistDeptUser()))) {
+            /*|| !StrUtil.equals(bo.getAssistDeptUser(), beforeInfo.getAssistDeptUser())*/)) {
             // 协办部门派发或再次对协办修改
             // 重新冗余协办部门、总指挥
             /*if (StrUtil.isBlank(bo.getCommander())) {
@@ -238,6 +238,9 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
             // 变更的总指挥(目前需求:总指挥不能变更)
             String oldCommander = beforeInfo.getCommander();
             String newCommander = bo.getCommander();
+            List<MessagePushUser> oldCommanderUser = JSONUtil.toList(StrUtil.blankToDefault(beforeInfo.getCommanderUser(), "[]"), MessagePushUser.class);
+            List<MessagePushUser> newCommanderUser = JSONUtil.toList(StrUtil.blankToDefault(bo.getCommanderUser(), "[]"), MessagePushUser.class);
+            List<MessagePushUser> addCommanderUser = CollUtil.subtractToList(newCommanderUser, oldCommanderUser);
             /*if (StrUtil.isNotBlank(oldCommander) && !StrUtil.equals(oldCommander, newCommander)) {
                 // 删除关系
                 IncidentUser remove = new IncidentUser();
@@ -295,7 +298,7 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
             }
 
             // 变更的协办通知人员
-            List<MessagePushUser> oldAssistDeptUser = JSONUtil.toList(StrUtil.blankToDefault(beforeInfo.getAssistDeptUser(), "[]"), MessagePushUser.class);
+            /*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);
@@ -313,13 +316,29 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
                 save.setUserId(messagePushUser.getUserId());
                 save.setSource("6");
                 saveJsonArray.add(save);
-            }
+            }*/
+
+            if (addCommanderUser.size() > 0 || addAssistTaskUser.size() > 0) {
+                Set<MessagePushUser> sendUser = CollUtil.unionDistinct(addCommanderUser, addAssistTaskUser);
+                List<MessagePushUser> taskUser = JSONUtil.toList(StrUtil.blankToDefault(update.getAssistTaskUser(), "[]"), MessagePushUser.class);
+                String taskUserCollect = taskUser.stream().map(MessagePushUser::getNickName).collect(Collectors.joining(","));
+                // 生成一条指令并发送
+                IncidentTasksBo task = new IncidentTasksBo();
+                task.setIncidentId(bo.getId());
+                task.setTaskName(String.format("成立指挥机构:总指挥【%s】,协办部门【%s】,协办人员【%s】",
+                    StrUtil.blankToDefault(update.getCommanderText(), "无"),
+                    StrUtil.blankToDefault(update.getAssistDeptText(), "无"),
+                    StrUtil.blankToDefault(taskUserCollect, "无")));
+                task.setSendFlag("1");
+                task.setMessagePushUsers(new ArrayList<>(sendUser));
+                task.setTaskSend("1");
+                incidentTaskService.insertByBo(task);
 
-            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));
+                sendJsonObject.set("messagePushUsers", sendUser);
+                sendJsonObject.set("taskId", task.getId());
                 RedisUtils.publish(Constants.NOTICE_PUSH_SINGLE, sendJsonObject);
             }
 

+ 41 - 2
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentTaskServiceImpl.java

@@ -15,17 +15,20 @@ 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.ChemicalData;
 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;
+import com.ruoyi.zhdd.domain.vo.ChemicalDataVo;
 import com.ruoyi.zhdd.domain.vo.IncidentTaskVo;
 import com.ruoyi.zhdd.mapper.IncidentTaskMapper;
+import com.ruoyi.zhdd.service.IChemicalDataService;
 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;
 
@@ -46,7 +49,9 @@ import java.util.stream.Collectors;
 public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper, IncidentTask, IncidentTaskVo> implements IIncidentTaskService {
 
     @Autowired
-    private ISysDeptService sysDeptService;
+    private IChemicalDataService chemicalDataService;
+    @Value("${third.chemicalUrl}")
+    private String chemicalUrl;
 
     @Override
     public IncidentTaskVo queryById(String id) {
@@ -99,6 +104,23 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
                 }
             }*/
             update.setExprJson(JSONUtil.toJsonStr(bo.getMessagePushUsers()));
+            // 翻译危化品
+            if (StrUtil.isNotBlank(bo.getChemicals())) {
+                List<ChemicalDataVo> chemicalDataVos = chemicalDataService.listVo(Wrappers.<ChemicalData>lambdaQuery().in(ChemicalData::getId, StrUtil.split(bo.getChemicals(), ",")));
+                StringBuilder sb = new StringBuilder();
+                if (chemicalDataVos != null) {
+                    update.setChemicalsText(chemicalDataVos.stream().map(ChemicalDataVo::getName).collect(Collectors.joining(",")));
+                    sb.append("<tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">危化品</td><td style=\"text-align:left;\">");
+                    for (ChemicalDataVo chemicalDataVo : chemicalDataVos) {
+                        sb.append("<a href=\"").append(chemicalUrl).append(chemicalDataVo.getId()).append("\">").append(chemicalDataVo.getName()).append("</a>、");
+                    }
+                    sb.append("</td></tr>");
+                } else {
+                    update.setChemicalsText("");
+                    update.setChemicalsHtml("");
+                }
+                update.setChemicalsHtml(sb.toString().replace("、</td></tr>", "</td></tr>"));
+            }
             updateById(update);
             jsonObject.set("des", "更新处置方案:" + bo.getTaskName());
             jsonObject.set("taskId", update.getId());
@@ -155,6 +177,23 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
                 }
             }*/
             add.setExprJson(JSONUtil.toJsonStr(bo.getMessagePushUsers()));
+            // 翻译危化品
+            if (StrUtil.isNotBlank(bo.getChemicals())) {
+                List<ChemicalDataVo> chemicalDataVos = chemicalDataService.listVo(Wrappers.<ChemicalData>lambdaQuery().in(ChemicalData::getId, StrUtil.split(bo.getChemicals(), ",")));
+                StringBuilder sb = new StringBuilder();
+                if (chemicalDataVos != null) {
+                    add.setChemicalsText(chemicalDataVos.stream().map(ChemicalDataVo::getName).collect(Collectors.joining(",")));
+                    sb.append("<tr><td style=\"color: darkgray;width: 20%;vertical-align: top;\">危化品</td><td style=\"text-align:left;\">");
+                    for (ChemicalDataVo chemicalDataVo : chemicalDataVos) {
+                        sb.append("<a href=\"").append(chemicalUrl).append(chemicalDataVo.getId()).append("\">").append(chemicalDataVo.getName()).append("</a>、");
+                    }
+                    sb.append("</td></tr>");
+                } else {
+                    add.setChemicalsText("");
+                    add.setChemicalsHtml("");
+                }
+                add.setChemicalsHtml(sb.toString().replace("、</td></tr>", "</td></tr>"));
+            }
             save(add);
             // 为了发送时知道方案的id
             bo.setId(add.getId());