Browse Source

MQ第三方修改

gao.qiang 1 year ago
parent
commit
b59367cbc4

+ 6 - 0
business-service/src/main/java/com/ozs/service/entity/BaseDeviceDynamicManagement.java

@@ -1,6 +1,7 @@
 package com.ozs.service.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
 import java.util.Date;
@@ -70,4 +71,9 @@ public class BaseDeviceDynamicManagement extends BaseEntity implements Serializa
      * 备注
      */
     private String remark;
+
+    /**
+     * 是否开启录像(1开启2不开启)
+     */
+    private Integer isDisable;
 }

+ 38 - 0
business-service/src/main/java/com/ozs/service/entity/MqLog.java

@@ -0,0 +1,38 @@
+package com.ozs.service.entity;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MqLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+      private Long id;
+
+    /**
+     * 相机编码
+     */
+    private String cameraCode;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+
+}

+ 16 - 0
business-service/src/main/java/com/ozs/service/mapper/MqLogMapper.java

@@ -0,0 +1,16 @@
+package com.ozs.service.mapper;
+
+import com.ozs.service.entity.MqLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-26
+ */
+public interface MqLogMapper extends BaseMapper<MqLog> {
+
+}

+ 2 - 0
business-service/src/main/java/com/ozs/service/service/BaseDeviceDynamicManagementService.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.ozs.service.entity.CameraTree;
 import com.ozs.service.entity.vo.CameraTreeVo;
 
+import java.util.List;
+
 /**
  * <p>
  * 设备动态管理表 服务类

+ 1 - 1
business-service/src/main/java/com/ozs/service/service/CameraLogDetailService.java

@@ -13,7 +13,7 @@ import java.util.List;
  * @creat 2023/4/25
  */
 public interface CameraLogDetailService extends IService<CameraLogDetail> {
-    void updateAccessories(String deviceSn, Integer code);
+    void updateAccessories(String deviceSn, Integer code,String remark);
     IPage listToPage(List list, int pageNum, int pageSize);
     List<CameraLogDetail> selectDetail(CameraUpdateLogResp cameraUpdateLogResp);
 }

+ 19 - 0
business-service/src/main/java/com/ozs/service/service/MqLogService.java

@@ -0,0 +1,19 @@
+package com.ozs.service.service;
+
+import com.ozs.service.entity.MqLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-26
+ */
+public interface MqLogService extends IService<MqLog> {
+  
+    void insetHeartLog(String cameraCode);
+    
+}

+ 19 - 0
business-service/src/main/java/com/ozs/service/service/impl/BaseCameraVersionServiceImpl.java

@@ -11,6 +11,8 @@ import com.ozs.service.entity.*;
 import com.ozs.service.entity.vo.BaseCameraVersionVo;
 import com.ozs.service.mapper.*;
 import com.ozs.service.service.BaseCameraVersionService;
+import com.ozs.service.service.BaseDeviceDynamicManagementService;
+import com.ozs.service.service.CameraLogDetailService;
 import com.ozs.service.utils.PublishClient;
 import com.ozs.service.utils.SubscribeClient;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +22,7 @@ import org.springframework.util.ObjectUtils;
 
 import javax.annotation.Resource;
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -40,6 +43,10 @@ public class BaseCameraVersionServiceImpl extends ServiceImpl<BaseCameraVersionM
     private BaseCameraManagementMapper baseCameraManagementMapper;
     @Autowired
     private BaseVersionCameraParamMapper baseVersionCameraParamMapper;
+    @Autowired
+    BaseDeviceDynamicManagementService baseDeviceDynamicManagementService;
+    @Autowired
+    CameraLogDetailService cameraLogDetailService;
 
     @Override
     public AjaxResult cameraVersionAdd(BaseCameraVersion baseCameraVersion, String userId) {
@@ -139,6 +146,18 @@ public class BaseCameraVersionServiceImpl extends ServiceImpl<BaseCameraVersionM
             cameraLogDetail.setUpdateTime(new Date());
             int insert = cameraLogDetailMapper.insert(cameraLogDetail);
         }
+        List<String> cameraCodeList = baseCameraVersionVo.getCameraCodeList();
+        Iterator it = cameraCodeList.iterator();
+        while(it.hasNext()) {
+            String value = (String) it.next();
+            LambdaQueryWrapper<BaseDeviceDynamicManagement> queryWrapper=new LambdaQueryWrapper<>();
+            queryWrapper.eq(BaseDeviceDynamicManagement::getCameraCode,value);
+            BaseDeviceDynamicManagement one = baseDeviceDynamicManagementService.getOne(queryWrapper);
+            if (one.getIsDisable()==2){
+                cameraLogDetailService.updateAccessories(one.getCameraCode(),400,"相机已下线");
+                it.remove();
+            }
+        }
         if ("3".equals(baseCameraVersionVo.getUpgradeType())){
             List<BaseVersionCameraParam> baseVersionCameraParamList = baseCameraVersionVo.getBaseVersionCameraParamList();
             for (BaseVersionCameraParam baseVersionCameraParam : baseVersionCameraParamList) {

+ 3 - 1
business-service/src/main/java/com/ozs/service/service/impl/CameraLogDetailServiceImpl.java

@@ -47,7 +47,7 @@ public class CameraLogDetailServiceImpl extends ServiceImpl<CameraLogDetailMappe
     }
     
     @Override
-    public  void updateAccessories(String deviceSn, Integer code){
+    public  void updateAccessories(String deviceSn, Integer code,String remark){
         LambdaQueryWrapper<CameraLogDetail> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(CameraLogDetail::getCameraCode, deviceSn);
         wrapper.orderByDesc(CameraLogDetail::getUpdateTime);
@@ -55,9 +55,11 @@ public class CameraLogDetailServiceImpl extends ServiceImpl<CameraLogDetailMappe
         CameraLogDetail cameraUpdateLog = list.get(0);
         if (200==code){
             cameraUpdateLog.setStatus(1);
+            cameraUpdateLog.setRemark(remark);
             cameraLogDetailMapper.updateById(cameraUpdateLog);
         }else if (400==code){
             cameraUpdateLog.setStatus(3);
+            cameraUpdateLog.setRemark(remark);
             cameraLogDetailMapper.updateById(cameraUpdateLog);
         }
     }

+ 29 - 0
business-service/src/main/java/com/ozs/service/service/impl/MqLogServiceImpl.java

@@ -0,0 +1,29 @@
+package com.ozs.service.service.impl;
+
+import com.ozs.service.entity.MqLog;
+import com.ozs.service.mapper.MqLogMapper;
+import com.ozs.service.service.MqLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-26
+ */
+@Service
+public class MqLogServiceImpl extends ServiceImpl<MqLogMapper, MqLog> implements MqLogService {
+    @Autowired
+    MqLogMapper mqLogMapper;
+
+    @Override
+    public void insetHeartLog(String cameraCode) {
+        MqLog mqLog = new MqLog();
+        mqLog.setCameraCode(cameraCode);
+        mqLogMapper.insert(mqLog);
+    }
+}

+ 11 - 3
business-service/src/main/java/com/ozs/service/utils/CallbackUtil.java

@@ -3,6 +3,7 @@ package com.ozs.service.utils;
 
 import com.ozs.service.service.CameraLogDetailService;
 import com.ozs.service.service.CameraUpdateLogService;
+import com.ozs.service.service.MqLogService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
@@ -21,15 +22,22 @@ import javax.annotation.PostConstruct;
 public class CallbackUtil {
     @Autowired
     CameraLogDetailService cameraLogDetailService;
+    @Autowired
+    MqLogService mqLogService;
     private static  CameraLogDetailService cameraLogDetail;
-
+    private static  MqLogService mqLog;
 
     @PostConstruct
     public void init() {
         cameraLogDetail = cameraLogDetailService;
+        mqLog=mqLogService;
     }
     
-    public static void  callback(String deviceSn,Integer code){
-        CallbackUtil.cameraLogDetail.updateAccessories(deviceSn,code);
+    public static void  callback(String deviceSn,Integer code,String remark){
+        CallbackUtil.cameraLogDetail.updateAccessories(deviceSn,code,remark);
+    }
+
+    public static void  heart(String cameraCode){
+        CallbackUtil.mqLog.insetHeartLog(cameraCode);
     }
 }

+ 15 - 2
business-service/src/main/java/com/ozs/service/utils/PublishCallback.java

@@ -28,6 +28,7 @@ public class PublishCallback implements MqttCallback {
     public void connectionLost(Throwable cause) {
         // 连接丢失后,一般在这里面进行重连
         System.out.println("连接断开,可以做重连");
+        new SubscribeClient("heart", "heart").start();
     }
 
     //接收到已经发布的 QoS 1 或 QoS 2 消息的传递令牌时调用
@@ -54,6 +55,7 @@ public class PublishCallback implements MqttCallback {
                 sign = (String) object.get("sign");
                 deviceSn = (String) object.get("device_sn");
             }
+            CallbackUtil.heart(deviceSn);
             PublishClient.pull(sign,deviceSn);
         }
         if ("update".equals(topic)) {
@@ -65,7 +67,11 @@ public class PublishCallback implements MqttCallback {
                 code = (Integer) object.get("code");
                 deviceSn = (String) object.get("device_sn");
             }
-            CallbackUtil.callback(deviceSn,code);
+            if (code==200) {
+                CallbackUtil.callback(deviceSn, code, "");
+            }else {
+                CallbackUtil.callback(deviceSn, code, "固件升级失败");
+            }
         }if ("config".equals(topic)){
             String s = new String(message.getPayload());
             s = "[" + s + "]";
@@ -74,8 +80,15 @@ public class PublishCallback implements MqttCallback {
                 JSONObject object = jsonArray.getJSONObject(i);
                 code = (Integer) object.get("code");
                 deviceSn = (String) object.get("device_sn");
+                sign =(String) object.get("sign");
+            }
+            if (sign.startsWith("rate")&&code==400){
+                CallbackUtil.callback(deviceSn,code,"帧率升级失败");
+            }
+            if (sign.startsWith("cient")&&code==400){
+                CallbackUtil.callback(deviceSn,code,"置信度升级失败");
             }
-            CallbackUtil.callback(deviceSn,code);
+            CallbackUtil.callback(deviceSn,code,"");
         }
         System.out.println("接收消息内容 : " + new String(message.getPayload()));
         

+ 2 - 2
business-service/src/main/java/com/ozs/service/utils/PublishClient.java

@@ -209,7 +209,7 @@ public class PublishClient {
                 Map<String, Object> map = new HashMap<>();
                 map.put("svp", svp);
                 res.put("data", map);
-                res.put("sign", UUID.randomUUID().toString());
+                res.put("sign", "cient"+UUID.randomUUID().toString());
                 String s = JSONObject.toJSONString(res);
 
                 server.message = new MqttMessage();
@@ -251,7 +251,7 @@ public class PublishClient {
                 Map<String, Object> map = new HashMap<>();
                 map.put("codec", codec);
                 res.put("data", map);
-                res.put("sign", UUID.randomUUID().toString());
+                res.put("sign", "rate"+UUID.randomUUID().toString());
                 String s = JSONObject.toJSONString(res);
 
                 server.message = new MqttMessage();

+ 5 - 0
business-service/src/main/resources/mapper/service/MqLogMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ozs.service.mapper.MqLogMapper">
+
+</mapper>

+ 4 - 4
business-service/src/test/java/com/ozs/service/test/CodeGet.java

@@ -29,10 +29,10 @@ public class CodeGet {
 
         // 3、数据源配置
         DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setUrl("jdbc:mysql://124.70.58.209:1122/hazard?characterEncoding=utf-8&useSSL=false");
+        dsc.setUrl("jdbc:mysql://124.70.58.209:18806/hazard?characterEncoding=utf-8&useSSL=false");
         dsc.setDriverName("com.mysql.cj.jdbc.Driver");
-        dsc.setUsername("admin");
-        dsc.setPassword("106aD>>ql95K5S");
+        dsc.setUsername("root");
+        dsc.setPassword("123.asd");
         dsc.setDbType(DbType.MYSQL);
         mpg.setDataSource(dsc);
 
@@ -48,7 +48,7 @@ public class CodeGet {
         // 5、策略配置
         StrategyConfig strategy = new StrategyConfig();
 
-        strategy.setInclude("svc_address");
+        strategy.setInclude("mq_log");
 
         strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
 

+ 10 - 1
hazard-admin/src/main/java/com/ozs/web/controller/mqtt/MqttController.java

@@ -5,9 +5,11 @@ import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.enums.BusinessType;
 import com.ozs.service.utils.PublishClient;
 import com.ozs.service.utils.SubscribeClient;
+import com.ozs.web.core.util.CameraUtil;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.eclipse.paho.client.mqttv3.MqttException;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -21,10 +23,17 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/service/mqtt")
 @Slf4j
 public class MqttController implements ApplicationRunner {
-    
+    @Autowired
+    private CameraUtil cameraUtil;
 
     @Override
     public void run(ApplicationArguments args) throws Exception {
         new SubscribeClient("heart", "heart").start();
     }
+    
+    
+    @GetMapping("/cs")
+    public void cs(){
+        cameraUtil.cameraBlockUp();
+    }
 }

+ 61 - 0
hazard-admin/src/main/java/com/ozs/web/core/util/CameraUtil.java

@@ -3,6 +3,7 @@ package com.ozs.web.core.util;
 
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.ozs.common.config.BaseConfig;
 import com.ozs.common.constant.Constants;
 import com.ozs.common.core.domain.entity.SysDictData;
@@ -12,8 +13,13 @@ import com.ozs.common.utils.DateUtils;
 import com.ozs.common.utils.http.HttpUtils;
 import com.ozs.framework.config.ServerConfig;
 import com.ozs.service.entity.BaseCameraManagement;
+import com.ozs.service.entity.BaseDeviceDynamicManagement;
+import com.ozs.service.entity.MqLog;
 import com.ozs.service.entity.MsgAlarm;
+import com.ozs.service.entity.MsgWebPush;
 import com.ozs.service.service.BaseCameraManagementService;
+import com.ozs.service.service.BaseDeviceDynamicManagementService;
+import com.ozs.service.service.MqLogService;
 import com.ozs.service.service.MsgAlarmService;
 import com.ozs.system.mapper.SysDictDataMapper;
 import com.ozs.web.core.config.CaneraConfig;
@@ -82,6 +88,10 @@ public class CameraUtil {
 
     @Resource
     BaseCameraManagementService baseCameraManagementService;
+    @Autowired
+    MqLogService mqLogService;
+    @Autowired
+    BaseDeviceDynamicManagementService baseDeviceDynamicManagementService;
 
 
     /**
@@ -826,4 +836,55 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
         }
 
     }
+
+    /**
+     * 相机状态修改
+     */
+    public void cameraBlockUp(){
+        //当前时间戳
+        long dades = System.currentTimeMillis();
+        //当前时间5分钟之前的时间戳
+        long time2 = dades - 300000L;
+        LambdaQueryWrapper<MqLog> mqLog=new LambdaQueryWrapper<>();
+        mqLog.ge(MqLog::getCreateTime,new Date(time2));
+        mqLog.le(MqLog::getCreateTime,new Date(dades));
+        List<MqLog> list = mqLogService.list(mqLog);
+        List<String> log = list.stream().map(MqLog::getCameraCode).collect(Collectors.toList());
+        List<BaseDeviceDynamicManagement> dynamicManagements = baseDeviceDynamicManagementService.list();
+        List<String> base = dynamicManagements.stream().map(BaseDeviceDynamicManagement::getCameraCode).collect(Collectors.toList());
+        //找出相机表中不包含日志表相机的数据
+        List<BaseDeviceDynamicManagement> ones = dynamicManagements.stream().filter(o -> !log.contains(o.getCameraCode())).collect(Collectors.toList());
+        List<String> collect = ones.stream().map(BaseDeviceDynamicManagement::getCameraCode).collect(Collectors.toList());
+        //找出相机表中包含日志表相机的数据
+        base.retainAll(log);
+        LambdaUpdateWrapper<BaseDeviceDynamicManagement> queryWrapper=new LambdaUpdateWrapper<>();
+        queryWrapper.in(BaseDeviceDynamicManagement::getCameraCode,base);
+        queryWrapper.set(BaseDeviceDynamicManagement::getIsDisable,1);
+        baseDeviceDynamicManagementService.saveOrUpdate(null,queryWrapper);
+
+        LambdaUpdateWrapper<BaseDeviceDynamicManagement> wrapper=new LambdaUpdateWrapper<>();
+        wrapper.in(BaseDeviceDynamicManagement::getCameraCode,collect);
+        wrapper.set(BaseDeviceDynamicManagement::getIsDisable,2);
+        baseDeviceDynamicManagementService.saveOrUpdate(null,wrapper);
+    }
+
+    public static void main(String[] args) {
+    
+            // 创建一个集合
+            ArrayList<String> one = new ArrayList<>();
+            one.add("a");
+            one.add("b");
+            one.add("c");
+            System.out.println("ArrayList 1: " + one);
+
+            // 创建另一个集合
+            ArrayList<String> other = new ArrayList<>();
+            other.add("a");
+            other.add("b");
+            System.out.println("ArrayList 2: " + other);
+
+
+        List<String> ones = one.stream().filter(o -> !other.contains(o)).collect(Collectors.toList());
+            System.out.println("ArrayList 1: " + one + " ; isRetainAll:" + ones);
+    }
 }