‘liusuyi’
2023-12-05 745d5b90be7d8cdb8873b18d18b286fdc4b6913b
配置文件全部更改为配置类
优化包路径
已添加6个文件
已重命名33个文件
已修改13个文件
23058 ■■■■ 文件已修改
src/main/java/com/ard/alarm/apponekey/service/impl/ArdAlarmApponekeyServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/digitization/config/Digit3Configuration.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/digitization/service/impl/DataBridgeServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/radar/controller/RadarController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/stealelec/config/StealElecConfiguration.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/constants/Constants.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/http/HttpUtils.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/minio/MinioConfig.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/minio/MinioUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/mqtt/MqttConfiguration.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/mqtt/MqttProducer.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/config/NettyTcpConfiguration.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/config/NettyUdpConfiguration.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/ClientHandler.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/DynamicClient.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/DynamicClientInitializer.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/MessageParsing.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/udp/InitUdpServer.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/udp/NettyUdpHandler.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/udp/NettyUdpServer.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/common/GlobalVariable.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/domain/AccessControlHostEventInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/domain/CameraEventInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/domain/DeviceInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/domain/ExternalAlarmEventInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/domain/FaceMatchEventInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/domain/FaceSnapEventInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/domain/recordInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/service/impl/FMSGCallBack.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java 1060 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/service/impl/LoginResultCallBack.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/util/hikSdkUtil/HCNetSDK.java 21460 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/util/hikSdkUtil/HIKSDKStructure.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/hiksdk/util/imageUtil/waterMarkUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/util/ByteUtils.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/util/CodeGeneration.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/util/DateUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/util/GisUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/util/IdUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/util/LonlatConver.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/util/SpringUtils.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/util/StringUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/util/UUID.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/util/UtilException.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-dev.yml 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-prod.yml 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/apponekey/service/impl/ArdAlarmApponekeyServiceImpl.java
@@ -4,7 +4,7 @@
import com.alibaba.fastjson2.JSON;
import com.ard.utils.mqtt.MqttProducer;
import com.ard.utils.uuid.IdUtils;
import com.ard.utils.util.IdUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.ard.alarm.apponekey.domain.ArdAlarmApponekey;
src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java
@@ -9,9 +9,7 @@
import com.ard.alarm.camera.domain.ArdCameras;
import com.ard.alarm.camera.mapper.ArdCamerasMapper;
import com.ard.alarm.camera.service.IArdCamerasService;
import com.ard.alarm.external.domain.ArdEquipExternal;
import com.ard.alarm.external.mapper.ArdEquipExternalMapper;
import com.ard.utils.hiksdk.service.impl.HikClientUtil;
import com.ard.utils.sdk.hiksdk.service.impl.HikClientUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
@@ -20,7 +18,6 @@
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
/**
src/main/java/com/ard/alarm/digitization/config/Digit3Configuration.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ard.alarm.digitization.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
 * @Description:
 * @ClassName: Digit3Configuration
 * @Author: åˆ˜è‹ä¹‰
 * @Date: 2023å¹´12月05日8:58:02
 **/
@Data
@Configuration
@ConfigurationProperties("digitization3")
public class Digit3Configuration {
    private Boolean enabled;
}
src/main/java/com/ard/alarm/digitization/service/impl/DataBridgeServiceImpl.java
@@ -1,6 +1,7 @@
package com.ard.alarm.digitization.service.impl;
import com.alibaba.fastjson2.JSON;
import com.ard.alarm.digitization.config.Digit3Configuration;
import com.ard.alarm.digitization.model.DataBridge;
import com.ard.alarm.digitization.service.DataBridgeService;
import com.ard.utils.jdbc.Query;
@@ -10,6 +11,7 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@@ -25,14 +27,14 @@
public class DataBridgeServiceImpl implements DataBridgeService {
    public static Date lastTime;
    @Value("${spring.digitization3.enabled}")
    private Boolean enabled;
    @Resource
    Digit3Configuration digit3Config;
    @Scheduled(cron = "0/5 * * * * ?")
    public void alarmHandler() {
        List<DataBridge> dataBridgeList;
        try {
            if(!enabled)
            if(!digit3Config.getEnabled())
            {
                return;
            }
src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java
@@ -6,14 +6,12 @@
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import com.ard.alarm.camera.domain.ArdCameras;
import com.ard.alarm.external.domain.ArdEquipExternal;
import com.ard.alarm.external.mapper.ArdEquipExternalMapper;
import com.ard.alarm.external.service.IArdEquipExternalService;
import com.ard.utils.hiksdk.service.impl.HikClientUtil;
import com.ard.utils.sdk.hiksdk.service.impl.HikClientUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
src/main/java/com/ard/alarm/radar/controller/RadarController.java
@@ -4,9 +4,9 @@
import com.ard.alarm.radar.domain.GuideInfo;
import com.ard.alarm.radar.service.IArdEquipRadarService;
import com.ard.utils.http.AjaxResult;
import com.ard.utils.other.ByteUtils;
import com.ard.utils.other.GisUtils;
import com.ard.utils.tcp.ClientInitialize;
import com.ard.utils.util.ByteUtils;
import com.ard.utils.util.GisUtils;
import com.ard.utils.netty.tcp.ClientInitialize;
import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
import lombok.extern.slf4j.Slf4j;
@@ -16,8 +16,6 @@
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
/**
 * @Description: é›·è¾¾æŽ¥å£
src/main/java/com/ard/alarm/stealelec/config/StealElecConfiguration.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ard.alarm.stealelec.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
 * @Description:
 * @ClassName: StealElecConfiguration
 * @Author: åˆ˜è‹ä¹‰
 * @Date: 2023å¹´12月05日9:00:33
 **/
@Configuration
@Data
@ConfigurationProperties(prefix = "stealelec")
public class StealElecConfiguration {
    private String url;
    private Boolean enabled;
}
src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ard.alarm.stealelec.config.StealElecConfiguration;
import com.ard.alarm.stealelec.domain.ArdAlarmStealelec;
import com.ard.utils.http.HttpUtils;
import com.ard.utils.mqtt.MqttProducer;
@@ -11,6 +12,7 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -26,10 +28,8 @@
@Service
public class StealElecAlarmService {
    @Value("${spring.stealelec.url}")
    private String stealElecUrl;
    @Value("${spring.stealelec.enabled}")
    private Boolean enabled;
@Resource
    StealElecConfiguration stealElecConfig;
    List<String> tempList = new ArrayList<>();
    /**
@@ -44,10 +44,10 @@
    @Scheduled(cron = "0/5 * * * * ?")
    public void alarmHandler() {
        try {
            if (!enabled) {
            if (!stealElecConfig.getEnabled()) {
                return;
            }
            String allAlarmData = HttpUtils.sendGet(stealElecUrl);
            String allAlarmData = HttpUtils.sendGet(stealElecConfig.getUrl());
            //剔除所有\符号
            String message = allAlarmData.replaceAll("\\\\", "");
            //剔除整个字符串首尾双引号
src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java
@@ -1,15 +1,19 @@
package com.ard.alarm.tube.service;
import com.alibaba.fastjson2.JSON;
import com.ard.utils.other.DateUtils;
import com.ard.utils.netty.config.NettyUdpConfiguration;
import com.ard.utils.util.DateUtils;
import com.ard.utils.mqtt.MqttProducer;
import com.ard.utils.udp.NettyUdpServer;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioDatagramChannel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.annotation.Order;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.HashMap;
@@ -24,25 +28,7 @@
 **/
@Service
@Slf4j(topic = "tube")
@Order(3)
public class TubeAlarmService {
    @Resource
    NettyUdpServer nettyUdpServer;
    @Value("${spring.netty.udp.port}")
    private Integer udpPort;
    @Value("${spring.netty.udp.enabled}")
    private String UdpServerEnable;
    @PostConstruct
    public void init() {
        if (UdpServerEnable.equals("false")) {
            return;
        }
        nettyUdpServer.init(udpPort);
        log.debug("管线泄露UDP服务已启动");
    }
    @Async("alarm")
    public void alarmHandler(String message) {
@@ -81,6 +67,5 @@
            log.error("tube报警数据推送异常:" + ex.getMessage());
        }
    }
}
src/main/java/com/ard/utils/constants/Constants.java
ÎļþÃû´Ó src/main/java/com/ard/utils/Constants.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils;
package com.ard.utils.constants;
/**
 * @Description: é€šç”¨å¸¸é‡ä¿¡æ¯
src/main/java/com/ard/utils/http/HttpUtils.java
@@ -18,11 +18,9 @@
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import com.ard.utils.Constants;
import com.ard.utils.constants.Constants;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * é€šç”¨http发送方法
src/main/java/com/ard/utils/minio/MinioConfig.java
@@ -1,7 +1,9 @@
package com.ard.utils.minio;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -14,13 +16,12 @@
@Configuration
@Slf4j(topic = "minio")
@ConfigurationProperties("minio")
@Data
public class MinioConfig {
    @Value("${spring.minio.endpoint}")
    private String endpoint;
    @Value("${spring.minio.accessKey}")
    private String accessKey;
    @Value("${spring.minio.secretKey}")
    private String secretKey;
    @Bean
@@ -29,4 +30,4 @@
        log.info("初始化minio配置"+"【"+endpoint+"("+accessKey+"/"+secretKey+")】");
        return new MinioUtil(endpoint,accessKey,secretKey);
    }
}
}
src/main/java/com/ard/utils/minio/MinioUtil.java
@@ -1,7 +1,7 @@
package com.ard.utils.minio;
import com.ard.utils.other.StringUtils;
import com.ard.utils.uuid.IdUtils;
import com.ard.utils.util.StringUtils;
import com.ard.utils.util.IdUtils;
import io.minio.*;
import io.minio.http.Method;
import io.minio.messages.*;
src/main/java/com/ard/utils/mqtt/MqttConfiguration.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.ard.utils.mqtt;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
 * @Description:
 * @ClassName: MqttConfiguration
 * @Author: åˆ˜è‹ä¹‰
 * @Date: 2023å¹´12月05日8:51:24
 **/
@Data
@Configuration
@ConfigurationProperties("mqtt")
public class MqttConfiguration {
    private Boolean enabled;
    private String host;
    private String clientId;
    private String username;
    private String password;
    private int timeout;
    private int keepalive;
}
src/main/java/com/ard/utils/mqtt/MqttProducer.java
@@ -9,6 +9,7 @@
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
/**
@@ -22,27 +23,15 @@
@Slf4j(topic = "mqtt")
@Order(1)
public class MqttProducer implements ApplicationRunner {
    @Value("${spring.mqtt.enabled}")
    private Boolean MQTT_ENABLED;
    @Value("${spring.mqtt.host}")
    private String MQTT_HOST;
    @Value("${spring.mqtt.clientId}")
    private String MQTT_CLIENT_ID;
    @Value("${spring.mqtt.username}")
    private String MQTT_USER_NAME;
    @Value("${spring.mqtt.password}")
    private String MQTT_PASSWORD;
    @Value("${spring.mqtt.timeout}")
    private int MQTT_TIMEOUT;
    @Value("${spring.mqtt.keepalive}")
    private int MQTT_KEEP_ALIVE;
    @Resource
    MqttConfiguration mqttConfig;
    private static MqttClient client;
    @Override
    public void run(ApplicationArguments args) {
        log.debug("初始化并启动mqtt......");
        if (MQTT_ENABLED) {
        if (mqttConfig.getEnabled()) {
            this.connect();
        }
    }
@@ -70,7 +59,7 @@
    public void getClient() {
        try {
            if (null == client) {
                client = new MqttClient(MQTT_HOST, MQTT_CLIENT_ID, new MemoryPersistence());
                client = new MqttClient(mqttConfig.getHost(), mqttConfig.getClientId(), new MemoryPersistence());
            }
            log.debug("--创建mqtt客户端");
        } catch (Exception e) {
@@ -84,12 +73,12 @@
    public MqttConnectOptions getOptions() {
        MqttConnectOptions options = new MqttConnectOptions();
        //设置用户名密码
        options.setUserName(MQTT_USER_NAME);
        options.setPassword(MQTT_PASSWORD.toCharArray());
        options.setUserName(mqttConfig.getUsername());
        options.setPassword(mqttConfig.getPassword().toCharArray());
        // è®¾ç½®è¶…æ—¶æ—¶é—´
        options.setConnectionTimeout(MQTT_TIMEOUT);
        options.setConnectionTimeout(mqttConfig.getTimeout());
        // è®¾ç½®ä¼šè¯å¿ƒè·³æ—¶é—´
        options.setKeepAliveInterval(MQTT_KEEP_ALIVE);
        options.setKeepAliveInterval(mqttConfig.getKeepalive());
        // æ˜¯å¦æ¸…除session
        options.setCleanSession(false);
        log.debug("--生成mqtt配置对象");
src/main/java/com/ard/utils/netty/config/NettyTcpConfiguration.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ard.utils.netty.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
 * @Description:
 * @ClassName: NettyTcpConfiguration
 * @Author: åˆ˜è‹ä¹‰
 * @Date: 2023å¹´12月05日9:14:16
 **/
@Configuration
@Data
@ConfigurationProperties(prefix = "netty.tcp")
public class NettyTcpConfiguration {
    Boolean enabled;
}
src/main/java/com/ard/utils/netty/config/NettyUdpConfiguration.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ard.utils.netty.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
 * @Description:
 * @ClassName: NettyConfiguration
 * @Author: åˆ˜è‹ä¹‰
 * @Date: 2023å¹´12月05日9:07:18
 **/
@Configuration
@Data
@ConfigurationProperties(prefix = "netty.udp")
public class NettyUdpConfiguration {
    private Integer port;
    private Boolean enabled;
}
src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
ÎļþÃû´Ó src/main/java/com/ard/utils/tcp/ClientHandler.java ÐÞ¸Ä
@@ -1,11 +1,11 @@
package com.ard.utils.tcp;
package com.ard.utils.netty.tcp;
import com.alibaba.fastjson2.JSON;
import com.ard.alarm.radar.domain.ArdAlarmRadar;
import com.ard.alarm.radar.domain.ArdEquipRadar;
import com.ard.alarm.radar.domain.RadarAlarmData;
import com.ard.utils.other.ByteUtils;
import com.ard.utils.other.GisUtils;
import com.ard.utils.util.ByteUtils;
import com.ard.utils.util.GisUtils;
import com.ard.utils.mqtt.MqttProducer;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
@@ -13,7 +13,6 @@
import io.netty.channel.SimpleChannelInboundHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import javax.xml.bind.DatatypeConverter;
import java.net.InetSocketAddress;
@@ -22,7 +21,7 @@
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import static com.ard.utils.other.ByteUtils.toLittleEndian;
import static com.ard.utils.util.ByteUtils.toLittleEndian;
/**
 * @Description: å®¢æˆ·ç«¯å¤„理器
src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
ÎļþÃû´Ó src/main/java/com/ard/utils/tcp/ClientInitialize.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.tcp;
package com.ard.utils.netty.tcp;
/**
 * @Description:
@@ -10,19 +10,18 @@
import com.ard.alarm.radar.domain.ArdEquipRadar;
import com.ard.alarm.radar.service.IArdEquipRadarService;
import com.ard.utils.netty.config.NettyTcpConfiguration;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.CompletableFuture;
@@ -39,12 +38,10 @@
@Slf4j(topic = "netty")
@Order(2)
public class ClientInitialize implements ApplicationRunner {
    @Resource
    NettyTcpConfiguration nettyTcpConfig;
    @Resource
    IArdEquipRadarService ardEquipRadarService;
    @Value("${spring.netty.tcp.enabled}")
    private Boolean tcpClientEnable;
    private Bootstrap bootstrap;
    public static CopyOnWriteArraySet<ArdEquipRadar> falseConnectSet = new CopyOnWriteArraySet();
@@ -127,7 +124,7 @@
     */
    @Override
    public void run(ApplicationArguments args) {
        if (!tcpClientEnable) {
        if (!nettyTcpConfig.getEnabled()) {
            return;
        }
        initNettyTcp();//初始化nettyTcp
@@ -135,7 +132,7 @@
        for (ArdEquipRadar ardEquipRadar : ardEquipRadars) {
            String host = ardEquipRadar.getIp();
            Integer port = Integer.valueOf(ardEquipRadar.getPort());
            log.debug("TCP client try to connect radar【:" + host + ":" + port+"】");
            log.debug("TCP client try to connect radar【" + host + ":" + port+"】");
            connectServer(ardEquipRadar);//连接每一个雷达服务
        }
    }
src/main/java/com/ard/utils/netty/tcp/DynamicClient.java
ÎļþÃû´Ó src/main/java/com/ard/utils/tcp/DynamicClient.java ÐÞ¸Ä
@@ -1,13 +1,13 @@
package com.ard.utils.tcp;
package com.ard.utils.netty.tcp;
import com.ard.alarm.radar.domain.ArdEquipRadar;
import com.ard.alarm.radar.service.IArdEquipRadarService;
import com.ard.utils.netty.config.NettyTcpConfiguration;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioSocketChannel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -28,9 +28,8 @@
public class DynamicClient {
    @Resource
    IArdEquipRadarService ardEquipRadarService;
    @Value("${spring.netty.tcp.enabled}")
    private Boolean tcpClientEnable;
    @Resource
    NettyTcpConfiguration nettyTcpConfig;
    private static List<Channel> serverChannels = new ArrayList<>();
    public static ConcurrentHashMap<Channel, ArdEquipRadar> ConnectMap = new ConcurrentHashMap();
@@ -128,7 +127,7 @@
     */
    //@Override
    public void run(ApplicationArguments args) {
        if (!tcpClientEnable) {
        if (!nettyTcpConfig.getEnabled()) {
            return;
        }
        EventLoopGroup group = new NioEventLoopGroup();
src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java
ÎļþÃû´Ó src/main/java/com/ard/utils/tcp/DynamicClientHandler.java ÐÞ¸Ä
@@ -1,12 +1,12 @@
package com.ard.utils.tcp;
package com.ard.utils.netty.tcp;
import com.alibaba.fastjson2.JSON;
import com.ard.alarm.radar.domain.ArdAlarmRadar;
import com.ard.alarm.radar.domain.ArdEquipRadar;
import com.ard.alarm.radar.domain.RadarAlarmData;
import com.ard.utils.mqtt.MqttProducer;
import com.ard.utils.other.ByteUtils;
import com.ard.utils.other.GisUtils;
import com.ard.utils.util.ByteUtils;
import com.ard.utils.util.GisUtils;
import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
@@ -18,8 +18,8 @@
import java.util.*;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import static com.ard.utils.other.ByteUtils.byteToBitString;
import static com.ard.utils.other.ByteUtils.toLittleEndian;
import static com.ard.utils.util.ByteUtils.byteToBitString;
import static com.ard.utils.util.ByteUtils.toLittleEndian;
/**
 * @Description: å®¢æˆ·ç«¯æ•°æ®å¤„理器(备用)
src/main/java/com/ard/utils/netty/tcp/DynamicClientInitializer.java
ÎļþÃû´Ó src/main/java/com/ard/utils/tcp/DynamicClientInitializer.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.tcp;
package com.ard.utils.netty.tcp;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
src/main/java/com/ard/utils/netty/tcp/MessageParsing.java
ÎļþÃû´Ó src/main/java/com/ard/utils/tcp/MessageParsing.java ÐÞ¸Ä
@@ -1,6 +1,6 @@
package com.ard.utils.tcp;
package com.ard.utils.netty.tcp;
import com.ard.utils.other.ByteUtils;
import com.ard.utils.util.ByteUtils;
import javax.xml.bind.DatatypeConverter;
import java.util.ArrayList;
src/main/java/com/ard/utils/netty/udp/InitUdpServer.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ard.utils.netty.udp;
import com.ard.utils.netty.config.NettyUdpConfiguration;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
/**
 * @Description: åˆå§‹åŒ–启动nettyUdp服务
 * @ClassName: InitUdpServer
 * @Author: åˆ˜è‹ä¹‰
 * @Date: 2023å¹´12月05日9:59:50
 **/
@Component
public class InitUdpServer {
    @Resource
    NettyUdpServer nettyUdpServer;
    @Resource
    NettyUdpConfiguration nettyUdpConfig;
    @PostConstruct
    void start()
    {
        if(nettyUdpConfig.getEnabled()) {
            nettyUdpServer.start(nettyUdpConfig.getPort());
        }
    }
}
src/main/java/com/ard/utils/netty/udp/NettyUdpHandler.java
ÎļþÃû´Ó src/main/java/com/ard/utils/udp/NettyUdpHandler.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package com.ard.utils.udp;
package com.ard.utils.netty.udp;
import com.ard.alarm.tube.service.TubeAlarmService;
import com.ard.utils.spring.SpringUtils;
import com.ard.utils.util.SpringUtils;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
@@ -11,7 +11,7 @@
import java.nio.charset.Charset;
@Slf4j(topic = "tube")
@Slf4j(topic = "netty")
public class NettyUdpHandler extends SimpleChannelInboundHandler<DatagramPacket> {
    @Override
src/main/java/com/ard/utils/netty/udp/NettyUdpServer.java
ÎļþÃû´Ó src/main/java/com/ard/utils/udp/NettyUdpServer.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.udp;
package com.ard.utils.netty.udp;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.ChannelFuture;
@@ -11,15 +11,20 @@
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Component;
/**
 * netty服务异步初始化
 * åˆ˜è‹ä¹‰
 * 2023/12/5 10:04:51
 */
@EnableAsync
@Component
@Slf4j(topic = "tube")
@Slf4j(topic = "netty")
public class NettyUdpServer {
    /**
     * å¯åŠ¨æœåŠ¡
     */
    @Async("alarm")
    public void init(int port) {
    public void start(int port) {
        //表示服务器连接监听线程组,专门接受 accept æ–°çš„客户端client è¿žæŽ¥
        EventLoopGroup bossLoopGroup = new NioEventLoopGroup();
        try {
src/main/java/com/ard/utils/sdk/hiksdk/common/GlobalVariable.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/common/GlobalVariable.java ÐÞ¸Ä
@@ -1,7 +1,6 @@
package com.ard.utils.hiksdk.common;
package com.ard.utils.sdk.hiksdk.common;
import com.ard.alarm.camera.domain.ArdCameras;
import com.ard.alarm.external.domain.ArdEquipExternal;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
src/main/java/com/ard/utils/sdk/hiksdk/domain/AccessControlHostEventInfo.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/domain/AccessControlHostEventInfo.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.hiksdk.domain;
package com.ard.utils.sdk.hiksdk.domain;
import lombok.Data;
src/main/java/com/ard/utils/sdk/hiksdk/domain/CameraEventInfo.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/domain/CameraEventInfo.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.hiksdk.domain;
package com.ard.utils.sdk.hiksdk.domain;
import lombok.Data;
src/main/java/com/ard/utils/sdk/hiksdk/domain/DeviceInfo.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/domain/DeviceInfo.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.hiksdk.domain;
package com.ard.utils.sdk.hiksdk.domain;
import lombok.Data;
src/main/java/com/ard/utils/sdk/hiksdk/domain/ExternalAlarmEventInfo.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/domain/ExternalAlarmEventInfo.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.hiksdk.domain;
package com.ard.utils.sdk.hiksdk.domain;
import lombok.Data;
src/main/java/com/ard/utils/sdk/hiksdk/domain/FaceMatchEventInfo.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/domain/FaceMatchEventInfo.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.hiksdk.domain;
package com.ard.utils.sdk.hiksdk.domain;
import lombok.Data;
src/main/java/com/ard/utils/sdk/hiksdk/domain/FaceSnapEventInfo.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/domain/FaceSnapEventInfo.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.hiksdk.domain;
package com.ard.utils.sdk.hiksdk.domain;
import lombok.Data;
src/main/java/com/ard/utils/sdk/hiksdk/domain/recordInfo.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/domain/recordInfo.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.hiksdk.domain;
package com.ard.utils.sdk.hiksdk.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
src/main/java/com/ard/utils/sdk/hiksdk/service/impl/FMSGCallBack.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.hiksdk.service.impl;
package com.ard.utils.sdk.hiksdk.service.impl;
import com.alibaba.fastjson2.JSON;
import com.ard.alarm.camera.domain.ArdCameras;
@@ -6,14 +6,14 @@
import com.ard.alarm.camera.service.impl.ArdCamerasServiceImpl;
import com.ard.alarm.external.domain.ArdEquipExternal;
import com.ard.alarm.external.service.impl.ArdEquipExternalServiceImpl;
import com.ard.utils.hiksdk.domain.*;
import com.ard.utils.sdk.hiksdk.domain.*;
import com.ard.utils.minio.MinioUtil;
import com.ard.utils.other.ByteUtils;
import com.ard.utils.hiksdk.common.GlobalVariable;
import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.ard.utils.other.DateUtils;
import com.ard.utils.util.ByteUtils;
import com.ard.utils.sdk.hiksdk.common.GlobalVariable;
import com.ard.utils.sdk.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.ard.utils.util.DateUtils;
import com.ard.utils.mqtt.MqttProducer;
import com.ard.utils.uuid.IdUtils;
import com.ard.utils.util.IdUtils;
import com.sun.jna.Pointer;
import lombok.extern.slf4j.Slf4j;
@@ -23,7 +23,7 @@
import java.util.Date;
import java.util.Optional;
import static com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK.*;
import static com.ard.utils.sdk.hiksdk.util.hikSdkUtil.HCNetSDK.*;
/**
 * @ClassName: FMSGCallBack
src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java ÐÞ¸Ä
@@ -1,532 +1,530 @@
package com.ard.utils.hiksdk.service.impl;
import com.ard.alarm.camera.domain.ArdCameras;
import com.ard.alarm.camera.domain.CameraCmd;
import com.ard.alarm.external.domain.ArdEquipExternal;
import com.ard.utils.minio.MinioUtil;
import com.ard.utils.other.ByteUtils;
import com.ard.utils.hiksdk.common.GlobalVariable;
import com.ard.utils.hiksdk.domain.DeviceInfo;
import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.ard.utils.spring.SpringUtils;
import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.nio.ByteBuffer;
import java.util.*;
/**
 * @ClassName: hikClientServiceImpl
 * @Description: æµ·åº·æ“ä½œå®¢æˆ·ç«¯å®žçŽ°ç±»
 * @Author: Administrator
 * @Date: 2023å¹´01月17日 11:25
 * @Version: 1.2
 **/
@Slf4j(topic = "hikSdk")
public class HikClientUtil {
    public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK;
    // æŠ¥è­¦å›žè°ƒå‡½æ•°å®žçް
    public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31;
    /**
     * @描述 æ³¨å†Œç™»å½• åªæ”¯æŒåŒæ­¥ç™»é™†ï¼Œä¸”官方不建议直接在此接口下写耗时操作
     * @参数 [dvrLogin]
     * @返回值 java.lang.Integer
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/1/17 16:12
     * @修改人和其它信息
     */
    public ArdCameras login1(ArdCameras camera) {
        // åˆå§‹åŒ–
        if (!hCNetSDK.NET_DVR_Init()) {
            log.error("SDK初始化失败");
        }
        //打印海康sdk日志
        if (Platform.isWindows()) {
            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
        } else {
            hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
        }
        String m_sDeviceIP = camera.getIp();
        String m_sUsername = camera.getUsername();
        String m_sPassword = camera.getPassword();
        short m_sPort = camera.getPort().shortValue();
        //设置连接时间与重连时间
        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
        hCNetSDK.NET_DVR_SetReconnect(100000, true);
        //设备信息, è¾“出参数
        HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
        int lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP, m_sPort, m_sUsername, m_sPassword, m_strDeviceInfo);
        if (lUserID < 0) {
            //释放SDK资源
            hCNetSDK.NET_DVR_Cleanup();
            camera.setLoginId(-1);
        }
        if (GlobalVariable.loginMap.containsKey(camera.getId())) {
            GlobalVariable.loginMap.remove(camera.getId());
        }
        GlobalVariable.loginMap.put(camera.getId(), lUserID);
        camera.setLoginId(lUserID);
        camera.setChannel((int) m_strDeviceInfo.byStartChan);
        return camera;
    }
    /**
     * @描述 æ³¨å†Œç™»å½• é›†æˆäºŽNET_DVR_Login_V30,支持同步和异步登录
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/1/17 16:12
     */
    public static void login(DeviceInfo deviceInfo) {
        // åˆå§‹åŒ–
        if (!hCNetSDK.NET_DVR_Init()) {
            log.error("SDK初始化失败");
        }
        //打印海康sdk日志
        if (Platform.isWindows()) {
            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
        } else {
            hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
        }
        String m_sDeviceIP = deviceInfo.getIp();
        String m_sUsername = deviceInfo.getUsername();
        String m_sPassword = deviceInfo.getPassword();
        short m_sPort = deviceInfo.getPort().shortValue();
        //设置连接时间与重连时间
        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
        hCNetSDK.NET_DVR_SetReconnect(100000, true);
        //设备信息, è¾“出参数
        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
        // æ³¨å†Œè®¾å¤‡-登录参数,包括设备地址、登录用户、密码等
        m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
        System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
        m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
        System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
        m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
        System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
        m_strLoginInfo.wPort = m_sPort;
        m_strLoginInfo.byVerifyMode = 0;
        m_strLoginInfo.byLoginMode = 0;
        //是否异步登录:0- å¦ï¼Œ1- æ˜¯  windowsSDK里是true和false
        m_strLoginInfo.bUseAsynLogin = true;
        //异步登录回调
        m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo);
        m_strLoginInfo.write();
        int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
        if (i < 0) {
            int errorCode = hCNetSDK.NET_DVR_GetLastError();
            log.error("登录异常:" + errorCode);
        }
    }
    /**
     * @描述 ç”¨æˆ·æ³¨é”€
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/1/17 16:12
     */
    public static void logout(DeviceInfo deviceInfo) {
        String deviceIpPort = deviceInfo.getIp() + ":" + deviceInfo.getPort();
        //撤防
        if (GlobalVariable.alarmMap.containsKey(deviceInfo.getDeviceId())) {
            Integer lAlarmHandle = GlobalVariable.alarmMap.get(deviceInfo.getDeviceId());
            boolean b = hCNetSDK.NET_DVR_CloseAlarmChan_V30(lAlarmHandle);
            if (b) {
                log.debug("设备【" + deviceIpPort + "】撤防成功");
            }
        }
        //登出
        if (GlobalVariable.loginMap.containsKey(deviceInfo.getDeviceId())) {
            Integer lUserID = GlobalVariable.loginMap.get(deviceInfo.getDeviceId());
            boolean b = hCNetSDK.NET_DVR_Logout(lUserID);
            if (b) {
                log.debug("设备【" + deviceIpPort + "】注销成功");
            }
        }
    }
    /**
     * @描述 ç™»å½•所有相机
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void loginAllCamera(List<ArdCameras> ardCameras) {
        try {
            for (ArdCameras camera : ardCameras) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(camera.getId());
                info.setIp(camera.getIp());
                info.setPort(camera.getPort());
                info.setUsername(camera.getUsername());
                info.setPassword(camera.getPassword());
                login(info);
                String key = camera.getIp() + ":" + camera.getPort();
                GlobalVariable.cameraMap.put(key, camera);
            }
        } catch (Exception ex) {
            log.error("初始化登录相机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å‡ºæ‰€æœ‰ç›¸æœº
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void logoutAllCamera(List<ArdCameras> ardCameras) {
        try {
            for (ArdCameras camera : ardCameras) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(camera.getId());
                info.setIp(camera.getIp());
                info.setPort(camera.getPort());
                info.setUsername(camera.getUsername());
                info.setPassword(camera.getPassword());
                logout(info);
                String key = camera.getIp() + ":" + camera.getPort();
                GlobalVariable.cameraMap.remove(key);
            }
        } catch (Exception ex) {
            log.error("初始化登录相机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å½•所有报警主机
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void loginAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal alarmHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(alarmHost.getId());
                info.setIp(alarmHost.getIp());
                info.setPort(alarmHost.getPort());
                info.setUsername(alarmHost.getUsername());
                info.setPassword(alarmHost.getPassword());
                login(info);
//                String key=alarmHost.getIp()+":"+alarmHost.getPort();
//                GlobalVariable.alarmHostMap.put(key, alarmHost);
            }
        } catch (Exception ex) {
            log.error("登录所有报警主机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å‡ºæ‰€æœ‰æŠ¥è­¦ä¸»æœº
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void logoutAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal alarmHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(alarmHost.getId());
                info.setIp(alarmHost.getIp());
                info.setPort(alarmHost.getPort());
                info.setUsername(alarmHost.getUsername());
                info.setPassword(alarmHost.getPassword());
                logout(info);
//                String key=alarmHost.getIp()+":"+alarmHost.getPort();
//                GlobalVariable.alarmHostMap.remove(key);
            }
        } catch (Exception ex) {
            log.error("登出所有报警主机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å½•所有门禁主机
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void loginAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal accessControlHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(accessControlHost.getId());
                info.setIp(accessControlHost.getIp());
                info.setPort(accessControlHost.getPort());
                info.setUsername(accessControlHost.getUsername());
                info.setPassword(accessControlHost.getPassword());
                login(info);
            }
        } catch (Exception ex) {
            log.error("登录所有门禁主机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å‡ºæ‰€æœ‰é—¨ç¦ä¸»æœº
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void logoutAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal accessControlHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(accessControlHost.getId());
                info.setIp(accessControlHost.getIp());
                info.setPort(accessControlHost.getPort());
                info.setUsername(accessControlHost.getUsername());
                info.setPassword(accessControlHost.getPassword());
                logout(info);
            }
        } catch (Exception ex) {
            log.error("登出所有门禁主机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å½•所有超脑
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void loginAllSuperBrainHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal superBrainHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(superBrainHost.getId());
                info.setIp(superBrainHost.getIp());
                info.setPort(superBrainHost.getPort());
                info.setUsername(superBrainHost.getUsername());
                info.setPassword(superBrainHost.getPassword());
                login(info);
            }
        } catch (Exception ex) {
            log.error("登录所有超脑异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å‡ºæ‰€æœ‰è¶…è„‘
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void logoutAllSuperBrainHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal superBrainHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(superBrainHost.getId());
                info.setIp(superBrainHost.getIp());
                info.setPort(superBrainHost.getPort());
                info.setUsername(superBrainHost.getUsername());
                info.setPassword(superBrainHost.getPassword());
                logout(info);
//                String key=accessControlHost.getIp()+":"+accessControlHost.getPort();
//                GlobalVariable.accessHostMap.remove(key);
            }
        } catch (Exception ex) {
            log.error("登出所有超脑异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å½•所有外联设备
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void loginAllArdEquipExternals(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal ardEquipExternal : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(ardEquipExternal.getId());
                info.setIp(ardEquipExternal.getIp());
                info.setPort(ardEquipExternal.getPort());
                info.setUsername(ardEquipExternal.getUsername());
                info.setPassword(ardEquipExternal.getPassword());
                login(info);
            }
        } catch (Exception ex) {
            log.error("登录所有外联设备异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å‡ºæ‰€æœ‰å¤–联设备
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void logoutAllArdEquipExternals(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal ardEquipExternal : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(ardEquipExternal.getId());
                info.setIp(ardEquipExternal.getIp());
                info.setPort(ardEquipExternal.getPort());
                info.setUsername(ardEquipExternal.getUsername());
                info.setPassword(ardEquipExternal.getPassword());
                logout(info);
            }
        } catch (Exception ex) {
            log.error("登出所有超脑异常:" + ex.getMessage());
        }
    }
    /**
     * å»ºç«‹å¸ƒé˜²ä¸Šä¼ é€šé“,用于传输数据
     *
     * @param lUserID      å”¯ä¸€æ ‡è¯†ç¬¦
     * @param lAlarmHandle æŠ¥è­¦å¤„理器
     */
    public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) {
        // æ ¹æ®è®¾å¤‡æ³¨å†Œç”Ÿæˆçš„lUserID建立布防的上传通道,即数据的上传通道
        if (lUserID == -1) {
            log.error("请先注册");
            return lUserID;
        }
        if (lAlarmHandle < 0) {
            // è®¾å¤‡å°šæœªå¸ƒé˜²,需要先进行布防
            if (fMSFCallBack_V31 == null) {
                fMSFCallBack_V31 = new FMSGCallBack();
                if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V50(0, fMSFCallBack_V31, null)) {
                    log.error("设置回调函数失败!错误码==========》" + hCNetSDK.NET_DVR_GetLastError());
                }
            }
            // è¿™é‡Œéœ€è¦å¯¹è®¾å¤‡è¿›è¡Œç›¸åº”的参数设置,不设置或设置错误都会导致设备注册失败
            HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM();
            m_strAlarmInfo.dwSize = m_strAlarmInfo.size();
            // æ™ºèƒ½äº¤é€šå¸ƒé˜²ä¼˜å…ˆçº§ï¼š0 - ä¸€ç­‰çº§ï¼ˆé«˜ï¼‰ï¼Œ1 - äºŒç­‰çº§ï¼ˆä¸­ï¼‰ï¼Œ2 - ä¸‰ç­‰çº§ï¼ˆä½Žï¼‰
            m_strAlarmInfo.byLevel = 0;
            // æ™ºèƒ½äº¤é€šæŠ¥è­¦ä¿¡æ¯ä¸Šä¼ ç±»åž‹ï¼š0 - è€æŠ¥è­¦ä¿¡æ¯ï¼ˆNET_DVR_PLATE_RESULT), 1 - æ–°æŠ¥è­¦ä¿¡æ¯(NET_ITS_PLATE_RESULT)
            m_strAlarmInfo.byAlarmInfoType = 1;
            // å¸ƒé˜²ç±»åž‹(仅针对门禁主机、人证设备):0 - å®¢æˆ·ç«¯å¸ƒé˜²(会断网续传),1 - å®žæ—¶å¸ƒé˜²(只上传实时数据)
            m_strAlarmInfo.byDeployType = 1;
            //人脸报警信息类型:1- äººè„¸ä¾¦æµ‹æŠ¥è­¦ 0- äººè„¸æŠ“拍报警
            m_strAlarmInfo.byFaceAlarmDetection = 0;
            m_strAlarmInfo.write();
            // å¸ƒé˜²æˆåŠŸï¼Œè¿”å›žå¸ƒé˜²æˆåŠŸçš„æ•°æ®ä¼ è¾“é€šé“å·
            lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
            if (lAlarmHandle == -1) {
                log.error("设备【" + deviceIpPort + "】布防失败,错误码==========》" + hCNetSDK.NET_DVR_GetLastError());
            } else {
                log.debug("设备【" + deviceIpPort + "】布防成功");
            }
        }
        return lAlarmHandle;
    }
    /**
     * æ³¨é”€
     *
     * @param lUserID è®¾å¤‡æ³¨å†ŒæˆåŠŸå”¯ä¸€æ ‡è¯†ç¬¦
     */
    public static void logout(int lUserID) {
        // æ³¨é”€
        hCNetSDK.NET_DVR_Logout(lUserID);
        // é‡Šæ”¾sdk资源
        hCNetSDK.NET_DVR_Cleanup();
    }
    /**
     * æŠ“图
     *
     * @param cmd æŠ“图命令
     */
    public static String picCutCate(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return "";
        }
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        //图片信息
        HCNetSDK.NET_DVR_JPEGPARA jpeg = new HCNetSDK.NET_DVR_JPEGPARA();
        //设置图片分辨率
        //图片尺寸:0-CIF(352*288/352*240),1-QCIF(176*144/176*120),2-4CIF(704*576/704*480)或D1(720*576/720*486),3-UXGA(1600*1200),
        // 4-SVGA(800*600),5-HD720P(1280*720),6-VGA(640*480),7-XVGA(1280*960),8-HD900P(1600*900),9-HD1080P(1920*1080),10-2560*1920,
        // 11-1600*304,12-2048*1536,13-2448*2048,14-2448*1200,15-2448*800,16-XGA(1024*768),17-SXGA(1280*1024),18-WD1(960*576/960*480),
        // 19-1080I(1920*1080),20-576*576,21-1536*1536,22-1920*1920,23-320*240,24-720*720,25-1024*768,26-1280*1280,27-1600*600,
        // 28-2048*768,29-160*120,75-336*256,78-384*256,79-384*216,80-320*256,82-320*192,83-512*384,127-480*272,128-512*272, 161-288*320,
        // 162-144*176,163-480*640,164-240*320,165-120*160,166-576*720,167-720*1280,168-576*960,180-180*240, 181-360*480, 182-540*720,
        // 183-720*960, 184-960*1280, 185-1080*1440, 500-384*288, 0xff-Auto(使用当前码流分辨率)
        jpeg.wPicSize = 0;
        //设置图片质量:0-最好,1-较好,2-一般
        jpeg.wPicQuality = 0;
        IntByReference a = new IntByReference();
        //设置图片大小
        ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024);
        // æŠ“图到内存,单帧数据捕获并保存成JPEG存放在指定的内存空间中
        // log.debug("-----------这里开始封装 NET_DVR_CaptureJPEGPicture_NEW---------");
        boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a);
        //log.debug("-----------这里开始图片存入内存----------" + is);
        if (is) {
            //  log.debug("hksdk(抓图)-结果状态值(0表示成功):" + hCNetSDK.NET_DVR_GetLastError());
            byte[] array = jpegBuffer.array();
            //存储到minio
            String ContentType = "image/JPEG";
            InputStream input = new ByteArrayInputStream(array);
            String url = "";
            try {
                boolean b = MinioUtil.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, input.available(), ContentType);
                if (b) {
                    url = MinioUtil.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName());
                    // log.debug("上传文件成功!" + url);
                }
            } catch (Exception ex) {
                log.error("上传文件异常:" + ex.getMessage());
            }
            return url;
        } else {
            int code = hCNetSDK.NET_DVR_GetLastError();
            log.debug("抓图失败,请稍后重试" + code);
            return "";
        }
    }
    /**
     * èŽ·å–é˜²åŒºåç§°
     * é€šé“号==防区号 ä»Ž0开始
     * åˆ˜è‹ä¹‰
     * 2023/7/6 10:48
     */
    public static String getDefenseZoneName(CameraCmd cmd) {
        String name = "";
        try {
            String cameraId = cmd.getCameraId();
            Integer channelNum = cmd.getWZoneIndex();//通道号==防区号
            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                return name;
            }
            Integer userId = GlobalVariable.loginMap.get(cameraId);
            HCNetSDK.NET_DVR_ALARMIN_PARAM netDvrAlarminParam = new HCNetSDK.NET_DVR_ALARMIN_PARAM();
            Pointer point = netDvrAlarminParam.getPointer();
            IntByReference ibrBytesReturned = new IntByReference();
            netDvrAlarminParam.write();
            boolean b = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_ALARMIN_PARAM, channelNum, point, netDvrAlarminParam.size(), ibrBytesReturned);
            if (b) {
                netDvrAlarminParam.read();
                name = ByteUtils.bytesToStringZh(netDvrAlarminParam.byName);
            } else {
                int error = hCNetSDK.NET_DVR_GetLastError();
                log.info("获取防区名称失败:" + error);
            }
        } catch (Exception ex) {
            log.error("获取防区名称异常:" + ex.getMessage());
        }
        return name;
    }
package com.ard.utils.sdk.hiksdk.service.impl;
import com.ard.alarm.camera.domain.ArdCameras;
import com.ard.alarm.camera.domain.CameraCmd;
import com.ard.alarm.external.domain.ArdEquipExternal;
import com.ard.utils.minio.MinioUtil;
import com.ard.utils.util.ByteUtils;
import com.ard.utils.sdk.hiksdk.common.GlobalVariable;
import com.ard.utils.sdk.hiksdk.domain.DeviceInfo;
import com.ard.utils.sdk.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.nio.ByteBuffer;
import java.util.*;
/**
 * @ClassName: hikClientServiceImpl
 * @Description: æµ·åº·æ“ä½œå®¢æˆ·ç«¯å®žçŽ°ç±»
 * @Author: Administrator
 * @Date: 2023å¹´01月17日 11:25
 * @Version: 1.2
 **/
@Slf4j(topic = "hikSdk")
public class HikClientUtil {
    public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK;
    // æŠ¥è­¦å›žè°ƒå‡½æ•°å®žçް
    public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31;
    /**
     * @描述 æ³¨å†Œç™»å½• åªæ”¯æŒåŒæ­¥ç™»é™†ï¼Œä¸”官方不建议直接在此接口下写耗时操作
     * @参数 [dvrLogin]
     * @返回值 java.lang.Integer
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/1/17 16:12
     * @修改人和其它信息
     */
    public ArdCameras login1(ArdCameras camera) {
        // åˆå§‹åŒ–
        if (!hCNetSDK.NET_DVR_Init()) {
            log.error("SDK初始化失败");
        }
        //打印海康sdk日志
        if (Platform.isWindows()) {
            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
        } else {
            hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
        }
        String m_sDeviceIP = camera.getIp();
        String m_sUsername = camera.getUsername();
        String m_sPassword = camera.getPassword();
        short m_sPort = camera.getPort().shortValue();
        //设置连接时间与重连时间
        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
        hCNetSDK.NET_DVR_SetReconnect(100000, true);
        //设备信息, è¾“出参数
        HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
        int lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP, m_sPort, m_sUsername, m_sPassword, m_strDeviceInfo);
        if (lUserID < 0) {
            //释放SDK资源
            hCNetSDK.NET_DVR_Cleanup();
            camera.setLoginId(-1);
        }
        if (GlobalVariable.loginMap.containsKey(camera.getId())) {
            GlobalVariable.loginMap.remove(camera.getId());
        }
        GlobalVariable.loginMap.put(camera.getId(), lUserID);
        camera.setLoginId(lUserID);
        camera.setChannel((int) m_strDeviceInfo.byStartChan);
        return camera;
    }
    /**
     * @描述 æ³¨å†Œç™»å½• é›†æˆäºŽNET_DVR_Login_V30,支持同步和异步登录
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/1/17 16:12
     */
    public static void login(DeviceInfo deviceInfo) {
        // åˆå§‹åŒ–
        if (!hCNetSDK.NET_DVR_Init()) {
            log.error("SDK初始化失败");
        }
        //打印海康sdk日志
        if (Platform.isWindows()) {
            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
        } else {
            hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
        }
        String m_sDeviceIP = deviceInfo.getIp();
        String m_sUsername = deviceInfo.getUsername();
        String m_sPassword = deviceInfo.getPassword();
        short m_sPort = deviceInfo.getPort().shortValue();
        //设置连接时间与重连时间
        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
        hCNetSDK.NET_DVR_SetReconnect(100000, true);
        //设备信息, è¾“出参数
        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
        // æ³¨å†Œè®¾å¤‡-登录参数,包括设备地址、登录用户、密码等
        m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
        System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
        m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
        System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
        m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
        System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
        m_strLoginInfo.wPort = m_sPort;
        m_strLoginInfo.byVerifyMode = 0;
        m_strLoginInfo.byLoginMode = 0;
        //是否异步登录:0- å¦ï¼Œ1- æ˜¯  windowsSDK里是true和false
        m_strLoginInfo.bUseAsynLogin = true;
        //异步登录回调
        m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo);
        m_strLoginInfo.write();
        int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
        if (i < 0) {
            int errorCode = hCNetSDK.NET_DVR_GetLastError();
            log.error("登录异常:" + errorCode);
        }
    }
    /**
     * @描述 ç”¨æˆ·æ³¨é”€
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/1/17 16:12
     */
    public static void logout(DeviceInfo deviceInfo) {
        String deviceIpPort = deviceInfo.getIp() + ":" + deviceInfo.getPort();
        //撤防
        if (GlobalVariable.alarmMap.containsKey(deviceInfo.getDeviceId())) {
            Integer lAlarmHandle = GlobalVariable.alarmMap.get(deviceInfo.getDeviceId());
            boolean b = hCNetSDK.NET_DVR_CloseAlarmChan_V30(lAlarmHandle);
            if (b) {
                log.debug("设备【" + deviceIpPort + "】撤防成功");
            }
        }
        //登出
        if (GlobalVariable.loginMap.containsKey(deviceInfo.getDeviceId())) {
            Integer lUserID = GlobalVariable.loginMap.get(deviceInfo.getDeviceId());
            boolean b = hCNetSDK.NET_DVR_Logout(lUserID);
            if (b) {
                log.debug("设备【" + deviceIpPort + "】注销成功");
            }
        }
    }
    /**
     * @描述 ç™»å½•所有相机
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void loginAllCamera(List<ArdCameras> ardCameras) {
        try {
            for (ArdCameras camera : ardCameras) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(camera.getId());
                info.setIp(camera.getIp());
                info.setPort(camera.getPort());
                info.setUsername(camera.getUsername());
                info.setPassword(camera.getPassword());
                login(info);
                String key = camera.getIp() + ":" + camera.getPort();
                GlobalVariable.cameraMap.put(key, camera);
            }
        } catch (Exception ex) {
            log.error("初始化登录相机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å‡ºæ‰€æœ‰ç›¸æœº
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void logoutAllCamera(List<ArdCameras> ardCameras) {
        try {
            for (ArdCameras camera : ardCameras) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(camera.getId());
                info.setIp(camera.getIp());
                info.setPort(camera.getPort());
                info.setUsername(camera.getUsername());
                info.setPassword(camera.getPassword());
                logout(info);
                String key = camera.getIp() + ":" + camera.getPort();
                GlobalVariable.cameraMap.remove(key);
            }
        } catch (Exception ex) {
            log.error("初始化登录相机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å½•所有报警主机
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void loginAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal alarmHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(alarmHost.getId());
                info.setIp(alarmHost.getIp());
                info.setPort(alarmHost.getPort());
                info.setUsername(alarmHost.getUsername());
                info.setPassword(alarmHost.getPassword());
                login(info);
//                String key=alarmHost.getIp()+":"+alarmHost.getPort();
//                GlobalVariable.alarmHostMap.put(key, alarmHost);
            }
        } catch (Exception ex) {
            log.error("登录所有报警主机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å‡ºæ‰€æœ‰æŠ¥è­¦ä¸»æœº
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void logoutAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal alarmHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(alarmHost.getId());
                info.setIp(alarmHost.getIp());
                info.setPort(alarmHost.getPort());
                info.setUsername(alarmHost.getUsername());
                info.setPassword(alarmHost.getPassword());
                logout(info);
//                String key=alarmHost.getIp()+":"+alarmHost.getPort();
//                GlobalVariable.alarmHostMap.remove(key);
            }
        } catch (Exception ex) {
            log.error("登出所有报警主机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å½•所有门禁主机
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void loginAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal accessControlHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(accessControlHost.getId());
                info.setIp(accessControlHost.getIp());
                info.setPort(accessControlHost.getPort());
                info.setUsername(accessControlHost.getUsername());
                info.setPassword(accessControlHost.getPassword());
                login(info);
            }
        } catch (Exception ex) {
            log.error("登录所有门禁主机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å‡ºæ‰€æœ‰é—¨ç¦ä¸»æœº
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void logoutAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal accessControlHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(accessControlHost.getId());
                info.setIp(accessControlHost.getIp());
                info.setPort(accessControlHost.getPort());
                info.setUsername(accessControlHost.getUsername());
                info.setPassword(accessControlHost.getPassword());
                logout(info);
            }
        } catch (Exception ex) {
            log.error("登出所有门禁主机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å½•所有超脑
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void loginAllSuperBrainHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal superBrainHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(superBrainHost.getId());
                info.setIp(superBrainHost.getIp());
                info.setPort(superBrainHost.getPort());
                info.setUsername(superBrainHost.getUsername());
                info.setPassword(superBrainHost.getPassword());
                login(info);
            }
        } catch (Exception ex) {
            log.error("登录所有超脑异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å‡ºæ‰€æœ‰è¶…è„‘
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void logoutAllSuperBrainHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal superBrainHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(superBrainHost.getId());
                info.setIp(superBrainHost.getIp());
                info.setPort(superBrainHost.getPort());
                info.setUsername(superBrainHost.getUsername());
                info.setPassword(superBrainHost.getPassword());
                logout(info);
//                String key=accessControlHost.getIp()+":"+accessControlHost.getPort();
//                GlobalVariable.accessHostMap.remove(key);
            }
        } catch (Exception ex) {
            log.error("登出所有超脑异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å½•所有外联设备
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void loginAllArdEquipExternals(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal ardEquipExternal : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(ardEquipExternal.getId());
                info.setIp(ardEquipExternal.getIp());
                info.setPort(ardEquipExternal.getPort());
                info.setUsername(ardEquipExternal.getUsername());
                info.setPassword(ardEquipExternal.getPassword());
                login(info);
            }
        } catch (Exception ex) {
            log.error("登录所有外联设备异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 ç™»å‡ºæ‰€æœ‰å¤–联设备
     * @创建人 åˆ˜è‹ä¹‰
     * @创建时间 2023/2/3 10:10
     */
    public static void logoutAllArdEquipExternals(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal ardEquipExternal : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(ardEquipExternal.getId());
                info.setIp(ardEquipExternal.getIp());
                info.setPort(ardEquipExternal.getPort());
                info.setUsername(ardEquipExternal.getUsername());
                info.setPassword(ardEquipExternal.getPassword());
                logout(info);
            }
        } catch (Exception ex) {
            log.error("登出所有超脑异常:" + ex.getMessage());
        }
    }
    /**
     * å»ºç«‹å¸ƒé˜²ä¸Šä¼ é€šé“,用于传输数据
     *
     * @param lUserID      å”¯ä¸€æ ‡è¯†ç¬¦
     * @param lAlarmHandle æŠ¥è­¦å¤„理器
     */
    public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) {
        // æ ¹æ®è®¾å¤‡æ³¨å†Œç”Ÿæˆçš„lUserID建立布防的上传通道,即数据的上传通道
        if (lUserID == -1) {
            log.error("请先注册");
            return lUserID;
        }
        if (lAlarmHandle < 0) {
            // è®¾å¤‡å°šæœªå¸ƒé˜²,需要先进行布防
            if (fMSFCallBack_V31 == null) {
                fMSFCallBack_V31 = new FMSGCallBack();
                if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V50(0, fMSFCallBack_V31, null)) {
                    log.error("设置回调函数失败!错误码==========》" + hCNetSDK.NET_DVR_GetLastError());
                }
            }
            // è¿™é‡Œéœ€è¦å¯¹è®¾å¤‡è¿›è¡Œç›¸åº”的参数设置,不设置或设置错误都会导致设备注册失败
            HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM();
            m_strAlarmInfo.dwSize = m_strAlarmInfo.size();
            // æ™ºèƒ½äº¤é€šå¸ƒé˜²ä¼˜å…ˆçº§ï¼š0 - ä¸€ç­‰çº§ï¼ˆé«˜ï¼‰ï¼Œ1 - äºŒç­‰çº§ï¼ˆä¸­ï¼‰ï¼Œ2 - ä¸‰ç­‰çº§ï¼ˆä½Žï¼‰
            m_strAlarmInfo.byLevel = 0;
            // æ™ºèƒ½äº¤é€šæŠ¥è­¦ä¿¡æ¯ä¸Šä¼ ç±»åž‹ï¼š0 - è€æŠ¥è­¦ä¿¡æ¯ï¼ˆNET_DVR_PLATE_RESULT), 1 - æ–°æŠ¥è­¦ä¿¡æ¯(NET_ITS_PLATE_RESULT)
            m_strAlarmInfo.byAlarmInfoType = 1;
            // å¸ƒé˜²ç±»åž‹(仅针对门禁主机、人证设备):0 - å®¢æˆ·ç«¯å¸ƒé˜²(会断网续传),1 - å®žæ—¶å¸ƒé˜²(只上传实时数据)
            m_strAlarmInfo.byDeployType = 1;
            //人脸报警信息类型:1- äººè„¸ä¾¦æµ‹æŠ¥è­¦ 0- äººè„¸æŠ“拍报警
            m_strAlarmInfo.byFaceAlarmDetection = 0;
            m_strAlarmInfo.write();
            // å¸ƒé˜²æˆåŠŸï¼Œè¿”å›žå¸ƒé˜²æˆåŠŸçš„æ•°æ®ä¼ è¾“é€šé“å·
            lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
            if (lAlarmHandle == -1) {
                log.error("设备【" + deviceIpPort + "】布防失败,错误码==========》" + hCNetSDK.NET_DVR_GetLastError());
            } else {
                log.debug("设备【" + deviceIpPort + "】布防成功");
            }
        }
        return lAlarmHandle;
    }
    /**
     * æ³¨é”€
     *
     * @param lUserID è®¾å¤‡æ³¨å†ŒæˆåŠŸå”¯ä¸€æ ‡è¯†ç¬¦
     */
    public static void logout(int lUserID) {
        // æ³¨é”€
        hCNetSDK.NET_DVR_Logout(lUserID);
        // é‡Šæ”¾sdk资源
        hCNetSDK.NET_DVR_Cleanup();
    }
    /**
     * æŠ“图
     *
     * @param cmd æŠ“图命令
     */
    public static String picCutCate(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return "";
        }
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        //图片信息
        HCNetSDK.NET_DVR_JPEGPARA jpeg = new HCNetSDK.NET_DVR_JPEGPARA();
        //设置图片分辨率
        //图片尺寸:0-CIF(352*288/352*240),1-QCIF(176*144/176*120),2-4CIF(704*576/704*480)或D1(720*576/720*486),3-UXGA(1600*1200),
        // 4-SVGA(800*600),5-HD720P(1280*720),6-VGA(640*480),7-XVGA(1280*960),8-HD900P(1600*900),9-HD1080P(1920*1080),10-2560*1920,
        // 11-1600*304,12-2048*1536,13-2448*2048,14-2448*1200,15-2448*800,16-XGA(1024*768),17-SXGA(1280*1024),18-WD1(960*576/960*480),
        // 19-1080I(1920*1080),20-576*576,21-1536*1536,22-1920*1920,23-320*240,24-720*720,25-1024*768,26-1280*1280,27-1600*600,
        // 28-2048*768,29-160*120,75-336*256,78-384*256,79-384*216,80-320*256,82-320*192,83-512*384,127-480*272,128-512*272, 161-288*320,
        // 162-144*176,163-480*640,164-240*320,165-120*160,166-576*720,167-720*1280,168-576*960,180-180*240, 181-360*480, 182-540*720,
        // 183-720*960, 184-960*1280, 185-1080*1440, 500-384*288, 0xff-Auto(使用当前码流分辨率)
        jpeg.wPicSize = 0;
        //设置图片质量:0-最好,1-较好,2-一般
        jpeg.wPicQuality = 0;
        IntByReference a = new IntByReference();
        //设置图片大小
        ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024);
        // æŠ“图到内存,单帧数据捕获并保存成JPEG存放在指定的内存空间中
        // log.debug("-----------这里开始封装 NET_DVR_CaptureJPEGPicture_NEW---------");
        boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a);
        //log.debug("-----------这里开始图片存入内存----------" + is);
        if (is) {
            //  log.debug("hksdk(抓图)-结果状态值(0表示成功):" + hCNetSDK.NET_DVR_GetLastError());
            byte[] array = jpegBuffer.array();
            //存储到minio
            String ContentType = "image/JPEG";
            InputStream input = new ByteArrayInputStream(array);
            String url = "";
            try {
                boolean b = MinioUtil.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, input.available(), ContentType);
                if (b) {
                    url = MinioUtil.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName());
                    // log.debug("上传文件成功!" + url);
                }
            } catch (Exception ex) {
                log.error("上传文件异常:" + ex.getMessage());
            }
            return url;
        } else {
            int code = hCNetSDK.NET_DVR_GetLastError();
            log.debug("抓图失败,请稍后重试" + code);
            return "";
        }
    }
    /**
     * èŽ·å–é˜²åŒºåç§°
     * é€šé“号==防区号 ä»Ž0开始
     * åˆ˜è‹ä¹‰
     * 2023/7/6 10:48
     */
    public static String getDefenseZoneName(CameraCmd cmd) {
        String name = "";
        try {
            String cameraId = cmd.getCameraId();
            Integer channelNum = cmd.getWZoneIndex();//通道号==防区号
            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                return name;
            }
            Integer userId = GlobalVariable.loginMap.get(cameraId);
            HCNetSDK.NET_DVR_ALARMIN_PARAM netDvrAlarminParam = new HCNetSDK.NET_DVR_ALARMIN_PARAM();
            Pointer point = netDvrAlarminParam.getPointer();
            IntByReference ibrBytesReturned = new IntByReference();
            netDvrAlarminParam.write();
            boolean b = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_ALARMIN_PARAM, channelNum, point, netDvrAlarminParam.size(), ibrBytesReturned);
            if (b) {
                netDvrAlarminParam.read();
                name = ByteUtils.bytesToStringZh(netDvrAlarminParam.byName);
            } else {
                int error = hCNetSDK.NET_DVR_GetLastError();
                log.info("获取防区名称失败:" + error);
            }
        } catch (Exception ex) {
            log.error("获取防区名称异常:" + ex.getMessage());
        }
        return name;
    }
}
src/main/java/com/ard/utils/sdk/hiksdk/service/impl/LoginResultCallBack.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java ÐÞ¸Ä
@@ -1,8 +1,8 @@
package com.ard.utils.hiksdk.service.impl;
package com.ard.utils.sdk.hiksdk.service.impl;
import com.ard.utils.hiksdk.common.GlobalVariable;
import com.ard.utils.hiksdk.domain.DeviceInfo;
import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.ard.utils.sdk.hiksdk.common.GlobalVariable;
import com.ard.utils.sdk.hiksdk.domain.DeviceInfo;
import com.ard.utils.sdk.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.sun.jna.Pointer;
import lombok.extern.slf4j.Slf4j;
src/main/java/com/ard/utils/sdk/hiksdk/util/hikSdkUtil/HCNetSDK.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/util/hikSdkUtil/HCNetSDK.java ÐÞ¸Ä
ÎļþÌ«´ó
src/main/java/com/ard/utils/sdk/hiksdk/util/hikSdkUtil/HIKSDKStructure.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/util/hikSdkUtil/HIKSDKStructure.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.hiksdk.util.hikSdkUtil;
package com.ard.utils.sdk.hiksdk.util.hikSdkUtil;
import com.sun.jna.Structure;
src/main/java/com/ard/utils/sdk/hiksdk/util/imageUtil/waterMarkUtil.java
ÎļþÃû´Ó src/main/java/com/ard/utils/hiksdk/util/imageUtil/waterMarkUtil.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.hiksdk.util.imageUtil;
package com.ard.utils.sdk.hiksdk.util.imageUtil;
/**
 * @ClassName WaterMarkUtil
src/main/java/com/ard/utils/util/ByteUtils.java
ÎļþÃû´Ó src/main/java/com/ard/utils/other/ByteUtils.java ÐÞ¸Ä
@@ -1,14 +1,11 @@
package com.ard.utils.other;
package com.ard.utils.util;
import javax.xml.bind.DatatypeConverter;
import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.charset.StandardCharsets;
import java.util.zip.CRC32;
import static oracle.security.pki.util.SignatureAlgorithms.i;
/**
 * @Description: å­—节工具类
src/main/java/com/ard/utils/util/CodeGeneration.java
ÎļþÃû´Ó src/main/java/com/ard/utils/other/CodeGeneration.java ÐÞ¸Ä
@@ -1,11 +1,9 @@
package com.ard.utils.other;
package com.ard.utils.util;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.plugins.pagination.dialects.Oracle12cDialect;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.querys.OracleQuery;
import com.baomidou.mybatisplus.generator.config.querys.PostgreSqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.Collections;
src/main/java/com/ard/utils/util/DateUtils.java
ÎļþÃû´Ó src/main/java/com/ard/utils/other/DateUtils.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.other;
package com.ard.utils.util;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.lang.management.ManagementFactory;
src/main/java/com/ard/utils/util/GisUtils.java
ÎļþÃû´Ó src/main/java/com/ard/utils/other/GisUtils.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.other;
package com.ard.utils.util;
import org.gavaghan.geodesy.Ellipsoid;
import org.gavaghan.geodesy.GeodeticCalculator;
src/main/java/com/ard/utils/util/IdUtils.java
ÎļþÃû´Ó src/main/java/com/ard/utils/uuid/IdUtils.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.uuid;
package com.ard.utils.util;
/**
src/main/java/com/ard/utils/util/LonlatConver.java
ÎļþÃû´Ó src/main/java/com/ard/utils/other/LonlatConver.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.other;
package com.ard.utils.util;
/**
 * ç»çº¬åº¦è½¬æ¢å·¥å…·
 * åˆ˜è‹ä¹‰
src/main/java/com/ard/utils/util/SpringUtils.java
ÎļþÃû´Ó src/main/java/com/ard/utils/spring/SpringUtils.java ÐÞ¸Ä
@@ -1,6 +1,5 @@
package com.ard.utils.spring;
package com.ard.utils.util;
import com.ard.utils.other.StringUtils;
import org.springframework.aop.framework.AopContext;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
src/main/java/com/ard/utils/util/StringUtils.java
ÎļþÃû´Ó src/main/java/com/ard/utils/other/StringUtils.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.other;
package com.ard.utils.util;
import java.util.ArrayList;
import java.util.Collection;
src/main/java/com/ard/utils/util/UUID.java
ÎļþÃû´Ó src/main/java/com/ard/utils/uuid/UUID.java ÐÞ¸Ä
@@ -1,6 +1,4 @@
package com.ard.utils.uuid;
import com.ard.utils.exception.UtilException;
package com.ard.utils.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
src/main/java/com/ard/utils/util/UtilException.java
ÎļþÃû´Ó src/main/java/com/ard/utils/exception/UtilException.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ard.utils.exception;
package com.ard.utils.util;
/**
 * @Description:
src/main/resources/application-dev.yml
@@ -29,34 +29,35 @@
      timeBetweenEvictionRunsMillis: 60000
      #空闲连接最小空闲时间
      minEvictableIdleTimeMillis: 300000
  # netty配置
  netty:
    udp:
      port: 40000
      enabled: true
    tcp:
      enabled: true
  # mqtt配置
  mqtt:
    host: tcp://192.168.2.15:1883
    clientId: client-2272
    username: admin
    password: admin
    timeout: 100
    keepalive: 60
# netty配置
netty:
  udp:
    port: 40000
    enabled: false
  tcp:
    enabled: true
  # ç›—电接口地址
  stealelec:
    enabled: true
    url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil
# mqtt配置
mqtt:
  host: tcp://192.168.2.15:1883
  clientId: client-2272
  username: admin
  password: admin
  timeout: 100
  keepalive: 60
  enabled: true
# ç›—电接口地址
stealelec:
  enabled: false
  url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil
  # ä¸‰åŽ‚æ•°å­—åŒ–åœ°å€
  digitization3:
    enabled: true
  # minio配置
  minio:
    endpoint: http://192.168.2.15:9001
    accessKey: admin
    secretKey: xzx12345
# ä¸‰åœºæ•°å­—化
digitization3:
  enabled: false
# minio配置
minio:
  endpoint: http://192.168.2.15:9001
  accessKey: admin
  secretKey: xzx12345
# mybatis-plus配置
mybatis-plus:
  type-aliases-package: com.ard.alarm.**.domain
@@ -64,11 +65,11 @@
# æ—¥å¿—等级配置
logging:
  level:
    hikSdk: debug
    mqtt: info
    netty: info
    hikSdk: info
    mqtt: debug
    netty: debug
    external: info
    camera: debug
    camera: info
    tube: info
    digitization3: info
    stealAlarm: info
    stealAlarm: info
src/main/resources/application-prod.yml
@@ -1,4 +1,7 @@
#生产环境
# å¼€å‘环境
server:
  port: 8088
# spring配置
spring:
  servlet:
    multipart:
@@ -6,15 +9,14 @@
      max-file-size: 30MB
      max-request-size: 30MB
  datasource:
      #  ä½¿ç”¨druid数据库连接池
    druid:
        #开启druid监控web
      #开启druid监控web
      stat-view-servlet:
        enabled: true
      driver-class-name: org.postgresql.Driver
      url: jdbc:postgresql://112.98.126.2:35432/ry-vue?stringtype=unspecified
      url: jdbc:postgresql://192.168.2.15:5432/ry-vue
      username: postgres
      password: Yykj.2017
      password: postgres
      #最大连接数
      maxActive: 30
      #最小连接数
@@ -27,46 +29,47 @@
      timeBetweenEvictionRunsMillis: 60000
      #空闲连接最小空闲时间
      minEvictableIdleTimeMillis: 300000
  # netty配置
  netty:
    udp:
      port: 40000
      enabled: true
    tcp:
      enabled: true
  # minio配置
  minio:
    endpoint: http://127.0.0.1:9001
    accessKey: admin
    secretKey: xzx12345
  # mqtt配置
  mqtt:
    host: tcp://192.168.1.15:1883
    clientId: cc3
    username: admin
    password: xzx12345
    topic: tube
    timeout: 100
    keepalive: 60
# netty配置
netty:
  udp:
    port: 40000
    enabled: true
  # ç›—电接口地址
  stealelec:
    enabled: false
    url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil
  tcp:
    enabled: true
# mqtt配置
mqtt:
  host: tcp://192.168.2.15:1883
  clientId: client-2272
  username: admin
  password: admin
  timeout: 100
  keepalive: 60
  enabled: true
# ç›—电接口地址
stealelec:
  enabled: false
  url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil
  # ä¸‰åŽ‚æ•°å­—åŒ–åœ°å€
  digitization3:
    enabled: false
# ä¸‰åœºæ•°å­—化
digitization3:
  enabled: false
# minio配置
minio:
  endpoint: http://192.168.2.15:9001
  accessKey: admin
  secretKey: xzx12345
# mybatis-plus配置
mybatis-plus:
  type-aliases-package: com.ard.alarm.**.domain
  mapper-locations: classpath:/mapper/*.xml
server:
  port: 8088
# æ—¥å¿—等级配置
logging:
  level:
    hikSdk: debug
    hikSdk: info
    mqtt: debug
    netty: info
    external: info
    camera: info
    tube: info
    tube: info
    digitization3: info
    stealAlarm: info