src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java
@@ -4,8 +4,13 @@ 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 lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; @@ -19,17 +24,25 @@ */ @Service @Slf4j(topic = "camera") public class ArdCamerasServiceImpl implements IArdCamerasService { @Order(4) public class ArdCamerasServiceImpl implements IArdCamerasService, ApplicationRunner { @Resource private ArdCamerasMapper ardCamerasMapper; @Resource private ArdEquipExternalMapper ardEquipExternalMapper; @Override public void run(ApplicationArguments args) throws Exception { @PostConstruct public void init() { List<ArdCameras> ardCameras = ardCamerasMapper.selectArdCamerasList(new ArdCameras()); HikClientUtil.loadHCNetSDKLib(); HikClientUtil.loginAll(ardCameras); //获取全部海康光电 List<ArdCameras> ardCameras = ardCamerasMapper.selectArdCamerasList(new ArdCameras()); HikClientUtil.loginAllCamera(ardCameras); //获取全部海康报警主机 ArdEquipExternal ardEquipExternal= new ArdEquipExternal(); ardEquipExternal.setFactory("1"); ardEquipExternal.setType("1"); List<ArdEquipExternal> ardEquipExternals = ardEquipExternalMapper.selectArdEquipExternalList(ardEquipExternal); HikClientUtil.loginAllAlarmHost(ardEquipExternals); } /** * 查询相机设备 @@ -53,4 +66,5 @@ return ardCamerasMapper.selectArdCamerasList(ardCameras); } } src/main/java/com/ard/alarm/external/domain/ArdEquipExternal.java
New file @@ -0,0 +1,55 @@ package com.ard.alarm.external.domain; import lombok.Data; /** * 外联设备管理对象 ard_equip_external * * @author ard * @date 2023-07-07 */ @Data public class ArdEquipExternal { private static final long serialVersionUID = 1L; /** id */ private String id; /** 名称 */ private String name; /** 设备类型 */ private String type; /** 厂商 */ private String factory; /** ip */ private String ip; /** 端口 */ private Integer port; /** 用户名 */ private String username; /** 密码 */ private String password; /** 经度 */ private Double longitude; /** 纬度 */ private Double latitude; /** 安装高度 */ private Double altitude; /** 部门id */ private Integer deptId; /** 用户id */ private String userId; } src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java
New file @@ -0,0 +1,33 @@ package com.ard.alarm.external.mapper; import java.util.List; import com.ard.alarm.external.domain.ArdEquipExternal; import org.apache.ibatis.annotations.Mapper; /** * externalMapper接口 * * @author zj * @date 2023-03-13 */ @Mapper public interface ArdEquipExternalMapper { /** * 查询external * * @param id external主键 * @return external */ public ArdEquipExternal selectArdEquipExternalById(String id); /** * 查询external列表 * * @param ardEquipExternal external * @return external集合 */ public List<ArdEquipExternal> selectArdEquipExternalList(ArdEquipExternal ardEquipExternal); } src/main/java/com/ard/alarm/external/service/IArdEquipExternalService.java
New file @@ -0,0 +1,31 @@ package com.ard.alarm.external.service; import java.util.List; import com.ard.alarm.external.domain.ArdEquipExternal; /** * externalService接口 * * @author zj * @date 2023-03-13 */ public interface IArdEquipExternalService { /** * 查询external * * @param id external主键 * @return external */ public ArdEquipExternal selectArdEquipExternalById(String id); /** * 查询external列表 * * @param ardEquipExternal external * @return external集合 */ public List<ArdEquipExternal> selectArdEquipExternalList(ArdEquipExternal ardEquipExternal); } src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java
New file @@ -0,0 +1,48 @@ package com.ard.alarm.external.service.impl; import java.util.List; import com.ard.alarm.external.domain.ArdEquipExternal; import com.ard.alarm.external.mapper.ArdEquipExternalMapper; import com.ard.alarm.external.service.IArdEquipExternalService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * externalService业务层处理 * * @author zj * @date 2023-03-13 */ @Service public class ArdEquipExternalServiceImpl implements IArdEquipExternalService { @Autowired private ArdEquipExternalMapper ardEquipExternalMapper; /** * 查询external * * @param id external主键 * @return external */ @Override public ArdEquipExternal selectArdEquipExternalById(String id) { return ardEquipExternalMapper.selectArdEquipExternalById(id); } /** * 查询external列表 * * @param ardEquipExternal external * @return external */ @Override public List<ArdEquipExternal> selectArdEquipExternalList(ArdEquipExternal ardEquipExternal) { return ardEquipExternalMapper.selectArdEquipExternalList(ardEquipExternal); } } src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java
@@ -7,6 +7,9 @@ import com.ard.utils.udp.NettyUdpServer; 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.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -24,7 +27,8 @@ **/ @Service @Slf4j(topic = "tube") public class TubeAlarmService { @Order(3) public class TubeAlarmService implements ApplicationRunner { @Resource NettyUdpServer nettyUdpServer; @@ -32,15 +36,15 @@ private Integer udpPort; @Value("${spring.netty.udp.enabled}") private String UdpServerEnable; @PostConstruct public void init() { @Override public void run(ApplicationArguments args) throws Exception { if (UdpServerEnable.equals("false")) { return; } nettyUdpServer.init(udpPort); log.info("管线泄露UDP服务已启动"); } @Async("alarm") public void alarmHandler(String message) { @@ -79,4 +83,6 @@ log.error("tube报警数据推送异常:" + ex.getMessage()); } } } src/main/java/com/ard/utils/hiksdk/common/GlobalVariable.java
@@ -1,6 +1,7 @@ package com.ard.utils.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; @@ -16,6 +17,8 @@ public class GlobalVariable { //保存相机信息key:ip value:camera对象 public static Map<String, ArdCameras> cameraMap = new HashMap<>(); //保存相机信息key:ip value:报警主机对象 public static Map<String, ArdEquipExternal> alarmHostMap = new HashMap<>(); //保存相机登录信息key:cameraId value:loginId public static Map<String, Integer> loginMap = new HashMap<>(); } src/main/java/com/ard/utils/hiksdk/domain/DeviceInfo.java
New file @@ -0,0 +1,41 @@ package com.ard.utils.hiksdk.domain; import lombok.Data; /** * @Description: * @ClassName: DeviceInfo * @Author: 刘苏义 * @Date: 2023年07月07日9:45 * @Version: 1.0 **/ @Data public class DeviceInfo { /** * 设备ID */ private String deviceId; /** * 设备类型 */ private String deviceType; /** * ip */ private String ip; /** * 端口 */ private Integer port; /** * 用户名 */ private String username; /** * 密码 */ private String password; } src/main/java/com/ard/utils/hiksdk/domain/ExternalAlarmEventInfo.java
@@ -42,29 +42,8 @@ */ Integer subSysNo; /** * 关联相机id * 关联报警主机id */ String cameraId; /** * 关联相机名称 */ String cameraName; /** * 关联相机ip */ String cameraIp; /** * 关联相机经度 */ Double longitude; /** * 关联相机纬度 */ Double latitude; /** * 关联相机类型 */ String cameraType; String alarmHostId; } src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java
@@ -3,7 +3,11 @@ import com.alibaba.fastjson2.JSON; import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.domain.CameraCmd; import com.ard.alarm.camera.service.IArdCamerasService; import com.ard.alarm.camera.service.impl.ArdCamerasServiceImpl; import com.ard.alarm.external.domain.ArdEquipExternal; import com.ard.alarm.external.service.IArdEquipExternalService; import com.ard.alarm.external.service.impl.ArdEquipExternalServiceImpl; import com.ard.config.MinioClientSingleton; import com.ard.utils.ByteUtils; import com.ard.utils.hiksdk.common.GlobalVariable; @@ -45,13 +49,10 @@ */ @Override public boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { ArdCamerasServiceImpl ardCamerasService = SpringTool.getApplicationContext().getBean(ArdCamerasServiceImpl.class); String sDeviceIP = ByteUtils.bytesToStringZh(pAlarmer.sDeviceIP); Integer wLinkPort = Integer.valueOf(pAlarmer.wLinkPort); ArdCameras ardCameras = new ArdCameras(); ardCameras.setIp(sDeviceIP); ardCameras.setPort(wLinkPort); ArdCameras ardcamere = ardCamerasService.selectArdCamerasList(ardCameras).get(0); String sTime;//事件时间 String url;//事件图片 alarmEventInfo info;//事件信息 @@ -60,6 +61,11 @@ switch (lCommand) { case HCNetSDK.COMM_ALARM_RULE: //region 行为分析信息 ArdCameras ardCameras = new ArdCameras(); ardCameras.setIp(sDeviceIP); ardCameras.setPort(wLinkPort); IArdCamerasService ardCamerasService = SpringTool.getApplicationContext().getBean(IArdCamerasService.class); ArdCameras ardcamere = ardCamerasService.selectArdCamerasList(ardCameras).get(0); log.info("报警事件类型:lCommand:" + Integer.toHexString(lCommand)); HCNetSDK.NET_VCA_RULE_ALARM strVcaAlarm = new HCNetSDK.NET_VCA_RULE_ALARM(); strVcaAlarm.write(); @@ -146,6 +152,13 @@ break; case HCNetSDK.COMM_ALARMHOST_CID_ALARM: log.info("报警主机 CID 报告报警上传"); ArdEquipExternal ardEquipExternal = new ArdEquipExternal(); ardEquipExternal.setIp(sDeviceIP); ardEquipExternal.setPort(wLinkPort); IArdEquipExternalService ardEquipExternalService = SpringTool.getApplicationContext().getBean(IArdEquipExternalService.class); ardEquipExternal = ardEquipExternalService.selectArdEquipExternalList(ardEquipExternal).get(0); HCNetSDK.NET_DVR_CID_ALARM netDvrCidAlarm = new HCNetSDK.NET_DVR_CID_ALARM(); netDvrCidAlarm.write(); Pointer pCIDInfo = netDvrCidAlarm.getPointer(); @@ -202,7 +215,7 @@ String wDefenceName = ""; if (!bySubSysNo.equals(-1)) { CameraCmd cmd = new CameraCmd(); cmd.setCameraId(ardcamere.getId()); cmd.setCameraId(ardEquipExternal.getId()); cmd.setWZoneIndex(wDefenceNo); wDefenceName = HikClientUtil.getDefenseZoneName(cmd); } @@ -212,15 +225,12 @@ ExternalAlarmEventInfo externalAlarmEventInfo = new ExternalAlarmEventInfo(); externalAlarmEventInfo.setAlarmId(sCIDCode); externalAlarmEventInfo.setAlarmName(sCIDDescribe); externalAlarmEventInfo.setDefenseId((wDefenceNo + 1) ); externalAlarmEventInfo.setDefenseId((wDefenceNo + 1)); externalAlarmEventInfo.setDefenseName(wDefenceName); externalAlarmEventInfo.setSubSysNo(bySubSysNo); externalAlarmEventInfo.setAlarmType(byReportType); externalAlarmEventInfo.setAlarmTime(struTriggerTime); externalAlarmEventInfo.setCameraId(ardcamere.getId()); externalAlarmEventInfo.setCameraName(ardcamere.getName()); externalAlarmEventInfo.setCameraIp(ardcamere.getIp()); externalAlarmEventInfo.setCameraType(ardcamere.getGdtype()); externalAlarmEventInfo.setAlarmHostId(ardEquipExternal.getId()); publishMqtt(externalAlarmEventInfo); break; default: @@ -291,14 +301,14 @@ "【IP】" + info.getCameraIp() + "【通道】" + info.getCameraChannel() + "【型号】" + info.getCameraType() + "【图片】" + info.getPicUrl() + "【坐标】" + info.getLongitude() + "," + info.getLatitude()); } /** * 打印外联报警日志 */ private void printLog(ExternalAlarmEventInfo info) { log.info("【报警ID】" + info.getAlarmId() + "【报警名称】" + info.getAlarmName() + "【防区ID】" + info.getDefenseId() + "【防区名称】" + info.getDefenseName() + "【类型】" + info.getAlarmType() + "【时间】" + info.getAlarmTime() + "【相机ID】" + info.getCameraId() + "【相机】" + info.getCameraName() + "【IP】" + info.getCameraIp() + "【型号】" + info.getCameraType()); "【时间】" + info.getAlarmTime() + "【报警主机ID】" + info.getAlarmHostId()); } /** @@ -308,13 +318,15 @@ // printLog(info); MqttConsumer.publish(2, false, "camera", JSON.toJSONString(info)); } /** * 外联报警推送mqtt */ private void publishMqtt(ExternalAlarmEventInfo info) { printLog(info); MqttConsumer.publish(2, false, "camera", JSON.toJSONString(info)); MqttConsumer.publish(2, false, "external", JSON.toJSONString(info)); } /** * 时间格式化 */ src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
@@ -2,8 +2,10 @@ 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.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.hiksdk.util.minio.MinioUtils; import com.sun.jna.Native; @@ -11,12 +13,13 @@ import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import java.io.*; import java.nio.ByteBuffer; import java.util.*; import static com.ard.utils.hiksdk.common.GlobalVariable.cameraMap; /** @@ -126,7 +129,7 @@ * @创建时间 2023/1/17 16:12 * @修改人和其它信息 */ public static void login(ArdCameras camera) { public static void login(DeviceInfo deviceInfo) { // 初始化 if (!hCNetSDK.NET_DVR_Init()) { log.error("SDK初始化失败"); @@ -138,10 +141,10 @@ } 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(); 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); @@ -162,7 +165,7 @@ //是否异步登录:0- 否,1- 是 windowsSDK里是true和false m_strLoginInfo.bUseAsynLogin = true; //异步登录回调 m_strLoginInfo.cbLoginResult = new LoginResultCallBack(camera); m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo); m_strLoginInfo.write(); int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); if (i < 0) { @@ -170,7 +173,6 @@ log.info("登录异常:" + errorCode); } } /** * @描述 登录所有相机 * @参数 [] @@ -179,18 +181,48 @@ * @创建时间 2023/2/3 10:10 * @修改人和其它信息 */ public static void loginAll(List<ArdCameras> ardCameras) { public static void loginAllCamera(List<ArdCameras> ardCameras) { try { log.debug("加载lib完成!"); for (ArdCameras camera : ardCameras) { Thread.sleep(100); login(camera); 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 ip = camera.getIp(); cameraMap.put(ip, camera); GlobalVariable.cameraMap.put(ip, camera); } } catch (Exception ex) { log.error("初始化登录相机异常:" + ex.getMessage()); } } /** * @描述 登录所有报警主机 * @参数 [] * @返回值 void * @创建人 刘苏义 * @创建时间 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 ip = alarmHost.getIp(); GlobalVariable.alarmHostMap.put(ip, alarmHost); } } catch (Exception ex) { log.error("初始化报警主机异常:" + ex.getMessage()); } } @@ -269,7 +301,7 @@ logout(lUserID); return lAlarmHandle; } else { log.info("相机布防成功"); log.info("设备布防成功"); return lAlarmHandle; } } @@ -379,4 +411,6 @@ } return name; } } src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java
@@ -3,6 +3,7 @@ import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.domain.CameraCmd; import com.ard.utils.hiksdk.common.GlobalVariable; import com.ard.utils.hiksdk.domain.DeviceInfo; import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK; import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; @@ -17,27 +18,20 @@ @Slf4j(topic = "hikSdk") public class LoginResultCallBack implements HCNetSDK.FLoginResultCallBack { private ArdCameras camera; public LoginResultCallBack(ArdCameras camera) { this.camera = camera; private DeviceInfo deviceInfo; public LoginResultCallBack(DeviceInfo deviceInfo) { this.deviceInfo=deviceInfo; } @Override public int invoke(int lUserID, int dwResult, HCNetSDK.NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser) { if (GlobalVariable.loginMap.containsKey(camera.getId())) { GlobalVariable.loginMap.remove(camera.getId()); } if (dwResult == 1) { GlobalVariable.loginMap.put(camera.getId(), lUserID); log.info(camera.getIp() + ":" + camera.getPort() + "登录成功"); camera.setLoginId(lUserID); camera.setChannel((int) lpDeviceinfo.byChanNum); GlobalVariable.loginMap.put(deviceInfo.getDeviceId(), lUserID); log.info(deviceInfo.getIp() + ":" + deviceInfo.getPort() + "登录成功"); // 设置报警回调函数,建立报警上传通道(启用布防) HikClientUtil.setupAlarmChan(lUserID, -1); } else { log.info(camera.getIp() + ":" + camera.getPort() + "登录失败"); camera.setChannel(0); camera.setLoginId(-1); log.info(deviceInfo.getIp() + ":" + deviceInfo.getPort() + "登录失败"); } return 1; } src/main/java/com/ard/utils/mqtt/MqttConsumer.java
@@ -1,12 +1,17 @@ package com.ard.utils.mqtt; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.expression.spel.ast.NullLiteral; import org.springframework.stereotype.Component; import java.io.UnsupportedEncodingException; /** * @Description: mqtt消费客户端 * @ClassName: MqttConsumer @@ -16,6 +21,7 @@ **/ @Component @Slf4j(topic = "mqtt") @Order(1) public class MqttConsumer implements ApplicationRunner { private static MqttClient client; @@ -23,8 +29,7 @@ @Override public void run(ApplicationArguments args) { log.info("初始化并启动mqtt......"); if(PropertiesUtil.MQTT_ENABLED) { if (PropertiesUtil.MQTT_ENABLED) { this.connect(); } } @@ -49,7 +54,7 @@ } /** * 创建客户端 --- 1 --- * 创建客户端 --- 1 --- */ public void getClient() { try { @@ -63,7 +68,7 @@ } /** * 生成配置对象,用户名,密码等 --- 2 --- * 生成配置对象,用户名,密码等 --- 2 --- */ public MqttConnectOptions getOptions() { MqttConnectOptions options = new MqttConnectOptions(); @@ -81,7 +86,7 @@ } /** * qos --- 3 --- * qos --- 3 --- */ public int[] getQos(int length) { @@ -101,7 +106,7 @@ } /** * 装载各种实例和订阅主题 --- 4 --- * 装载各种实例和订阅主题 --- 4 --- */ public void create(MqttConnectOptions options, String[] topic, int[] qos) { try { @@ -130,8 +135,8 @@ /** * 发布,非持久化 * * qos根据文档设置为1 * <p> * qos根据文档设置为1 * * @param topic * @param msg @@ -144,30 +149,32 @@ * 发布 */ public static void publish(int qos, boolean retained, String topic, String pushMessage) { log.info("【主题】:" + topic + "【qos】:" + qos + "【pushMessage】:" + pushMessage); MqttMessage message = new MqttMessage(); message.setQos(qos); message.setRetained(retained); try { message.setPayload(pushMessage.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { log.error("mqtt编码异常:" + e.getMessage()); } MqttTopic mTopic = client.getTopic(topic); if (null == mTopic) { log.error("topic:" + topic + " 不存在"); } MqttDeliveryToken token; try { token = mTopic.publish(message); token.waitForCompletion(); if (token.isComplete()) { log.info("消息发送成功"); if (client != null) { log.info("【主题】:" + topic + "【qos】:" + qos + "【pushMessage】:" + pushMessage); MqttMessage message = new MqttMessage(); message.setQos(qos); message.setRetained(retained); try { message.setPayload(pushMessage.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { log.error("mqtt编码异常:" + e.getMessage()); } } catch (MqttPersistenceException e) { log.error("mqtt持久异常:" + e.getMessage()); } catch (MqttException e) { log.error("mqtt异常:" + e.getMessage()); MqttTopic mTopic = client.getTopic(topic); if (null == mTopic) { log.error("topic:" + topic + " 不存在"); } MqttDeliveryToken token; try { token = mTopic.publish(message); token.waitForCompletion(); if (token.isComplete()) { log.info("消息发送成功"); } } catch (MqttPersistenceException e) { log.error("mqtt持久异常:" + e.getMessage()); } catch (MqttException e) { log.error("mqtt异常:" + e.getMessage()); } } } } src/main/java/com/ard/utils/tcp/ClientInitialize.java
@@ -17,6 +17,9 @@ 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; @@ -34,7 +37,8 @@ */ @Component @Slf4j(topic = "netty") public class ClientInitialize { @Order(2) public class ClientInitialize implements ApplicationRunner { @Resource IArdEquipRadarService ardEquipRadarService; @@ -119,8 +123,8 @@ /** * 初始化方法 */ @PostConstruct public void initialize() { @Override public void run(ApplicationArguments args) throws Exception { if (!tcpClientEnable) { return; } src/main/resources/mapper/ArdEquipExternalMapper.xml
New file @@ -0,0 +1,55 @@ <?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.ard.alarm.external.mapper.ArdEquipExternalMapper"> <resultMap type="ArdEquipExternal" id="ArdEquipExternalResult"> <result property="id" column="id"/> <result property="name" column="name"/> <result property="type" column="type"/> <result property="factory" column="factory"/> <result property="ip" column="ip"/> <result property="port" column="port"/> <result property="username" column="username"/> <result property="password" column="password"/> <result property="longitude" column="longitude"/> <result property="latitude" column="latitude"/> <result property="altitude" column="altitude"/> <result property="deptId" column="dept_id"/> <result property="userId" column="user_id"/> </resultMap> <sql id="selectArdEquipExternalVo"> select c.id, c.name, c.type, c.factory, c.ip, c.port, c.username, c.password, c.longitude, c.latitude, c.altitude from ard_equip_external c </sql> <select id="selectArdEquipExternalList" parameterType="ArdEquipExternal" resultMap="ArdEquipExternalResult"> <include refid="selectArdEquipExternalVo"/> <where> <if test="name != null and name != ''">and c.name like '%'||#{name}||'%'</if> <if test="type != null and type != ''">and c.type = #{type}</if> <if test="factory != null and factory != ''">and c.factory = #{factory}</if> <if test="deptId != null ">and (c.dept_id = #{deptId} OR c.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE cast(#{deptId} as varchar) = any(string_to_array(ancestors,',')) )) </if> <if test="userId != null and userId != ''">and c.user_id = #{userId}</if> </where> </select> <select id="selectArdEquipExternalById" parameterType="String" resultMap="ArdEquipExternalResult"> <include refid="selectArdEquipExternalVo"/> where id = #{id} </select> </mapper>