|
@@ -30,6 +30,7 @@ import java.io.*;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.text.ParseException;
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
@@ -79,7 +80,8 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
private IHeartInfoService heartInfoService;
|
|
|
@Autowired
|
|
|
private IGatewayService gatewayService;
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private IEnergyElectricityService energyElectricityService;
|
|
|
|
|
|
|
|
|
@Autowired
|
|
@@ -199,6 +201,10 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
//充电前电流
|
|
|
saveBeforeElectric2(askText, dataArray, ctx);
|
|
|
break;
|
|
|
+ case "6":
|
|
|
+ //用电量
|
|
|
+ saveEnergy(askText, dataArray, ctx);
|
|
|
+ break;
|
|
|
default:
|
|
|
log.error(String.format("未知指令 --> %s", askText));
|
|
|
answerCmd("hm+4+1+end", ctx);
|
|
@@ -409,8 +415,8 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
Process proc = Runtime.getRuntime().exec(my_args);//执行脚本
|
|
|
System.out.println("执行脚本");
|
|
|
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
|
|
|
- String line = null;
|
|
|
- while((line = reader.readLine()) != null){
|
|
|
+ String line = reader.readLine();
|
|
|
+ if (!ObjectUtils.isEmpty(line)){
|
|
|
System.out.println("python执行结果"+line);
|
|
|
}
|
|
|
reader.close();
|
|
@@ -422,7 +428,10 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
log.info(String.format("无端口设备--> %s" ,askText));
|
|
|
return;
|
|
|
}
|
|
|
- saveWarning3(gateWayCode,terminalCode,terminalPortCode,deviceCode,line,now);
|
|
|
+ if (!ObjectUtils.isEmpty(line)){
|
|
|
+ saveWarning3(gateWayCode,terminalCode,terminalPortCode,deviceCode,line,now);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
log.error(e);
|
|
@@ -671,12 +680,59 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
//充电前电流
|
|
|
saveBeforeElectric(askText, dataArray, ctx);
|
|
|
break;
|
|
|
+ case "6":
|
|
|
+ //用电量
|
|
|
+ saveEnergy(askText, dataArray, ctx);
|
|
|
+ break;
|
|
|
default:
|
|
|
log.error(String.format("未知指令 --> %s", askText));
|
|
|
answerCmd("hm+4+1+end", ctx);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void saveEnergy(String askText, String[] dataArray, ChannelHandlerContext ctx) {
|
|
|
+// hm+6+867699060004422+1+5+v2.0+15+end
|
|
|
+ String ans = "hm+6+1+end";
|
|
|
+ answerCmd(ans,ctx);
|
|
|
+ String gateWayCode = dataArray[2];
|
|
|
+ String terminalCode = dataArray[3];
|
|
|
+ String originalData = getNum(dataArray[4]);
|
|
|
+ Terminal terminal = terminalService.getOne(new QueryWrapper<Terminal>().lambda().eq(Terminal::getDeviceCode, gateWayCode + terminalCode));
|
|
|
+ if (ObjectUtils.isEmpty(terminal)){
|
|
|
+ log.error("无终端数据 --> %s",gateWayCode + terminalCode);
|
|
|
+ }
|
|
|
+
|
|
|
+ BasePigpen basePigpen = basePigpenService.getById(terminal.getFloorId());
|
|
|
+ if (ObjectUtils.isEmpty(basePigpen)){
|
|
|
+ log.error("无楼层数据 --> %s",terminal.getFloorId());
|
|
|
+ }
|
|
|
+ EnergyElectricity energyElectricity = new EnergyElectricity();
|
|
|
+
|
|
|
+ energyElectricity.setBuildName(basePigpen.getBuildName());
|
|
|
+ if (!ObjectUtils.isEmpty(terminal.getDeviceName())){
|
|
|
+ energyElectricity.setDeviceName(terminal.getDeviceName());
|
|
|
+ }
|
|
|
+ energyElectricity.setFloorId(terminal.getFloorId());
|
|
|
+ energyElectricity.setTerminalCode(gateWayCode + terminalCode);
|
|
|
+ energyElectricity.setGatwayCode(gateWayCode);
|
|
|
+ energyElectricity.setOriginalValue(originalData);
|
|
|
+
|
|
|
+ BigDecimal lastEle = new BigDecimal(0);
|
|
|
+ BigDecimal originalEle = new BigDecimal(originalData);
|
|
|
+
|
|
|
+ EnergyElectricity lastElectricity = energyElectricityService.getOne(new QueryWrapper<EnergyElectricity>().lambda().eq(EnergyElectricity::getTerminalCode, gateWayCode + terminalCode).orderByDesc(EnergyElectricity::getId).last("limit 1"));
|
|
|
+ if (!ObjectUtils.isEmpty(lastElectricity)){
|
|
|
+ lastEle = new BigDecimal(lastElectricity.getOriginalData());
|
|
|
+ }
|
|
|
+ BigDecimal electricityValue = originalEle.subtract(lastEle);
|
|
|
+ energyElectricity.setElectricityValue(electricityValue.toString());
|
|
|
+ energyElectricity.setCreateTime(LocalDateTime.now());
|
|
|
+ energyElectricity.setOriginalData(askText);
|
|
|
+ energyElectricity.setFarmId(terminal.getFarmId());
|
|
|
+ energyElectricityService.save(energyElectricity);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
private synchronized void saveBeforeElectric(String askText, String[] dataArray, ChannelHandlerContext ctx) {
|
|
|
String ans = "hm+5+1+end";
|
|
|
answerCmd(ans,ctx);
|
|
@@ -790,13 +846,16 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
String lastArr = portChangeData.getElectricCurrent();
|
|
|
String currentArr = portChangeData.getBeforeElectricCurrent();
|
|
|
String modelPath = "./epoch_8_acc_100.00.pth";
|
|
|
+ System.out.println("lastPower:"+lastPower);
|
|
|
+ System.out.println("lastArr:"+lastArr);
|
|
|
+ System.out.println("currentArr:"+currentArr);
|
|
|
try {
|
|
|
String[] my_args =new String[] {"python3","detect.py",lastPower,lastArr,currentArr,modelPath};
|
|
|
Process proc = Runtime.getRuntime().exec(my_args);//执行脚本
|
|
|
System.out.println("执行脚本");
|
|
|
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
|
|
|
String line = null;
|
|
|
- while((line = reader.readLine()) != null){
|
|
|
+ if (!ObjectUtils.isEmpty(line)){
|
|
|
System.out.println("python执行结果"+line);
|
|
|
}
|
|
|
reader.close();
|
|
@@ -808,8 +867,9 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
|
|
|
log.info(String.format("无端口设备--> %s" ,askText));
|
|
|
return;
|
|
|
}
|
|
|
- saveWarning3(gateWayCode,terminalCode,terminalPortCode,deviceCode,line,now);
|
|
|
-
|
|
|
+ if (!ObjectUtils.isEmpty(line)){
|
|
|
+ saveWarning3(gateWayCode,terminalCode,terminalPortCode,deviceCode,line,now);
|
|
|
+ }
|
|
|
} catch (IOException e) {
|
|
|
log.error(e);
|
|
|
} catch (InterruptedException e) {
|