‘liusuyi’
2023-10-08 b9c9cfff20129a4cb787b752c900da2d7fe7c4eb
增加同步设备状态任务
已添加1个文件
已修改4个文件
98 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/cmd/startup.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/syncDeviceStateTask.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/cmd/startup.java
@@ -73,7 +73,7 @@
    @PostConstruct
    public void init() {
        if (minioEnabled) {
            log.debug("初始化启动minio");
            log.info("初始化启动minio");
            if (Platform.isWindows()) {
                String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "minio" + File.separator + minioName;
                Map<String, String> env = new HashMap<>();
@@ -97,7 +97,7 @@
            }
        }
        if (mediamtxEnabled) {
            log.debug("初始化启动mediaMTX");
            log.info("初始化启动mediaMTX");
            if (Platform.isWindows()) {
                String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + mediamtxName;
                String ymlPath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + "mediamtx.yml";
@@ -117,6 +117,7 @@
            }
        }
        if (webrtcEnabled) {
            log.info("初始化启动webrtc-streamer");
            if (Platform.isWindows()) {
                String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "webrtc" + File.separator + webrtcName;
                List<String> cmd = new ArrayList<>();
ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java
@@ -171,6 +171,10 @@
     * ç™»å½•ID
     */
    private Integer loginId;
    /**
     * åœ¨çº¿çŠ¶æ€ 0-离线 1-在线
     */
    private String state;
    private String operatorId;
    private Date operatorExpired;
    /**
ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java
@@ -10,6 +10,11 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.sql.*;
@@ -18,18 +23,21 @@
public class ReadAccessDatabase {
    public static void main(String[] args) {
        Boolean aBoolean = IsConnectTcpServer("127.0.0.1", 1200, 100);
        String message = aBoolean ? "success" : "fail";
        log.info(message);
        // å¤šä¸ªæ•°æ®åº“文件路径
        String[] dbPaths = {
                "D:\\Workspaces\\ard\\安瑞达工作资料\\mdb\\道路中心线.mdb"
//                "D:\\Workspaces\\ard\\安瑞达工作资料\\mdb\\防风林-灌木.mdb",
                // æ·»åŠ æ›´å¤šçš„æ•°æ®åº“æ–‡ä»¶è·¯å¾„
        };
        // éåŽ†æ¯ä¸ªæ•°æ®åº“æ–‡ä»¶
        for (String dbPath : dbPaths) {
            readDataFromAccessDatabase(dbPath);
        }
//        String[] dbPaths = {
//                "D:\\Workspaces\\ard\\安瑞达工作资料\\mdb\\道路中心线.mdb"
////                "D:\\Workspaces\\ard\\安瑞达工作资料\\mdb\\防风林-灌木.mdb",
//                // æ·»åŠ æ›´å¤šçš„æ•°æ®åº“æ–‡ä»¶è·¯å¾„
//        };
//
//        // éåŽ†æ¯ä¸ªæ•°æ®åº“æ–‡ä»¶
//        for (String dbPath : dbPaths) {
//            readDataFromAccessDatabase(dbPath);
//        }
    }
    public static void readDataFromAccessDatabase(String dbPath) {
@@ -73,7 +81,7 @@
                    // å¯ä»¥æ ¹æ®å…·ä½“的表结构继续获取其他字段的数据
                    // åœ¨è¿™é‡Œå¤„理获取到的数据,例如输出到控制台或保存到集合中
                    log.info("ID: " + id + ", No: " + no+ ", Name: " + name);
                    log.info("ID: " + id + ", No: " + no + ", Name: " + name);
                }
                // å…³é—­è¿žæŽ¥
                resultSet.close();
@@ -86,6 +94,17 @@
        }
    }
    public static Boolean IsConnectTcpServer(String ip,Integer port,Integer timeOut) {
        try {
            Socket socket = new Socket();
            socket.connect(new InetSocketAddress(ip, port), timeOut);
            socket.close();
           return true;
        } catch (IOException e) {
           // log.error(e.getMessage());
            return false;
        }
    }
}
ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
@@ -32,6 +32,7 @@
        <result property="operatorExpired" column="operator_expired"/>
        <result property="camMaxVisibleDistance" column="cam_max_visible_distance"/>
        <result property="camAlarmGuideEnable" column="cam_alarm_guide_enable"/>
        <result property="state" column="state"/>
    </resultMap>
    <sql id="selectArdCamerasVo">
@@ -61,7 +62,8 @@
               c.operator_id,
               c.operator_expired,
               c.cam_max_visible_distance,
               c.cam_alarm_guide_enable
               c.cam_alarm_guide_enable,
               c.state
        from ard_cameras c
                 left join sys_dept d on d.dept_id = c.dept_id
                 left join sys_user u on u.user_id = c.user_id
@@ -236,6 +238,7 @@
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="operatorId != null">operator_id = #{operatorId},</if>
            <if test="operatorExpired != null">operator_expired = #{operatorExpired},</if>
            <if test="state != null">state = #{state},</if>
        </trim>
        where id = #{id}
    </update>
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/syncDeviceStateTask.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.ruoyi.quartz.task;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.service.IArdCamerasService;
import com.ruoyi.device.hiksdk.service.IHikClientService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
 * @Description: åŒæ­¥è®¾å¤‡çŠ¶æ€ä»»åŠ¡
 * @ClassName: syncDeviceStateTask
 * @Author: åˆ˜è‹ä¹‰
 * @Date: 2023å¹´10月08日11:06:42
 **/
@Component("syncTask")
public class syncDeviceStateTask {
    @Resource
    IArdCamerasService iArdCamerasService;
    @Resource
    IHikClientService iHikClientService;
    public void cameraState() {
        List<ArdCameras> ardCameras = iArdCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
        for (ArdCameras camera : ardCameras) {
            CameraCmd cmd = new CameraCmd();
            cmd.setCameraId(camera.getId());
            boolean onLineNew = iHikClientService.isOnLine(cmd);//相机实时状态
            boolean onLineOld = "1".equals(camera.getState());//相机历史状态
            //当状态发生变化时,更新实时状态
            if (onLineNew != onLineOld) {
                if (onLineNew) {
                    camera.setState("1");
                } else {
                    camera.setState("0");
                }
                iArdCamerasService.updateArdCameras(camera);
            }
        }
    }
}