Kaynağa Gözat

硬件数据类型修改
报警抓拍优化

hanzhiwei 2 yıl önce
ebeveyn
işleme
b90baa9664
14 değiştirilmiş dosya ile 47 ekleme ve 29 silme
  1. 2 2
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteLabHardwareService.java
  2. 1 1
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteLabHardwareFallbackFactory.java
  3. 2 2
      zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/service/impl/AlarmRecordServiceImpl.java
  4. 7 6
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/FireImageService.java
  5. 1 1
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpStockServiceImpl.java
  6. 2 2
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabHardwareController.java
  7. 15 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/LabHardware.java
  8. 4 5
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/event/RedisExpiredPhotographListener.java
  9. 1 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabHardwareMapper.java
  10. 2 2
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabHardwareService.java
  11. 2 2
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabHardwareServiceImpl.java
  12. 1 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabMessageContentServiceImpl.java
  13. 4 3
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/WarningNoticeLogServiceImpl.java
  14. 3 1
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabHardwareMapper.xml

+ 2 - 2
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteLabHardwareService.java

@@ -29,12 +29,12 @@ public interface RemoteLabHardwareService {
      * 根据类型查询摄像头信息
      * @Param [subId 实验室id,
      *          type 设备类型(0,一体机 1,电源开关 2 智能通风,3,语音对讲,4,视频监控5,智能终端 6,智能门锁 ,7,RFID识别器,8,智能报警器,9,智能柜锁,11 海康门禁),
-     *          pcType 摄像头类型:(0火焰算法 1穿戴识别 2违规带离抓拍)]
+     *          subType 子类型 摄像头类型:(0火焰算法 1穿戴识别 2违规带离抓拍)]
      * @Return com.zd.laboratory.domain.LabHardware
      **/
     @ApiOperation(value = "根据类型查询摄像头信息")
     @GetMapping("/hardware/findCameraByType")
     ResultData findCameraByType(@RequestParam("subId") Long subId,
                                 @RequestParam("type") Integer type,
-                                @RequestParam("pcType") Integer pcType);
+                                @RequestParam("subType") String[] subType);
 }

+ 1 - 1
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteLabHardwareFallbackFactory.java

@@ -30,7 +30,7 @@ public class RemoteLabHardwareFallbackFactory implements FallbackFactory<RemoteL
             }
 
             @Override
-            public ResultData findCameraByType(Long subId, Integer type, Integer pcType) {
+            public ResultData findCameraByType(Long subId, Integer type, String[] subType) {
                 return ResultData.fail("请求失败!");
             }
         };

+ 2 - 2
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/service/impl/AlarmRecordServiceImpl.java

@@ -182,7 +182,7 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
                 }
                 Long logId = (Long)resultData.getData();
                 if(illegalRemoval != null){
-                    String text = "【实验室安全系统】实验室名称-实验人员违规X气携带气瓶离开房间,发生时间:"+ LocalDateTimeUtil.format(LocalDateTime.now(),"yyyy-MM-dd HH:mm:ss") +",请尽快确认。点击查看:"+"http://";
+                    String text = "【实验室安全系统】-实验人员违规X气携带气瓶离开房间,发生时间:"+ LocalDateTimeUtil.format(LocalDateTime.now(),"yyyy-MM-dd HH:mm:ss") +",请尽快确认。点击查看:"+"http://";
                     if (illegalRemoval.contains("1")) {
                         //系统通知
                         LabMessageContent labMessageContent = new LabMessageContent();
@@ -215,7 +215,7 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
                         log.info("==================>{},{}",alarm.getCode(),alarm.getMsg());
                     }
                     // TODO 报警的同时传入摄像头ip
-                    ResultData result = remoteLabHardwareService.findCameraByType(storageRVo.getSubjectId(), 4, 2);
+                    ResultData result = remoteLabHardwareService.findCameraByType(storageRVo.getSubjectId(), 4, new String[] {"2"});
                     if (HttpStatus.SUCCESS == result.getCode()) {
                         String ip = String.valueOf(result.getData());
                         startVideo(ip);

+ 7 - 6
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/FireImageService.java

@@ -1,22 +1,22 @@
 package com.zd.alg.forward.serivce;
 
-import com.zd.alg.forward.properties.FireProperties;
-import com.zd.alg.forward.utils.HttpUtils;
-import com.zd.alg.forward.utils.VideoUtils;
-import com.zd.common.core.exception.ServiceException;
 import com.zd.alg.forward.config.AlgorithmYml;
 import com.zd.alg.forward.domain.AnalysisData;
 import com.zd.alg.forward.domain.DataPostAnalysisRespDto;
 import com.zd.alg.forward.domain.ImgPostResponse;
+import com.zd.alg.forward.properties.FireProperties;
+import com.zd.alg.forward.utils.HttpUtils;
+import com.zd.alg.forward.utils.VideoUtils;
+import com.zd.common.core.exception.ServiceException;
 import lombok.extern.slf4j.Slf4j;
 import org.bytedeco.javacv.FFmpegFrameGrabber;
 import org.bytedeco.javacv.Frame;
 import org.springframework.http.HttpEntity;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
+
 import javax.annotation.Resource;
 import javax.imageio.ImageIO;
 import java.awt.image.BufferedImage;
@@ -26,6 +26,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+
 import static com.zd.alg.face.utils.FileUtil.multipartFileToFile;
 import static com.zd.alg.forward.utils.HttpUtils.getHttpEntityMap;
 import static com.zd.alg.forward.utils.VideoUtils.frameToBufferedImage;
@@ -59,7 +60,7 @@ public class FireImageService {
      */
     private static final String IMAGE_FORMAT = "jpg";
 
-    @Scheduled(cron = "0/5 * * * * ?")
+//    @Scheduled(cron = "0/5 * * * * ?")
     public void camera(){
         try {
             String streamUrl = fireProperties.getStreamUrl();

+ 1 - 1
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpStockServiceImpl.java

@@ -462,7 +462,7 @@ public class HxpStockServiceImpl implements IHxpStockService {
                         R<Boolean> alarm = remoteRfidService.alarm(hardwareRfidDto);
                         logger.info("==================>{},{}",alarm.getCode(),alarm.getMsg());
                     }
-                    ResultData result = remoteLabHardwareService.findCameraByType(hxpStock.getSubId(), 4, 2);
+                    ResultData result = remoteLabHardwareService.findCameraByType(hxpStock.getSubId(), 4, new String[] {"2"});
                     if (HttpStatus.SUCCESS == result.getCode()) {
                         String ip = String.valueOf(result.getData());
                         startVideo(ip);

+ 2 - 2
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabHardwareController.java

@@ -519,8 +519,8 @@ public class LabHardwareController extends BaseController {
     @RequestMapping("/findCameraByType")
     public ResultData findCameraByType(@RequestParam("subId") Long subId,
                                        @RequestParam("type") Integer type,
-                                       @RequestParam("pcType") Integer pcType) {
-        LabHardware labHardware = labHardwareService.findCameraByType(subId, type, pcType);
+                                       @RequestParam("subType") String[] subType) {
+        LabHardware labHardware = labHardwareService.findCameraByType(subId, type, subType);
         return ResultData.success(labHardware.getIpAddress());
     }
 

+ 15 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/LabHardware.java

@@ -11,7 +11,6 @@ import io.swagger.annotations.ApiModelProperty;
 import org.hibernate.validator.constraints.Length;
 
 import java.util.Date;
-import java.util.List;
 
 /**
  * 硬件对象 lab_hardware
@@ -50,6 +49,13 @@ public class LabHardware extends BaseEntity {
     private HardwareTypeEnum type;
 
     /**
+     * 子类型
+     */
+    @ApiModelProperty("子类型")
+    @Excel(name = "子类型")
+    private String subType;
+
+    /**
      * 一体机类型,管控一体机0  学习考试一体机1
      */
     @ApiModelProperty("一体机类型")
@@ -521,4 +527,12 @@ public class LabHardware extends BaseEntity {
     public void setTriggerModes(Integer triggerModes) {
         this.triggerModes = triggerModes;
     }
+
+    public String getSubType() {
+        return subType;
+    }
+
+    public void setSubType(String subType) {
+        this.subType = subType;
+    }
 }

+ 4 - 5
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/event/RedisExpiredPhotographListener.java

@@ -110,11 +110,11 @@ public class RedisExpiredPhotographListener extends KeyExpirationEventMessageLis
         String key = new String(message.getBody());
         if (key.indexOf(BaseConstants.PHOTOGRAPH_QUEUE) != -1) {
             log.info("预警异常,缓存信息:" + key);
-            String[] keyStr = key.split(BaseConstants.PHOTOGRAPH_QUEUE + "~");
-            WarningNoticeLog warningNoticeLog = JSON.parseObject(keyStr[1], WarningNoticeLog.class);
+            String[] keyStr = key.split("~");
+            WarningNoticeLog warningNoticeLog = JSON.parseObject(JSON.toJSONString(JSON.parseObject(keyStr[1]).getJSONObject("photographQueue")), WarningNoticeLog.class);
             //调用拍摄照片接口
-            LabHardware labHardware = labHardwareService.findCameraByType(warningNoticeLog.getSubId(), 4, 1);
-            if (StringUtils.isNotBlank(labHardware.getIpAddress())) {
+            LabHardware labHardware = labHardwareService.findCameraByType(warningNoticeLog.getSubId(), 4, new String[] {"1"});
+            if (labHardware != null && StringUtils.isNotBlank(labHardware.getIpAddress())) {
                 //拼装StreamUrl
                 String streamUrl = "rtsp://admin:hk123456@" + labHardware.getIpAddress() + ":554/h264/ch1/main/av_stream";
                 R<SysFile> fileR = remoteForwardService.photograph(streamUrl);
@@ -181,7 +181,6 @@ public class RedisExpiredPhotographListener extends KeyExpirationEventMessageLis
                                 log.error("获取urlScheme失败!");
                             }
                             String text = "【实验室安全系统】"+warningNoticeLogDto.getSubName()+"-监测到实验人员违规未穿戴实验服,请尽快确认。点击查看:https://lab.zjznai.com/labAppTest/earlyWarning/index.html?id="+result.getData()+"&urlScheme="+urlScheme.getData();
-                                    ;
                             //系统 短信 语音通知
                             if (warningConfig.getSystemNotice() != null && count1 > warningConfig.getSystemNotice()) {
                                 //系统通知

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

@@ -178,5 +178,5 @@ public interface LabHardwareMapper {
      * @Param [subId, type, pcType]
      * @Return com.zd.laboratory.domain.LabHardware
      **/
-    LabHardware findCameraByType(@Param("subId") Long subId, @Param("type") Integer type, @Param("pcType") Integer pcType);
+    LabHardware findCameraByType(@Param("subId") Long subId, @Param("type") Integer type, @Param("subType") String[] subType);
 }

+ 2 - 2
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabHardwareService.java

@@ -185,8 +185,8 @@ public interface ILabHardwareService {
      * 根据类型查询摄像头信息
      * @Param [subId 实验室id,
      *          type 设备类型(0,一体机 1,电源开关 2 智能通风,3,语音对讲,4,视频监控5,智能终端 6,智能门锁 ,7,RFID识别器,8,智能报警器,9,智能柜锁,11 海康门禁),
-     *          pcType 摄像头类型:(0普通摄像头 1抓拍摄像头 2违规带离摄像头)]
+     *          subType 子类型 摄像头类型:(0普通摄像头 1抓拍摄像头 2违规带离摄像头)]
      * @Return com.zd.laboratory.domain.LabHardware
      **/
-    LabHardware findCameraByType(Long subId, Integer type, Integer pcType);
+    LabHardware findCameraByType(Long subId, Integer type, String[] subType);
 }

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

@@ -854,7 +854,7 @@ public class LabHardwareServiceImpl implements ILabHardwareService {
     }
 
     @Override
-    public LabHardware findCameraByType(Long subId, Integer type, Integer pcType) {
-        return labHardwareMapper.findCameraByType(subId,type,pcType);
+    public LabHardware findCameraByType(Long subId, Integer type, String[] subType) {
+        return labHardwareMapper.findCameraByType(subId,type,subType);
     }
 }

+ 1 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabMessageContentServiceImpl.java

@@ -277,6 +277,7 @@ public class LabMessageContentServiceImpl implements ILabMessageContentService {
                 logger.info("发送短信打电话消息推送完成!topic={},msg={}",MqttConstants.TOPIC_ALERT + labRiskPlanLevel.getRiskPlanId() + "/" + subject.getId(),JSON.toJSONString(messageBody));
                 WarningNoticeLog warningNoticeLog = new WarningNoticeLog();
                 warningNoticeLog.setKeyId(groupId);
+                warningNoticeLog.setSubId(subject.getSubjectId());
                 warningNoticeLog.setSubName(subject.getName());
                 warningNoticeLog.setBuildName(subject.getDeptName());
                 warningNoticeLog.setFloorId(subject.getFloorId());

+ 4 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/WarningNoticeLogServiceImpl.java

@@ -89,7 +89,7 @@ public class WarningNoticeLogServiceImpl extends ServiceImpl<WarningNoticeLogMap
     /**
      * 实验室有人时定时拍摄识别实验服
      */
-    @Scheduled(cron = "0 0/30 * * * ? ")
+    @Scheduled(cron = "0 0/2 * * * ? ")
     public void labCoatTask() {
         //查询实验室是否有人
         List<LabOnlineSubVO> labSubjects = hardwareStateMapper.onlineByBigView(new LabSubjectVO());
@@ -104,11 +104,12 @@ public class WarningNoticeLogServiceImpl extends ServiceImpl<WarningNoticeLogMap
             warningNoticeLog.setWarningType(1);
             warningNoticeLog.setSubId(LabOnlineSubVO.getId());
             warningNoticeLog.setSubName(LabOnlineSubVO.getName());
-            baseMapper.insert(warningNoticeLog);
+//            warningNoticeLog.setWarningContent("未穿戴实验服");
+//            baseMapper.insert(warningNoticeLog);
             for (int i = 0; i < anomalyCount; i++) {
                 JSONObject jsonObject = new JSONObject();
                 jsonObject.put(BaseConstants.PHOTOGRAPH_QUEUE,warningNoticeLog);
-                redisService.setCacheObject(BaseConstants.PHOTOGRAPH_QUEUE+"~"+ jsonObject,jsonObject, frequency * i, TimeUnit.SECONDS);
+                redisService.setCacheObject(BaseConstants.PHOTOGRAPH_QUEUE+"~"+ jsonObject +"~"+ i,jsonObject, (i + 1) * frequency, TimeUnit.SECONDS);
             }
         });
     }

+ 3 - 1
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabHardwareMapper.xml

@@ -601,6 +601,8 @@
         where lh.ip_address is not null
         and lh.subject_id = #{subId}
         and lh.type = #{type}
-        and lh.pc_type = #{pcType}
+        and lh.sub_type in #{subType}
+        order by create_time desc
+        limit 1
     </select>
 </mapper>