|
@@ -5,9 +5,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.huimv.env.input.c.MyNativeClass;
|
|
|
import com.huimv.env.input.config.WeChatMessage;
|
|
|
+import com.huimv.env.input.config.WeChatMessage2;
|
|
|
import com.huimv.env.input.entity.*;
|
|
|
+import com.huimv.env.input.entity.vo.AlarmInfoVO;
|
|
|
+import com.huimv.env.input.entity.vo.DataInfoVO;
|
|
|
import com.huimv.env.input.mapper.TerminalPortMapper;
|
|
|
import com.huimv.env.input.service.*;
|
|
|
+import com.huimv.env.input.utils.ElePostUtils;
|
|
|
import com.huimv.env.input.ws.WebsocketWorkerUtil;
|
|
|
import io.netty.buffer.ByteBuf;
|
|
|
import io.netty.buffer.Unpooled;
|
|
@@ -25,16 +29,16 @@ import java.io.*;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.text.ParseException;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.IntStream;
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
+import static com.huimv.env.input.timer.ElePostTimer.ALARM_URL;
|
|
|
+import static com.huimv.env.input.timer.ElePostTimer.BASE_URL;
|
|
|
+
|
|
|
/**
|
|
|
* @Project : huimv.shiwan
|
|
|
* @Package : com.huimv.biosafety.uface.controller
|
|
@@ -72,6 +76,10 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
|
|
|
@Autowired
|
|
|
private IHeartInfoService heartInfoService;
|
|
|
+ @Autowired
|
|
|
+ private IGatewayService gatewayService;
|
|
|
+
|
|
|
+
|
|
|
|
|
|
@Autowired
|
|
|
private ISysAccountMultilevelService sysAccountMultilevelService;
|
|
@@ -121,7 +129,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
* @Date : 2022/3/28
|
|
|
* @Time : 17:36
|
|
|
*/
|
|
|
- private void handleClientAskCmd(String clientAskText, ChannelHandlerContext ctx) throws ParseException, IOException {
|
|
|
+ private void handleClientAskCmd(String clientAskText, ChannelHandlerContext ctx) throws IOException {
|
|
|
clientAskText = clientAskText.replaceAll("\r", "").replaceAll("\n", "");
|
|
|
//{处理非正常命令}
|
|
|
// int countPlus = regexUtil.countPlus(clientAskText);
|
|
@@ -148,7 +156,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
* @Date : 2022/3/23
|
|
|
* @Time : 18:08
|
|
|
*/
|
|
|
- private void askCmdActuator(String askText, ChannelHandlerContext ctx) throws ParseException, IOException {
|
|
|
+ private void askCmdActuator(String askText, ChannelHandlerContext ctx) throws IOException {
|
|
|
System.out.println("======>接收设备请求:" + askText);
|
|
|
String[] dataArray = askText.split("\\+");
|
|
|
|
|
@@ -162,11 +170,11 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
askCmdActuatorV2(askText, ctx, dataArray);
|
|
|
} else {
|
|
|
askCmdActuatorV1(askText, ctx, dataArray);
|
|
|
- log.info("当前版本异常[" + askText + "]");
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void askCmdActuatorV2(String askText, ChannelHandlerContext ctx, String[] dataArray){
|
|
|
+ private void askCmdActuatorV2(String askText, ChannelHandlerContext ctx, String[] dataArray) throws IOException {
|
|
|
//芯片id/设备编码
|
|
|
String cmd = dataArray[1];
|
|
|
switch (cmd) {
|
|
@@ -229,6 +237,10 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
String ans = "hm+5+1+end";
|
|
|
answerCmd(ans,ctx);
|
|
|
saveChargingWarning(portChangeData,deviceCode);
|
|
|
+ EnvData envData = new EnvData();
|
|
|
+
|
|
|
+ envData.setActivePower(portChangeData.getActivePower());
|
|
|
+ pushAlarm(terminalCode +terminalPortCode,12,envData);
|
|
|
}else {
|
|
|
String ans = "hm+5+0+end";
|
|
|
answerCmd(ans,ctx);
|
|
@@ -451,10 +463,12 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
List<SysAccountMultilevel> list = sysAccountMultilevelService.list(new QueryWrapper<SysAccountMultilevel>().eq("last_farm_id", deviceCode.getFarmId()).eq("subscribe", 1));
|
|
|
for (SysAccountMultilevel sysAccountMultilevel : list) {
|
|
|
WeChatMessage.sendMsg(now,"充电预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
+ WeChatMessage2.sendMsg(now,"充电预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
sysAccountMultilevel.setSubscribe(0);
|
|
|
sysAccountMultilevelService.updateById(sysAccountMultilevel);
|
|
|
}
|
|
|
WebsocketWorkerUtil.sendWarningMessage(deviceCode.getFarmId(),String.format("%s 充电预警",basePigpen.getBuildName()));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
private boolean changeDataIsAll(PortChangeData portChangeData) {
|
|
@@ -468,7 +482,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
portChangeData.getBeforeElectricCurrent() != null ;
|
|
|
}
|
|
|
|
|
|
- private void getChuanGanData2(String askText, String[] dataArray, ChannelHandlerContext ctx) {
|
|
|
+ private void getChuanGanData2(String askText, String[] dataArray, ChannelHandlerContext ctx) throws IOException {
|
|
|
String ans = "hm+2+1+end";
|
|
|
answerCmd(ans,ctx);
|
|
|
//hm+2+867699060007086+1+2222+7+260+0+104,17,159+0,0+v2.0+24+end
|
|
@@ -509,9 +523,9 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
deviceCode.setStatus(1);
|
|
|
terminalPortService.updateById(deviceCode);
|
|
|
//添加报警
|
|
|
- saveWarning2(gateWayCode,terminalCode,terminalPortCode,deviceCode,splitStatus,now);
|
|
|
+ saveWarning2(gateWayCode,terminalCode,terminalPortCode,deviceCode,splitStatus,now,envData);
|
|
|
}
|
|
|
- private void saveWarning2(String gateWayCode,String terminaCode,String terminalPortCode ,TerminalPort terminalPort,int[] splitStatus,Date now) {
|
|
|
+ private void saveWarning2(String gateWayCode,String terminaCode,String terminalPortCode ,TerminalPort terminalPort,int[] splitStatus,Date now,EnvData envData) throws IOException {
|
|
|
if (splitStatus[0] == 0 && splitStatus[1] == 0 )
|
|
|
return;
|
|
|
Integer farmId = terminalPort.getFarmId();
|
|
@@ -539,10 +553,12 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
List<SysAccountMultilevel> list = sysAccountMultilevelService.list(new QueryWrapper<SysAccountMultilevel>().eq("last_farm_id", farmId).eq("subscribe", 1));
|
|
|
for (SysAccountMultilevel sysAccountMultilevel : list) {
|
|
|
WeChatMessage.sendMsg(now,"充电预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
+ WeChatMessage2.sendMsg(now,"充电预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
sysAccountMultilevel.setSubscribe(0);
|
|
|
sysAccountMultilevelService.updateById(sysAccountMultilevel);
|
|
|
}
|
|
|
WebsocketWorkerUtil.sendWarningMessage(farmId,String.format("%s 高温预警",basePigpen.getBuildName()));
|
|
|
+ pushAlarm(terminaCode +terminalPortCode,2,envData);
|
|
|
}
|
|
|
if (splitStatus[1] == 1){
|
|
|
portWarningInfo.setContent(String.format("%s 漏电预警",basePigpen.getBuildName()));
|
|
@@ -552,14 +568,17 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
List<SysAccountMultilevel> list = sysAccountMultilevelService.list(new QueryWrapper<SysAccountMultilevel>().eq("last_farm_id", farmId).eq("subscribe", 1));
|
|
|
for (SysAccountMultilevel sysAccountMultilevel : list) {
|
|
|
WeChatMessage.sendMsg(now,"充电预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
+ WeChatMessage2.sendMsg(now,"充电预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
+
|
|
|
sysAccountMultilevel.setSubscribe(0);
|
|
|
sysAccountMultilevelService.updateById(sysAccountMultilevel);
|
|
|
}
|
|
|
WebsocketWorkerUtil.sendWarningMessage(farmId,String.format("%s 漏电预警",basePigpen.getBuildName()));
|
|
|
+ pushAlarm(terminaCode +terminalPortCode,1,envData);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void askCmdActuatorV1(String askText, ChannelHandlerContext ctx, String[] dataArray){
|
|
|
+ private void askCmdActuatorV1(String askText, ChannelHandlerContext ctx, String[] dataArray) throws IOException {
|
|
|
//芯片id/设备编码
|
|
|
String cmd = dataArray[1];
|
|
|
switch (cmd) {
|
|
@@ -701,7 +720,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
log.error(e);
|
|
|
}
|
|
|
}
|
|
|
- private void getHear(String askText,String[] dataArray, ChannelHandlerContext ctx,int version) {
|
|
|
+ private void getHear(String askText,String[] dataArray, ChannelHandlerContext ctx,int version) throws IOException {
|
|
|
/**
|
|
|
* 接口中只需要定义你要用到的函数或者公共变量,不需要的可以不定义
|
|
|
* 映射libadd.so里面的函数,注意类型要匹配
|
|
@@ -710,35 +729,28 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
String ans = "hm+1+1+end";
|
|
|
answerCmd(ans,ctx);
|
|
|
String gateWayCode = dataArray[2];
|
|
|
- String terminalCode = dataArray[3];
|
|
|
+ String terminalCode = version == 1 ? dataArray[3] : "1";
|
|
|
+
|
|
|
TerminalPort terminalPort = new TerminalPort();
|
|
|
- terminalPort.setStatus(1);
|
|
|
+ terminalPort.setStatus(1);
|
|
|
terminalPortService.update(terminalPort,new UpdateWrapper<TerminalPort>().like("device_code",gateWayCode + terminalCode));
|
|
|
Terminal terminal = new Terminal();
|
|
|
terminal.setStatus(1);
|
|
|
terminalService.update(terminal,new UpdateWrapper<Terminal>().eq("device_code",gateWayCode + terminalCode));
|
|
|
- switch ( version){
|
|
|
- case 1:
|
|
|
- HeartInfo heartInfo1 = new HeartInfo(new Date(), gateWayCode + terminalCode, gateWayCode, askText);
|
|
|
- heartInfoService.save(heartInfo1);
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- HeartInfo heartInfo2 = new HeartInfo(new Date(), gateWayCode + "1", gateWayCode, askText);
|
|
|
- heartInfoService.save(heartInfo2);
|
|
|
- break;
|
|
|
- default:
|
|
|
- log.info("未知版本");
|
|
|
- break;
|
|
|
- }
|
|
|
+ Gateway gateway = new Gateway();
|
|
|
+ gateway.setStatus(1);
|
|
|
+ gatewayService.update(gateway,new UpdateWrapper<Gateway>().eq("device_code",gateWayCode ));
|
|
|
|
|
|
+ HeartInfo heartInfo1 = new HeartInfo(new Date(), gateWayCode + terminalCode, gateWayCode, askText);
|
|
|
+ heartInfoService.save(heartInfo1);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
- private void getChuanGanData(String askText,String[] dataArray, ChannelHandlerContext ctx) {
|
|
|
+ private void getChuanGanData(String askText,String[] dataArray, ChannelHandlerContext ctx) throws IOException {
|
|
|
String ans = "hm+2+1+end";
|
|
|
answerCmd(ans,ctx);
|
|
|
- //hm+1+867699060007086+1+1+242+3+2494+9+0+0+31+0+0+0+V1.0+0+end
|
|
|
+ //hm+2+867699060005643+1+1+2207+0+0+4+1,0,20+0,0,0+v1.0+21+end
|
|
|
String gateWayCode = dataArray[2];
|
|
|
String terminalCode = dataArray[3];
|
|
|
String terminalPortCode = dataArray[4];
|
|
@@ -776,7 +788,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
deviceCode.setStatus(1);
|
|
|
terminalPortService.updateById(deviceCode);
|
|
|
//添加报警
|
|
|
- saveWarning(gateWayCode,terminalCode,terminalPortCode,deviceCode,splitStatus,now);
|
|
|
+ saveWarning(gateWayCode,terminalCode,terminalPortCode,deviceCode,splitStatus,now,envData);
|
|
|
// }catch (Exception e){
|
|
|
// log.error(String.format("端口设备查询失败--> %s" ,askText));
|
|
|
// log.error(e);
|
|
@@ -784,7 +796,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
|
|
|
}
|
|
|
|
|
|
- private void saveWarning(String gateWayCode,String terminaCode,String terminalPortCode ,TerminalPort terminalPort,int[] splitStatus,Date now) {
|
|
|
+ private void saveWarning(String gateWayCode,String terminaCode,String terminalPortCode ,TerminalPort terminalPort,int[] splitStatus,Date now,EnvData envData) throws IOException {
|
|
|
if (splitStatus[0] == 0 && splitStatus[1] == 0 &&splitStatus[2] == 0 )
|
|
|
return;
|
|
|
Integer farmId = terminalPort.getFarmId();
|
|
@@ -818,11 +830,15 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
|
|
|
List<SysAccountMultilevel> list = sysAccountMultilevelService.list(new QueryWrapper<SysAccountMultilevel>().eq("last_farm_id", farmId).eq("subscribe", 1));
|
|
|
for (SysAccountMultilevel sysAccountMultilevel : list) {
|
|
|
- WeChatMessage.sendMsg(now,"充电预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
+ WeChatMessage.sendMsg(now,"高温预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
+ WeChatMessage2.sendMsg(now,"高温预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
sysAccountMultilevel.setSubscribe(0);
|
|
|
sysAccountMultilevelService.updateById(sysAccountMultilevel);
|
|
|
}
|
|
|
+ //
|
|
|
WebsocketWorkerUtil.sendWarningMessage(farmId,String.format("%s 高温预警",basePigpen.getBuildName()));
|
|
|
+ //推送事件
|
|
|
+ pushAlarm(terminaCode +terminalPortCode,2,envData);
|
|
|
}
|
|
|
|
|
|
if (splitStatus[1] == 1){
|
|
@@ -832,10 +848,12 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
List<SysAccountMultilevel> list = sysAccountMultilevelService.list(new QueryWrapper<SysAccountMultilevel>().eq("last_farm_id", farmId).eq("subscribe", 1));
|
|
|
for (SysAccountMultilevel sysAccountMultilevel : list) {
|
|
|
WeChatMessage.sendMsg(now,"充电预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
+ WeChatMessage2.sendMsg(now,"充电预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
sysAccountMultilevel.setSubscribe(0);
|
|
|
sysAccountMultilevelService.updateById(sysAccountMultilevel);
|
|
|
}
|
|
|
WebsocketWorkerUtil.sendWarningMessage(farmId,String.format("%s 充电预警",basePigpen.getBuildName()));
|
|
|
+ pushAlarm(terminaCode +terminalPortCode,12,envData);
|
|
|
}
|
|
|
if (splitStatus[2] == 1){
|
|
|
portWarningInfo.setContent(String.format("%s 漏电预警",basePigpen.getBuildName()));
|
|
@@ -843,12 +861,42 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
portWarningInfoService.save(portWarningInfo);
|
|
|
List<SysAccountMultilevel> list = sysAccountMultilevelService.list(new QueryWrapper<SysAccountMultilevel>().eq("last_farm_id", farmId).eq("subscribe", 1));
|
|
|
for (SysAccountMultilevel sysAccountMultilevel : list) {
|
|
|
- WeChatMessage.sendMsg(now,"充电预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
+ WeChatMessage.sendMsg(now,"漏电预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
+ WeChatMessage2.sendMsg(now,"漏电预警",basePigpen1.getBuildName(),basePigpen.getBuildName().substring(basePigpen1.getBuildName().length()),sysAccountMultilevel.getWechatId());
|
|
|
sysAccountMultilevel.setSubscribe(0);
|
|
|
sysAccountMultilevelService.updateById(sysAccountMultilevel);
|
|
|
}
|
|
|
WebsocketWorkerUtil.sendWarningMessage(farmId,String.format("%s 漏电预警",basePigpen.getBuildName()));
|
|
|
+ pushAlarm(terminaCode +terminalPortCode,1,envData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void pushAlarm(String deviceId,Integer errorCode, EnvData envData) throws IOException {
|
|
|
+ AlarmInfoVO alarmInfoVO = new AlarmInfoVO();
|
|
|
+ alarmInfoVO.setDevice_id(deviceId);
|
|
|
+ alarmInfoVO.setError_code(errorCode);
|
|
|
+ switch (errorCode){
|
|
|
+ case 2:
|
|
|
+ alarmInfoVO.setError_value(envData.getTemp());
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ alarmInfoVO.setError_value(envData.getLeakageValue());
|
|
|
+ break;
|
|
|
+ default :
|
|
|
+// alarmInfoVO.setError_value(envData.getActivePower());
|
|
|
+ System.out.println("充电报警");
|
|
|
+ break;
|
|
|
}
|
|
|
+
|
|
|
+ alarmInfoVO.setFrequency(50);
|
|
|
+ alarmInfoVO.setLeakage(envData.getLeakageValue());
|
|
|
+ alarmInfoVO.setVolt_a(envData.getVoltage());
|
|
|
+ alarmInfoVO.setCurr_a(envData.getElectricCurrent());
|
|
|
+ alarmInfoVO.setTemp_a(envData.getTemp());
|
|
|
+ alarmInfoVO.setPower_a(envData.getActivePower());
|
|
|
+ ArrayList<AlarmInfoVO> list1 = new ArrayList<>();
|
|
|
+ list1.add(alarmInfoVO);
|
|
|
+ ElePostUtils.heartPost(BASE_URL + ALARM_URL, envData.getGatwayCode(),list1);
|
|
|
}
|
|
|
|
|
|
private String getNum(String num){
|