浏览代码

对接大华根据组织获取反拉和低点位在线状态定时任务

bihs 15 小时之前
父节点
当前提交
576ce1a298

+ 1 - 1
src/main/java/com/sooka/sponest/monitor/SookaMonitorPollingPositionMsgApplication.java

@@ -20,7 +20,7 @@ import javax.servlet.MultipartConfigElement;
 public class SookaMonitorPollingPositionMsgApplication {
     public static void main(String[] args) {
         SpringApplication.run(SookaMonitorPollingPositionMsgApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  首佳科技 一体化 对接大华根据组织获取执法记录仪、单兵设备在线状态任务 启动成功   ლ(´ڡ`ლ)゙  \n" +
+        System.out.println("(♥◠‿◠)ノ゙  首佳科技 一体化 对接大华根据组织获取反拉和低点位在线状态任务 启动成功   ლ(´ڡ`ლ)゙  \n" +
                 "  __________   ____ |  | _______          ____________   ____   ____   ____   _______/  |_\n" +
                 " /  ___/  _ \\ /  _ \\|  |/ /\\__  \\        /  ___/\\____ \\ /  _ \\ /    \\_/ __ \\ /  ___/\\   __\\\n" +
                 " \\___ (  <_> |  <_> )    <  / __ \\_      \\___ \\ |  |_> >  <_> )   |  \\  ___/ \\___ \\  |  |\n" +

+ 3 - 21
src/main/java/com/sooka/sponest/monitor/camera/mapper/CentermonitorTCameraMapper.java

@@ -1,11 +1,9 @@
 package com.sooka.sponest.monitor.camera.mapper;
 
 
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
-import java.util.List;
-import java.util.Map;
-
 /**
  * 摄像头Mapper接口
  *
@@ -16,24 +14,8 @@ import java.util.Map;
 public interface CentermonitorTCameraMapper {
 
     /**
-     * 更新执法仪在离线状态
-     *
-     * @param list
-     */
-    void updateBatchLawEnforcementInstrumentState(List<Map<String, Object>> list);
-
-    /**
-     * 更新摄像头类型为录像机离线状态
-     *
-     * @param list
-     */
-    void updateBatchVideoRecorderOfflineState(List<String> list);
-
-    /**
-     * 更新摄像头类型为录像机在线状态
-     *
-     * @param list
+     * 更新反拉和低点位的在线状态
      */
-    void updateBatchVideoRecorderOnlineState(List<String> list);
+    void updateBatchVideoRecorderState(@Param("workingStatus") String workingStatus, @Param("channelCode") String channelCode);
 }
 

+ 66 - 69
src/main/java/com/sooka/sponest/monitor/dahua/controller/EquipmentStatusTaskController.java

@@ -4,13 +4,9 @@ package com.sooka.sponest.monitor.dahua.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.shaded.com.google.gson.Gson;
 import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
 import com.sooka.sponest.monitor.camera.mapper.CentermonitorTCameraMapper;
-import com.sooka.sponest.monitor.dahua.domain.CentermonitorTMonitoringEquipmentPositionDO;
-import com.sooka.sponest.monitor.dahua.mapper.CentermonitorTMonitoringEquipmentPositionMapper;
-import com.sooka.sponest.monitor.dahua.service.DahuaService;
 import com.sooka.sponest.monitor.dahua.utils.HttpEnum;
 import com.sooka.sponest.monitor.dahua.utils.HttpTestUtils;
 import io.swagger.annotations.Api;
@@ -19,25 +15,24 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 import static org.springframework.web.bind.annotation.RequestMethod.GET;
 
 
 /**
- * 对接大华根据组织获取执法记录仪、单兵设备在线状态
+ * 对接大华根据组织获取反拉和低点位在线状态定时任务
  */
 
 @Slf4j
 @Component
-@Api(tags = "对接大华根据组织获取执法记录仪、单兵设备在线状态定时任务")
+@Api(tags = "对接大华根据组织获取反拉和低点位在线状态定时任务")
 @RestController
 @RequestMapping("/equipmentStatus/quartz")
 public class EquipmentStatusTaskController {
@@ -52,111 +47,113 @@ public class EquipmentStatusTaskController {
     private String userName;
     @Value("${sooka.dahua_interface_server.userPwd}")
     private String userPwd;
-//    private String loginIp = "10.53.0.35";
+    //    private String loginIp = "10.53.0.35";
 //    private String loginPort = "7901";
 //    private String userName = "system";
 //    private String userPwd = "Admin123";
     //按组织获取设备详细信息
     public static final String ACTION = "/videoService/devicesManager/devicesInfo";
-    @Resource
-    DahuaService dahuaService;
-    @Resource
-    CentermonitorTMonitoringEquipmentPositionMapper centermonitorTMonitoringEquipmentPositionMapper;
+    public static final String ROOT_ORG_CODE = "12438460063615168,15012101012011000001";
+
 
     //    @Scheduled(cron = "0/5 * * * * ?")
-    @Log(title = "对接大华根据组织获取执法记录仪、单兵设备在线状态定时任务", businessType = BusinessType.OTHER)
-    @ApiOperation(value = "对接大华根据组织获取执法记录仪、单兵设备在线状态定时任务", notes = "对接大华根据组织获取执法记录仪、单兵设备在线状态定时任务")
+    @Log(title = "对接大华根据组织获取反拉和低点位在线状态定时任务", businessType = BusinessType.OTHER)
+    @ApiOperation(value = "对接大华根据组织获取反拉和低点位在线状态定时任务", notes = "对接大华根据组织获取反拉和低点位在线状态定时任务")
     @RequestMapping(value = "/getLongPollingPositionMsg", method = GET)
     public void getLongPollingPositionMsg() throws Exception {
-        log.info("开始执行获取记录仪在离线数据定时任务");
+        log.info("开始执行获反拉和低点位在离线数据定时任务");
         R<?> result = HttpTestUtils.getToken(loginIp, Integer.parseInt(loginPort), userName, userPwd);
         if (result.getCode() != 200) {
             log.info("获取token失败,请检查配置信息:", JSONObject.parseObject(result.getMsg()));
         }
         String token = result.getData().toString();
-        getMessage(loginIp, Integer.parseInt(loginPort), token);
+        getDeviceAllOrg(loginIp, Integer.parseInt(loginPort), token);
     }
 
     /**
-     * 根据组织code编码获取执法仪详情数据
+     * 根据组织code编码调用获取反拉和低点位详情数据
      *
      * @param ip
      * @param port
      * @param token
      */
-    private void getMessage(String ip, int port, String token) {
+    private void getMessage(String ip, int port, String token, List<Map<String, Object>> arrayList) {
         Map<String, String> content = new HashMap<>();
-        content.put("orgCode", "11248668755298496");
-        getDevicesInfo(ip, port, token, content);
-
+        int count = 0;
+        for (Map<String, Object> map : arrayList) {
+            content.put("orgCode", map.get("orgCode").toString());
+//            log.info("当前组织机构编码为:{}", map.get("orgCode").toString());
+            count++;
+            log.info("当前循环次数为:{}", count);
+            getDevicesInfo(ip, port, token, content);
+        }
     }
 
+    /**
+     * 获取反拉和低点位详情数据
+     *
+     * @param ip
+     * @param port
+     * @param token
+     * @param content
+     */
     private void getDevicesInfo(String ip, int port, String token, Map<String, String> content) {
         String response = HttpTestUtils.httpRequest(HttpEnum.POST, ip, port, ACTION, token, new Gson().toJson(content));
         JSONObject jsonObject = JSONObject.parseObject(response);
+//        log.info("根据组织code编码获取反拉和低点位jsonObject:{}", jsonObject);
         if (jsonObject.get("devices") == null) {
-            log.info("根据组织code编码获取执法仪response:{}", response);
-            return;
+            log.info("根据组织code编码获取反拉和低点位设备详情为空:{}", jsonObject.get("devices"));
         }
         Map<String, Object> rsp = new Gson().fromJson(response, Map.class);
         List<Map<String, Object>> arr = (List<Map<String, Object>>) rsp.get("devices");
-        log.info("获取记录仪在离线数据 size = {}", arr.size());
+//        log.info("获取反拉和低点位在离线数据 size = {}", arr.size());
         updateDeviceState(arr);
     }
 
     /**
-     * 更新执法仪在离线状态
+     * 获取反拉和低点一级及以下的orgCode
+     *
+     * @param ip
+     * @param port
+     * @param token
+     */
+    private void getDeviceAllOrg(String ip, int port, String token) {
+        String response = HttpTestUtils.httpRequest(HttpEnum.GET, ip, port, "/videoService/devicesManager/deviceAllOrg?orgCodes=" + ROOT_ORG_CODE, token, null);
+        Map<String, Object> rsp = new Gson().fromJson(response, Map.class);
+        List<Map<String, Object>> arr = (List<Map<String, Object>>) rsp.get("results");
+//        log.info("获取用户所属的组织树数据size:{}", arr.size());
+        getMessage(loginIp, Integer.parseInt(loginPort), token, arr);
+    }
+
+
+    /**
+     * 更新反拉和低点位在离线状态
      *
      * @param arr
      */
     private void updateDeviceState(List<Map<String, Object>> arr) {
-        log.info("根据组织code编码获取执法仪详情数据:{}", arr.size());
+//        log.info("根据组织code编码获取反拉和低点位详情数据:{}", arr);
+        List<Map<String, Object>> channels;
+        String workingStatus;
         if (CollectionUtils.isNotEmpty(arr)) {
-            List<Map<String, Object>> list = (List<Map<String, Object>>) arr.get(0).get("units");
-            for (Map<String, Object> map : list) {
-                if (map.get("unitType").toString().equals("1")) {
-                    arr = (List<Map<String, Object>>) map.get("channels");
-                    //更新摄像头类型为录像机在离线状态
-                    List<String> channelCodeAllList = arr.stream().map(item -> item.get("channelCode"))
-                            .filter(channelCode -> channelCode != null)
-                            .map(Object::toString)
-                            .collect(Collectors.toList());
-                    //先把摄像头类型为录像机的状态全部改成离线
-                    if (CollectionUtils.isNotEmpty(channelCodeAllList)) {
-                        centermonitorTCameraMapper.updateBatchVideoRecorderOfflineState(channelCodeAllList);
+            for (Map<String, Object> map : arr) {
+                workingStatus = map.get("status").toString();
+//                log.info("当前设备名称为:{},状态是:{}", map.get("name").toString(), workingStatus);
+                List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("units");
+                for (Map<String, Object> var : list) {
+                    if (var.get("unitType").toString().equals("1")) {
+                        channels = (List<Map<String, Object>>) var.get("channels");
+                        //更新反拉和低点位在离线状态
+                        if (CollectionUtils.isNotEmpty(channels)) {
+                            for (Map<String, Object> item : channels) {
+//                                log.info("更新当前设备名称为:{},通道编码为:{},状态为:{}", map.get("name").toString(), item.get("channelCode").toString(), workingStatus.equals("0") ? "1" : "0");
+                                centermonitorTCameraMapper.updateBatchVideoRecorderState(workingStatus.equals("0") ? "1" : "0", item.get("channelCode").toString());
+                            }
+                        }
                     }
-                    //再修改摄像头类型为录像机的在线状态
-                    List<String> channelCodeList = arr.stream()
-                            .filter(item -> "1".equals(item.get("status")))
-                            .map(item -> item.get("channelCode"))
-                            .filter(channelCode -> channelCode != null)
-                            .map(Object::toString)
-                            .collect(Collectors.toList());
-                    if (CollectionUtils.isNotEmpty(channelCodeList)) {
-                        centermonitorTCameraMapper.updateBatchVideoRecorderOnlineState(channelCodeList);
-                    }
-                    break;
                 }
             }
         }
     }
 
-    /**
-     * 获取记录仪位置数据
-     */
-    @PostMapping("putDahuaRecorderLocation")
-    @ResponseBody
-    public AjaxResult insertLocationListToday(@RequestBody CentermonitorTMonitoringEquipmentPositionDO centermonitorTMonitoringEquipmentPositionDO) {
-        try {
-            dahuaService.insertEquipmentPosition(centermonitorTMonitoringEquipmentPositionDO);
-            //更新执法记录仪经纬度
-            log.info("获取记录仪位置数据:{}", centermonitorTMonitoringEquipmentPositionDO);
-            centermonitorTMonitoringEquipmentPositionMapper.updateLongitudeAndLatitudeByCameraCode(centermonitorTMonitoringEquipmentPositionDO.getGpsX(), centermonitorTMonitoringEquipmentPositionDO.getGpsY(), centermonitorTMonitoringEquipmentPositionDO.getChannelCode());
-            return AjaxResult.success();
-        } catch (Exception e) {
-            e.printStackTrace();
-            return AjaxResult.error(500, "内部服务器错误");
-        }
-    }
-
 }

+ 0 - 25
src/main/java/com/sooka/sponest/monitor/dahua/mapper/CentermonitorTMonitoringEquipmentPositionMapper.java

@@ -1,25 +0,0 @@
-package com.sooka.sponest.monitor.dahua.mapper;
-
-import com.sooka.sponest.monitor.dahua.domain.CentermonitorTMonitoringEquipmentPositionDO;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * 长轮询获取设备位置消息
- *
- * @author ruoyi
- * @date 2024-07-31
- */
-public interface CentermonitorTMonitoringEquipmentPositionMapper {
-
-    /**
-     * 长轮询获取设备位置消息
-     */
-    public int insertEquipmentPosition(CentermonitorTMonitoringEquipmentPositionDO centermonitorTMonitoringEquipmentPositionDO);
-
-
-    List<CentermonitorTMonitoringEquipmentPositionDO> selectRecorderGPSList();
-
-    void updateLongitudeAndLatitudeByCameraCode(@Param("longitude")String longitude, @Param("latitude")String latitude, @Param("code")String code);
-}

+ 0 - 14
src/main/java/com/sooka/sponest/monitor/dahua/service/DahuaService.java

@@ -1,14 +0,0 @@
-package com.sooka.sponest.monitor.dahua.service;
-
-import com.sooka.sponest.monitor.dahua.domain.CentermonitorTMonitoringEquipmentPositionDO;
-
-import java.util.List;
-
-public interface DahuaService {
-
-    /**
-     * 获取记录仪位置数据
-     * */
-    void insertEquipmentPosition(CentermonitorTMonitoringEquipmentPositionDO centermonitorTMonitoringEquipmentPositionDO);
-
-}

+ 0 - 28
src/main/java/com/sooka/sponest/monitor/dahua/service/impl/DahuaServiceImpl.java

@@ -1,28 +0,0 @@
-package com.sooka.sponest.monitor.dahua.service.impl;
-
-
-import com.sooka.sponest.monitor.base.service.impl.BaseService;
-import com.sooka.sponest.monitor.dahua.domain.CentermonitorTMonitoringEquipmentPositionDO;
-import com.sooka.sponest.monitor.dahua.mapper.CentermonitorTMonitoringEquipmentPositionMapper;
-import com.sooka.sponest.monitor.dahua.service.DahuaService;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-
-
-@Service
-public class DahuaServiceImpl extends BaseService implements DahuaService {
-
-    @Resource
-    private CentermonitorTMonitoringEquipmentPositionMapper centermonitorTMonitoringEquipmentPositionMapper;
-
-    /**
-     * 获取记录仪位置数据
-     */
-    @Override
-    public void insertEquipmentPosition(CentermonitorTMonitoringEquipmentPositionDO centermonitorTMonitoringEquipmentPositionDO) {
-        centermonitorTMonitoringEquipmentPositionMapper.insertEquipmentPosition(centermonitorTMonitoringEquipmentPositionDO);
-    }
-
-
-}

+ 3 - 36
src/main/resources/mapper/monitor/camera/CentermonitorTCameraMapper.xml

@@ -4,42 +4,9 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sooka.sponest.monitor.camera.mapper.CentermonitorTCameraMapper">
 
-    <update id="updateBatchLawEnforcementInstrumentState">
+    <update id="updateBatchVideoRecorderState">
         UPDATE centermonitor_t_camera
-        SET working_status = CASE camera_code
-        <foreach collection="list" item="item">
-            WHEN (SELECT channel_code FROM centermonitor_t_camerachannel WHERE device_code = #{item.code} AND
-            channel_type = 2 LIMIT 1) THEN
-            CASE
-            WHEN #{item.status} = '0' THEN '1'
-            ELSE '0'
-            END
-        </foreach>
-        END,
-        offline_reason = ''
-        WHERE camera_code IN (
-        <foreach collection="list" item="item" separator=",">
-            (SELECT channel_code FROM centermonitor_t_camerachannel WHERE device_code = #{item.code} AND channel_type =
-            2 LIMIT 1)
-        </foreach>
-        );
-    </update>
-
-    <update id="updateBatchVideoRecorderOfflineState">
-        UPDATE centermonitor_t_camera
-        SET working_status = 1
-        WHERE camera_code in
-        <foreach collection="list" item="item" separator="," open="(" close=")">
-            #{item}
-        </foreach>
-    </update>
-
-    <update id="updateBatchVideoRecorderOnlineState">
-        UPDATE centermonitor_t_camera
-        SET working_status = 0
-        WHERE camera_code in
-        <foreach collection="list" item="item" separator="," open="(" close=")">
-            #{item}
-        </foreach>
+        SET working_status = #{workingStatus}
+        WHERE camera_code = #{channelCode}
     </update>
 </mapper>

+ 0 - 57
src/main/resources/mapper/monitor/device/CentermonitorTMonitoringEquipmentPositionMapper.xml

@@ -1,57 +0,0 @@
-<?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.sooka.sponest.monitor.dahua.mapper.CentermonitorTMonitoringEquipmentPositionMapper">
-
-    <resultMap type="CentermonitorTMonitoringEquipmentPositionDO" id="CentermonitorTMonitoringEquipmentPositionResult">
-        <result property="id" column="id"/>
-        <result property="angle" column="angle"/>
-        <result property="event" column="event"/>
-        <result property="deviceCode" column="device_code"/>
-        <result property="dataSource" column="data_source"/>
-        <result property="gpsX" column="gps_x"/>
-        <result property="gpsY" column="gps_y"/>
-        <result property="height" column="height"/>
-        <result property="speed" column="speed"/>
-        <result property="starCount" column="star_count"/>
-        <result property="antennaStatus" column="antenna_status"/>
-        <result property="orientationStatus" column="orientation_status"/>
-        <result property="extendInfo" column="extend_info"/>
-        <result property="capTime" column="cap_time"/>
-        <result property="createTime" column="create_time"/>
-        <result property="channelCode" column="channel_code"/>
-    </resultMap>
-
-    <insert id="insertEquipmentPosition">
-        insert into centermonitor_t_monitoring_equpment_position (angle,is_online,
-        `event`,device_code,data_source,gps_x,gps_y,height,speed,star_count,antenna_status,orientation_status,extend_info,cap_time,create_time,channel_code)
-        values
-            (#{angle},#{isOnline}, #{event}, #{deviceCode}, #{dataSource}, #{gpsX}, #{gpsY},
-            #{height}, #{speed}, #{starCount}, #{antennaStatus}, #{orientationStatus},
-            #{extendInfo}, #{capTime},now(), #{channelCode})
-    </insert>
-
-    <select id="selectRecorderGPSList" resultMap="CentermonitorTMonitoringEquipmentPositionResult" parameterType="CentermonitorTMonitoringEquipmentPositionDO">
-        SELECT
-            *
-        FROM
-            `centermonitor_t_monitoring_equpment_position` t1
-        WHERE
-            create_time = (
-                SELECT
-                    MAX(create_time)
-                FROM
-                    `centermonitor_t_monitoring_equpment_position` AS t2
-                WHERE
-                    t1.device_code = t2.device_code
-            )
-        GROUP BY
-            device_code;
-    </select>
-
-    <update id="updateLongitudeAndLatitudeByCameraCode">
-        UPDATE centermonitor_t_camera
-        SET longitude = #{longitude},latitude = #{latitude} where camera_code = #{code}
-    </update>
-</mapper>