Bläddra i källkod

2022-12-7 风险应急处置指挥平台相关接口

chaiyunlong 3 år sedan
förälder
incheckning
db0d4deb64
14 ändrade filer med 219 tillägg och 10 borttagningar
  1. 3 0
      zd-model/src/main/java/com/zd/model/constant/MqttConstants.java
  2. 17 0
      zd-model/src/main/java/com/zd/model/domain/per/PerPrefix.java
  3. 8 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabBuildFloorController.java
  4. 6 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabBuildFloorLayoutController.java
  5. 4 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabExitLineVertexController.java
  6. 73 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/bigview/BigViewController.java
  7. 13 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/bigview/HazardTotal.java
  8. 50 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/vo/LabHornMessageVo.java
  9. 2 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabHardwareStateMapper.java
  10. 5 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mqtt/enums/BigViewDataType.java
  11. 16 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mqtt/service/impl/SubMessageSendManager.java
  12. 3 2
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/BigViewServiceImpl.java
  13. 5 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabExitLineVertexServiceImpl.java
  14. 14 4
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabBigViewMapper.xml

+ 3 - 0
zd-model/src/main/java/com/zd/model/constant/MqttConstants.java

@@ -55,6 +55,9 @@ public interface MqttConstants {
     //逃生指引线路通知
     String TOPIC_LAB_EXIT_LINE = "lab/exit/line";
 
+    //逃生指引线路通知
+    String TOPIC_LAB_HORN = "lab/horn";
+
     //管控工作通知
     String TOPIC_LAB_MANAGE_WORK = "manage/work";
 

+ 17 - 0
zd-model/src/main/java/com/zd/model/domain/per/PerPrefix.java

@@ -537,6 +537,23 @@ public class PerPrefix {
      */
     public static final String LABORATORY_TOOLGEN = "tool:gen:";
 
+    /**   ================================================新布局图权限=====================================     */
+    /**
+     * 楼栋楼层:列表
+     */
+    public static final String LABORATORY_BUILDFLOOR = "laboratory:buildfloor:";
+
+    /**
+     * 楼栋楼层:列表
+     */
+    public static final String LABORATORY_BUILDFLAYOUT = "laboratory:buildlayout:";
+
+    /**
+     * 设置布局图:新增
+     */
+    public static final String LABORATORY_EXITVERTEX = "laboratory:exitvertex:";
+
+
     /**
      * 调度任务信息操作处理
      */

+ 8 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabBuildFloorController.java

@@ -2,6 +2,7 @@ package com.zd.laboratory.controller;
 
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import com.zd.common.core.annotation.Log;
+import com.zd.common.core.annotation.PreAuthorize;
 import com.zd.common.core.log.BusinessType;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.common.swagger.config.Knife4jConfiguration;
@@ -10,6 +11,8 @@ import com.zd.laboratory.domain.vo.LabBuildFloorPage;
 import com.zd.laboratory.domain.vo.LabBuildFloorVo;
 import com.zd.laboratory.service.ILabBuildFloorService;
 import com.zd.model.domain.ResultData;
+import com.zd.model.domain.per.PerFun;
+import com.zd.model.domain.per.PerPrefix;
 import com.zd.model.page.TableDataInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -47,6 +50,7 @@ public class LabBuildFloorController  extends BaseController<LabBuildFloor> {
     /**
      * 新增楼栋(楼层)
      */
+    @PreAuthorize(hasPermi = PerPrefix.LABORATORY_BUILDFLOOR + PerFun.ADD)
     @ApiOperation(value = "新增楼栋(楼层)")
     @Log(title = "新增楼栋(楼层)", businessType = BusinessType.INSERT)
     @PostMapping
@@ -57,6 +61,7 @@ public class LabBuildFloorController  extends BaseController<LabBuildFloor> {
     /**
      * 修改楼栋(楼层)
      */
+    @PreAuthorize(hasPermi = PerPrefix.LABORATORY_BUILDFLOOR + PerFun.EDIT)
     @ApiOperation(value = "修改楼栋(楼层)")
     @Log(title = "楼栋(楼层)", businessType = BusinessType.UPDATE)
     @PutMapping
@@ -67,6 +72,7 @@ public class LabBuildFloorController  extends BaseController<LabBuildFloor> {
     /**
      * 查询楼栋(楼层)tree结构列表
      */
+    @PreAuthorize(hasPermi = PerPrefix.LABORATORY_BUILDFLOOR + PerFun.LIST)
     @GetMapping("/getTreeList")
     @ApiOperation(value = "查询楼栋(楼层)列表")
     public ResultData <List<LabBuildFloorVo>> getTreeList(LabBuildFloor labBuildFloor) {
@@ -77,6 +83,7 @@ public class LabBuildFloorController  extends BaseController<LabBuildFloor> {
     /**
      * 查询楼栋(楼层)子集列表
      */
+    @PreAuthorize(hasPermi = PerPrefix.LABORATORY_BUILDFLOOR + PerFun.LIST)
     @GetMapping("/getTreeSonList")
     @ApiOperation(value = "查询楼栋(楼层)子集列表")
     public TableDataInfo <LabBuildFloor> getTreeSonList(LabBuildFloor labBuildFloor) {
@@ -92,6 +99,7 @@ public class LabBuildFloorController  extends BaseController<LabBuildFloor> {
     /**
      * 删除楼栋(楼层)
      */
+    @PreAuthorize(hasPermi = PerPrefix.LABORATORY_BUILDFLOOR + PerFun.REMOVE)
     @ApiOperation(value = "删除楼栋(楼层)")
     @Log(title = "楼栋(楼层)", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")

+ 6 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabBuildFloorLayoutController.java

@@ -2,6 +2,7 @@ package com.zd.laboratory.controller;
 
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import com.zd.common.core.annotation.Log;
+import com.zd.common.core.annotation.PreAuthorize;
 import com.zd.common.core.log.BusinessType;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.common.swagger.config.Knife4jConfiguration;
@@ -10,6 +11,8 @@ import com.zd.laboratory.domain.LabExitLineVertex;
 import com.zd.laboratory.domain.vo.LabBuildFloorLayoutVo;
 import com.zd.laboratory.service.ILabBuildFloorLayoutService;
 import com.zd.model.domain.ResultData;
+import com.zd.model.domain.per.PerFun;
+import com.zd.model.domain.per.PerPrefix;
 import com.zd.model.page.TableDataInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -36,6 +39,7 @@ public class LabBuildFloorLayoutController extends BaseController<LabBuildFloorL
     /**
      * 查询布局图列表
      */
+    @PreAuthorize(hasPermi = PerPrefix.LABORATORY_BUILDFLAYOUT + PerFun.LIST)
     @GetMapping("/list")
     @ApiOperation(value = "查询布局图列表")
     public TableDataInfo <LabBuildFloorLayout> list(LabBuildFloorLayout labBuildFloorLayout) {
@@ -47,6 +51,7 @@ public class LabBuildFloorLayoutController extends BaseController<LabBuildFloorL
     /**
      * 获取布局图详细信息
      */
+    @PreAuthorize(hasPermi = PerPrefix.LABORATORY_BUILDFLAYOUT + PerFun.QUERY)
     @ApiOperation(value = "获取布局图详细信息")
     @GetMapping(value = "/{id}")
     public ResultData<LabBuildFloorLayoutVo> getInfo(@PathVariable("id") Long id) {
@@ -66,6 +71,7 @@ public class LabBuildFloorLayoutController extends BaseController<LabBuildFloorL
     /**
      * 修改布局图
      */
+    @PreAuthorize(hasPermi = PerPrefix.LABORATORY_BUILDFLAYOUT + PerFun.EDIT)
     @ApiOperation(value = "修改布局图")
     @Log(title = "布局图", businessType = BusinessType.UPDATE)
     @PutMapping

+ 4 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabExitLineVertexController.java

@@ -2,6 +2,7 @@ package com.zd.laboratory.controller;
 
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import com.zd.common.core.annotation.Log;
+import com.zd.common.core.annotation.PreAuthorize;
 import com.zd.common.core.log.BusinessType;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.common.swagger.config.Knife4jConfiguration;
@@ -10,6 +11,8 @@ import com.zd.laboratory.domain.vo.LabExitLineEvacuationVo;
 import com.zd.laboratory.domain.vo.LabExitLineVertexVo;
 import com.zd.laboratory.service.ILabExitLineVertexService;
 import com.zd.model.domain.ResultData;
+import com.zd.model.domain.per.PerFun;
+import com.zd.model.domain.per.PerPrefix;
 import com.zd.model.page.TableDataInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -57,6 +60,7 @@ public class LabExitLineVertexController extends BaseController {
     /**
      * 新增逃生线路主
      */
+    @PreAuthorize(hasPermi = PerPrefix.LABORATORY_EXITVERTEX + PerFun.ADD)
     @ApiOperation(value = "新增逃生线路主")
     @Log(title = "逃生线路主", businessType = BusinessType.INSERT)
     @PostMapping

+ 73 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/bigview/BigViewController.java

@@ -1,12 +1,17 @@
 package com.zd.laboratory.controller.bigview;
 
+import com.zd.algorithm.api.speaker.feign.RemoteSpeakService;
+import com.zd.common.core.redis.RedisService;
+import com.zd.common.core.security.TokenService;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.laboratory.api.entity.LabSubjectEntity;
 import com.zd.laboratory.api.entity.LabSubjectControllerVO;
+import com.zd.laboratory.domain.LabHazardSubjectRelation;
 import com.zd.laboratory.domain.bigview.HardwareState;
 import com.zd.laboratory.domain.bigview.HazardTotal;
 import com.zd.laboratory.domain.bigview.SenseState;
 import com.zd.laboratory.domain.vo.*;
+import com.zd.laboratory.mqtt.service.impl.SubMessageSendManager;
 import com.zd.laboratory.service.*;
 import com.zd.laboratory.service.impl.BigViewServiceImpl;
 import com.zd.laboratory.service.impl.LabSubjectManagerService;
@@ -18,14 +23,18 @@ import com.zd.model.page.TableDataInfo;
 import com.zd.system.api.feign.RemoteUserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import jdk.nashorn.internal.parser.Token;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -62,6 +71,18 @@ public class BigViewController extends BaseController {
     @Autowired
     private RemoteUserService remoteUserService;
 
+    @Autowired
+    RedisService redisService;
+
+    @Autowired
+    private SubMessageSendManager messageSendService;
+
+    @Autowired
+    private RemoteSpeakService remoteSpeakService;
+
+    @Autowired
+    private TokenService tokenService;
+
     /**
      * echarts-条形图:设备概览
      *
@@ -96,7 +117,7 @@ public class BigViewController extends BaseController {
     @ApiOperation("echarts-条形图:危险源")
     @GetMapping("/HazardTotal")
     public Option echartsHazardTotalview() {
-        List<HazardTotal> list = bigViewService.queryHazardRank();
+        List<HazardTotal> list = bigViewService.queryHazardRank(new LabHazardSubjectRelation());
         Builder builder = new EchartsBuilder(list);
         return builder.build();
     }
@@ -270,4 +291,55 @@ public class BigViewController extends BaseController {
         startPage();
         return getDataTable(labGradeManageRecordService.queryManageWorkChartDetails(labManageWorkChartVo));
     }
+
+
+    /**
+     * 疏散页面统计:疏散危险源统计
+     *
+     * @return
+     */
+    @ApiOperation("疏散页面统计:疏散危险源统计")
+    @GetMapping("/exitHazardTotal")
+    public ResultData exitHazardTotal(LabHazardSubjectRelation labHazardSubjectRelation) {
+        List<HazardTotal> list = bigViewService.queryHazardRank(labHazardSubjectRelation);
+        if(list.size()>5){
+            return ResultData.success(list.subList(0,5));
+        }
+        return ResultData.success(list);
+    }
+
+
+    /**
+     * 风险应急处置:获取喇叭消息
+     *
+     * @return
+     */
+    @ApiOperation("喇叭消息暂存:喇叭消息最后一条")
+    @GetMapping("/getHornLastMess")
+    public ResultData getHornLastMess(LabHornMessageVo labHornMessageVo) {
+        if(redisService.getCacheObject("sendHornMess"+labHornMessageVo.getFloorId())!=null){
+            return ResultData.success(redisService.getCacheObject("sendHornMess"+labHornMessageVo.getFloorId()));
+        }
+        return ResultData.success(new LabHornMessageVo());
+    }
+
+
+    /**
+     * 风险应急处置:喇叭消息暂存
+     *
+     * @return
+     */
+    @ApiOperation("风险应急处置:喇叭消息暂存")
+    @PostMapping("/sendHornMess")
+    public ResultData sendHornMess(@RequestBody LabHornMessageVo labHornMessageVo) {
+        LocalDateTime localDateTime = LocalDateTime.now();
+        labHornMessageVo.setSendName(tokenService.getLoginUser().getNickName());
+        labHornMessageVo.setNowTime(localDateTime.format(DateTimeFormatter.ofPattern("HH:mm")));
+        redisService.setCacheObject("sendHornMess"+labHornMessageVo.getFloorId(), labHornMessageVo, 3L, TimeUnit.HOURS);
+        //todo 消息下发,告诉前端
+        messageSendService.sendHornMessToFloor(labHornMessageVo.getFloorId());
+        //todo 调用喇叭服务
+//        remoteSpeakService.textParseUrlIps(labHornMessageVo.getMessageContext(),labHornMessageVo.getPlayVo());
+        return ResultData.success();
+    }
 }

+ 13 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/bigview/HazardTotal.java

@@ -22,6 +22,11 @@ public class HazardTotal implements EchartsData<Long> {
      */
     Long total;
 
+    /**
+     * 危险源占比
+     */
+    Double percentage;
+
     @Override
     public String axisData() {
         return name;
@@ -52,4 +57,12 @@ public class HazardTotal implements EchartsData<Long> {
     public void setTotal(Long total) {
         this.total = total;
     }
+
+    public Double getPercentage() {
+        return percentage;
+    }
+
+    public void setPercentage(Double percentage) {
+        this.percentage = percentage;
+    }
 }

+ 50 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/vo/LabHornMessageVo.java

@@ -0,0 +1,50 @@
+package com.zd.laboratory.domain.vo;
+
+import com.zd.algorithm.api.speaker.entity.PlayVo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Controller
+ *
+ * @author cyl
+ * @date 2022/12/6
+ */
+@ApiModel("喇叭消息对象")
+@Data
+public class LabHornMessageVo {
+
+    /**
+     * 楼层id
+     */
+    @ApiModelProperty("楼层id")
+    private Long floorId;
+
+    /**
+     * 消息内容
+     */
+    @ApiModelProperty("消息内容")
+    private String messageContext;
+
+    /**
+     * 发送人姓名
+     */
+    @ApiModelProperty("发送人姓名")
+    private String sendName;
+
+    /**
+     * 发送时间
+     */
+    @ApiModelProperty("发送时间")
+    private String nowTime;
+
+    /**
+     * 喇叭的
+     */
+    @ApiModelProperty("发送时间")
+    List <PlayVo> playVo;
+
+}

+ 2 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabHardwareStateMapper.java

@@ -1,6 +1,7 @@
 package com.zd.laboratory.mapper;
 
 import com.zd.laboratory.api.entity.LabSubjectEntity;
+import com.zd.laboratory.domain.LabHazardSubjectRelation;
 import com.zd.laboratory.domain.LabSubject;
 import com.zd.laboratory.domain.bigview.HardwareState;
 import com.zd.laboratory.domain.bigview.HazardTotal;
@@ -37,7 +38,7 @@ public interface LabHardwareStateMapper {
      *
      * @return
      */
-    List<HazardTotal> queryHazardRank();
+    List<HazardTotal> queryHazardRank(LabHazardSubjectRelation labHazardSubjectRelation);
 
 
     /**

+ 5 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mqtt/enums/BigViewDataType.java

@@ -31,7 +31,11 @@ public enum BigViewDataType {
     /**
      * 通知一体机logo同步
      */
-    NOTICE_ONEPC_LOGO;
+    NOTICE_ONEPC_LOGO,
+    /**
+     * 喇叭消息下发通知
+     */
+    FLOOR_HORN;
 
 
 

+ 16 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mqtt/service/impl/SubMessageSendManager.java

@@ -229,6 +229,20 @@ public class SubMessageSendManager {
     }
 
     /**
+     * 发送喇叭消息-到楼层
+     *
+     * @param floorId
+     */
+    public void sendHornMessToFloor(Long floorId) {
+        if (floorId == null) {
+            return;
+        }
+        MessageBody messageBody = new MessageBody();
+        messageBody.setData(BigViewDataType.FLOOR_HORN);
+        commonSend.send(MqttConstants.TOPIC_LAB_HORN + floorId, messageBody, SendMode.ONCE);
+    }
+
+    /**
      * 通知一体机logo查询
      *
      */
@@ -299,6 +313,8 @@ public class SubMessageSendManager {
         commonSend.send(MqttConstants.TOPIC_LAB_ONEPC_SUB_UPCONFIG + object.get("onepcHardwareNum"), messageBody, SendMode.ONCE);
     }
 
+
+
     /**
      * 发送传感器上线下线消息
      * context 发送内容

+ 3 - 2
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/BigViewServiceImpl.java

@@ -6,6 +6,7 @@ import com.zd.common.core.utils.DictUtils;
 import com.zd.laboratory.api.entity.LabSubjectEntity;
 import com.zd.laboratory.api.entity.LabSubjectControllerVO;
 import com.zd.laboratory.api.entity.SubAddrr;
+import com.zd.laboratory.domain.LabHazardSubjectRelation;
 import com.zd.laboratory.domain.LabSubject;
 import com.zd.laboratory.domain.bigview.HardwareState;
 import com.zd.laboratory.domain.bigview.HazardTotal;
@@ -82,8 +83,8 @@ public class BigViewServiceImpl {
      *
      * @return
      */
-    public List<HazardTotal> queryHazardRank() {
-        return hardwareStateMapper.queryHazardRank();
+    public List<HazardTotal> queryHazardRank(LabHazardSubjectRelation labHazardSubjectRelation) {
+        return hardwareStateMapper.queryHazardRank(labHazardSubjectRelation);
 
     }
 

+ 5 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabExitLineVertexServiceImpl.java

@@ -294,9 +294,13 @@ public class LabExitLineVertexServiceImpl implements ILabExitLineVertexService {
                 .forEach(b->{
                     try {
                         if(a.getRelayType().intValue()==1){
-                            //这里打卡继电器的开关
+                            //这里打卡继电器的开关(老继电器)
                             socketService.sendCommand(Symbol.order.control, a.getRelayCode(), Symbol.command.open, a.getRelayBit());
                             Thread.sleep(timeWaitConfigUtils.getWaitTime());
+                        }else{
+                            //这里打卡继电器的开关(新继电器)
+                            socketService.sendMqttCommand(a.getRelayCode(), Symbol.command.open ,a.getRelayBit()+"");
+                            Thread.sleep(timeWaitConfigUtils.getWaitTime());
                         }
 
                     } catch (InterruptedException e) {

+ 14 - 4
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabBigViewMapper.xml

@@ -17,13 +17,23 @@
     </select>
 
     <!--   危险源排名统计 -->
-    <select id="queryHazardRank"  resultType="com.zd.laboratory.domain.bigview.HazardTotal">
+    <select id="queryHazardRank" parameterType="com.zd.laboratory.domain.LabHazardSubjectRelation"  resultType="com.zd.laboratory.domain.bigview.HazardTotal">
 
-        select  h.ch_name as `name`,  count(s.id) as total   from  lab_hazard_subject_relation s
-         left join lab_hazard h
+        select  h.ch_name as `name`,  count(s.id) as total,
+        CONVERT(COUNT(s.id)/(SELECT COUNT(1) FROM lab_hazard_subject_relation s
+         LEFT JOIN lab_hazard h
 
+                   ON s.hazard_id = h.id
+        ),DECIMAL(10,3))*100 percentage
+        from  lab_hazard_subject_relation s
+         left join lab_hazard h
                    on s.hazard_id = h.id
-
+        <where>
+            1=1
+            <if test="subjectId != null and subjectId != ''">
+                and s.subject_id = #{subjectId}
+            </if>
+        </where>
         group by s.hazard_id  ORDER BY total desc
     </select>