Browse Source

Merge branch 'master' of http://124.70.58.209:3000/ytrd-project-management/GeoHazardMonitor

hexiao 1 year ago
parent
commit
128cdd21c8
63 changed files with 1467 additions and 227 deletions
  1. 2 6
      .idea/compiler.xml
  2. 12 12
      .idea/jarRepositories.xml
  3. 3 0
      .idea/misc.xml
  4. 2 2
      business-service/pom.xml
  5. 71 47
      business-service/src/main/java/com/ozs/service/entity/BaseCameraManagement.java
  6. 11 1
      business-service/src/main/java/com/ozs/service/entity/BaseCameraVersion.java
  7. 6 0
      business-service/src/main/java/com/ozs/service/entity/BaseDeviceDynamicManagement.java
  8. 8 0
      business-service/src/main/java/com/ozs/service/entity/BaseRailwayManagement.java
  9. 51 0
      business-service/src/main/java/com/ozs/service/entity/BaseVersionCameraParam.java
  10. 84 0
      business-service/src/main/java/com/ozs/service/entity/CameraLogDetail.java
  11. 9 19
      business-service/src/main/java/com/ozs/service/entity/CameraUpdateLog.java
  12. 38 0
      business-service/src/main/java/com/ozs/service/entity/MqLog.java
  13. 9 0
      business-service/src/main/java/com/ozs/service/entity/MsgAlarmFrequency.java
  14. 6 6
      business-service/src/main/java/com/ozs/service/entity/vo/BaseCameraManagementVos.java
  15. 18 1
      business-service/src/main/java/com/ozs/service/entity/vo/BaseCameraVersionVo.java
  16. 5 0
      business-service/src/main/java/com/ozs/service/entity/vo/CameraUpdateLogResp.java
  17. 11 0
      business-service/src/main/java/com/ozs/service/entity/vo/Codec.java
  18. 11 0
      business-service/src/main/java/com/ozs/service/entity/vo/Param.java
  19. 11 0
      business-service/src/main/java/com/ozs/service/entity/vo/Svp.java
  20. 11 0
      business-service/src/main/java/com/ozs/service/entity/vo/Venc0.java
  21. 14 0
      business-service/src/main/java/com/ozs/service/mapper/BaseVersionCameraParamMapper.java
  22. 18 0
      business-service/src/main/java/com/ozs/service/mapper/CameraLogDetailMapper.java
  23. 16 0
      business-service/src/main/java/com/ozs/service/mapper/MqLogMapper.java
  24. 3 1
      business-service/src/main/java/com/ozs/service/service/BaseCameraVersionService.java
  25. 2 0
      business-service/src/main/java/com/ozs/service/service/BaseDeviceDynamicManagementService.java
  26. 12 0
      business-service/src/main/java/com/ozs/service/service/BaseVersionCameraParamService.java
  27. 19 0
      business-service/src/main/java/com/ozs/service/service/CameraLogDetailService.java
  28. 19 0
      business-service/src/main/java/com/ozs/service/service/MqLogService.java
  29. 11 5
      business-service/src/main/java/com/ozs/service/service/impl/BaseCameraManagementServiceImpl.java
  30. 109 19
      business-service/src/main/java/com/ozs/service/service/impl/BaseCameraVersionServiceImpl.java
  31. 0 2
      business-service/src/main/java/com/ozs/service/service/impl/BaseDeviceDynamicManagementServiceImpl.java
  32. 18 0
      business-service/src/main/java/com/ozs/service/service/impl/BaseVersionCameraParamServiceImpl.java
  33. 84 0
      business-service/src/main/java/com/ozs/service/service/impl/CameraCaptureService.java
  34. 66 0
      business-service/src/main/java/com/ozs/service/service/impl/CameraLogDetailServiceImpl.java
  35. 3 1
      business-service/src/main/java/com/ozs/service/service/impl/CameraUpdateLogServiceImpl.java
  36. 29 0
      business-service/src/main/java/com/ozs/service/service/impl/MqLogServiceImpl.java
  37. 43 0
      business-service/src/main/java/com/ozs/service/utils/CallbackUtil.java
  38. 44 0
      business-service/src/main/java/com/ozs/service/utils/PublishCallback.java
  39. 137 36
      business-service/src/main/java/com/ozs/service/utils/PublishClient.java
  40. 5 0
      business-service/src/main/resources/mapper/service/BaseCameraManagementMapper.xml
  41. 6 7
      business-service/src/main/resources/mapper/service/BaseDeviceDynamicManagementMapper.xml
  42. 47 0
      business-service/src/main/resources/mapper/service/CameraLogDetailMapper.xml
  43. 53 0
      business-service/src/main/resources/mapper/service/CameraUpdateLogMapper.xml
  44. 5 0
      business-service/src/main/resources/mapper/service/MqLogMapper.xml
  45. 4 4
      business-service/src/test/java/com/ozs/service/test/CodeGet.java
  46. 64 19
      hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseCameraVersionController.java
  47. 25 2
      hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/MsgAlarmController.java
  48. 80 0
      hazard-admin/src/main/java/com/ozs/web/controller/common/PictureController.java
  49. 32 5
      hazard-admin/src/main/java/com/ozs/web/controller/monitor/CameraUpdateLogController.java
  50. 15 18
      hazard-admin/src/main/java/com/ozs/web/controller/mqtt/MqttController.java
  51. 4 3
      hazard-admin/src/main/java/com/ozs/web/controller/system/SysDeptController.java
  52. 1 1
      hazard-admin/src/main/java/com/ozs/web/controller/system/SysDictDataController.java
  53. 9 0
      hazard-admin/src/main/java/com/ozs/web/controller/system/SysDictTypeController.java
  54. 2 1
      hazard-admin/src/main/java/com/ozs/web/controller/system/SysRoleController.java
  55. 5 2
      hazard-admin/src/main/java/com/ozs/web/controller/system/SysUserController.java
  56. 3 3
      hazard-admin/src/main/java/com/ozs/web/controller/upload/UploadController.java
  57. 16 0
      hazard-admin/src/main/java/com/ozs/web/controller/websocket/WebSocketConteoller.java
  58. 61 0
      hazard-admin/src/main/java/com/ozs/web/core/util/CameraUtil.java
  59. 2 2
      hazard-admin/src/main/resources/application.yml
  60. 1 1
      hazard-admin/src/main/resources/logback.xml
  61. BIN
      hazard-admin/src/main/resources/template/SysUser.xlsx
  62. BIN
      hazard-admin/src/main/resources/template/baseCameraManagement.xlsx
  63. 1 1
      hazard-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java

+ 2 - 6
.idea/compiler.xml

@@ -7,15 +7,11 @@
         <sourceOutputDir name="target/generated-sources/annotations" />
         <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
         <outputRelativeToContentRoot value="true" />
-        <module name="hazard-sdk" />
-        <module name="business-service" />
         <module name="hazard-admin" />
+        <module name="hazard-sdk" />
         <module name="base-admin" />
+        <module name="business-service" />
       </profile>
     </annotationProcessing>
-    <bytecodeTargetLevel>
-      <module name="admin" target="1.8" />
-      <module name="hazard-stateSecrets" target="1.8" />
-    </bytecodeTargetLevel>
   </component>
 </project>

+ 12 - 12
.idea/jarRepositories.xml

@@ -2,8 +2,8 @@
 <project version="4">
   <component name="RemoteRepositoriesConfiguration">
     <remote-repository>
-      <option name="id" value="public" />
-      <option name="name" value="aliyun nexus" />
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
       <option name="url" value="https://maven.aliyun.com/repository/public" />
     </remote-repository>
     <remote-repository>
@@ -11,6 +11,16 @@
       <option name="name" value="Central Repository" />
       <option name="url" value="https://repo.maven.apache.org/maven2" />
     </remote-repository>
+    <remote-repository>
+      <option name="id" value="public" />
+      <option name="name" value="aliyun nexus" />
+      <option name="url" value="https://maven.aliyun.com/repository/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
     <remote-repository>
       <option name="id" value="central" />
       <option name="name" value="Central Repository" />
@@ -26,11 +36,6 @@
       <option name="name" value="Central Repository" />
       <option name="url" value="http://maven.aliyun.com/nexus/content/repositories/central/" />
     </remote-repository>
-    <remote-repository>
-      <option name="id" value="central" />
-      <option name="name" value="Maven Central repository" />
-      <option name="url" value="https://repo1.maven.org/maven2" />
-    </remote-repository>
     <remote-repository>
       <option name="id" value="custom_group" />
       <option name="name" value="Nexus Repository" />
@@ -41,10 +46,5 @@
       <option name="name" value="JBoss Community repository" />
       <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
     </remote-repository>
-    <remote-repository>
-      <option name="id" value="central" />
-      <option name="name" value="Central Repository" />
-      <option name="url" value="https://maven.aliyun.com/repository/public" />
-    </remote-repository>
   </component>
 </project>

+ 3 - 0
.idea/misc.xml

@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
   <component name="MavenProjectsManager">
     <option name="originalFiles">
       <list>

+ 2 - 2
business-service/pom.xml

@@ -42,8 +42,8 @@
         </dependency>
         <dependency>
             <groupId>org.eclipse.paho</groupId>
-            <artifactId>mqtt-client</artifactId>
-            <version>0.4.0</version>
+            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
+            <version>1.2.2</version>
         </dependency>
         <dependency>
             <groupId>com.alibaba</groupId>

+ 71 - 47
business-service/src/main/java/com/ozs/service/entity/BaseCameraManagement.java

@@ -34,6 +34,59 @@ public class BaseCameraManagement extends BaseEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 监控相机安装里程位置字符串形式
+     */
+    @TableField(exist = false)
+    @Excel(name = "监控相机安装里程位置(单位KM)")
+    private String installMiles;
+
+    /**
+     *线路名称
+     */
+    @TableField(exist = false)
+    @Excel(name = "线路名称")
+    private String railwayName;
+
+    /**
+     *所属工务段名称
+     */
+    @TableField(exist = false)
+    @Excel(name = "所属工务段名称")
+    private String deptName;
+
+    /**
+     * 行别(1上行2下行)
+     */
+    @Excel(name = "行别",readConverterExp = "1=上行,2=下行")
+    private Integer lineDir;
+
+    /**
+     * 监控范围开始里程位置字符串形式
+     */
+    @TableField(exist = false)
+    @Excel(name = "监控范围开始里程位置(单位KM)")
+    private String beginMiles;
+
+    /**
+     * 监控范围结束里程位置字符串形式
+     */
+    @TableField(exist = false)
+    @Excel(name = "监控范围结束里程位置(单位KM)")
+    private String endMiles;
+
+    /**
+     * 监视相机经度
+     */
+    @Excel(name = "监视相机经度")
+    private String installLongitude;
+
+    /**
+     * 监视相机纬度
+     */
+    @Excel(name = "监视相机纬度")
+    private String installLatitude;
+    
     /**
      * 主键ID
      */
@@ -57,12 +110,6 @@ public class BaseCameraManagement extends BaseEntity implements Serializable {
      */
     private Long deptId;
 
-    /**
-     * 行别(1上行2下行)
-     */
-    @Excel(name = "行别",readConverterExp = "1=上行,2=下行")
-    private Integer lineDir;
-
     /**
      * 监控相机安装里程位置
      */
@@ -78,18 +125,6 @@ public class BaseCameraManagement extends BaseEntity implements Serializable {
      */
     private Integer endMile;
 
-    /**
-     * 监视相机经度
-     */
-    @Excel(name = "监视相机经度")
-    private String installLongitude;
-
-    /**
-     * 监视相机纬度
-     */
-    @Excel(name = "监视相机纬度")
-    private String installLatitude;
-
     /**
      * 线路编码
      */
@@ -111,58 +146,47 @@ public class BaseCameraManagement extends BaseEntity implements Serializable {
      */
     private String taskId;
 
-
     /**
-     * 监控相机安装里程位置字符串形式
+     * 版本ID
      */
-    @TableField(exist = false)
-    @Excel(name = "监控相机安装里程位置(单位KM)")
-    private String installMiles;
+    private Long versionId;
 
     /**
-     * 监控范围开始里程位置字符串形式
+     * 版本号
      */
-    @TableField(exist = false)
-    @Excel(name = "监控范围开始里程位置(单位KM)")
-    private String beginMiles;
-
+    @Excel(name = "版本号")
+    private String versionNum;
 
     /**
-     * 详情监控相机安装里程位置字符串形式
+     * 版本名称
      */
-    @TableField(exist = false)
-    private String installs;
+    @Excel(name = "版本名称")
+    private String versionName;
 
     /**
-     * 详情监控范围开始里程位置字符串形式
+     * 上一版本号
      */
-    @TableField(exist = false)
-    private String begins;
+    @Excel(name = "上一版本号")
+    private String lastVersionNum;
 
     /**
-     * 监控范围结束里程位置字符串形式
-     */
-    @TableField(exist = false)
-    @Excel(name = "监控范围结束里程位置(单位KM)")
-    private String endMiles;
-
-    /**
-     *线路名称
+     * 详情监控相机安装里程位置字符串形式
      */
     @TableField(exist = false)
-    @Excel(name = "线路名称")
-    private String railwayName;
+    private String installs;
 
     /**
-     *所属工务段名称
+     * 详情监控范围开始里程位置字符串形式
      */
     @TableField(exist = false)
-    @Excel(name = "所属工务段名称")
-    private String deptName;
+    private String begins;
 
     /**
      *是否显示启用录像按钮(1显示2不显示)
      */
     @TableField(exist = false)
     private Integer isStartRecording;
+    
+    @Excel(name = "备注")
+    private String remark;
 }

+ 11 - 1
business-service/src/main/java/com/ozs/service/entity/BaseCameraVersion.java

@@ -1,7 +1,9 @@
 package com.ozs.service.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ozs.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import lombok.AllArgsConstructor;
@@ -10,6 +12,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Author : sunhh
@@ -21,6 +24,11 @@ import java.util.Date;
 @Builder
 @ApiModel("相机版本管理表")
 public class BaseCameraVersion {
+    /**
+     * 摄像头系统参数
+     */
+    @TableField(exist = false)
+    private List<BaseVersionCameraParam> baseVersionCameraParamList;
 
     /**
      * 主键ID
@@ -39,7 +47,7 @@ public class BaseCameraVersion {
     private String versionName;
 
     /**
-     * 升级类型 1:算法升级,2:硬件升级,3:算法及硬件升级
+     * 升级类型 0.固件 1.算法 2:算法及硬件升级 3:摄像头系统参数
      */
     private String upgradeType;
 
@@ -56,6 +64,7 @@ public class BaseCameraVersion {
     /**
      * 创建时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /**
@@ -66,6 +75,7 @@ public class BaseCameraVersion {
     /**
      * 修改时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
     /**

+ 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;
 }

+ 8 - 0
business-service/src/main/java/com/ozs/service/entity/BaseRailwayManagement.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
 import java.util.Date;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ozs.common.annotation.Excel;
 import com.ozs.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
@@ -65,4 +66,11 @@ public class BaseRailwayManagement extends BaseEntity implements Serializable {
      */
     @Excel(name = "备注")
     private String remark;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
 }

+ 51 - 0
business-service/src/main/java/com/ozs/service/entity/BaseVersionCameraParam.java

@@ -0,0 +1,51 @@
+package com.ozs.service.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * @Author : sunhh
+ * @create 2023/4/26 14:43
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("摄像头系统参数")
+public class BaseVersionCameraParam {
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 版本ID
+     */
+    private Long versionId;
+    /**
+     * key
+     */
+    private String paramKey;
+    /**
+     * value
+     */
+    private String paramValue;
+    /**
+     * 创建人
+     */
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+}

+ 84 - 0
business-service/src/main/java/com/ozs/service/entity/CameraLogDetail.java

@@ -0,0 +1,84 @@
+package com.ozs.service.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author wyy
+ * @subject
+ * @creat 2023/4/25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("相机升级日志详情表")
+public class CameraLogDetail implements Serializable {
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 关联升级日志id
+     */
+    private Long logId;
+
+    /**
+     * 相机编码
+     */
+    @Excel(name = "相机编码", width = 30)
+    private String cameraCode;
+
+    /**
+     * 升级状态
+     */
+    @Excel(name = "状态", readConverterExp = "1=升级成功,2=升级中,3=升级失败")
+    private Integer status;
+
+    /**
+     * 上一版本号
+     */
+    @TableField(exist = false)
+    @Excel(name = "上一版本号")
+    private String lastVersionNum;
+
+    /**
+     * 当前版本号
+     */
+    @TableField(exist = false)
+    @Excel(name = "当前版本号")
+    private String currentVersionNum;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    private String remark;
+
+    /**
+     * 升级失败原因failure_reason
+     */
+    @Excel(name = "升级失败原因")
+    private String failureReason;
+}

+ 9 - 19
business-service/src/main/java/com/ozs/service/entity/CameraUpdateLog.java

@@ -36,10 +36,9 @@ public class CameraUpdateLog implements Serializable {
     private Long id;
 
     /**
-     * 相机编码
+     * 版本ID
      */
-    @Excel(name = "相机编码", width = 30)
-    private String cameraCode;
+    private Long versionId;
 
     /**
      * 版本号
@@ -57,34 +56,25 @@ public class CameraUpdateLog implements Serializable {
     private String upgradeType;
 
     /**
-     * 升级状态
-     */
-    @Excel(name = "状态", readConverterExp = "1=升级成功,2=升级中,3=升级失败")
-    private Integer status;
-
-    /**
-     * 上一版本号
+     * 升级类型字符串
      */
     @TableField(exist = false)
-    @Excel(name = "上一版本号")
-    private String lastVersionNum;
+    private String upgradeTypeName;
 
     /**
-     * 当前版本号
+     * 创建人
      */
-    @TableField(exist = false)
-    @Excel(name = "当前版本号")
-    private String currentVersionNum;
+    private String createBy;
 
     /**
-     * 创建人
+     * 创建人名称
      */
-    private String createBy;
+    @TableField(exist = false)
+    private String createByName;
 
     /**
      * 创建时间
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 }

+ 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;
+
+
+}

+ 9 - 0
business-service/src/main/java/com/ozs/service/entity/MsgAlarmFrequency.java

@@ -1,12 +1,14 @@
 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.time.LocalDateTime;
 import java.io.Serializable;
 import java.util.Date;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ozs.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import lombok.AllArgsConstructor;
@@ -46,6 +48,7 @@ public class MsgAlarmFrequency extends BaseEntity implements Serializable {
     /**
      * 报警时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date alarmTime;
 
     /**
@@ -97,4 +100,10 @@ public class MsgAlarmFrequency extends BaseEntity implements Serializable {
      * 备注
      */
     private String remark;
+
+    /**
+     * 报警是否解除 1已解除2未解除
+     */
+    @TableField(exist = false)
+    private Integer isLock;
 }

+ 6 - 6
business-service/src/main/java/com/ozs/service/entity/vo/BaseCameraManagementVos.java

@@ -77,20 +77,20 @@ public class BaseCameraManagementVos implements Serializable {
     /**
      * 监控相机安装里程位置
      */
-    @Excel(name = "监控相机安装里程位置")
-    private Integer installMile;
+    @Excel(name = "监控相机安装里程位置(单位KM)")
+    private String installMiles;
 
     /**
      * 监控范围开始里程位置
      */
-    @Excel(name = "监控范围开始里程位置")
-    private Integer beginMile;
+    @Excel(name = "监控范围开始里程位置(单位KM)")
+    private String beginMiles;
 
     /**
      * 监控范围结束里程位置
      */
-    @Excel(name = "监控范围结束里程位置")
-    private Integer endMile;
+    @Excel(name = "监控范围结束里程位置(单位KM)")
+    private String endMiles;
 
     /**
      *线路名称

+ 18 - 1
business-service/src/main/java/com/ozs/service/entity/vo/BaseCameraVersionVo.java

@@ -1,12 +1,17 @@
 package com.ozs.service.entity.vo;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.annotation.Excel;
 import com.ozs.common.vo.PageVo;
+import com.ozs.service.entity.BaseVersionCameraParam;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Author : sunhh
@@ -19,6 +24,16 @@ public class BaseCameraVersionVo {
     @ApiModelProperty("页大小")
     private Long pageSize;
 
+    /**
+     * 摄像头系统参数
+     */
+    private List<BaseVersionCameraParam> baseVersionCameraParamList;
+
+    /**
+     * 相机编码
+     */
+    private List<String> cameraCodeList;
+
     /**
      * 主键ID
      */
@@ -35,7 +50,7 @@ public class BaseCameraVersionVo {
     private String versionName;
 
     /**
-     * 升级类型 1:算法升级,2:硬件升级,3:算法及硬件升级
+     * 升级类型 0.固件 1.算法 2:算法及硬件升级 3:摄像头系统参数
      */
     private String upgradeType;
     private String upgradeTypename;
@@ -53,6 +68,7 @@ public class BaseCameraVersionVo {
     /**
      * 创建时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /**
@@ -63,6 +79,7 @@ public class BaseCameraVersionVo {
     /**
      * 修改时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
     /**

+ 5 - 0
business-service/src/main/java/com/ozs/service/entity/vo/CameraUpdateLogResp.java

@@ -43,4 +43,9 @@ public class CameraUpdateLogResp extends PageVo implements Serializable {
      */
     private Integer currentYear;
 
+    /**
+     * 关联升级日志id
+     */
+    private Long logId;
+
 }

+ 11 - 0
business-service/src/main/java/com/ozs/service/entity/vo/Codec.java

@@ -0,0 +1,11 @@
+package com.ozs.service.entity.vo;
+
+import lombok.Data;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class Codec {
+    private Venc0 venc0;
+}

+ 11 - 0
business-service/src/main/java/com/ozs/service/entity/vo/Param.java

@@ -0,0 +1,11 @@
+package com.ozs.service.entity.vo;
+
+import lombok.Data;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class Param {
+    private Double threshold;
+}

+ 11 - 0
business-service/src/main/java/com/ozs/service/entity/vo/Svp.java

@@ -0,0 +1,11 @@
+package com.ozs.service.entity.vo;
+
+import lombok.Data;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class Svp {
+    private Param param;
+}

+ 11 - 0
business-service/src/main/java/com/ozs/service/entity/vo/Venc0.java

@@ -0,0 +1,11 @@
+package com.ozs.service.entity.vo;
+
+import lombok.Data;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class Venc0 {
+    private Double fps;
+}

+ 14 - 0
business-service/src/main/java/com/ozs/service/mapper/BaseVersionCameraParamMapper.java

@@ -0,0 +1,14 @@
+package com.ozs.service.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.service.entity.BaseCameraVersion;
+import com.ozs.service.entity.BaseVersionCameraParam;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author : sunhh
+ * @create 2023/4/26 14:50
+ */
+@Mapper
+public interface BaseVersionCameraParamMapper extends BaseMapper<BaseVersionCameraParam> {
+}

+ 18 - 0
business-service/src/main/java/com/ozs/service/mapper/CameraLogDetailMapper.java

@@ -0,0 +1,18 @@
+package com.ozs.service.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.service.entity.CameraLogDetail;
+import com.ozs.service.entity.vo.CameraUpdateLogResp;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author wyy
+ * @subject
+ * @creat 2023/4/25
+ */
+@Mapper
+public interface CameraLogDetailMapper extends BaseMapper<CameraLogDetail> {
+    List<CameraLogDetail> selectDetail(CameraUpdateLogResp cameraUpdateLogResp);
+}

+ 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> {
+
+}

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

@@ -13,5 +13,7 @@ import com.ozs.service.entity.vo.BaseCameraVersionVo;
 public interface BaseCameraVersionService extends IService<BaseCameraVersion> {
     AjaxResult cameraVersionAdd(BaseCameraVersion baseCameraVersion, String userId);
 
-    IPage<BaseCameraVersionVo> cameraVersionList(BaseCameraVersionVo baseCameraVersionVo);
+    com.github.pagehelper.Page<BaseCameraVersion> cameraVersionList(BaseCameraVersionVo baseCameraVersionVo);
+
+    AjaxResult cameraVersionUpgrade(BaseCameraVersionVo baseCameraVersion, String userId);
 }

+ 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>
  * 设备动态管理表 服务类

+ 12 - 0
business-service/src/main/java/com/ozs/service/service/BaseVersionCameraParamService.java

@@ -0,0 +1,12 @@
+package com.ozs.service.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.service.entity.BaseCameraVersion;
+import com.ozs.service.entity.BaseVersionCameraParam;
+
+/**
+ * @Author : sunhh
+ * @create 2023/4/26 16:12
+ */
+public interface BaseVersionCameraParamService extends IService<BaseVersionCameraParam> {
+}

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

@@ -0,0 +1,19 @@
+package com.ozs.service.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.service.entity.CameraLogDetail;
+import com.ozs.service.entity.vo.CameraUpdateLogResp;
+
+import java.util.List;
+
+/**
+ * @author wyy
+ * @subject
+ * @creat 2023/4/25
+ */
+public interface CameraLogDetailService extends IService<CameraLogDetail> {
+    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);
+    
+}

+ 11 - 5
business-service/src/main/java/com/ozs/service/service/impl/BaseCameraManagementServiceImpl.java

@@ -42,7 +42,7 @@ import java.util.*;
  */
 @Service
 public class BaseCameraManagementServiceImpl extends ServiceImpl<BaseCameraManagementMapper, BaseCameraManagement> implements BaseCameraManagementService {
-    public static final String PATTERN = "^[0-9]*$";
+    public static final String PATTERN = "^(\\d+.\\d{1,3}|\\d+)$";
     @Autowired
     protected Validator validator;
     @Autowired
@@ -100,14 +100,17 @@ public class BaseCameraManagementServiceImpl extends ServiceImpl<BaseCameraManag
                         }
                         BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(queryWrapper);
                         if (!ObjectUtils.isEmpty(baseRailwayManagement)) {
-                            if (!accountManagement.getBeginMile().toString().matches(PATTERN) || !accountManagement.getInstallMile().toString().matches(PATTERN) || !accountManagement.getEndMile().toString().matches(PATTERN)) {
+                            if (!accountManagement.getBeginMiles().matches(PATTERN) || !accountManagement.getInstallMiles().matches(PATTERN) || !accountManagement.getEndMiles().matches(PATTERN)) {
                                 failureNum++;
                                 failureMsg.append(failureNum + "、相机编码为: " + accountManagement.getCameraCode() + "的数据,里程位置填写格式不正确,请填写数字");
                             } else {
+                                Double install =Double.valueOf(accountManagement.getInstallMiles());
+                                Double end = Double.valueOf( accountManagement.getEndMiles());
+                                Double begin = Double.valueOf(accountManagement.getBeginMiles());
                                 accountManagement.setRailwayCode(baseRailwayManagement.getRailwayCode());
-                                accountManagement.setInstallMile(accountManagement.getInstallMile() * 1000);
-                                accountManagement.setEndMile(accountManagement.getEndMile() * 1000);
-                                accountManagement.setBeginMile(accountManagement.getBeginMile() * 1000);
+                                accountManagement.setInstallMile((int) (install * 1000));
+                                accountManagement.setEndMile((int) (end * 1000));
+                                accountManagement.setBeginMile((int) (begin * 1000));
                                 if (accountManagement.getBeginMile() < accountManagement.getEndMile()) {
                                     baseCameraManagementMapper.insert(accountManagement);
                                     BaseDeviceDynamicManagement baseDeviceDynamicManagement = new BaseDeviceDynamicManagement();
@@ -317,6 +320,9 @@ public class BaseCameraManagementServiceImpl extends ServiceImpl<BaseCameraManag
         if (!StringUtils.isEmptySunhh(baseCameraManagement) && !StringUtils.isEmptySunhh(baseCameraManagement.getCameraCode())) {
             wrapper.eq(BaseCameraManagement::getCameraCode, baseCameraManagement.getCameraCode());
         }
+        if (!StringUtils.isEmptySunhh(baseCameraManagement) && !StringUtils.isEmptySunhh(baseCameraManagement.getVersionId())) {
+            wrapper.ne(BaseCameraManagement::getVersionId, baseCameraManagement.getVersionId());
+        }
         List<BaseCameraManagement> baseCameraManagements = baseCameraManagementMapper.selectList(wrapper);
         return baseCameraManagements;
     }

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

@@ -7,15 +7,22 @@ import com.github.pagehelper.PageHelper;
 import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.utils.StringUtils;
 import com.ozs.common.utils.bean.BeanUtils;
-import com.ozs.service.entity.BaseCameraVersion;
+import com.ozs.service.entity.*;
 import com.ozs.service.entity.vo.BaseCameraVersionVo;
-import com.ozs.service.mapper.BaseCameraVersionMapper;
+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;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 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;
 
@@ -28,8 +35,21 @@ public class BaseCameraVersionServiceImpl extends ServiceImpl<BaseCameraVersionM
 
     @Autowired
     private BaseCameraVersionMapper baseCameraVersionMapper;
+    @Autowired
+    private CameraUpdateLogMapper cameraUpdateLogMapper;
+    @Autowired
+    private CameraLogDetailMapper cameraLogDetailMapper;
+    @Resource
+    private BaseCameraManagementMapper baseCameraManagementMapper;
+    @Autowired
+    private BaseVersionCameraParamMapper baseVersionCameraParamMapper;
+    @Autowired
+    BaseDeviceDynamicManagementService baseDeviceDynamicManagementService;
+    @Autowired
+    CameraLogDetailService cameraLogDetailService;
 
     @Override
+    @Transactional
     public AjaxResult cameraVersionAdd(BaseCameraVersion baseCameraVersion, String userId) {
         LambdaQueryWrapper<BaseCameraVersion> wrapper = new LambdaQueryWrapper<>();
         if (!StringUtils.isEmptySunhh(baseCameraVersion) && !StringUtils.isEmptySunhh(baseCameraVersion.getVersionNum())) {
@@ -46,6 +66,15 @@ public class BaseCameraVersionServiceImpl extends ServiceImpl<BaseCameraVersionM
             baseCameraVersion.setCreateTime(date);
             baseCameraVersion.setUpdateTime(date);
             baseCameraVersionMapper.insert(baseCameraVersion);
+            // 升级类型 0.固件 1.算法 2:算法及硬件升级 3:摄像头系统参数
+            if ("3".equals(baseCameraVersion.getUpgradeType()) && baseCameraVersion.getBaseVersionCameraParamList().size() > 0) {
+                for (BaseVersionCameraParam baseVersionCameraParam : baseCameraVersion.getBaseVersionCameraParamList()) {
+                    baseVersionCameraParam.setVersionId(baseCameraVersion.getId());
+                    baseVersionCameraParam.setCreateBy(userId);
+                    baseVersionCameraParam.setCreateTime(new Date());
+                    baseVersionCameraParamMapper.insert(baseVersionCameraParam);
+                }
+            }
         } else {
             return AjaxResult.error("当前版本号或版本名称已存在,请核对后在添加!");
         }
@@ -53,7 +82,7 @@ public class BaseCameraVersionServiceImpl extends ServiceImpl<BaseCameraVersionM
     }
 
     @Override
-    public IPage<BaseCameraVersionVo> cameraVersionList(BaseCameraVersionVo baseCameraVersionVo) {
+    public com.github.pagehelper.Page<BaseCameraVersion> cameraVersionList(BaseCameraVersionVo baseCameraVersionVo) {
         LambdaQueryWrapper<BaseCameraVersion> wrapper = new LambdaQueryWrapper<>();
         if (!StringUtils.isEmptySunhh(baseCameraVersionVo) && !StringUtils.isEmptySunhh(baseCameraVersionVo.getVersionNum())) {
             wrapper.eq(BaseCameraVersion::getVersionNum, baseCameraVersionVo.getVersionNum());
@@ -68,21 +97,82 @@ public class BaseCameraVersionServiceImpl extends ServiceImpl<BaseCameraVersionM
         int pageSize = Integer.parseInt(baseCameraVersionVo.getPageSize().toString());
         com.github.pagehelper.Page<BaseCameraVersion> page = PageHelper.startPage(pageNum, pageSize)
                 .doSelectPage(() -> baseCameraVersionMapper.selectList(wrapper));
-        com.baomidou.mybatisplus.extension.plugins.pagination.Page<BaseCameraVersionVo> pageR =
-                new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageNum, pageSize);
-//        if (!ObjectUtils.isEmpty(page) && page.getResult().size() > 0) {
-//            List<BaseCameraVersionVo> dto1 = page.getResult().stream().map(o -> {
-//                BaseCameraVersionVo baseCameraVersionVo1 = new BaseCameraVersionVo();
-//                BeanUtils.copyProperties(o, baseCameraVersionVo1);
-//                // 升级类型 1:算法升级,2:硬件升级,3:算法及硬件升级
-//                String upgradeTypeName = dictDataService.selectDictLabel("upgrade_type", o.getUpgradeType());
-//                if (!StringUtils.isEmptySunhh(upgradeTypeName)) {
-//                    baseCameraVersionVo1.setUpgradeTypename(upgradeTypeName);
-//                }
-//                return baseCameraVersionVo1;
-//            }).collect(Collectors.toList());
-//            pageR.setRecords(dto1);
-//        }
-        return pageR;
+        return page;
+    }
+
+    @Override
+    @Transactional
+    public AjaxResult cameraVersionUpgrade(BaseCameraVersionVo baseCameraVersionVo, String userId) {
+        BaseCameraVersion baseCameraVersion = baseCameraVersionMapper.selectById(baseCameraVersionVo.getId());
+        if (StringUtils.isEmptySunhh(baseCameraVersion)) {
+            return AjaxResult.error("当前版本ID不存在!");
+        }
+        BeanUtils.copyProperties(baseCameraVersion, baseCameraVersionVo);
+        if ("3".equals(baseCameraVersion.getUpgradeType())) {
+            LambdaQueryWrapper<BaseVersionCameraParam> wrapperBaseVersionCameraParam = new LambdaQueryWrapper<>();
+            if (!StringUtils.isEmptySunhh(baseCameraVersionVo) && !StringUtils.isEmptySunhh(baseCameraVersionVo.getId())) {
+                wrapperBaseVersionCameraParam.eq(BaseVersionCameraParam::getVersionId, baseCameraVersionVo.getId());
+            }
+            List<BaseVersionCameraParam> baseVersionCameraParams = baseVersionCameraParamMapper.selectList(wrapperBaseVersionCameraParam);
+            baseCameraVersionVo.setBaseVersionCameraParamList(baseVersionCameraParams);
+        }
+        CameraUpdateLog cameraUpdateLog = new CameraUpdateLog();
+        cameraUpdateLog.setVersionId(baseCameraVersion.getId());
+        cameraUpdateLog.setVersionNum(baseCameraVersion.getVersionNum());
+        cameraUpdateLog.setVersionName(baseCameraVersion.getVersionName());
+        cameraUpdateLog.setUpgradeType(baseCameraVersion.getUpgradeType());
+        cameraUpdateLog.setCreateBy(userId);
+        cameraUpdateLog.setCreateTime(new Date());
+        int id = cameraUpdateLogMapper.insert(cameraUpdateLog);
+        for (String cameraCode : baseCameraVersionVo.getCameraCodeList()) {
+            LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<>();
+            if (!StringUtils.isEmptySunhh(cameraCode)) {
+                wrapper.eq(BaseCameraManagement::getCameraCode, cameraCode);
+            }
+            BaseCameraManagement baseCameraManagement = baseCameraManagementMapper.selectOne(wrapper);
+            if (StringUtils.isEmptySunhh(baseCameraManagement)) {
+                return AjaxResult.error("相机编码:" + cameraCode + "不存在!");
+            }
+            String lastVersionNum = baseCameraManagement.getVersionNum();
+            baseCameraManagement.setVersionId(baseCameraVersion.getId());
+            baseCameraManagement.setVersionNum(baseCameraVersion.getVersionNum());
+            baseCameraManagement.setVersionName(baseCameraVersion.getVersionName());
+            baseCameraManagement.setLastVersionNum(lastVersionNum);
+            baseCameraManagementMapper.updateById(baseCameraManagement);
+
+            CameraLogDetail cameraLogDetail = new CameraLogDetail();
+            cameraLogDetail.setLogId(cameraUpdateLog.getId());
+            cameraLogDetail.setCameraCode(cameraCode);
+            cameraLogDetail.setStatus(2);
+            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) {
+                if ("threshold".equals(baseVersionCameraParam.getParamKey())) {
+                    PublishClient.confidenceCoefficient(baseCameraVersionVo, baseVersionCameraParam.getParamValue());
+                    new SubscribeClient("config", "config").start();
+                } else if ("fps".equals(baseVersionCameraParam.getParamKey())) {
+                    PublishClient.configFrameRate(baseCameraVersionVo, baseVersionCameraParam.getParamValue());
+                    new SubscribeClient("config", "config").start();
+                }
+            }
+        }
+        PublishClient.updateDeviceSn(baseCameraVersionVo);
+        new SubscribeClient("update", "update").start();
+        return AjaxResult.success("已经为您提交升级申请,请您到“日志管理>相机升级日志”页面查看升级结果。");
     }
 }

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

@@ -33,8 +33,6 @@ public class BaseDeviceDynamicManagementServiceImpl extends ServiceImpl<BaseDevi
 
     @Override
     public CameraTree cameraTree(CameraTreeVo cameraTreeVo) {
-
-
         //1 父
         CameraTree cameraTree = CameraTree.builder()
                 .name("相机树")

+ 18 - 0
business-service/src/main/java/com/ozs/service/service/impl/BaseVersionCameraParamServiceImpl.java

@@ -0,0 +1,18 @@
+package com.ozs.service.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.service.entity.BaseCameraManagement;
+import com.ozs.service.entity.BaseVersionCameraParam;
+import com.ozs.service.mapper.BaseCameraManagementMapper;
+import com.ozs.service.mapper.BaseVersionCameraParamMapper;
+import com.ozs.service.service.BaseCameraManagementService;
+import com.ozs.service.service.BaseVersionCameraParamService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author : sunhh
+ * @create 2023/4/26 16:15
+ */
+@Service
+public class BaseVersionCameraParamServiceImpl extends ServiceImpl<BaseVersionCameraParamMapper, BaseVersionCameraParam> implements BaseVersionCameraParamService {
+}

+ 84 - 0
business-service/src/main/java/com/ozs/service/service/impl/CameraCaptureService.java

@@ -0,0 +1,84 @@
+package com.ozs.service.service.impl;
+
+import com.ozs.common.utils.MinioUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ * @author wyy
+ * @subject
+ * @creat 2023/4/26
+ */
+@Service
+public class CameraCaptureService {
+    private static final Logger log = LoggerFactory.getLogger(CameraCaptureService.class);
+    @Resource
+    MinioUtils minioUtils;
+
+    public void getCapture(URL url, String fileName) throws IOException {
+        HttpURLConnection connection = null;
+        BufferedInputStream bis = null;
+        BufferedOutputStream bos = null;
+        try {
+            connection = (HttpURLConnection) url.openConnection();
+            // http正文内,因此需要设为true
+            connection.setDoOutput(true);
+            connection.setDoInput(true);
+            // Post 请求不能使用缓存
+            connection.setUseCaches(false);
+            //设置本次连接是否自动重定向
+            connection.setInstanceFollowRedirects(true);
+
+            connection.setRequestMethod("GET");
+            connection.setRequestProperty("Accept-Language", "zh,zh-CN;q=0.9");
+            connection.setRequestProperty("connection", "keep-alive");
+            //设置参数类型是json格式
+            connection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
+            connection.setRequestProperty("Accept","application/json");
+            //connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
+            connection.setRequestProperty("Charsert", "UTF-8");
+            //设置读取时间为30秒
+            connection.setConnectTimeout(30 * 1000);
+            connection.setReadTimeout(30 * 1000);
+            connection.connect();
+
+            // 返回流
+            System.out.println("responseCode=" + connection.getResponseCode());
+            log.info("responseCode="+connection.getResponseCode());
+            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
+                InputStream input = connection.getInputStream();
+                bis = new BufferedInputStream(input);
+                minioUtils.minIoClientUpload(bis, fileName);
+                FileOutputStream output = new FileOutputStream(fileName);
+                bos = new BufferedOutputStream(output);
+                byte[] buffer = new byte[1024];
+                int size = 0;
+                while ((size = bis.read(buffer, 0, 1024)) != -1) {
+                    bos.write(buffer, 0, size);
+                }
+                bos.flush();
+            }
+        } catch (Exception e) {
+            //先关闭外层的缓冲流,再关闭内层的流,但是在关闭外层流的同时,
+            //内层流也会自动的进行关闭,关于内层流的关闭,可以省略
+            e.printStackTrace();
+        } finally {
+            if (bis != null) {
+                bis.close();
+            }
+//            if (bos != null) {
+//                bos.close();
+//            }
+            if (connection != null) {
+                connection.disconnect();
+            }
+//            os.close();
+        }
+    }
+}

+ 66 - 0
business-service/src/main/java/com/ozs/service/service/impl/CameraLogDetailServiceImpl.java

@@ -0,0 +1,66 @@
+package com.ozs.service.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.service.entity.CameraLogDetail;
+import com.ozs.service.entity.CameraUpdateLog;
+import com.ozs.service.entity.vo.CameraUpdateLogResp;
+import com.ozs.service.mapper.CameraLogDetailMapper;
+import com.ozs.service.mapper.CameraUpdateLogMapper;
+import com.ozs.service.service.CameraLogDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author wyy
+ * @subject
+ * @creat 2023/4/25
+ */
+@Service
+public class CameraLogDetailServiceImpl extends ServiceImpl<CameraLogDetailMapper, CameraLogDetail> implements CameraLogDetailService {
+    
+    @Autowired
+    CameraLogDetailMapper cameraLogDetailMapper;
+
+    @Override
+    public List<CameraLogDetail> selectDetail(CameraUpdateLogResp cameraUpdateLogResp) {
+        List<CameraLogDetail> list = cameraLogDetailMapper.selectDetail(cameraUpdateLogResp);
+        return list;
+    }
+
+    @Override
+    public IPage listToPage(List list, int pageNum, int pageSize) {
+        List pageList = new ArrayList<>();
+        int curIdx = pageNum > 1 ? (pageNum - 1) * pageSize : 0;
+        for (int i = 0; i < pageSize && curIdx + i < list.size(); i++) {
+            pageList.add(list.get(curIdx + i));
+        }
+        IPage page = new Page<>(pageNum, pageSize);
+        page.setRecords(pageList);
+        page.setTotal(list.size());
+        return page;
+    }
+    
+    @Override
+    public  void updateAccessories(String deviceSn, Integer code,String remark){
+        LambdaQueryWrapper<CameraLogDetail> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CameraLogDetail::getCameraCode, deviceSn);
+        wrapper.orderByDesc(CameraLogDetail::getUpdateTime);
+        List<CameraLogDetail> list = cameraLogDetailMapper.selectList(wrapper);
+        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);
+        }
+    }
+}

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

@@ -1,5 +1,6 @@
 package com.ozs.service.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -22,7 +23,8 @@ import java.util.List;
 public class CameraUpdateLogServiceImpl extends ServiceImpl<CameraUpdateLogMapper, CameraUpdateLog> implements CameraUpdateLogService {
 
     @Autowired
-    private CameraUpdateLogMapper cameraUpdateLogMapper;
+    private   CameraUpdateLogMapper cameraUpdateLogMapper;
+    
 
     @Override
     public List<CameraUpdateLog> selectDetail(CameraUpdateLogResp cameraUpdateLogResp) {

+ 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);
+    }
+}

+ 43 - 0
business-service/src/main/java/com/ozs/service/utils/CallbackUtil.java

@@ -0,0 +1,43 @@
+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;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * 相机工具
+ * @author Administrator
+ */
+
+@Configuration
+@Slf4j
+@Component
+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,String remark){
+        CallbackUtil.cameraLogDetail.updateAccessories(deviceSn,code,remark);
+    }
+
+    public static void  heart(String cameraCode){
+        CallbackUtil.mqLog.insetHeartLog(cameraCode);
+    }
+}

+ 44 - 0
business-service/src/main/java/com/ozs/service/utils/PublishCallback.java

@@ -3,9 +3,17 @@ package com.ozs.service.utils;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ozs.service.entity.CameraUpdateLog;
+import com.ozs.service.service.CameraUpdateLogService;
+import com.ozs.service.service.impl.CameraUpdateLogServiceImpl;
 import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
 import org.eclipse.paho.client.mqttv3.MqttCallback;
 import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
 
 /**
  * callback回调:
@@ -13,12 +21,14 @@ import org.eclipse.paho.client.mqttv3.MqttMessage;
  * @author Administrator
  */
 public class PublishCallback implements MqttCallback {
+    
 
     //在断开连接时调用
     @Override
     public void connectionLost(Throwable cause) {
         // 连接丢失后,一般在这里面进行重连
         System.out.println("连接断开,可以做重连");
+        new SubscribeClient("heart", "heart").start();
     }
 
     //接收到已经发布的 QoS 1 或 QoS 2 消息的传递令牌时调用
@@ -32,6 +42,7 @@ public class PublishCallback implements MqttCallback {
     public void messageArrived(String topic, MqttMessage message) throws Exception {
         String sign = null;
         String deviceSn=null;
+        Integer code=null;
         // subscribe后得到的消息会执行到这里面
         System.out.println("接收消息主题 : " + topic);
         System.out.println("接收消息Qos : " + message.getQos());
@@ -44,8 +55,41 @@ 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)) {
+            String s = new String(message.getPayload());
+            s = "[" + s + "]";
+            JSONArray jsonArray = JSONArray.parseArray(s);
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject object = jsonArray.getJSONObject(i);
+                code = (Integer) object.get("code");
+                deviceSn = (String) object.get("device_sn");
+            }
+            if (code==200) {
+                CallbackUtil.callback(deviceSn, code, "");
+            }else {
+                CallbackUtil.callback(deviceSn, code, "固件升级失败");
+            }
+        }if ("config".equals(topic)){
+            String s = new String(message.getPayload());
+            s = "[" + s + "]";
+            JSONArray jsonArray = JSONArray.parseArray(s);
+            for (int i = 0; i < jsonArray.size(); i++) {
+                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,"");
+        }
         System.out.println("接收消息内容 : " + new String(message.getPayload()));
         
     }

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

@@ -1,9 +1,17 @@
 package com.ozs.service.utils;
 
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.ozs.common.utils.sign.Md5Utils;
+import com.ozs.common.utils.stateSecrets.SM4Utils;
+import com.ozs.service.entity.vo.BaseCameraVersionVo;
+import com.ozs.service.entity.vo.Codec;
 import com.ozs.service.entity.vo.Data;
 import com.ozs.service.entity.vo.Heartbeat;
+import com.ozs.service.entity.vo.Param;
+import com.ozs.service.entity.vo.Svp;
 import com.ozs.service.entity.vo.UpdateDeviceSn;
+import com.ozs.service.entity.vo.Venc0;
 import org.eclipse.paho.client.mqttv3.MqttClient;
 import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
 import org.eclipse.paho.client.mqttv3.MqttDeliveryToken;
@@ -14,6 +22,11 @@ import org.eclipse.paho.client.mqttv3.MqttTopic;
 import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
 import org.springframework.beans.factory.annotation.Value;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
 
 /**
  * 发布客户端
@@ -24,7 +37,7 @@ public class PublishClient {
     /**
      * mqtt服务器地址
      */
-    public static  final String HOST="tcp://124.70.58.209:1883";
+    public static final String HOST = "tcp://124.70.58.209:1883";
     /**
      * 主题
      */
@@ -43,16 +56,17 @@ public class PublishClient {
 
     /**
      * 初始化客户端实例
+     *
      * @param topic
      * @param clientId
      * @throws MqttException
      */
-    public PublishClient(String topic,String clientId) throws MqttException {
+    public PublishClient(String topic, String clientId) throws MqttException {
         /**
          * mqtt 客户机ID
          * heart_DEVICESN
          */
-        this.topic=topic;
+        this.topic = topic;
         /**
          * MemoryPersistence设置clientId的保存形式,默认为以内存保存
          */
@@ -96,6 +110,7 @@ public class PublishClient {
 
     /**
      * 发布
+     *
      * @param topic
      * @param message
      * @throws MqttPersistenceException
@@ -107,12 +122,12 @@ public class PublishClient {
         token.waitForCompletion();
         System.out.println("message is published completely! " + token.isComplete());
     }
-    
-    public static void pull(String sign,String deviceSn) throws MqttException, InterruptedException {
+
+    public static void pull(String sign, String deviceSn) throws MqttException, InterruptedException {
         /**
          * 发布客户端
          */
-        PublishClient server = new PublishClient("heart_"+deviceSn,"heart_"+deviceSn);
+        PublishClient server = new PublishClient("heart_" + deviceSn, "heart_" + deviceSn);
         Heartbeat test = new Heartbeat();
         test.setName("HeartResponse");
         Data data = new Data();
@@ -130,7 +145,7 @@ public class PublishClient {
         /**
          * 消息保留
          */
-        server.message.setRetained(true);
+//        server.message.setRetained(false);
         /**
          * 消息内容
          */
@@ -141,38 +156,124 @@ public class PublishClient {
         server.publish(server.topic11, server.message);
     }
 
-    public static void updateDeviceSn(String sign){
+    public static void updateDeviceSn(BaseCameraVersionVo baseCameraVersionVo) {
         /**
          * 发布客户端
          */
-        try {
-            PublishClient server = new PublishClient(sign,sign);
-            UpdateDeviceSn updateDeviceSn = new UpdateDeviceSn();
-            updateDeviceSn.setName("UpdateRequest");
-            updateDeviceSn.setType(0);
-            updateDeviceSn.setMd5("b867d0e545d9abbf74c2d11b62798250");
-            updateDeviceSn.setSign("b867d0e545d9abbf74c2d11b62798250");
-            updateDeviceSn.setUrl("https://example.com/download/Model_Helmet2_V213_P_c69cbfa9d7de4234f76d6f3811986e3a.bovai");
-            String s = JSON.toJSONString(updateDeviceSn);
-            server.message = new MqttMessage();
-            /**
-             * 保证消息能到达一次
-             */
-            server.message.setQos(1);
-            /**
-             * 消息保留
-             */
-            server.message.setRetained(true);
-            /**
-             * 消息内容
-             */
-            server.message.setPayload(s.getBytes());
-            /**
-             * 发布
-             */
-            server.publish(server.topic11, server.message);
-        } catch (MqttException e) {
-            System.out.println(e.getMessage());
+        for (String code : baseCameraVersionVo.getCameraCodeList()) {
+            try {
+                PublishClient server = new PublishClient("update_" + code, "update_" + code);
+                UpdateDeviceSn updateDeviceSn = new UpdateDeviceSn();
+                updateDeviceSn.setName("UpdateRequest");
+                updateDeviceSn.setType(Integer.valueOf(baseCameraVersionVo.getUpgradeType()));
+                updateDeviceSn.setMd5(baseCameraVersionVo.getMd5());
+                updateDeviceSn.setSign(UUID.randomUUID().toString());
+                updateDeviceSn.setUrl(baseCameraVersionVo.getVersionAddress());
+                String s = JSON.toJSONString(updateDeviceSn);
+                server.message = new MqttMessage();
+                /**
+                 * 保证消息能到达一次
+                 */
+                server.message.setQos(1);
+                /**
+                 * 消息保留
+                 */
+//                server.message.setRetained(false);
+                /**
+                 * 消息内容
+                 */
+                server.message.setPayload(s.getBytes());
+                /**
+                 * 发布
+                 */
+                server.publish(server.topic11, server.message);
+            } catch (MqttException e) {
+                System.out.println(e.getMessage());
+            }
+        }
+    }
+
+    public static void confidenceCoefficient(BaseCameraVersionVo baseCameraVersionVo,String value) {
+        /**
+         * 发布客户端
+         */
+        for (String code : baseCameraVersionVo.getCameraCodeList()) {
+            try {
+                PublishClient server = new PublishClient("config_" + code, "config_" + code);
+                JSONObject res = new JSONObject();
+                res.put("Name", "ConfigRequest");
+                Svp svp = new Svp();
+                Param param = new Param();
+                param.setThreshold(Double.valueOf(value));
+                svp.setParam(param);
+                Map<String, Object> map = new HashMap<>();
+                map.put("svp", svp);
+                res.put("data", map);
+                res.put("sign", "cient"+UUID.randomUUID().toString());
+                String s = JSONObject.toJSONString(res);
+
+                server.message = new MqttMessage();
+                /**
+                 * 保证消息能到达一次
+                 */
+                server.message.setQos(1);
+                /**
+                 * 消息保留
+                 */
+//                server.message.setRetained(false);
+                /**
+                 * 消息内容
+                 */
+                server.message.setPayload(s.getBytes());
+                /**
+                 * 发布
+                 */
+                server.publish(server.topic11, server.message);
+            } catch (MqttException e) {
+                System.out.println(e.getMessage());
+            }
+        }
+    }
+
+    public static void configFrameRate(BaseCameraVersionVo baseCameraVersionVo,String value) {
+        /**
+         * 发布客户端
+         */
+        for (String code : baseCameraVersionVo.getCameraCodeList()) {
+            try {
+                PublishClient server = new PublishClient("config_" + code, "config_" + code);
+                JSONObject res = new JSONObject();
+                res.put("Name", "ConfigRequest");
+                Codec codec = new Codec();
+                Venc0 venc0 = new Venc0();
+                venc0.setFps(Double.valueOf(value));
+                codec.setVenc0(venc0);
+                Map<String, Object> map = new HashMap<>();
+                map.put("codec", codec);
+                res.put("data", map);
+                res.put("sign", "rate"+UUID.randomUUID().toString());
+                String s = JSONObject.toJSONString(res);
+
+                server.message = new MqttMessage();
+                /**
+                 * 保证消息能到达一次
+                 */
+                server.message.setQos(1);
+                /**
+                 * 消息保留
+                 */
+//                server.message.setRetained(false);
+                /**
+                 * 消息内容
+                 */
+                server.message.setPayload(s.getBytes());
+                /**
+                 * 发布
+                 */
+                server.publish(server.topic11, server.message);
+            } catch (MqttException e) {
+                System.out.println(e.getMessage());
+            }
         }
     }
 }

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

@@ -20,6 +20,11 @@
         a.start_recording AS startRecording,
         a.task_id AS taskId,
         a.create_time AS createTime,
+        a.remark AS remark,
+        a.version_id AS versionId,
+        a.version_num AS versionNum,
+        a.version_name AS versionName,
+        a.last_version_num AS lastVersionNum,
         a.remark AS remark
         FROM
         base_camera_management a

+ 6 - 7
business-service/src/main/resources/mapper/service/BaseDeviceDynamicManagementMapper.xml

@@ -12,26 +12,25 @@
 			a.id AS id
 		FROM
 		    base_camera_management AS a inner join
-		    base_railway_management AS l  on  a.railway_code=l.railway_code
+		    base_railway_management AS l on a.railway_code = l.railway_code
 		<where>
 			<if test="railwayCode != null and railwayCode !=''">
-				concat(l.railway_name,a.camera_code)
-				like concat("%",#{railwayCode},"%")
+				and concat(l.railway_name,a.camera_code,a.railway_code) like concat("%",#{railwayCode},"%")
 			</if>
 			<if test="lineDir != null and lineDir != ''">
-				line_dir = #{lineDir}
+				and line_dir = #{lineDir}
 			</if>
 			<if test="mils != null and mils != ''">
-				concat(a.install_mile, a.begin_mile, a.end_mile) = #{mils}
+				and (a.install_mile = #{mils} or a.begin_mile = #{mils} or a.end_mile = #{mils})
 			</if>
 			<if test="!dsFlay">
 				and
 				<trim prefix="(" prefixOverrides="or" suffix=")">
 					<if test="dsUserId != null and dsUserId != ''">
-						or a.create_by=#{dsUserId}
+						or a.create_by = #{dsUserId}
 					</if>
 					<if test="dsDeptId != null and dsDeptId != 0">
-						or  a.dept_id=#{dsDeptId}
+						or  a.dept_id = #{dsDeptId}
 					</if>
 					<if test="dsDeptIds != null">
 						or a.dept_id in

+ 47 - 0
business-service/src/main/resources/mapper/service/CameraLogDetailMapper.xml

@@ -0,0 +1,47 @@
+<?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.CameraLogDetailMapper">
+    <resultMap id="CameraDetailResult" type="com.ozs.service.entity.CameraLogDetail">
+        <id column="id" property="id"/>
+        <result column="camera_code" property="cameraCode"/>
+        <result column="status" property="status"/>
+        <result column="log_id" property="logId"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="remark" property="remark"/>
+        <result column="lastVersionNum" property="lastVersionNum"/>
+        <result column="currentVersionNum" property="currentVersionNum"/>
+    </resultMap>
+    <select id="selectDetail" resultMap="CameraDetailResult"
+            parameterType="com.ozs.service.entity.vo.CameraUpdateLogResp">
+        select
+        a.id,
+        a.camera_code,
+        a.status,
+        a.log_id,
+        a.update_time,
+        a.remark,
+        b.version_num as currentVersionNum,
+        b.last_version_num as lastVersionNum
+        from camera_log_detail as a inner join
+        base_camera_management as b on a.camera_code=b.camera_code
+
+        <where>
+            <if test="logId != null and logId != 0">
+                and a.log_id =#{logId}
+            </if>
+            <if test="cameraCode != null and cameraCode != ''">
+                and UPPER(a.camera_code) like UPPER(CONCAT('%',#{cameraCode},'%'))
+            </if>
+            <if test="currentYear != null and currentYear != 0">
+                and YEAR(a.update_time) like UPPER(CONCAT('%',#{currentYear},'%'))
+            </if>
+            <if test="currentYear == null or currentYear == ''">
+                and YEAR(a.update_time) = YEAR(SYSDATE())
+            </if>
+            <if test="status != null and status != ''">
+                and UPPER(a.status) like UPPER(CONCAT('%',#{status},'%'))
+            </if>
+        </where>
+        order by a.update_time desc
+    </select>
+</mapper>

+ 53 - 0
business-service/src/main/resources/mapper/service/CameraUpdateLogMapper.xml

@@ -10,12 +10,14 @@
         <result column="status" property="status"/>
         <result column="create_by" property="createBy"/>
         <result column="create_time" property="createTime"/>
+        <result column="version_id" property="versionId"/>
         <result column="currentVersionNum" property="currentVersionNum"/>
         <result column="lastVersionNum" property="lastVersionNum"/>
     </resultMap>
     <select id="selectDetail" resultMap="CameraDetailResult"
             parameterType="com.ozs.service.entity.vo.CameraUpdateLogResp">
         select
+        a.id,
         a.camera_code,
         a.version_num,
         a.version_name,
@@ -23,6 +25,7 @@
         a.status,
         a.create_by,
         a.create_time,
+        a.version_id,
         b.version_num as currentVersionNum,
         b.last_version_num as lastVersionNum
         from camera_update_log as a inner join
@@ -43,4 +46,54 @@
             </if>
         </where>
     </select>
+
+    <insert id="insertCameraUpdateLog" parameterType="com.ozs.service.entity.CameraUpdateLog">
+        insert into camera_update_log
+        <trim prefix="(" suffix=")" suffixOverrides="," >
+            <if test="id != null" >
+                id,
+            </if>
+            <if test="versionId != null" >
+                version_id,
+            </if>
+            <if test="versionNum != null" >
+                version_num,
+            </if>
+            <if test="versionName != null" >
+                version_name,
+            </if>
+            <if test="upgradeType != null" >
+                upgrade_type,
+            </if>
+            <if test="createBy != null" >
+                create_by,
+            </if>
+            <if test="createTime != null" >
+                create_time,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides="," >
+            <if test="id != null" >
+                #{id},
+            </if>
+            <if test="versionId != null" >
+                #{versionId},
+            </if>
+            <if test="versionNum != null" >
+                #{versionNum},
+            </if>
+            <if test="versionName != null" >
+                #{versionName},
+            </if>
+            <if test="upgradeType != null" >
+                #{upgradeType},
+            </if>
+            <if test="createBy != null" >
+                #{createBy},
+            </if>
+            <if test="createTime != null" >
+                #{createTime},
+            </if>
+        </trim>
+    </insert>
 </mapper>

+ 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);//数据库表映射到实体的命名策略
 

+ 64 - 19
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseCameraVersionController.java

@@ -1,5 +1,6 @@
 package com.ozs.web.controller.accountmanagment;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ozs.common.annotation.Log;
 import com.ozs.common.core.controller.BaseController;
@@ -9,10 +10,12 @@ import com.ozs.common.utils.StringUtils;
 import com.ozs.common.utils.bean.BeanUtils;
 import com.ozs.service.entity.BaseCameraManagement;
 import com.ozs.service.entity.BaseCameraVersion;
+import com.ozs.service.entity.BaseVersionCameraParam;
 import com.ozs.service.entity.vo.BaseCameraManagementHomeVo;
 import com.ozs.service.entity.vo.BaseCameraVersionVo;
 import com.ozs.service.service.BaseCameraManagementService;
 import com.ozs.service.service.BaseCameraVersionService;
+import com.ozs.service.service.BaseVersionCameraParamService;
 import com.ozs.system.service.ISysDictDataService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -40,6 +43,27 @@ public class BaseCameraVersionController extends BaseController {
     private BaseCameraManagementService baseCameraManagementService;
     @Autowired
     private ISysDictDataService dictDataService;
+    @Autowired
+    private BaseVersionCameraParamService baseVersionCameraParamService;
+
+    /**
+     * 相机版本管理 版本升级
+     *
+     * @param baseCameraVersion
+     * @return
+     */
+    @ApiOperation(value = "相机版本管理 版本升级")
+    @PostMapping("/cameraVersionUpgrade")
+    @Log(title = "相机版本管理", businessType = BusinessType.INSERT)
+    public AjaxResult cameraVersionUpgrade(@RequestBody BaseCameraVersionVo baseCameraVersion) {
+        if (StringUtils.isEmptySunhh(baseCameraVersion) || StringUtils.isEmptySunhh(baseCameraVersion.getId())) {
+            return AjaxResult.error("相机版本id不能为空!");
+        }
+        if (StringUtils.isEmptySunhh(baseCameraVersion) || baseCameraVersion.getCameraCodeList().size() == 0) {
+            return AjaxResult.error("相机编码列表 不能为空!");
+        }
+        return baseCameraVersionService.cameraVersionUpgrade(baseCameraVersion, getUserId());
+    }
 
     /**
      * 相机列表
@@ -48,9 +72,12 @@ public class BaseCameraVersionController extends BaseController {
      * @return
      */
     @ApiOperation(value = "相机列表")
-    @GetMapping("/cameraAllList")
+    @PostMapping("/cameraAllList")
     @Log(title = "相机版本管理", businessType = BusinessType.SELECT)
     public AjaxResult cameraAllList(@RequestBody BaseCameraManagement baseCameraManagement) {
+        if (StringUtils.isEmptySunhh(baseCameraManagement) || StringUtils.isEmptySunhh(baseCameraManagement.getVersionId())) {
+            return AjaxResult.error("相机版本id不能为空!");
+        }
         List<BaseCameraManagement> baseCameraManagements = baseCameraManagementService.cameraAllList(baseCameraManagement);
         return AjaxResult.success(baseCameraManagements);
     }
@@ -65,21 +92,32 @@ public class BaseCameraVersionController extends BaseController {
     @PostMapping("/cameraVersionList")
     @Log(title = "相机版本管理", businessType = BusinessType.SELECT)
     public AjaxResult cameraVersionList(@RequestBody BaseCameraVersionVo baseCameraVersionVo) {
-        IPage<BaseCameraVersionVo> page = baseCameraVersionService.cameraVersionList(baseCameraVersionVo);
-        if (!ObjectUtils.isEmpty(page) && page.getRecords().size() > 0) {
-            List<BaseCameraVersionVo> dto1 = page.getRecords().stream().map(o -> {
-//                BaseCameraVersionVo baseCameraVersionVo1 = new BaseCameraVersionVo();
-//                BeanUtils.copyProperties(o, baseCameraVersionVo1);
-                // 升级类型 1:算法升级,2:硬件升级,3:算法及硬件升级
+        com.github.pagehelper.Page<BaseCameraVersion> page = baseCameraVersionService.cameraVersionList(baseCameraVersionVo);
+        com.baomidou.mybatisplus.extension.plugins.pagination.Page<BaseCameraVersionVo> pageR =
+                new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(baseCameraVersionVo.getPageNum(), baseCameraVersionVo.getPageSize());
+        pageR.setTotal(page.getTotal());
+        if (!ObjectUtils.isEmpty(page) && page.getResult().size() > 0) {
+            List<BaseCameraVersionVo> dto1 = page.getResult().stream().map(o -> {
+                BaseCameraVersionVo baseCameraVersionVo1 = new BaseCameraVersionVo();
+                BeanUtils.copyProperties(o, baseCameraVersionVo1);
+                // 升级类型 0.固件 1.算法 2:算法及硬件升级 3:摄像头系统参数
                 String upgradeTypeName = dictDataService.selectDictLabel("upgrade_type", o.getUpgradeType());
                 if (!StringUtils.isEmptySunhh(upgradeTypeName)) {
-                    o.setUpgradeTypename(upgradeTypeName);
+                    baseCameraVersionVo1.setUpgradeTypename(upgradeTypeName);
+                }
+                if ("3".equals(o.getUpgradeType())) {
+                    LambdaQueryWrapper<BaseVersionCameraParam> wrapperBaseVersionCameraParam = new LambdaQueryWrapper<>();
+                    if (!StringUtils.isEmptySunhh(baseCameraVersionVo) && !StringUtils.isEmptySunhh(baseCameraVersionVo.getId())) {
+                        wrapperBaseVersionCameraParam.eq(BaseVersionCameraParam::getVersionId, baseCameraVersionVo.getId());
+                    }
+                    List<BaseVersionCameraParam> baseVersionCameraParams = baseVersionCameraParamService.list(wrapperBaseVersionCameraParam);
+                    baseCameraVersionVo1.setBaseVersionCameraParamList(baseVersionCameraParams);
                 }
-                return o;
+                return baseCameraVersionVo1;
             }).collect(Collectors.toList());
-//            pageR.setRecords(dto1);
+            pageR.setRecords(dto1);
         }
-        return AjaxResult.success(page);
+        return AjaxResult.success(pageR);
     }
 
     /**
@@ -90,12 +128,12 @@ public class BaseCameraVersionController extends BaseController {
      */
     @ApiOperation(value = "相机版本管理 新增")
     @PostMapping("/cameraVersionAdd")
-    @Log(title = "机车信息管理", businessType = BusinessType.INSERT)
+    @Log(title = "相机版本管理", businessType = BusinessType.INSERT)
     public AjaxResult cameraVersionAdd(@RequestBody BaseCameraVersion baseCameraVersion) {
         if (StringUtils.isEmptySunhh(baseCameraVersion) || StringUtils.isEmptySunhh(baseCameraVersion.getVersionNum())
                 || StringUtils.isEmptySunhh(baseCameraVersion.getVersionName())
-                || StringUtils.isEmptySunhh(baseCameraVersion.getVersionAddress())) {
-            return AjaxResult.error("相机版本号、版本名称、版本地址不能为空!");
+                || StringUtils.isEmptySunhh(baseCameraVersion.getUpgradeType())) {
+            return AjaxResult.error("相机版本号、版本名称、版本类型 不能为空!");
         }
         return baseCameraVersionService.cameraVersionAdd(baseCameraVersion, getUserId());
     }
@@ -113,11 +151,18 @@ public class BaseCameraVersionController extends BaseController {
         if (StringUtils.isEmptySunhh(ids)) {
             return AjaxResult.error("删除ID不能为空!");
         }
-        boolean delete = baseCameraVersionService.removeByIds(ids);
-        if (delete) {
-            return AjaxResult.success();
-        } else {
-            return AjaxResult.error();
+        for (Long id : ids) {
+            LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<>();
+            if (!StringUtils.isEmptySunhh(id)) {
+                wrapper.eq(BaseCameraManagement::getVersionId, id);
+            }
+            List<BaseCameraManagement> list = baseCameraManagementService.list(wrapper);
+            if (!StringUtils.isEmptySunhh(list) && list.size() > 0) {
+                return AjaxResult.error("删除ID: " + id + ",已经升级了相机,不能删除!");
+            }
+            boolean delete = baseCameraVersionService.removeById(id);
         }
+        // boolean delete = baseCameraVersionService.removeByIds(ids);
+        return AjaxResult.success();
     }
 }

+ 25 - 2
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/MsgAlarmController.java

@@ -453,12 +453,35 @@ public class MsgAlarmController extends BaseController {
     @GetMapping(value = "/alarmHistoricalAlarm/{alarmId}")
     @ApiOperation("报警消息详情历史报警次数信息")
     @Log(title = "报警信息管理", businessType = BusinessType.SELECT)
-    public AjaxResult alarmHistoricalAlarm(@PathVariable Long alarmId) {
+    public AjaxResult alarmHistoricalAlarm(@PathVariable String alarmId) {
+        QueryWrapper<MsgAlarm> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("alarm_id", alarmId);
+        MsgAlarm one = msgAlarmService.getOne(queryWrapper);
+        if (ObjectUtils.isEmpty(one)){
+            return error("报警表没有此报警唯一标识的报警数据"); 
+        }
         QueryWrapper<MsgAlarmFrequency> wrapper = new QueryWrapper<>();
         wrapper.eq("alarm_id", alarmId);
         wrapper.orderByDesc("alarm_time");
         List<MsgAlarmFrequency> list = msgAlarmFrequencyService.list(wrapper);
-        return AjaxResult.success(list);
+        if (list.size()>0) {
+            if (one.getIsLock() == 1) {
+                for (int i = 0; i < list.size(); i++) {
+                    if (i == 0) {
+                        list.get(i).setIsLock(1);
+                    } else {
+                        list.get(i).setIsLock(2);
+                    }
+                }
+            }else {
+                for (MsgAlarmFrequency msgAlarmFrequency : list) {
+                    msgAlarmFrequency.setIsLock(2);
+                }
+            }
+            return AjaxResult.success(list);
+        }else {
+            return error("报警频次表没有此报警唯一标识的报警数据");
+        }
     }
 
     @GetMapping(value = "/videoHistoricalAlarm/{cameraCode}")

+ 80 - 0
hazard-admin/src/main/java/com/ozs/web/controller/common/PictureController.java

@@ -0,0 +1,80 @@
+package com.ozs.web.controller.common;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.utils.ApiTokenUtils;
+import com.ozs.common.utils.MinioUtils;
+import com.ozs.common.utils.uuid.IdUtils;
+import com.ozs.service.entity.BaseCameraManagement;
+import com.ozs.service.entity.MsgAlarm;
+import com.ozs.service.service.BaseCameraManagementService;
+import com.ozs.service.service.MsgAlarmService;
+import com.ozs.service.service.impl.CameraCaptureService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+
+/**
+ * @author wyy
+ * @subject
+ * @creat 2023/4/18
+ */
+@RestController
+@RequestMapping("/getPicture")
+public class PictureController {
+    private static final Logger log = LoggerFactory.getLogger(PictureController.class);
+    @Resource
+    private ApiTokenUtils apiTokenUtils;
+    @Resource
+    BaseCameraManagementService baseCameraManagementService;
+    @Resource
+    MsgAlarmService msgAlarmService;
+    @Resource
+    CameraCaptureService cameraCaptureService;
+
+    /**
+     * 获取图片
+     *
+     * @param
+     * @return
+     */
+    @PostMapping("/api/snap")
+    public AjaxResult getPicture() throws IOException {
+        List<BaseCameraManagement> list = baseCameraManagementService.list();
+        list.forEach(l -> {
+            String uuid = IdUtils.fastSimpleUUID();
+            if(!ObjectUtils.isEmpty(l.getCameraCode()) &&!ObjectUtils.isEmpty(l.getChannel())){
+                QueryWrapper<MsgAlarm> queryWrapper = new QueryWrapper<MsgAlarm>();
+                queryWrapper.lambda().eq(MsgAlarm::getCameraCode,l.getCameraCode());
+                queryWrapper.lambda().eq(MsgAlarm::getIsLock,2);
+                List<MsgAlarm> msgAlarmList = msgAlarmService.list(queryWrapper);
+                try {
+                    System.out.println("http://124.70.58.209:18891/snap/"+l.getCameraCode()+"/"+l.getChannel());
+                    log.info("请求url"+"http://124.70.58.209:18891/snap/"+l.getCameraCode()+"/"+l.getChannel());
+                    URL url = new URL("http://124.70.58.209:18891/snap/"+l.getCameraCode()+"/"+l.getChannel());
+                    String fileName = "cameraPicture/"+l.getCameraCode()+"_"+uuid +".jpg";
+                    log.info("fileName="+fileName);
+                    cameraCaptureService.getCapture(url, fileName);
+                } catch (MalformedURLException e) {
+                    e.printStackTrace();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+        return AjaxResult.success(list);
+    }
+}

+ 32 - 5
hazard-admin/src/main/java/com/ozs/web/controller/monitor/CameraUpdateLogController.java

@@ -8,9 +8,14 @@ import com.ozs.common.core.controller.BaseController;
 import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.enums.BusinessType;
 import com.ozs.common.utils.poi.ExcelUtil;
+import com.ozs.service.entity.BaseUser;
+import com.ozs.service.entity.CameraLogDetail;
 import com.ozs.service.entity.CameraUpdateLog;
 import com.ozs.service.entity.vo.CameraUpdateLogResp;
+import com.ozs.service.service.BaseUserService;
+import com.ozs.service.service.CameraLogDetailService;
 import com.ozs.service.service.CameraUpdateLogService;
+import com.ozs.system.service.ISysDictDataService;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -21,9 +26,11 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.text.ParseException;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author wyy
@@ -36,6 +43,12 @@ public class CameraUpdateLogController extends BaseController {
     private static final Logger log = LoggerFactory.getLogger(CameraUpdateLogController.class);
     @Autowired
     private CameraUpdateLogService cameraUpdateLogService;
+    @Autowired
+    private CameraLogDetailService cameraLogDetailService;
+    @Autowired
+    private ISysDictDataService dictDataService;
+    @Resource
+    private BaseUserService baseUserService;
 
     /**
      * 获取相机升级日志分页列表
@@ -55,6 +68,20 @@ public class CameraUpdateLogController extends BaseController {
         }
         wrapper.orderByDesc(CameraUpdateLog::getCreateTime);
         IPage<CameraUpdateLog> page = cameraUpdateLogService.page(new Page<>(cameraUpdateLogResp.getPageNum(), cameraUpdateLogResp.getPageSize()), wrapper);
+        List<CameraUpdateLog> list = cameraUpdateLogService.list();
+        if (!ObjectUtils.isEmpty(page) && !ObjectUtils.isEmpty(page.getRecords())) {
+            List<CameraUpdateLog> dto = page.getRecords().stream().map(o -> {
+                for (CameraUpdateLog li : list) {
+                    if (li.getUpgradeType().equals(o.getUpgradeType())) {
+                        o.setUpgradeTypeName(dictDataService.selectDictLabel("upgrade_type", String.valueOf(li.getUpgradeType())));
+                        BaseUser baseUser = baseUserService.getUser(o.getCreateBy());
+                        o.setCreateByName(baseUser.getUserName());
+                    }
+                }
+                return o;
+            }).collect(Collectors.toList());
+            page.setRecords(dto);
+        }
         return AjaxResult.success(page);
     }
 
@@ -63,16 +90,16 @@ public class CameraUpdateLogController extends BaseController {
     public AjaxResult detail(@RequestBody CameraUpdateLogResp cameraUpdateLogResp) {
         Integer pageNum = cameraUpdateLogResp.getPageNum().intValue();
         Integer pageSize = cameraUpdateLogResp.getPageSize().intValue();
-        List<CameraUpdateLog> list = cameraUpdateLogService.selectDetail(cameraUpdateLogResp);
-        IPage<CameraUpdateLog> page = cameraUpdateLogService.listToPage(list, pageNum, pageSize);
+        List<CameraLogDetail> list = cameraLogDetailService.selectDetail((cameraUpdateLogResp));
+        IPage<CameraLogDetail> page = cameraLogDetailService.listToPage(list, pageNum, pageSize);
         return AjaxResult.success(page);
     }
 
     @Log(title = "相机升级日志", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, @RequestBody CameraUpdateLogResp cameraUpdateLogResp) {
-        List<CameraUpdateLog> list = cameraUpdateLogService.selectDetail(cameraUpdateLogResp);
-        ExcelUtil<CameraUpdateLog> util = new ExcelUtil<CameraUpdateLog>(CameraUpdateLog.class);
-        util.exportExcel(response, list, "相机升级日志");
+        List<CameraLogDetail> list = cameraLogDetailService.selectDetail(cameraUpdateLogResp);
+        ExcelUtil<CameraLogDetail> util = new ExcelUtil<CameraLogDetail>(CameraLogDetail.class);
+        util.exportExcel(response, list, "相机升级日志详情");
     }
 }

+ 15 - 18
hazard-admin/src/main/java/com/ozs/web/controller/mqtt/MqttController.java

@@ -1,42 +1,39 @@
 package com.ozs.web.controller.mqtt;
 
-
 import com.ozs.common.annotation.Log;
 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;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-
 /**
  * @author Administrator
  */
 @RestController
 @RequestMapping("/service/mqtt")
 @Slf4j
-public class MqttController {
+public class MqttController implements ApplicationRunner {
+    @Autowired
+    private CameraUtil cameraUtil;
 
-
-    @ApiOperation(value = "设备心跳")
-    @GetMapping("/deviceHeartbeat")
-    @Log(title = "MQTT", businessType = BusinessType.SELECT)
-    public AjaxResult selectCameraAll() {
-        new SubscribeClient("heart","heart").start();
-        return AjaxResult.success();
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        new SubscribeClient("heart", "heart").start();
     }
-
-    @ApiOperation(value = "更新固件和算法")
-    @GetMapping("/updateDeviceSn")
-    @Log(title = "MQTT", businessType = BusinessType.UPDATE)
-    public AjaxResult updateDeviceSn(){
-        PublishClient.updateDeviceSn("update_DEVICESN");
-        new SubscribeClient("update","update").start();
-        return AjaxResult.success();
+    
+    
+    @GetMapping("/cs")
+    public void cs(){
+        cameraUtil.cameraBlockUp();
     }
 }

+ 4 - 3
hazard-admin/src/main/java/com/ozs/web/controller/system/SysDeptController.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ozs.common.core.domain.entity.SysRole;
+import com.ozs.common.core.domain.vo.SysDeptVo;
 import com.ozs.common.utils.poi.ExcelUtil;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.ArrayUtils;
@@ -46,7 +47,7 @@ public class SysDeptController extends BaseController {
      */
     @PreAuthorize("@ss.hasPermi('system:dept:list')")
     @GetMapping("/list")
-    public AjaxResult list(SysDept dept) {
+    public AjaxResult list(SysDeptVo dept) {
         List<SysDept> depts = deptService.selectDeptList(dept);
         for (SysDept sysDept : depts) {
             for (SysDept dept1 : depts) {
@@ -74,7 +75,7 @@ public class SysDeptController extends BaseController {
      */
     @GetMapping("/deptTree")
     @ApiOperation("获取部门树列表")
-    public AjaxResult deptTree(SysDept dept) {
+    public AjaxResult deptTree(SysDeptVo dept) {
         return success(deptService.selectDeptTreeList(dept));
     }
 
@@ -84,7 +85,7 @@ public class SysDeptController extends BaseController {
     @PreAuthorize("@ss.hasPermi('system:dept:list')")
     @GetMapping("/list/exclude/{deptId}")
     public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
-        List<SysDept> depts = deptService.selectDeptList(new SysDept());
+        List<SysDept> depts = deptService.selectDeptList(new SysDeptVo());
         depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
         return success(depts);
     }

+ 1 - 1
hazard-admin/src/main/java/com/ozs/web/controller/system/SysDictDataController.java

@@ -79,7 +79,7 @@ public class SysDictDataController extends BaseController {
             wrapper.like(SysDictData::getDictValue, sysDictDataVo.getDictValue());
         }
         if (!ObjectUtils.isEmpty(sysDictDataVo.getDictType())) {
-            wrapper.like(SysDictData::getDictType, sysDictDataVo.getDictType());
+            wrapper.eq(SysDictData::getDictType, sysDictDataVo.getDictType());
         }
         if (!ObjectUtils.isEmpty(sysDictDataVo.getCssClass())) {
             wrapper.like(SysDictData::getCssClass, sysDictDataVo.getCssClass());

+ 9 - 0
hazard-admin/src/main/java/com/ozs/web/controller/system/SysDictTypeController.java

@@ -172,4 +172,13 @@ public class SysDictTypeController extends BaseController {
         List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll(dataType);
         return success(dictTypes);
     }
+
+    /**
+     * 获取字典类型名称
+     */
+    @PostMapping("/selectList")
+    public AjaxResult selectList() {
+        List<SysDictType> dictTypes = dictTypeService.list();
+        return success(dictTypes);
+    }
 }

+ 2 - 1
hazard-admin/src/main/java/com/ozs/web/controller/system/SysRoleController.java

@@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ozs.common.core.domain.entity.SysMenu;
+import com.ozs.common.core.domain.vo.SysDeptVo;
 import com.ozs.common.core.domain.vo.SysRoleRequestVo;
 import com.ozs.common.core.domain.vo.SysUserVo;
 import com.ozs.service.entity.BaseUser;
@@ -303,7 +304,7 @@ public class SysRoleController extends BaseController {
     public AjaxResult deptTree(@PathVariable("roleId") Long roleId) {
         AjaxResult ajax = AjaxResult.success();
         ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
-        ajax.put("depts", deptService.selectDeptTreeList(new SysDept()));
+        ajax.put("depts", deptService.selectDeptTreeList(new SysDeptVo()));
         return ajax;
     }
 }

+ 5 - 2
hazard-admin/src/main/java/com/ozs/web/controller/system/SysUserController.java

@@ -17,6 +17,7 @@ import com.ozs.common.core.domain.entity.SysDictData;
 import com.ozs.common.core.domain.entity.SysUserUpdate;
 import com.ozs.common.core.domain.entity.SysUsers;
 import com.ozs.common.core.domain.model.LoginUser;
+import com.ozs.common.core.domain.vo.SysDeptVo;
 import com.ozs.common.core.domain.vo.SysUserVo;
 import com.ozs.common.utils.AppendUtils;
 import com.ozs.common.utils.file.FileUtils;
@@ -25,6 +26,7 @@ import com.ozs.service.entity.BaseCameraManagement;
 import com.ozs.service.entity.BaseRailwayManagement;
 import com.ozs.service.entity.BaseUser;
 import com.ozs.service.entity.MsgAlarm;
+import com.ozs.service.entity.vo.CameraTreeVo;
 import com.ozs.service.entity.vo.MsgAlarmVo;
 import com.ozs.service.service.BaseUserService;
 import com.ozs.system.service.DataScoreUtil;
@@ -444,8 +446,9 @@ public class SysUserController extends BaseController {
     @PreAuthorize("@ss.hasPermi('system:user:list')")
     @GetMapping("/deptTree")
     @Log(title = "用户管理", businessType = BusinessType.OTHER)
-    public AjaxResult deptTree(SysDept dept) {
-        return success(deptService.selectDeptTreeList(dept));
+    public AjaxResult deptTree(SysDeptVo sysDeptVo) {
+        sysDeptVo = (SysDeptVo) dataScoreUtil.setDataScore(getUserId(), sysDeptVo);
+        return success(deptService.selectDeptTreeList(sysDeptVo));
     }
 
     /**

+ 3 - 3
hazard-admin/src/main/java/com/ozs/web/controller/upload/UploadController.java

@@ -101,12 +101,12 @@ public class UploadController {
             String imageName = image.getOriginalFilename();
             if (StringUtils.isNotBlank(imageName)) {
                 // String date = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
-                String filename = IdUtils.fastSimpleUUID() + image.getOriginalFilename().substring(image.getOriginalFilename().lastIndexOf("."));
+                // String filename = image.getOriginalFilename().substring(0,image.getOriginalFilename().lastIndexOf("."));
                 SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
                 String format1 = dateFormat1.format(new Date());
-                String imgName = "cameraVersion" + "/" + format1 + "/" + filename;
+                String imgName = "cameraVersion" + "/" + format1 + "/" + imageName;
                 minioUtils.minIoClientUpload(image.getInputStream(), imgName);
-                uploadFile = "/cameraVersion/" + format1 + "/" + filename;
+                uploadFile = "/cameraVersion/" + format1 + "/" + imageName;
             }
         } else {
             return AjaxResult.error("上传功能出错");

+ 16 - 0
hazard-admin/src/main/java/com/ozs/web/controller/websocket/WebSocketConteoller.java

@@ -3,12 +3,14 @@ package com.ozs.web.controller.websocket;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ozs.common.core.controller.BaseController;
+import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.core.domain.entity.SysUser;
 import com.ozs.common.utils.AppendUtils;
 import com.ozs.common.utils.StringUtils;
 import com.ozs.service.entity.*;
 import com.ozs.service.entity.vo.MsgAlarmResp;
 import com.ozs.service.service.*;
+import com.ozs.system.service.ISysDictDataService;
 import com.ozs.system.service.ISysUserService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -48,6 +50,20 @@ public class WebSocketConteoller extends BaseController {
     private MsgWebPushService msgWebPushService;
     @Autowired
     private MsgAppPushService msgAppPushService;
+    @Autowired
+    private ISysDictDataService dictDataService;
+
+    /**
+     * 获取项目名称
+     */
+    @ResponseBody
+    @GetMapping("/projectName")
+    public String projectName() {
+        String projectName = dictDataService.selectDictLabel("sys_name", "name");
+//        HashMap<String, Object> map = new HashMap<>();
+//        map.put("name", projectName);
+        return projectName;
+    }
 
     /**
      * web 登陆时查询 未登陆时推送的消息 重新推送

+ 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;
 
 
     /**
@@ -829,4 +839,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);
+    }
 }

+ 2 - 2
hazard-admin/src/main/resources/application.yml

@@ -68,9 +68,9 @@ spring:
   servlet:
      multipart:
        # 单个文件大小
-       max-file-size:  10MB
+       max-file-size:  50MB
        # 设置总上传的文件大小
-       max-request-size:  20MB
+       max-request-size:  100MB
   # 服务模块
   devtools:
     restart:

+ 1 - 1
hazard-admin/src/main/resources/logback.xml

@@ -2,7 +2,7 @@
 <configuration>
     <!-- 日志存放路径 -->
     <property name="log.path" value="/data/service/hazard-admin/logs"/>
-    <!--  <property name="log.path" value="/Users/sunhuanhuan/Documents/project/106/project/logs"/>-->
+<!--      <property name="log.path" value="/Users/sunhuanhuan/Documents/project/106/project/logs"/>-->
     <!-- 日志输出格式 -->
     <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
 

BIN
hazard-admin/src/main/resources/template/SysUser.xlsx


BIN
hazard-admin/src/main/resources/template/baseCameraManagement.xlsx


+ 1 - 1
hazard-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java

@@ -308,6 +308,6 @@ public class GeoHazardMonitorTokenController {
 //        String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
 //        ReqMsgAlarmVo reqMsgAlarmVo = JSON.parseObject(s, ReqMsgAlarmVo.class);
 //        System.out.println(reqMsgAlarmVo.toString());
-        System.out.println(new Date().getTime());
+//        System.out.println(new Date().getTime());
     }
 }