diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/tcp/ElectricityVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/tcp/ElectricityVo.java
new file mode 100644
index 0000000..b27acab
--- /dev/null
+++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/tcp/ElectricityVo.java
@@ -0,0 +1,29 @@
+package com.bonus.common.entity.tcp;
+
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 静电感应
+ */
+@Data
+public class ElectricityVo {
+
+ private String id;
+
+ private String devCode;
+
+ private String devName;
+
+ private String warnContent;
+
+
+ private String warnTime;
+
+
+ private String userId;
+
+ private String proId;
+
+ private String warnType;
+}
diff --git a/bonus-modules/bonus-tcp/libs/gps-push-client.jar b/bonus-modules/bonus-tcp/libs/gps-push-client.jar
new file mode 100644
index 0000000..d0a48d2
Binary files /dev/null and b/bonus-modules/bonus-tcp/libs/gps-push-client.jar differ
diff --git a/bonus-modules/bonus-tcp/pom.xml b/bonus-modules/bonus-tcp/pom.xml
index e39a243..31cdac4 100644
--- a/bonus-modules/bonus-tcp/pom.xml
+++ b/bonus-modules/bonus-tcp/pom.xml
@@ -100,17 +100,33 @@
24.6.0
compile
-
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+
+ gps-push-client
+ gps-push-client
+ 1.0
+ system
+ ${project.basedir}/libs/gps-push-client.jar
+
+
${project.artifactId}
org.springframework.boot
spring-boot-maven-plugin
+
+ true
+
diff --git a/bonus-modules/bonus-tcp/src/main/java/com/bonus/tcp/BonusTcpApplication.java b/bonus-modules/bonus-tcp/src/main/java/com/bonus/tcp/BonusTcpApplication.java
index 1410eab..b881ba2 100644
--- a/bonus-modules/bonus-tcp/src/main/java/com/bonus/tcp/BonusTcpApplication.java
+++ b/bonus-modules/bonus-tcp/src/main/java/com/bonus/tcp/BonusTcpApplication.java
@@ -4,6 +4,8 @@ import com.bonus.common.security.annotation.EnableCustomConfig;
import com.bonus.common.security.annotation.EnableRyFeignClients;
import com.bonus.common.swagger.annotation.EnableCustomSwagger2;
import com.bonus.tcp.server.server.BootNettyServer;
+import com.bonus.tcp.warn.DevWarnImpl;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
@@ -16,8 +18,25 @@ import org.springframework.scheduling.annotation.Async;
@EnableRyFeignClients
@SpringBootApplication(exclude = MongoAutoConfiguration.class)
public class BonusTcpApplication implements CommandLineRunner {//实现CommandLineRunner
+
+
@Value("${tcp.server.port}")
private int port;
+
+ @Value("${dev.video.ip}")
+ private String videIp;
+
+ @Value("${dev.video.port}")
+ private int videPort;
+
+ @Value("${dev.video.username}")
+ private String username;
+
+ @Value("${dev.video.pwd}")
+ private String pwd;
+
+ @Value("${dev.video.msgId}")
+ private String msgId;
public static void main(String[] args) {
SpringApplication.run(BonusTcpApplication.class, args);
System.err.println("(♥◠‿◠)ノ゙ TCP模块启动成功 ლ(´ڡ`ლ)゙");
@@ -28,6 +47,27 @@ public class BonusTcpApplication implements CommandLineRunner {//实现CommandLi
@Async
@Override
public void run(String... args) throws Exception {
+ clientDevWarn();
new BootNettyServer().bind(port);
}
+
+ /**
+ * 创建链接数据推送接口
+ * @throws Exception
+ */
+ public void clientDevWarn() throws Exception {
+ DevWarnImpl client = new DevWarnImpl();
+ client.setLog(false);
+ client.setHost(videIp);
+ client.setPort(videPort);
+ client.setUserName(username);
+ client.setPwd(pwd);
+ client.setSubMsgIds(msgId);
+ client.setDesc("测试客户端");
+ client.start();
+
+ }
+
+
+
}
\ No newline at end of file
diff --git a/bonus-modules/bonus-tcp/src/main/java/com/bonus/tcp/smartIdentify/service/impl/TcpDataService.java b/bonus-modules/bonus-tcp/src/main/java/com/bonus/tcp/smartIdentify/service/impl/TcpDataService.java
index 5bb27aa..b56b82a 100644
--- a/bonus-modules/bonus-tcp/src/main/java/com/bonus/tcp/smartIdentify/service/impl/TcpDataService.java
+++ b/bonus-modules/bonus-tcp/src/main/java/com/bonus/tcp/smartIdentify/service/impl/TcpDataService.java
@@ -17,6 +17,7 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.List;
+import java.util.Map;
@Service
@Slf4j
@@ -134,4 +135,16 @@ public class TcpDataService {
}
return "";
}
+
+ /**
+ * 告警数据入库
+ * @param jsonString
+ */
+ public void insertDevWarnInfo(Map jsonString) {
+ try{
+
+ }catch (Exception e){
+ log.error(e.toString(),e);
+ }
+ }
}
diff --git a/bonus-modules/bonus-tcp/src/main/java/com/bonus/tcp/warn/DevWarnImpl.java b/bonus-modules/bonus-tcp/src/main/java/com/bonus/tcp/warn/DevWarnImpl.java
new file mode 100644
index 0000000..af144d3
--- /dev/null
+++ b/bonus-modules/bonus-tcp/src/main/java/com/bonus/tcp/warn/DevWarnImpl.java
@@ -0,0 +1,116 @@
+package com.bonus.tcp.warn;
+
+import com.alibaba.fastjson.JSON;
+import com.bonus.common.core.utils.SpringUtils;
+import com.bonus.tcp.smartIdentify.service.impl.TcpDataService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+import com.gps31.push.netty.PushClient;
+import com.gps31.push.netty.PushMsg;
+import com.gps31.push.netty.client.TcpClient;
+import com.gps31.push.util.MapUtil;
+import org.springframework.stereotype.Component;
+
+/**
+ * 吊装监控告警推送
+ * @author 黑子
+ */
+@Slf4j
+public class DevWarnImpl extends PushClient{
+
+ public TcpDataService service = SpringUtils.getBean(TcpDataService.class);
+ private ThreadPoolExecutor pool = new ThreadPoolExecutor(10,10,30, TimeUnit.SECONDS,new LinkedBlockingQueue(),new ThreadPoolExecutor.AbortPolicy());
+ @Override
+ public void messageReceived(TcpClient tcpClient, PushMsg pushMsg)
+ throws Exception {
+ if("8001".equals(pushMsg.getCmd())) {//登录应答
+ String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1");
+ if("0".equals(rspResult)) {//登录成功,定阅动态消息
+ Map map = new HashMap();
+ map.put("seq", "1");
+ map.put("action", "add");
+ map.put("msgIds", JSON.toJSONString(getSubCmdSet()));
+ PushMsg subMsg = getInstance("0003",map);
+ sendMsg(subMsg);
+ }
+ }else if("8002".equals(pushMsg.getCmd())){//心跳应答
+ }else if("8003".equals(pushMsg.getCmd())){//订阅动态消息应答
+ String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1");
+ log.error(String.format(" 订阅应答:%s", "0".equals(rspResult)?"成功":"失败"));
+ }else if("0200".equals(pushMsg.getCmd())) {//定位信息
+ Map gpsMap = pushMsg.getJsonMap();
+ String carName = MapUtil.getStrVal(gpsMap, "carName","");//获取车牌号
+ log.error(String.format(" ---->收到定位数据:%s",JSON.toJSONString(gpsMap)));
+ /**
+ * 请加入三方集成方的业务逻辑
+ * 注意:下面的代码不要出现阻塞操作(比如数据库操作),否则会出现推送的数据延迟情况;
+ */
+
+ //有阻塞的业务,请使用线程池处理接收到的每个消息。
+ pool.execute(new Runnable() {
+ @Override
+ public void run() {
+
+ }
+ });
+ }else if("0300".equals(pushMsg.getCmd())) {//报警消息
+ Map alarmMap = pushMsg.getJsonMap();
+ String carName = MapUtil.getStrVal(alarmMap, "carName","");//获取车牌号
+ log.error(String.format(" ---->收到报警数据:%s",JSON.toJSONString(alarmMap)));
+ /**
+ * 请加入三方集成方的业务逻辑
+ * 注意:下面的代码不要出现阻塞操作(比如数据库操作),否则会出现推送的数据延迟情况;
+ */
+ //有阻塞的业务,请使用线程池处理接收到的每个消息。
+ pool.execute(new Runnable() {
+ @Override
+ public void run() {
+ service.insertDevWarnInfo( alarmMap);
+ }
+ });
+ }else if("0401".equals(pushMsg.getCmd())) {//透传消息
+ Map dataMap = pushMsg.getJsonMap();
+ String carName = MapUtil.getStrVal(dataMap, "carName","");//获取车牌号
+ log.error(String.format(" ---->收到透传数据:%s",JSON.toJSONString(dataMap)));
+ /**
+ * 请加入三方集成方的业务逻辑
+ */
+ }
+ }
+ public static void main(String[] args) {
+ try {
+ //下面是指向的是我们演示服务器,可以直接执行,用于验证数据推送。正式使用时,请修改相应的参数:比如IP,帐号,密码
+ DevWarnImpl client = new DevWarnImpl();
+ client.setLog(true);//是否打印明文的交互信息
+// client.setLogBytes(true);//是否打印网络字节流
+ if(args == null || args.length>=5) {
+ client.setHost(args[0]);//服务器IP
+ client.setPort(Integer.parseInt(args[1]));//服务器端口
+ client.setUserName(args[2]);//系统用户名
+ client.setPwd(args[3]);//系统用户密码
+ client.setSubMsgIds(args[4]);//订阅的动态消息,当前示例是订阅 定位消息(0x0200)
+ }else {
+ client.setHost("115.233.219.190");//服务器IP
+ client.setPort(10100);//服务器端口
+ client.setUserName("ys_admin");//系统用户名
+ client.setPwd("123456");//系统用户密码
+ client.setSubMsgIds("0200|0300");//订阅的动态消息,多个动态消息使用|辟分,当前示例是订阅 定位消息(0x0200)和报警消息(0x0300)
+ }
+ client.setDesc("测试客户端");//客户端的描述,
+ client.start();
+ while(true) {
+ // Thread.sleep(1000);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
+}