Parcourir la source

2022-12-23 首页新楼栋楼层统计数据

chaiyunlong il y a 3 ans
Parent
commit
8c03a09809
20 fichiers modifiés avec 355 ajouts et 12 suppressions
  1. 3 0
      zd-model/src/main/java/com/zd/model/constant/MqttConstants.java
  2. 26 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabBuildFloorController.java
  3. 10 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabBuildFloorLayoutController.java
  4. 29 4
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/bigview/BigViewController.java
  5. 13 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/LabHazardSubjectRelation.java
  6. 12 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/vo/LabBuildFloorVo.java
  7. 10 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabBuildFloorLayoutMapper.java
  8. 10 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabBuildFloorMapper.java
  9. 9 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabExitLineVertexMapper.java
  10. 13 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mqtt/service/impl/SubMessageSendManager.java
  11. 14 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/onemachine/service/OneMachineService.java
  12. 9 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabBuildFloorLayoutService.java
  13. 10 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabBuildFloorService.java
  14. 16 3
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabBuildFloorLayoutServiceImpl.java
  15. 42 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabBuildFloorServiceImpl.java
  16. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabExitLineVertexServiceImpl.java
  17. 5 2
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabBigViewMapper.xml
  18. 86 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabBuildFloorLayoutMapper.xml
  19. 21 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabBuildFloorMapper.xml
  20. 10 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabExitLineVertexMapper.xml

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

@@ -64,6 +64,9 @@ public interface MqttConstants {
     //实验室人员变动通知
     //实验室人员变动通知
     String TOPIC_LAB_SUB_USER = "lab/subuser/change";
     String TOPIC_LAB_SUB_USER = "lab/subuser/change";
 
 
+    //楼栋下人员变动通知
+    String TOPIC_LAB_BUILD_USER = "lab/builduser/change";
+
     //管控工作通知
     //管控工作通知
     String TOPIC_LAB_MANAGE_WORK = "manage/work";
     String TOPIC_LAB_MANAGE_WORK = "manage/work";
 
 

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

@@ -130,6 +130,22 @@ public class LabBuildFloorController  extends BaseController<LabBuildFloor> {
         return ResultData.success(labBuildFloorService.getBuildOrFloorList(labBuildFloorVo));
         return ResultData.success(labBuildFloorService.getBuildOrFloorList(labBuildFloorVo));
     }
     }
 
 
+
+    /**
+     * 查询登录人管理的实验室的楼栋(楼层)对象
+     */
+    @GetMapping("/getBuildOrFloorInfo")
+    @ApiOperation(value = "查询登录人管理的实验室的楼栋(楼层)对象")
+    public ResultData getBuildOrFloorInfo(LabBuildFloorVo labBuildFloorVo) {
+        List <LabBuildFloorVo> buildFloorList = labBuildFloorService.getBuildOrFloorList(labBuildFloorVo);
+        if(buildFloorList.size()>0){
+            return ResultData.success(buildFloorList.get(0));
+        }
+        LabBuildFloorVo buildFloorVo = new LabBuildFloorVo();
+        buildFloorVo.setOnline(0);
+        return ResultData.success(buildFloorVo);
+    }
+
     /**
     /**
      * 查询楼栋(楼层)列表
      * 查询楼栋(楼层)列表
      */
      */
@@ -138,4 +154,14 @@ public class LabBuildFloorController  extends BaseController<LabBuildFloor> {
     public ResultData selBuildOrFloorList(LabBuildFloor labBuildFloor) {
     public ResultData selBuildOrFloorList(LabBuildFloor labBuildFloor) {
         return ResultData.success(labBuildFloorService.selectLabBuildFloorList(labBuildFloor));
         return ResultData.success(labBuildFloorService.selectLabBuildFloorList(labBuildFloor));
     }
     }
+
+
+    /**
+     * 查询楼栋(楼层)列表(首页用)
+     */
+    @GetMapping("/getBuildOrFloorDetailList")
+    @ApiOperation(value = "查询楼栋(楼层)列表(首页用)")
+    public ResultData getBuildOrFloorDetailList(LabBuildFloorVo labBuildFloorVo) {
+        return ResultData.success(labBuildFloorService.getBuildOrFloorDetailList(labBuildFloorVo));
+    }
 }
 }

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

@@ -89,4 +89,14 @@ public class LabBuildFloorLayoutController extends BaseController<LabBuildFloorL
         return ResultData.result(labBuildFloorLayoutService.deleteLabBuildFloorLayoutByIds(ids));
         return ResultData.result(labBuildFloorLayoutService.deleteLabBuildFloorLayoutByIds(ids));
     }
     }
 
 
+
+    /**
+     * 智能物联,根据楼栋统计物联设备
+     */
+    @ApiOperation(value = "智能物联,根据楼栋统计物联设备")
+    @GetMapping(value = "/getLotStatis")
+    public ResultData getLotStatis(LabBuildFloorLayout labBuildFloorLayout) {
+        return ResultData.success(labBuildFloorLayoutService.getLotStatis(labBuildFloorLayout));
+    }
+
 }
 }

+ 29 - 4
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/bigview/BigViewController.java

@@ -3,6 +3,7 @@ package com.zd.laboratory.controller.bigview;
 import com.zd.algorithm.api.speaker.feign.RemoteSpeakService;
 import com.zd.algorithm.api.speaker.feign.RemoteSpeakService;
 import com.zd.common.core.redis.RedisService;
 import com.zd.common.core.redis.RedisService;
 import com.zd.common.core.security.TokenService;
 import com.zd.common.core.security.TokenService;
+import com.zd.common.core.utils.StringUtils;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.laboratory.api.entity.LabSubjectEntity;
 import com.zd.laboratory.api.entity.LabSubjectEntity;
 import com.zd.laboratory.api.entity.LabSubjectControllerVO;
 import com.zd.laboratory.api.entity.LabSubjectControllerVO;
@@ -30,10 +31,7 @@ import org.springframework.web.bind.annotation.*;
 
 
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -309,6 +307,33 @@ public class BigViewController extends BaseController {
     }
     }
 
 
 
 
+
+    /**
+     * 疏散页面统计:楼栋下的危险源统计
+     *
+     * @return
+     */
+    @ApiOperation("疏散页面统计:楼栋下的危险源统计")
+    @GetMapping("/exitHazardTotalByBuildId")
+    public ResultData exitHazardTotalByBuildId(LabHazardSubjectRelation labHazardSubjectRelation) {
+        Map<String,Object> allMap = new HashMap <>();
+        allMap.put("hazardSum",0);
+        allMap.put("hazardTotal",new ArrayList<HazardTotal>());
+        if(StringUtils.isNull(labHazardSubjectRelation.getBuildId())){
+            return ResultData.success(allMap);
+        }
+        List<HazardTotal> list = bigViewService.queryHazardRank(labHazardSubjectRelation);
+        allMap.put("hazardSum",list.stream().mapToLong(HazardTotal::getTotal).sum());
+        if(list.size()>5){
+            List<HazardTotal> splitList = list.subList(0,5);
+            allMap.put("hazardTotal",splitList);
+            return ResultData.success(allMap);
+        }
+        allMap.put("hazardTotal",list);
+        return ResultData.success(allMap);
+    }
+
+
     /**
     /**
      * 风险应急处置:获取喇叭消息
      * 风险应急处置:获取喇叭消息
      *
      *

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

@@ -105,6 +105,11 @@ public class LabHazardSubjectRelation extends BaseEntity {
      */
      */
     private String anotherCode;
     private String anotherCode;
 
 
+    /**
+     * 新楼栋id
+     */
+    private Long buildId;
+
 
 
     public HazardTypeEnum getHazardType() {
     public HazardTypeEnum getHazardType() {
         return hazardType;
         return hazardType;
@@ -185,4 +190,12 @@ public class LabHazardSubjectRelation extends BaseEntity {
     public void setAnotherCode(String anotherCode) {
     public void setAnotherCode(String anotherCode) {
         this.anotherCode = anotherCode;
         this.anotherCode = anotherCode;
     }
     }
+
+    public Long getBuildId() {
+        return buildId;
+    }
+
+    public void setBuildId(Long buildId) {
+        this.buildId = buildId;
+    }
 }
 }

+ 12 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/vo/LabBuildFloorVo.java

@@ -1,6 +1,8 @@
 package com.zd.laboratory.domain.vo;
 package com.zd.laboratory.domain.vo;
 
 
 import com.zd.laboratory.domain.LabBuildFloor;
 import com.zd.laboratory.domain.LabBuildFloor;
+import com.zd.laboratory.domain.LabExitLineVertex;
+import com.zd.laboratory.domain.LabSparseHardware;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
@@ -27,4 +29,14 @@ public class LabBuildFloorVo extends LabBuildFloor {
     /** 实验室数量 */
     /** 实验室数量 */
     @ApiModelProperty(value = "实验室数量")
     @ApiModelProperty(value = "实验室数量")
     private Integer subNum;
     private Integer subNum;
+
+    /** 楼栋在线人数 */
+    @ApiModelProperty(value = "楼栋在线人数")
+    private Integer online;
+
+    /** 楼层对应的布局图数据 */
+    private List<LabExitLineVertex> exitLineVertexList = new ArrayList <>();
+
+    /** 楼层对应的摄像头数据 */
+    private List<LabSparseHardware> sparseHardwareList = new ArrayList <>();
 }
 }

+ 10 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabBuildFloorLayoutMapper.java

@@ -6,6 +6,7 @@ import com.zd.laboratory.domain.vo.LabBuildFloorLayoutVo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * Controller
  * Controller
@@ -70,4 +71,13 @@ public interface LabBuildFloorLayoutMapper {
      * 根据实验室id 查询 楼栋 楼层 实验室信息
      * 根据实验室id 查询 楼栋 楼层 实验室信息
      */
      */
     LabBuildFloorLayoutDTO selectBuildInfoBySubIdAndUser(@Param("subjectId") Long subjectId, @Param("userId") Long userId);
     LabBuildFloorLayoutDTO selectBuildInfoBySubIdAndUser(@Param("subjectId") Long subjectId, @Param("userId") Long userId);
+
+
+    /**
+     * 查询布局图列表
+     *
+     * @param labBuildFloorLayout 布局图
+     * @return 布局图集合
+     */
+    public List <Map <String,Object>> getLotStatis(LabBuildFloorLayout labBuildFloorLayout);
 }
 }

+ 10 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabBuildFloorMapper.java

@@ -81,5 +81,14 @@ public interface LabBuildFloorMapper {
      * @param labBuildFloorVo 楼栋楼层
      * @param labBuildFloorVo 楼栋楼层
      * @return 楼栋楼层集合
      * @return 楼栋楼层集合
      */
      */
-    public List <LabBuildFloor> getBuildOrFloorList(LabBuildFloorVo labBuildFloorVo);
+    public List <LabBuildFloorVo> getBuildOrFloorList(LabBuildFloorVo labBuildFloorVo);
+
+
+    /**
+     * 查询楼栋(楼层)列表(首页用)
+     *
+     * @param labBuildFloorVo 楼栋楼层
+     * @return 楼栋楼层集合
+     */
+    public List <LabBuildFloorVo> getBuildOrFloorDetailList(LabBuildFloorVo labBuildFloorVo);
 }
 }

+ 9 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabExitLineVertexMapper.java

@@ -82,4 +82,13 @@ public interface LabExitLineVertexMapper
      * @return 布局图
      * @return 布局图
      */
      */
     public List<LabExitLineVertexDetailVo> getExitLineVertexList(LabExitLineVertex labExitLineVertex);
     public List<LabExitLineVertexDetailVo> getExitLineVertexList(LabExitLineVertex labExitLineVertex);
+
+
+    /**
+     * 查询逃生线路主列表
+     *
+     * @param ids 楼层id
+     * @return 逃生线路主集合
+     */
+    public List<LabExitLineVertex> selectExitLineVertexByIds(List<Long> ids);
 }
 }

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

@@ -293,6 +293,19 @@ public class SubMessageSendManager {
         commonSend.send(MqttConstants.TOPIC_LAB_SUB_USER + floorId  , messageBody, SendMode.ONCE);
         commonSend.send(MqttConstants.TOPIC_LAB_SUB_USER + floorId  , messageBody, SendMode.ONCE);
     }
     }
 
 
+    /**
+     * 楼栋下人员变动下发通知
+     *
+     */
+    public void builUserByChange(Long buildId) {
+        if (buildId == null) {
+            return;
+        }
+        MessageBody messageBody = new MessageBody();
+        messageBody.setData(buildId);
+        commonSend.send(MqttConstants.TOPIC_LAB_BUILD_USER + buildId  , messageBody, SendMode.ONCE);
+    }
+
 
 
     /**
     /**
      * 通知一体机logo查询
      * 通知一体机logo查询

+ 14 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/onemachine/service/OneMachineService.java

@@ -377,6 +377,8 @@ public class OneMachineService implements ValidationSignInPerInfo {
                             LabBuildFloorLayoutVo floorVo = floorLayoutVoList.get(0);
                             LabBuildFloorLayoutVo floorVo = floorLayoutVoList.get(0);
                             //todo 这里需要给管控页面推送一个消息
                             //todo 这里需要给管控页面推送一个消息
                             messageSendService.subUserByChange(floorVo.getFloorId(),Long.parseLong(s));
                             messageSendService.subUserByChange(floorVo.getFloorId(),Long.parseLong(s));
+                            //todo 这里需要给管控页面推送一个消息
+                            messageSendService.builUserByChange(floorVo.getBuildId());
                         }
                         }
                     }else{
                     }else{
                         return ResultData.fail("当前用户已经签到成功,不能重复签到。");
                         return ResultData.fail("当前用户已经签到成功,不能重复签到。");
@@ -426,6 +428,18 @@ public class OneMachineService implements ValidationSignInPerInfo {
                             // throw new ServiceException("打卡签出奖励分记录保存失败!");
                             // throw new ServiceException("打卡签出奖励分记录保存失败!");
                         }
                         }
                     }
                     }
+
+                    //todo 这里通过实验室id查询楼层id
+                    LabBuildFloorLayout labBuildFloorLayout = new LabBuildFloorLayout();
+                    labBuildFloorLayout.setSubId(Long.parseLong(s));
+                    List <LabBuildFloorLayoutVo> floorLayoutVoList = labBuildFloorLayoutService.selectLabBuildFloorLayoutList(labBuildFloorLayout);
+                    if(floorLayoutVoList.size()>0){
+                        LabBuildFloorLayoutVo floorVo = floorLayoutVoList.get(0);
+                        //todo 这里需要给管控页面推送一个消息
+                        messageSendService.subUserByChange(floorVo.getFloorId(),Long.parseLong(s));
+                        //todo 这里需要给管控页面推送一个消息
+                        messageSendService.builUserByChange(floorVo.getBuildId());
+                    }
                     return ResultData.result(true);
                     return ResultData.result(true);
                 }
                 }
             }
             }

+ 9 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabBuildFloorLayoutService.java

@@ -5,6 +5,7 @@ import com.zd.laboratory.domain.LabExitLineVertex;
 import com.zd.laboratory.domain.vo.LabBuildFloorLayoutVo;
 import com.zd.laboratory.domain.vo.LabBuildFloorLayoutVo;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * Controller
  * Controller
@@ -56,4 +57,12 @@ public interface ILabBuildFloorLayoutService {
     public int deleteLabBuildFloorLayoutByIds(Long[] ids);
     public int deleteLabBuildFloorLayoutByIds(Long[] ids);
 
 
 
 
+    /**
+     * 查询布局图
+     *
+     * @param labBuildFloorLayout 布局图
+     * @return 布局图信息
+     */
+    public Map <String,Object> getLotStatis(LabBuildFloorLayout labBuildFloorLayout);
+
 }
 }

+ 10 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabBuildFloorService.java

@@ -83,6 +83,15 @@ public interface ILabBuildFloorService {
      * @param labBuildFloorVo 楼栋楼层
      * @param labBuildFloorVo 楼栋楼层
      * @return 楼栋楼层集合
      * @return 楼栋楼层集合
      */
      */
-    public List <LabBuildFloor> getBuildOrFloorList(LabBuildFloorVo labBuildFloorVo);
+    public List <LabBuildFloorVo> getBuildOrFloorList(LabBuildFloorVo labBuildFloorVo);
+
+
+    /**
+     * 查询楼栋(楼层)列表(首页用)
+     *
+     * @param labBuildFloorVo 楼栋楼层
+     * @return 楼栋楼层集合
+     */
+    public List <LabBuildFloorVo> getBuildOrFloorDetailList(LabBuildFloorVo labBuildFloorVo);
 
 
 }
 }

+ 16 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabBuildFloorLayoutServiceImpl.java

@@ -1,6 +1,7 @@
 package com.zd.laboratory.service.impl;
 package com.zd.laboratory.service.impl;
 
 
 import com.zd.common.core.utils.DictUtils;
 import com.zd.common.core.utils.DictUtils;
+import com.zd.common.core.utils.StringUtils;
 import com.zd.laboratory.domain.LabBuildFloorLayout;
 import com.zd.laboratory.domain.LabBuildFloorLayout;
 import com.zd.laboratory.domain.LabExitLineVertex;
 import com.zd.laboratory.domain.LabExitLineVertex;
 import com.zd.laboratory.domain.vo.LabBuildFloorLayoutVo;
 import com.zd.laboratory.domain.vo.LabBuildFloorLayoutVo;
@@ -11,9 +12,7 @@ import com.zd.system.api.entity.SysDictData;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.function.Consumer;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -75,4 +74,18 @@ public class LabBuildFloorLayoutServiceImpl implements ILabBuildFloorLayoutServi
     public int deleteLabBuildFloorLayoutByIds(Long[] ids) {
     public int deleteLabBuildFloorLayoutByIds(Long[] ids) {
         return labBuildFloorLayoutMapper.deleteLabBuildFloorLayoutByIds(ids);
         return labBuildFloorLayoutMapper.deleteLabBuildFloorLayoutByIds(ids);
     }
     }
+
+    @Override
+    public Map <String, Object> getLotStatis(LabBuildFloorLayout labBuildFloorLayout) {
+        Map<String,Object> allMap = new HashMap <>();
+        allMap.put("lotStaticList",new ArrayList<>());
+        allMap.put("lotStaticSum",0);
+        if(StringUtils.isNotNull(labBuildFloorLayout.getBuildId())){
+            List<Map<String,Object>> layoutList = labBuildFloorLayoutMapper.getLotStatis(labBuildFloorLayout);
+            allMap.put("lotStaticList",layoutList);
+            Integer sum = layoutList.stream().mapToInt(a-> Integer.parseInt(a.get("sensorTotal")+"") ).sum();
+            allMap.put("lotStaticSum",sum);
+        }
+        return allMap;
+    }
 }
 }

+ 42 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabBuildFloorServiceImpl.java

@@ -7,10 +7,12 @@ import com.zd.common.core.utils.SecurityUtils;
 import com.zd.laboratory.domain.LabBuildFloor;
 import com.zd.laboratory.domain.LabBuildFloor;
 import com.zd.laboratory.domain.LabBuildFloorLayout;
 import com.zd.laboratory.domain.LabBuildFloorLayout;
 import com.zd.laboratory.domain.LabExitLineVertex;
 import com.zd.laboratory.domain.LabExitLineVertex;
+import com.zd.laboratory.domain.LabSparseHardware;
 import com.zd.laboratory.domain.vo.*;
 import com.zd.laboratory.domain.vo.*;
 import com.zd.laboratory.mapper.LabBuildFloorLayoutMapper;
 import com.zd.laboratory.mapper.LabBuildFloorLayoutMapper;
 import com.zd.laboratory.mapper.LabBuildFloorMapper;
 import com.zd.laboratory.mapper.LabBuildFloorMapper;
 import com.zd.laboratory.mapper.LabExitLineVertexMapper;
 import com.zd.laboratory.mapper.LabExitLineVertexMapper;
+import com.zd.laboratory.mapper.LabSparseHardwareMapper;
 import com.zd.laboratory.service.ILabBuildFloorService;
 import com.zd.laboratory.service.ILabBuildFloorService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,6 +44,9 @@ public class LabBuildFloorServiceImpl implements ILabBuildFloorService {
     @Autowired
     @Autowired
     private LabBuildFloorLayoutMapper labBuildFloorLayoutMapper;
     private LabBuildFloorLayoutMapper labBuildFloorLayoutMapper;
 
 
+    @Autowired
+    private LabSparseHardwareMapper labSparseHardwareMapper;
+
     @Override
     @Override
     public List <LabBuildFloor> selectLabBuildFloorList(LabBuildFloor labBuildFloor) {
     public List <LabBuildFloor> selectLabBuildFloorList(LabBuildFloor labBuildFloor) {
         return labBuildFloorMapper.selectLabBuildFloorList(labBuildFloor);
         return labBuildFloorMapper.selectLabBuildFloorList(labBuildFloor);
@@ -173,8 +178,44 @@ public class LabBuildFloorServiceImpl implements ILabBuildFloorService {
     }
     }
 
 
     @Override
     @Override
-    public List <LabBuildFloor> getBuildOrFloorList(LabBuildFloorVo labBuildFloorVo) {
+    public List <LabBuildFloorVo> getBuildOrFloorList(LabBuildFloorVo labBuildFloorVo) {
         labBuildFloorVo.setAdminId(SecurityUtils.getUserId());
         labBuildFloorVo.setAdminId(SecurityUtils.getUserId());
         return labBuildFloorMapper.getBuildOrFloorList(labBuildFloorVo);
         return labBuildFloorMapper.getBuildOrFloorList(labBuildFloorVo);
     }
     }
+
+    @Override
+    public List <LabBuildFloorVo> getBuildOrFloorDetailList(LabBuildFloorVo labBuildFloorVo) {
+        labBuildFloorVo.setType(3);
+        labBuildFloorVo.setAdminId(SecurityUtils.getUserId());
+        List <LabBuildFloorVo> buildFloorVoList = labBuildFloorMapper.getBuildOrFloorDetailList(labBuildFloorVo);
+        List<Long> floorIds = Optional.ofNullable(buildFloorVoList).orElseGet(Collections::emptyList)
+                .stream()
+                .map(a->a.getId())
+                .collect(Collectors.toList());
+        List<LabExitLineVertex> exitLineVertexList = labExitLineVertexMapper.selectExitLineVertexByIds(floorIds);
+
+        Optional.ofNullable(buildFloorVoList).orElseGet(Collections::emptyList)
+                .stream()
+                .forEach(a->Optional.ofNullable(exitLineVertexList).orElseGet(Collections::emptyList)
+                .stream()
+                .filter(b->b.getFloorId().longValue()==a.getId().longValue())
+                .forEach(b->{
+                    a.getExitLineVertexList().add(b);
+                }));
+
+        LabSparseHardware labSparseHardware = new LabSparseHardware();
+        labSparseHardware.setType(1);
+        labSparseHardware.setBuildId(labBuildFloorVo.getParentId());
+        List<LabSparseHardware> sparseHardwareList = labSparseHardwareMapper.selectLabSparseHardwareList(labSparseHardware);
+
+        Optional.ofNullable(buildFloorVoList).orElseGet(Collections::emptyList)
+                .stream()
+                .forEach(a->Optional.ofNullable(sparseHardwareList).orElseGet(Collections::emptyList)
+                        .stream()
+                        .filter(b->b.getFloorId().longValue()==a.getId().longValue())
+                        .forEach(b->{
+                            a.getSparseHardwareList().add(b);
+                        }));
+        return buildFloorVoList;
+    }
 }
 }

+ 7 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabExitLineVertexServiceImpl.java

@@ -691,6 +691,13 @@ public class LabExitLineVertexServiceImpl implements ILabExitLineVertexService {
                 .forEach(b->{
                 .forEach(b->{
                     if(b.getAdminId().longValue()==SecurityUtils.getUserId().longValue()){
                     if(b.getAdminId().longValue()==SecurityUtils.getUserId().longValue()){
                         a.setLoginAdmin(true);
                         a.setLoginAdmin(true);
+                    }else{
+                        String[] safeUsers = b.getSafeUserId().split(",");
+                        for(int s=0;s<safeUsers.length;s++){
+                            if((SecurityUtils.getUserId()+"").equals(safeUsers[s])){
+                                a.setLoginAdmin(true);
+                            }
+                        }
                     }
                     }
                     a.setSubName(b.getName());
                     a.setSubName(b.getName());
                 }));
                 }));

+ 5 - 2
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabBigViewMapper.xml

@@ -26,13 +26,16 @@
                    ON s.hazard_id = h.id
                    ON s.hazard_id = h.id
         ),DECIMAL(10,3))*100 percentage
         ),DECIMAL(10,3))*100 percentage
         from  lab_hazard_subject_relation s
         from  lab_hazard_subject_relation s
-         left join lab_hazard h
-                   on s.hazard_id = h.id
+        left join lab_hazard h on s.hazard_id = h.id
+        LEFT JOIN lab_build_floor_layout bfl ON s.subject_id = bfl.sub_id
         <where>
         <where>
             1=1
             1=1
             <if test="subjectId != null and subjectId != ''">
             <if test="subjectId != null and subjectId != ''">
                 and s.subject_id = #{subjectId}
                 and s.subject_id = #{subjectId}
             </if>
             </if>
+            <if test="buildId != null and buildId != ''">
+                and bfl.build_id = #{buildId}
+            </if>
         </where>
         </where>
         group by s.hazard_id  ORDER BY total desc
         group by s.hazard_id  ORDER BY total desc
     </select>
     </select>

+ 86 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabBuildFloorLayoutMapper.xml

@@ -89,6 +89,92 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             where t.sub_id = #{subjectId}
             where t.sub_id = #{subjectId}
             and ls.admin_id = (#{userId})
             and ls.admin_id = (#{userId})
     </select>
     </select>
+    <select id="getLotStatis" parameterType="com.zd.laboratory.domain.LabBuildFloorLayout" resultType="java.util.Map">
+        SELECT '烟雾报警' sensorName,COUNT(1) sensorTotal,1 sensorType,
+        ROUND( COUNT(s.id) / (SELECT COUNT(1) FROM lab_sensor s WHERE s.type=5) * 100, 2) sensorProp
+        FROM lab_sensor s
+        INNER JOIN lab_subject st ON s.subject_id = st.id
+        INNER JOIN lab_build_floor_layout bfl ON st.id = bfl.sub_id
+        WHERE s.type=5 and bfl.build_id = #{buildId}
+        UNION ALL
+        SELECT '火焰检测' sensorName,COUNT(1) sensorTotal,2 sensorType,
+        ROUND( COUNT(s.id) / (SELECT COUNT(1) FROM lab_sensor s WHERE s.type=15) * 100, 2) sensorProp
+        FROM lab_sensor s
+        INNER JOIN lab_subject st ON s.subject_id = st.id
+        INNER JOIN lab_build_floor_layout bfl ON st.id = bfl.sub_id
+        WHERE s.type=15 and bfl.build_id = #{buildId}
+        UNION ALL
+        SELECT '气体检测' sensorName,COUNT(1) sensorTotal,3 sensorType,
+        ROUND( COUNT(s.id) / (SELECT COUNT(1) FROM lab_sensor s WHERE s.type IN(2,3,4,7,11,12,13,14,16,17,18)) * 100, 2) sensorProp
+        FROM lab_sensor s
+        INNER JOIN lab_subject st ON s.subject_id = st.id
+        INNER JOIN lab_build_floor_layout bfl ON st.id = bfl.sub_id
+        WHERE s.type IN(2,3,4,7,11,12,13,14,16,17,18)
+        and bfl.build_id = #{buildId}
+        UNION ALL
+        SELECT '温湿度' sensorName,COUNT(1) sensorTotal,4 sensorType,
+        ROUND( COUNT(s.id) / (SELECT COUNT(1) FROM lab_sensor s WHERE s.type IN(0,1,8)) * 100, 2) sensorProp
+        FROM lab_sensor s
+        INNER JOIN lab_subject st ON s.subject_id = st.id
+        INNER JOIN lab_build_floor_layout bfl ON st.id = bfl.sub_id
+        WHERE s.type IN(0,1,8) and bfl.build_id = #{buildId}
+        UNION ALL
+        SELECT '大气压' sensorName,COUNT(1) sensorTotal,5 sensorType,
+        ROUND( COUNT(s.id) / (SELECT COUNT(1) FROM lab_sensor s WHERE s.type IN(9)) * 100, 2) sensorProp
+        FROM lab_sensor s
+        INNER JOIN lab_subject st ON s.subject_id = st.id
+        INNER JOIN lab_build_floor_layout bfl ON st.id = bfl.sub_id
+        WHERE s.type IN(9) and bfl.build_id = #{buildId}
+        UNION ALL
+        SELECT '粉尘检测' sensorName,COUNT(1) sensorTotal,6 sensorType,
+        ROUND( COUNT(s.id) / (SELECT COUNT(1) FROM lab_sensor s WHERE s.type IN(6)) * 100, 2) sensorProp
+        FROM lab_sensor s
+        INNER JOIN lab_subject st ON s.subject_id = st.id
+        INNER JOIN lab_build_floor_layout bfl ON st.id = bfl.sub_id
+        WHERE s.type IN(6) and bfl.build_id = #{buildId}
+        UNION ALL
+        SELECT '智能监控' sensorName,COUNT(1) sensorTotal,7 sensorType,
+        ROUND( COUNT(h.id) / (SELECT COUNT(1) FROM lab_hardware h WHERE h.type = 4) * 100, 2) sensorProp
+        FROM lab_hardware h
+        INNER JOIN lab_subject st ON h.subject_id = st.id
+        INNER JOIN lab_build_floor_layout bfl ON st.id = bfl.sub_id
+        WHERE h.type = 4 and bfl.build_id = #{buildId}
+        UNION ALL
+        SELECT '智能门锁' sensorName,COUNT(1) sensorTotal,8 sensorType,
+        ROUND( COUNT(h.id) / (SELECT COUNT(1) FROM lab_hardware h WHERE h.type = 6) * 100, 2) sensorProp
+        FROM lab_hardware h
+        INNER JOIN lab_subject st ON h.subject_id = st.id
+        INNER JOIN lab_build_floor_layout bfl ON st.id = bfl.sub_id
+        WHERE h.type = 6 and bfl.build_id = #{buildId}
+        UNION ALL
+        SELECT '一体机' sensorName,COUNT(1) sensorTotal,9 sensorType,
+        ROUND( COUNT(h.id) / (SELECT COUNT(1) FROM lab_hardware h WHERE h.type = 0) * 100, 2) sensorProp
+        FROM lab_hardware h
+        INNER JOIN lab_subject st ON h.subject_id = st.id
+        INNER JOIN lab_build_floor_layout bfl ON st.id = bfl.sub_id
+        WHERE h.type = 0 and bfl.build_id = #{buildId}
+        UNION ALL
+        SELECT '智能电控' sensorName,COUNT(1) sensorTotal,10 sensorType,
+        ROUND( COUNT(h.id) / (SELECT COUNT(1) FROM lab_hardware h WHERE h.type = 1) * 100, 2) sensorProp
+        FROM lab_hardware h
+        INNER JOIN lab_subject st ON h.subject_id = st.id
+        INNER JOIN lab_build_floor_layout bfl ON st.id = bfl.sub_id
+        WHERE h.type = 1 and bfl.build_id = #{buildId}
+        UNION ALL
+        SELECT '智能通风' sensorName,COUNT(1) sensorTotal,11 sensorType,
+        ROUND( COUNT(h.id) / (SELECT COUNT(1) FROM lab_hardware h WHERE h.type = 2) * 100, 2) sensorProp
+        FROM lab_hardware h
+        INNER JOIN lab_subject st ON h.subject_id = st.id
+        INNER JOIN lab_build_floor_layout bfl ON st.id = bfl.sub_id
+        WHERE h.type = 2 and bfl.build_id = #{buildId}
+        UNION ALL
+        SELECT '智能灭火' sensorName,COUNT(1) sensorTotal,12 sensorType,
+        ROUND( COUNT(h.id) / (SELECT COUNT(1) FROM hardware_fire_device h) * 100, 2) sensorProp
+        FROM hardware_fire_device h
+        INNER JOIN lab_subject st ON h.subject_id = st.id
+        INNER JOIN lab_build_floor_layout bfl ON st.id = bfl.sub_id
+        where bfl.build_id = #{buildId}
+    </select>
 
 
     <insert id="insertLabBuildFloorLayout" parameterType="com.zd.laboratory.domain.LabBuildFloorLayout" useGeneratedKeys="true" keyProperty="id">
     <insert id="insertLabBuildFloorLayout" parameterType="com.zd.laboratory.domain.LabBuildFloorLayout" useGeneratedKeys="true" keyProperty="id">
         insert into lab_build_floor_layout
         insert into lab_build_floor_layout

+ 21 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabBuildFloorMapper.xml

@@ -71,19 +71,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         t.update_by, t.update_time, t.remark
         t.update_by, t.update_time, t.remark
         <if test="type == 2 ">
         <if test="type == 2 ">
         , COUNT(s.id) subNum
         , COUNT(s.id) subNum
+        , COUNT(sar.id) online
         </if>
         </if>
         <if test="type == 3 ">
         <if test="type == 3 ">
         , COUNT(s.id) subNum
         , COUNT(s.id) subNum
+        , COUNT(sar.id) online
         </if>
         </if>
          from lab_build_floor as t
          from lab_build_floor as t
         <if test="type == 2 ">
         <if test="type == 2 ">
           left join lab_build_floor f on t.id = f.parent_id
           left join lab_build_floor f on t.id = f.parent_id
           left join lab_build_floor_layout l on f.id = l.floor_id
           left join lab_build_floor_layout l on f.id = l.floor_id
           left join lab_subject s on l.sub_id = s.id
           left join lab_subject s on l.sub_id = s.id
+          left join lab_subject_access_record sar ON sar.subject_id = s.id
+          and sar.access_status  = 1 AND sar.init_flag = 0
         </if>
         </if>
         <if test="type == 3 ">
         <if test="type == 3 ">
             left join lab_build_floor_layout l on t.id = l.floor_id
             left join lab_build_floor_layout l on t.id = l.floor_id
             left join lab_subject s on l.sub_id = s.id
             left join lab_subject s on l.sub_id = s.id
+            left join lab_subject_access_record sar ON sar.subject_id = s.id
+            and sar.access_status  = 1 AND sar.init_flag = 0
         </if>
         </if>
         <where>
         <where>
             (s.admin_id = #{adminId} or find_in_set(#{adminId}, s.safe_user_id))
             (s.admin_id = #{adminId} or find_in_set(#{adminId}, s.safe_user_id))
@@ -95,6 +101,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
     </select>
 
 
 
 
+    <select id="getBuildOrFloorDetailList" resultType="com.zd.laboratory.domain.vo.LabBuildFloorVo" parameterType="com.zd.laboratory.domain.vo.LabBuildFloorVo">
+        select distinct t.id,t.`name`,t.`type`, t.img_url, t.parent_id, t.sort_no, t.user_id, t.create_by, t.create_time,
+        t.update_by, t.update_time, t.remark
+        , COUNT(s.id) subNum
+        from lab_build_floor as t
+        left join lab_build_floor_layout l on t.id = l.floor_id
+        left join lab_subject s on l.sub_id = s.id and (s.admin_id = #{adminId} or find_in_set(#{adminId}, s.safe_user_id))
+        <where>
+            <if test="parentId != null "> and t.parent_id = #{parentId}</if>
+            <if test="type != null "> and t.`type` = #{type}</if>
+        </where>
+        GROUP BY t.id
+    </select>
+
+
     <insert id="insertLabBuildFloor" parameterType="com.zd.laboratory.domain.LabBuildFloor" useGeneratedKeys="true" keyProperty="id">
     <insert id="insertLabBuildFloor" parameterType="com.zd.laboratory.domain.LabBuildFloor" useGeneratedKeys="true" keyProperty="id">
         insert into lab_build_floor
         insert into lab_build_floor
         <trim prefix="(" suffix=")" suffixOverrides=",">
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 10 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabExitLineVertexMapper.xml

@@ -58,6 +58,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         </where>
     </select>
     </select>
 
 
+    <select id="selectExitLineVertexByIds" parameterType="com.zd.laboratory.domain.LabExitLineVertex" resultMap="LabExitLineVertexResult">
+        <include refid="selectLabExitLineVertexVo"/>
+        <where>
+            floor_id in
+            <foreach item="id" collection="list" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </where>
+    </select>
+
     <insert id="insertLabExitLineVertex" parameterType="com.zd.laboratory.domain.LabExitLineVertex" useGeneratedKeys="true" keyProperty="id">
     <insert id="insertLabExitLineVertex" parameterType="com.zd.laboratory.domain.LabExitLineVertex" useGeneratedKeys="true" keyProperty="id">
         insert into lab_exit_line_vertex
         insert into lab_exit_line_vertex
         <trim prefix="(" suffix=")" suffixOverrides=",">
         <trim prefix="(" suffix=")" suffixOverrides=",">