Browse Source

1、多路控制设备类型读取以及设置报文生成以及解析;

2、兼容原有系统;
dev
25604 1 week ago
parent
commit
70c0d69363
  1. 1
      user-service/src/main/java/com/mh/user/constants/Constant.java
  2. 3
      user-service/src/main/java/com/mh/user/constants/DeviceEnum.java
  3. 4
      user-service/src/main/java/com/mh/user/constants/DeviceStrategyEnum.java
  4. 4
      user-service/src/main/java/com/mh/user/factory/BackTempControl.java
  5. 2
      user-service/src/main/java/com/mh/user/factory/Device.java
  6. 4
      user-service/src/main/java/com/mh/user/factory/EleMeter.java
  7. 4
      user-service/src/main/java/com/mh/user/factory/HeatPump.java
  8. 4
      user-service/src/main/java/com/mh/user/factory/HeatPumpStatus.java
  9. 43
      user-service/src/main/java/com/mh/user/factory/MultiControl.java
  10. 4
      user-service/src/main/java/com/mh/user/factory/PressureTrans.java
  11. 4
      user-service/src/main/java/com/mh/user/factory/StatusCheck.java
  12. 4
      user-service/src/main/java/com/mh/user/factory/TempControl.java
  13. 4
      user-service/src/main/java/com/mh/user/factory/TempTrans.java
  14. 4
      user-service/src/main/java/com/mh/user/factory/TimeControl.java
  15. 4
      user-service/src/main/java/com/mh/user/factory/WaterLevelSwitch.java
  16. 4
      user-service/src/main/java/com/mh/user/factory/WtMeter.java
  17. 4
      user-service/src/main/java/com/mh/user/mapper/GatewayManageMapper.java
  18. 2
      user-service/src/main/java/com/mh/user/netty/handle/HeartBeatServerHandler.java
  19. 3
      user-service/src/main/java/com/mh/user/netty/session/ServerSession.java
  20. 7
      user-service/src/main/java/com/mh/user/serialport/SendAndReceiveByCom.java
  21. 3
      user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java
  22. 32
      user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java
  23. 2
      user-service/src/main/java/com/mh/user/strategy/BackTempControlStrategy.java
  24. 2
      user-service/src/main/java/com/mh/user/strategy/DeviceStrategy.java
  25. 2
      user-service/src/main/java/com/mh/user/strategy/EleMeterStrategy.java
  26. 2
      user-service/src/main/java/com/mh/user/strategy/HeatPumpStatusStrategy.java
  27. 2
      user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java
  28. 333
      user-service/src/main/java/com/mh/user/strategy/MultiControlStrategy.java
  29. 2
      user-service/src/main/java/com/mh/user/strategy/PressureTransStrategy.java
  30. 2
      user-service/src/main/java/com/mh/user/strategy/StatusCheckStrategy.java
  31. 8
      user-service/src/main/java/com/mh/user/strategy/TempControlStrategy.java
  32. 2
      user-service/src/main/java/com/mh/user/strategy/TempTransStrategy.java
  33. 2
      user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java
  34. 2
      user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java
  35. 2
      user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java
  36. 8
      user-service/src/main/java/com/mh/user/tcp/SendAndReceiveByTcp.java
  37. 2
      user-service/src/main/java/com/mh/user/tcp/TcpSingle.java
  38. 6
      user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java

1
user-service/src/main/java/com/mh/user/constants/Constant.java

@ -11,6 +11,7 @@ public class Constant {
public static final CharSequence CUSTOM_NAME_HUAXIA = "华夏"; public static final CharSequence CUSTOM_NAME_HUAXIA = "华夏";
public static final CharSequence CUSTOM_NAME_GUANGSHANG = "广州商学院"; public static final CharSequence CUSTOM_NAME_GUANGSHANG = "广州商学院";
public static final CharSequence CUSTOM_NAME_ZBSD = "北京师范大学珠海校区";
public static final CharSequence CUSTOM_NAME_HUARUAN = "广州软件学院"; public static final CharSequence CUSTOM_NAME_HUARUAN = "广州软件学院";
public static final String WEATHER_DATA = "weather_data"; public static final String WEATHER_DATA = "weather_data";
public static final String COMMUNITY_TYPE_REAL_COM = "realCom"; public static final String COMMUNITY_TYPE_REAL_COM = "realCom";

3
user-service/src/main/java/com/mh/user/constants/DeviceEnum.java

@ -22,7 +22,8 @@ public enum DeviceEnum {
WaterLevelSwitchEnum("水位开关", WaterLevelSwitch.getInstance()), WaterLevelSwitchEnum("水位开关", WaterLevelSwitch.getInstance()),
StatusCheckEnum("状态检测", StatusCheck.getInstance()), StatusCheckEnum("状态检测", StatusCheck.getInstance()),
TempTransEnum("温度变送器", TempTrans.getInstance()), TempTransEnum("温度变送器", TempTrans.getInstance()),
HeatPumpStatusEnum("热泵状态", HeatPumpStatus.getInstance()); HeatPumpStatusEnum("热泵状态", HeatPumpStatus.getInstance()),
MultiControlEnum("多路控制", MultiControl.getInstance());
private String deviceType; private String deviceType;

4
user-service/src/main/java/com/mh/user/constants/DeviceStrategyEnum.java

@ -1,6 +1,5 @@
package com.mh.user.constants; package com.mh.user.constants;
import com.mh.user.factory.*;
import com.mh.user.strategy.*; import com.mh.user.strategy.*;
/** /**
@ -23,7 +22,8 @@ public enum DeviceStrategyEnum {
WaterLevelSwitchEnum("水位开关", WaterLevelSwitchStrategy.getInstance()), WaterLevelSwitchEnum("水位开关", WaterLevelSwitchStrategy.getInstance()),
StatusCheckEnum("状态检测", StatusCheckStrategy.getInstance()), StatusCheckEnum("状态检测", StatusCheckStrategy.getInstance()),
TempTransEnum("温度变送器", TempTransStrategy.getInstance()), TempTransEnum("温度变送器", TempTransStrategy.getInstance()),
HeatPumpStatusEnum("热泵状态", HeatPumpStatusStrategy.getInstance()); HeatPumpStatusEnum("热泵状态", HeatPumpStatusStrategy.getInstance()),
MultiControlEnum("多路控制", MultiControlStrategy.getInstance());
private String deviceType; private String deviceType;

4
user-service/src/main/java/com/mh/user/factory/BackTempControl.java

@ -37,7 +37,7 @@ public class BackTempControl implements Device {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} }
} }

2
user-service/src/main/java/com/mh/user/factory/Device.java

@ -16,5 +16,5 @@ public interface Device {
String createOrders(DeviceCodeParamEntity deviceCodeParamEntity); String createOrders(DeviceCodeParamEntity deviceCodeParamEntity);
String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr); String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity);
} }

4
user-service/src/main/java/com/mh/user/factory/EleMeter.java

@ -40,7 +40,7 @@ public class EleMeter implements Device {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return eleMeterStrategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); return eleMeterStrategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} }
} }

4
user-service/src/main/java/com/mh/user/factory/HeatPump.java

@ -37,7 +37,7 @@ public class HeatPump implements Device {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} }
} }

4
user-service/src/main/java/com/mh/user/factory/HeatPumpStatus.java

@ -37,7 +37,7 @@ public class HeatPumpStatus implements Device {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} }
} }

43
user-service/src/main/java/com/mh/user/factory/MultiControl.java

@ -0,0 +1,43 @@
package com.mh.user.factory;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.strategy.DeviceStrategy;
/**
* @author LJF
* @version 1.0
* @project CHWS
* @description 多路控制控制
* @date 2024-03-18 16:53:35
*/
public class MultiControl implements Device {
private DeviceStrategy strategy;
private static class SingletonHolder {
private static final MultiControl INSTANCE = new MultiControl();
}
private MultiControl() {
// 防止外部直接实例化
}
public static MultiControl getInstance() {
return MultiControl.SingletonHolder.INSTANCE;
}
@Override
public void setStrategy(DeviceStrategy strategy) {
this.strategy = strategy;
}
@Override
public String createOrders(DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.createOrders(deviceCodeParamEntity);
}
@Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
}

4
user-service/src/main/java/com/mh/user/factory/PressureTrans.java

@ -37,7 +37,7 @@ public class PressureTrans implements Device {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} }
} }

4
user-service/src/main/java/com/mh/user/factory/StatusCheck.java

@ -41,7 +41,7 @@ public class StatusCheck implements Device {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return wtMeterStrategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); return wtMeterStrategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} }
} }

4
user-service/src/main/java/com/mh/user/factory/TempControl.java

@ -37,7 +37,7 @@ public class TempControl implements Device {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} }
} }

4
user-service/src/main/java/com/mh/user/factory/TempTrans.java

@ -37,7 +37,7 @@ public class TempTrans implements Device {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} }
} }

4
user-service/src/main/java/com/mh/user/factory/TimeControl.java

@ -37,7 +37,7 @@ public class TimeControl implements Device {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} }
} }

4
user-service/src/main/java/com/mh/user/factory/WaterLevelSwitch.java

@ -37,7 +37,7 @@ public class WaterLevelSwitch implements Device {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} }
} }

4
user-service/src/main/java/com/mh/user/factory/WtMeter.java

@ -41,7 +41,7 @@ public class WtMeter implements Device {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return wtMeterStrategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); return wtMeterStrategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} }
} }

4
user-service/src/main/java/com/mh/user/mapper/GatewayManageMapper.java

@ -106,10 +106,10 @@ public interface GatewayManageMapper {
GatewayManageEntity queryGatewayByGrade(@Param("grade") Long grade); GatewayManageEntity queryGatewayByGrade(@Param("grade") Long grade);
// 根据设备心跳包更新设备在线状态 // 根据设备心跳包更新设备在线状态
@Update("update gateway_manage set grade = #{status} where heart_beat = #{heartBeat}") @Update("update gateway_manage set grade = #{status}, connect_date = getdate() where heart_beat = #{heartBeat}")
void updateGatewayManageOnlineByHeartBeatCode(String heartBeat, int status); void updateGatewayManageOnlineByHeartBeatCode(String heartBeat, int status);
// 根据设备IMEI更新设备在线状态 // 根据设备IMEI更新设备在线状态
@Update("update gateway_manage set grade = #{status} where imei = #{imei}") @Update("update gateway_manage set grade = #{status}, connect_date = getdate() where imei = #{imei}")
void updateGatewayManageOnlineByImei(String imei, int status); void updateGatewayManageOnlineByImei(String imei, int status);
} }

2
user-service/src/main/java/com/mh/user/netty/handle/HeartBeatServerHandler.java

@ -88,7 +88,7 @@ public class HeartBeatServerHandler extends IdleStateHandler {
if (imei != null) { if (imei != null) {
// 添加到日志表,下线了 // 添加到日志表,下线了
SysLog sysLog = new SysLog(); SysLog sysLog = new SysLog();
sysLog.setOperation(imei + "下线了"); sysLog.setOperation(imeiIP + "下线了");
sysLog.setCreateBy("开发者"); sysLog.setCreateBy("开发者");
sysLog.setIp(imeiIP); sysLog.setIp(imeiIP);
sysLog.setCreateTime(new Date()); sysLog.setCreateTime(new Date());

3
user-service/src/main/java/com/mh/user/netty/session/ServerSession.java

@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
@Data @Data
@Slf4j @Slf4j
public class ServerSession { public class ServerSession {
public static final AttributeKey<ServerSession> SESSION_KEY = public static final AttributeKey<ServerSession> SESSION_KEY =
AttributeKey.valueOf("SESSION_KEY"); AttributeKey.valueOf("SESSION_KEY");
//通道 //通道
@ -54,7 +55,7 @@ public class ServerSession {
ctx.close(); ctx.close();
meterNum = serverSession.sessionId; meterNum = serverSession.sessionId;
SessionMap.inst().removeSession(serverSession.sessionId); SessionMap.inst().removeSession(serverSession.sessionId);
log.info(ctx.channel().remoteAddress()+" "+serverSession.sessionId + "==>移除会话"); log.error("{} {}==>移除会话", ctx.channel().remoteAddress(), serverSession.sessionId);
} }
return meterNum; return meterNum;
} }

7
user-service/src/main/java/com/mh/user/serialport/SendAndReceiveByCom.java

@ -8,7 +8,6 @@ import com.mh.user.factory.DeviceFactory;
import com.mh.user.service.BuildingService; import com.mh.user.service.BuildingService;
import com.mh.user.service.DeviceInstallService; import com.mh.user.service.DeviceInstallService;
import com.mh.user.service.NowDataService; import com.mh.user.service.NowDataService;
import com.mh.user.service.SysParamService;
import com.mh.user.strategy.DeviceStrategy; import com.mh.user.strategy.DeviceStrategy;
import com.mh.user.strategy.DeviceStrategyFactory; import com.mh.user.strategy.DeviceStrategyFactory;
import com.mh.user.tcp.SendAndReceiveByTcp; import com.mh.user.tcp.SendAndReceiveByTcp;
@ -124,7 +123,7 @@ public class SendAndReceiveByCom {
SendAndReceiveByTcp.printLog(deviceAddr, deviceType, buildingId, buildingName, dateStr, log, deviceInstallService, nowDataService); SendAndReceiveByTcp.printLog(deviceAddr, deviceType, buildingId, buildingName, dateStr, log, deviceInstallService, nowDataService);
} }
// 处理返回来的数据报文 // 处理返回来的数据报文
dealReceiveData(dateStr, serialPort, i, deviceAddr, deviceType, registerAddr, brand, buildingId, buildingName, bytes, device); dealReceiveData(dateStr, serialPort, i, deviceAddr, deviceType, registerAddr, brand, buildingId, buildingName, bytes, device, null);
} catch (Exception e) { } catch (Exception e) {
if (null != serialPort) { if (null != serialPort) {
@ -166,7 +165,7 @@ public class SendAndReceiveByCom {
String registerAddr, String registerAddr,
String brand, String brand,
String buildingId, String buildingId,
String buildingName, byte[] bytes, Device device) { String buildingName, byte[] bytes, Device device, DeviceCodeParamEntity deviceCodeParamEntity) {
try { try {
String receiveStr = ""; String receiveStr = "";
receiveStr = ExchangeStringUtil.parseByte2HexStr(bytes); receiveStr = ExchangeStringUtil.parseByte2HexStr(bytes);
@ -194,7 +193,7 @@ public class SendAndReceiveByCom {
} }
} }
// 解析返回来的数据 // 解析返回来的数据
device.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); device.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} catch (Exception e) { } catch (Exception e) {
log.error("楼栋:" + buildingName + "设备类型:" + deviceType + "保存数据库失败!" + i, e); log.error("楼栋:" + buildingName + "设备类型:" + deviceType + "保存数据库失败!" + i, e);

3
user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java

@ -11,7 +11,6 @@ import com.mh.user.service.DeviceInstallService;
import com.mh.user.service.NowDataService; import com.mh.user.service.NowDataService;
import com.mh.user.strategy.DeviceStrategy; import com.mh.user.strategy.DeviceStrategy;
import com.mh.user.strategy.DeviceStrategyFactory; import com.mh.user.strategy.DeviceStrategyFactory;
import com.mh.user.tcp.SendAndReceiveByTcp;
import com.mh.user.tcp.TcpSingle; import com.mh.user.tcp.TcpSingle;
import com.mh.user.utils.*; import com.mh.user.utils.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -174,7 +173,7 @@ public class SerialPortSingle2 {
// return "fail"; // return "fail";
// } // }
rtData = device.analysisReceiveData(DateUtil.dateToString(new Date(), "yyyy-MM-dd HH:mm:ss"), rtData = device.analysisReceiveData(DateUtil.dateToString(new Date(), "yyyy-MM-dd HH:mm:ss"),
deviceType, registerAddr, brand, buildingId, buildingName, dataStr); deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
log.info("-----------------------------" + serialPort.getName() + "单抄结束!-----------------------------"); log.info("-----------------------------" + serialPort.getName() + "单抄结束!-----------------------------");
return rtData; return rtData;
} catch (Exception e) { } catch (Exception e) {

32
user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java

@ -97,6 +97,10 @@ public class DeviceControlServiceImpl implements DeviceControlService {
// 根据设备类型和参数执行相应的操作 // 根据设备类型和参数执行相应的操作
switch (deviceType) { switch (deviceType) {
case "多路控制":
rtData = handleMultiControl(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle);
log.info("设备类型为多路控制==>{}", rtData);
break;
case "时控": case "时控":
case "阿丽塔时控": case "阿丽塔时控":
rtData = handleTimeControl(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); rtData = handleTimeControl(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle);
@ -164,6 +168,30 @@ public class DeviceControlServiceImpl implements DeviceControlService {
} }
} }
private String handleMultiControl(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) {
if (Constant.WRITE.equals(type)) {
switch (deviceCodeParam.getBrand()) {
case "远向":
deviceCodeParam.setFunCode("06"); //功能码写数据
break;
default:
deviceCodeParam.setFunCode("12"); //功能码写数据
if (!serialPortModel.getDataValue().equals("100%")) {
deviceCodeParam.setDataValue("100%");
serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
}
break;
}
deviceCodeParam.setDataValue(serialPortModel.getDataValue());
} else if (Constant.READ.equals(type)) {
if (Constant.BRAND_YUAN_XIANG.equals(deviceCodeParam.getBrand())) {
deviceCodeParam.setFunCode("03"); //功能码读
}
rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
}
return rtData;
}
private String handleBackTempControl(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) { private String handleBackTempControl(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) {
switch (deviceCodeParam.getParam()) { switch (deviceCodeParam.getParam()) {
case "controlTemp": case "controlTemp":
@ -342,8 +370,8 @@ public class DeviceControlServiceImpl implements DeviceControlService {
if (Constant.WRITE.equals(type)) { if (Constant.WRITE.equals(type)) {
// 实际操作值 // 实际操作值
deviceCodeParam.setDataValue(split[1].replace(":","")); deviceCodeParam.setDataValue(split[1].replace(":", ""));
serialPortModel.setDataValue(split[1].replace(":","")); serialPortModel.setDataValue(split[1].replace(":", ""));
} }
// 根据读写类型设置功能码 // 根据读写类型设置功能码

2
user-service/src/main/java/com/mh/user/strategy/BackTempControlStrategy.java

@ -71,7 +71,7 @@ public class BackTempControlStrategy implements DeviceStrategy {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
String result = Constant.FAIL; String result = Constant.FAIL;
String checkStr = dataStr.substring(0, dataStr.length() - 4); String checkStr = dataStr.substring(0, dataStr.length() - 4);
String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码 String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码

2
user-service/src/main/java/com/mh/user/strategy/DeviceStrategy.java

@ -16,5 +16,5 @@ public interface DeviceStrategy {
*/ */
String createOrders(DeviceCodeParamEntity deviceCodeParamEntity); String createOrders(DeviceCodeParamEntity deviceCodeParamEntity);
String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr); String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity);
} }

2
user-service/src/main/java/com/mh/user/strategy/EleMeterStrategy.java

@ -82,7 +82,7 @@ public class EleMeterStrategy implements DeviceStrategy {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
String data = ""; String data = "";
String meterId = ""; String meterId = "";
if (dataStr.length() == 36 || dataStr.length() == 40 || dataStr.length() == 44 || dataStr.length() == 50) { if (dataStr.length() == 36 || dataStr.length() == 40 || dataStr.length() == 44 || dataStr.length() == 50) {

2
user-service/src/main/java/com/mh/user/strategy/HeatPumpStatusStrategy.java

@ -89,7 +89,7 @@ public class HeatPumpStatusStrategy implements DeviceStrategy {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String receiveData) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String receiveData, DeviceCodeParamEntity deviceCodeParamEntity) {
String result = Constant.FAIL; String result = Constant.FAIL;
String l1 = ""; String l1 = "";
String l2 = ""; String l2 = "";

2
user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java

@ -197,7 +197,7 @@ public class HeatPumpStrategy implements DeviceStrategy {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
String checkStr = dataStr.substring(0, dataStr.length() - 4);//检验报文 String checkStr = dataStr.substring(0, dataStr.length() - 4);//检验报文
String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码 String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码
String sValue = null; String sValue = null;

333
user-service/src/main/java/com/mh/user/strategy/MultiControlStrategy.java

@ -0,0 +1,333 @@
package com.mh.user.strategy;
import com.mh.common.utils.StringUtils;
import com.mh.user.constants.Constant;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.entity.NowPublicDataEntity;
import com.mh.user.entity.SysParamEntity;
import com.mh.user.service.*;
import com.mh.user.utils.ExchangeStringUtil;
import com.mh.user.utils.SpringBeanUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationContext;
import java.util.Map;
/**
* @author LJF
* @version 1.0
* @project CHWS
* @description 多路控制策略
* @date 2024-03-18 09:51:17
*/
@Slf4j
public class MultiControlStrategy implements DeviceStrategy {
// 调用service
ApplicationContext context = SpringBeanUtil.getApplicationContext();
NowDataService nowDataService = context.getBean(NowDataService.class);
NowPublicDataService nowPublicDataService = context.getBean(NowPublicDataService.class);
SysParamService sysParamService = context.getBean(SysParamService.class);
BuildingService buildingService = context.getBean(BuildingService.class);
DeviceInstallService deviceInstallService = context.getBean(DeviceInstallService.class);
private static class SingletonHolder {
private static final MultiControlStrategy INSTANCE = new MultiControlStrategy();
}
private MultiControlStrategy() {
// 防止外部直接实例化
}
public static MultiControlStrategy getInstance() {
return MultiControlStrategy.SingletonHolder.INSTANCE;
}
@Override
public String createOrders(DeviceCodeParamEntity deviceCodeParamEntity) {
String deviceAddr = deviceCodeParamEntity.getDeviceAddr();
String brand = deviceCodeParamEntity.getBrand();
String funCode = deviceCodeParamEntity.getFunCode();
String registerAddr = deviceCodeParamEntity.getRegisterAddr();
// 设备参数
String param = deviceCodeParamEntity.getParam();
// 设备值
String dataValue = deviceCodeParamEntity.getDataValue();
String str = "";
if (deviceAddr != null && !deviceAddr.isEmpty()) {
try {
if (Constant.BRAND_YUAN_XIANG.equals(brand)) {
str = ExchangeStringUtil.decToHex(deviceAddr);
str = ExchangeStringUtil.addZeroForNum(str, 2);
if (StringUtils.isBlank(funCode) || funCode.equals("03")) {//读
funCode = "03";
if (!StringUtils.isBlank(param)) {
switch (param) {
case "DO_ALL":
registerAddr = "00180008";
break;
case "DO1":
registerAddr = "00180001";
break;
case "DO2":
registerAddr = "00190001";
break;
case "DO3":
registerAddr = "001A0001";
break;
case "DO4":
registerAddr = "001B0001";
break;
case "DO5":
registerAddr = "001C0001";
break;
case "DO6":
registerAddr = "001D0001";
break;
case "DO7":
registerAddr = "001E0001";
break;
case "DO8":
registerAddr = "001F0001";
break;
case "DI_ALL":
registerAddr = "00100008";
break;
case "DI1":
registerAddr = "00100001";
break;
case "DI2":
registerAddr = "00110001";
break;
case "DI3":
registerAddr = "00120001";
break;
case "DI4":
registerAddr = "00130001";
break;
case "DI5":
registerAddr = "00140001";
break;
case "DI6":
registerAddr = "00150001";
break;
case "DI7":
registerAddr = "00160001";
break;
case "DI8":
registerAddr = "00170001";
break;
}
}
str = str + funCode + registerAddr;
} else if (funCode.equals("06")) { // 写
if (!StringUtils.isBlank(param) && !StringUtils.isBlank(dataValue) && dataValue.equals("1")) {
switch (param) {
case "DO_ALL":
registerAddr = "10001800081000010001000100010001000100010001"; //全开
break;
case "DO1":
registerAddr = "0600180001";
break;
case "DO2":
registerAddr = "0600190001";
break;
case "DO3":
registerAddr = "06001A0001";
break;
case "DO4":
registerAddr = "06001B0001";
break;
case "DO5":
registerAddr = "06001C0001";
break;
case "DO6":
registerAddr = "06001D0001";
break;
case "DO7":
registerAddr = "06001E0001";
break;
case "DO8":
registerAddr = "06001F0001";
break;
}
} else if (!StringUtils.isBlank(param) && !StringUtils.isBlank(dataValue) && dataValue.equals("0")) {
switch (param) {
case "DO_ALL":
registerAddr = "10001800081000000000000000000000000000000000"; //全开
break;
case "DO1":
registerAddr = "0600180000";
break;
case "DO2":
registerAddr = "0600190000";
break;
case "DO3":
registerAddr = "06001A0000";
break;
case "DO4":
registerAddr = "06001B0000";
break;
case "DO5":
registerAddr = "06001C0000";
break;
case "DO6":
registerAddr = "06001D0000";
break;
case "DO7":
registerAddr = "06001E0000";
break;
case "DO8":
registerAddr = "06001F0000";
break;
}
}
str = str + registerAddr; //示例:010600180001
}
String checkWord = ExchangeStringUtil.getStrCRC16(str); //CRC16校验
str = str + checkWord;
}
} catch (Exception e) {
log.error("生成多路控制指令出错!{}", str, e);
}
}
return str.toUpperCase();
}
@Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
SysParamEntity sysParamEntity = sysParamService.selectSysParam();
String customName = sysParamEntity.getCustomName();
return analysisRelayOrder485(dateStr, dataStr, registerAddr, brand, buildingId, buildingName, customName, deviceCodeParamEntity);
}
// 多路控制,长度42,128
public String analysisRelayOrder485(final String dateStr,
final String receiveData,
final String registerAddr,
final String brand,
String buildingId,
String buildingName,
String customName,
DeviceCodeParamEntity deviceCodeParamEntity) {
String l1 = "";
String l2 = "";
String l3 = "";
String l4 = "";
String l5 = "";
String l6 = "";
String l7 = "";
String l8 = "";
String waterLevelSet = "";
String addr = "";
String param = deviceCodeParamEntity.getParam();
if (Constant.BRAND_YUAN_XIANG.equals(brand)) {
String checkStr = receiveData.substring(0, receiveData.length() - 4);// 检验报文
String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);
if (checkWord.equalsIgnoreCase(receiveData.substring(receiveData.length() - 4))) {
addr = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2));//地址
if (checkStr.startsWith("03", 2)) {
// 根据请求的param参数进行数据截取
switch (param) {
case "DI_ALL":
case "DO_ALL":
l1 = checkStr.substring(6, 10);
l2 = checkStr.substring(10, 14);
l3 = checkStr.substring(14, 18);
l4 = checkStr.substring(18, 22);
l5 = checkStr.substring(22, 26);
l6 = checkStr.substring(26, 30);
l7 = checkStr.substring(30, 34);
l8 = checkStr.substring(34, 38);
break;
case "DI1":
case "DI2":
case "DI3":
case "DI4":
case "DI5":
case "DI6":
case "DI7":
case "DI8":
case "DO1":
case "DO2":
case "DO3":
case "DO4":
case "DO5":
case "DO6":
case "DO7":
case "DO8":
l1 = checkStr.substring(6, 10);
break;
}
if (!param.contains("ALL")) {
return l1;
} else {
return l1 + l2 + l3 + l4 + l5 + l6 + l7 + l8;
}
} else if (checkStr.startsWith("06", 2) || checkStr.startsWith("04", 2) || checkStr.startsWith("10", 2)) {
log.info("时间:{},多路控制地址:{},DO操作成功! ", dateStr, addr);
return Constant.SUCCESS;
}
} else {
log.info("多路控制报文检验失败: {}", receiveData);
}
if (registerAddr != null && !registerAddr.isEmpty()) {
if (param.contains("ALL")) {
NowPublicDataEntity publicData = new NowPublicDataEntity();
publicData.setBuildingId(buildingId);
if (customName.contains(Constant.CUSTOM_NAME_ZBSD)) {
if (l1.equals("0001") || l2.equals("0001")) { //2,3路,0001表示有输入,0000表示无输入
publicData.setUseWater("运行"); //供水
} else {
publicData.setUseWater("不运行");
}
log.info("-----------------供水状态:{}--{}-----------------", l1, l2);
// 补水(抽水)
if (l5.equals("0001") || l6.equals("0001")) {
publicData.setUpWater("运行");//回水
} else {
publicData.setUpWater("不运行");
}
log.info("-----------------补水状态:{}--{}-----------------", l5, l6);
}
nowPublicDataService.saveNowHistoryPublicData(publicData);
log.info("地址:{},供回补水状态保存数据库成功!楼栋ID:{},名称:{}", addr, buildingId, buildingName);
// 更新now_data表中对应的供水、回水、补水状态
DeviceInstallEntity deviceInstallEntity = deviceInstallService.selectDevice(addr, "多路控制", buildingId);
if (deviceInstallEntity != null
&& !StringUtils.isBlank(deviceInstallEntity.getDeviceName())) {
if (deviceInstallEntity.getDeviceName().contains("低")) {
log.info("更新now_data表中低区对应的供水、回水、补水状态,楼栋ID:{},供水状态:{},回水状态:{},补水状态:{}", buildingId, publicData.getUseWater(), publicData.getBackWater(), publicData.getUpWater());
nowDataService.updateNowDataByPumpName("低", buildingId, publicData.getUseWater(), publicData.getBackWater(), publicData.getUpWater());
} else if (deviceInstallEntity.getDeviceName().contains("高")) {
log.info("更新now_data表中高区对应的供水、回水、补水状态,楼栋ID:{},供水状态:{},回水状态:{},补水状态:{}", buildingId, publicData.getUseWater(), publicData.getBackWater(), publicData.getUpWater());
nowDataService.updateNowDataByPumpName("高", buildingId, publicData.getUseWater(), publicData.getBackWater(), publicData.getUpWater());
} else {
nowDataService.updateNowDataByPumpName(null, buildingId, publicData.getUseWater(), publicData.getBackWater(), publicData.getUpWater());
}
// 判断今天的记录是否存在多个补水,供水,回水状态值
Map<String, Object> states = nowDataService.selectTopOneState(buildingId);
if (states != null && !states.isEmpty()) {
publicData.setUpWater(String.valueOf(states.get("up_water_state")));
publicData.setUseWater(String.valueOf(states.get("use_water_state")));
publicData.setBackWater(String.valueOf(states.get("back_water_state")));
}
nowDataService.updateNowPublicData(publicData);
}
}
}
return Constant.FAIL;
}
return l1;
}
}

2
user-service/src/main/java/com/mh/user/strategy/PressureTransStrategy.java

@ -67,7 +67,7 @@ public class PressureTransStrategy implements DeviceStrategy {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
String result = "fail"; String result = "fail";
String checkStr = dataStr.substring(0, dataStr.length() - 4);// 检验报文 String checkStr = dataStr.substring(0, dataStr.length() - 4);// 检验报文
String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码 String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码

2
user-service/src/main/java/com/mh/user/strategy/StatusCheckStrategy.java

@ -63,7 +63,7 @@ public class StatusCheckStrategy implements DeviceStrategy {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
// 68 12 00 00 00 00 00 68 81 03 58 F3 35 E6 16 // 68 12 00 00 00 00 00 68 81 03 58 F3 35 E6 16
if (dataStr.length() == 30) { if (dataStr.length() == 30) {
//检验报文 //检验报文

8
user-service/src/main/java/com/mh/user/strategy/TempControlStrategy.java

@ -1,22 +1,16 @@
package com.mh.user.strategy; package com.mh.user.strategy;
import com.alibaba.fastjson2.JSON;
import com.mh.user.constants.Constant; import com.mh.user.constants.Constant;
import com.mh.user.entity.DeviceCodeParamEntity; import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.NowPublicDataEntity; import com.mh.user.entity.NowPublicDataEntity;
import com.mh.user.service.BuildingService; import com.mh.user.service.BuildingService;
import com.mh.user.service.NowDataService; import com.mh.user.service.NowDataService;
import com.mh.user.service.NowPublicDataService; import com.mh.user.service.NowPublicDataService;
import com.mh.user.utils.DateUtil;
import com.mh.user.utils.ExchangeStringUtil; import com.mh.user.utils.ExchangeStringUtil;
import com.mh.user.utils.SpringBeanUtil; import com.mh.user.utils.SpringBeanUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/** /**
* @author LJF * @author LJF
* @version 1.0 * @version 1.0
@ -85,7 +79,7 @@ public class TempControlStrategy implements DeviceStrategy {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
String result = Constant.FAIL; String result = Constant.FAIL;
String checkStr = dataStr.substring(0, dataStr.length() - 4); String checkStr = dataStr.substring(0, dataStr.length() - 4);
String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码 String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码

2
user-service/src/main/java/com/mh/user/strategy/TempTransStrategy.java

@ -64,7 +64,7 @@ public class TempTransStrategy implements DeviceStrategy {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
String result = Constant.FAIL; String result = Constant.FAIL;
String checkStr = dataStr.substring(0, dataStr.length() - 4);// 检验报文 String checkStr = dataStr.substring(0, dataStr.length() - 4);// 检验报文
String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码 String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码

2
user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java

@ -130,7 +130,7 @@ public class TimeControlStrategy implements DeviceStrategy {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
String result = Constant.FAIL; String result = Constant.FAIL;
String checkStr = dataStr.substring(0, dataStr.length() - 4); String checkStr = dataStr.substring(0, dataStr.length() - 4);
String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码 String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码

2
user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java

@ -187,7 +187,7 @@ public class WaterLevelSwitchStrategy implements DeviceStrategy {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
SysParamEntity sysParamEntity = sysParamService.selectSysParam(); SysParamEntity sysParamEntity = sysParamService.selectSysParam();
String customName = sysParamEntity.getCustomName(); String customName = sysParamEntity.getCustomName();
if (StringUtils.isBlank(registerAddr) || Constant.REG_ADDR_0018.equals(registerAddr) || Constant.REG_ADDR_0017.equals(registerAddr)) { if (StringUtils.isBlank(registerAddr) || Constant.REG_ADDR_0018.equals(registerAddr) || Constant.REG_ADDR_0017.equals(registerAddr)) {

2
user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java

@ -72,7 +72,7 @@ public class WtMeterStrategy implements DeviceStrategy {
} }
@Override @Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
String data = ""; String data = "";
String meterId = ""; String meterId = "";
if (dataStr.length() == 44 || dataStr.length() == 70 || dataStr.length() == 72) { if (dataStr.length() == 44 || dataStr.length() == 70 || dataStr.length() == 72) {

8
user-service/src/main/java/com/mh/user/tcp/SendAndReceiveByTcp.java

@ -7,7 +7,6 @@ import com.mh.user.factory.Device;
import com.mh.user.factory.DeviceFactory; import com.mh.user.factory.DeviceFactory;
import com.mh.user.netty.session.ServerSession; import com.mh.user.netty.session.ServerSession;
import com.mh.user.netty.session.SessionMap; import com.mh.user.netty.session.SessionMap;
import com.mh.user.serialport.SerialTool;
import com.mh.user.service.BuildingService; import com.mh.user.service.BuildingService;
import com.mh.user.service.DeviceInstallService; import com.mh.user.service.DeviceInstallService;
import com.mh.user.service.NowDataService; import com.mh.user.service.NowDataService;
@ -17,7 +16,6 @@ import com.mh.user.utils.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import purejavacomm.SerialPort;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@ -116,7 +114,7 @@ public class SendAndReceiveByTcp {
continue; continue;
} }
// 处理返回来的数据报文 // 处理返回来的数据报文
dealReceiveData(dateStr, keyVal, i, deviceAddr, deviceType, registerAddr, brand, buildingId, buildingName, receiveMsg, device); dealReceiveData(dateStr, keyVal, i, deviceAddr, deviceType, registerAddr, brand, buildingId, buildingName, receiveMsg, device, null);
} else { } else {
log.error("没有找到心跳包数据:{}", heartBeat); log.error("没有找到心跳包数据:{}", heartBeat);
} }
@ -168,7 +166,7 @@ public class SendAndReceiveByTcp {
String registerAddr, String registerAddr,
String brand, String brand,
String buildingId, String buildingId,
String buildingName, String receiveStr, Device device) { String buildingName, String receiveStr, Device device, DeviceCodeParamEntity deviceCodeParamEntity) {
try { try {
//去掉空格和null //去掉空格和null
receiveStr = receiveStr.replace("null", ""); receiveStr = receiveStr.replace("null", "");
@ -194,7 +192,7 @@ public class SendAndReceiveByTcp {
} }
} }
// 解析返回来的数据 // 解析返回来的数据
device.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr); device.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
} catch (Exception e) { } catch (Exception e) {
log.error("楼栋:{}设备类型:{}保存数据库失败!{}", buildingName, deviceType, i, e); log.error("楼栋:{}设备类型:{}保存数据库失败!{}", buildingName, deviceType, i, e);

2
user-service/src/main/java/com/mh/user/tcp/TcpSingle.java

@ -113,7 +113,7 @@ public class TcpSingle {
} }
} }
rtData = device.analysisReceiveData(DateUtil.dateToString(new Date(), "yyyy-MM-dd HH:mm:ss"), rtData = device.analysisReceiveData(DateUtil.dateToString(new Date(), "yyyy-MM-dd HH:mm:ss"),
deviceType, registerAddr, brand, buildingId, buildingName, dataStr); deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
return rtData; return rtData;
} else { } else {
log.error("没有找到心跳包数据:{}", heartBeat); log.error("没有找到心跳包数据:{}", heartBeat);

6
user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java

@ -2,7 +2,6 @@ package com.mh.user;
import com.mh.user.entity.DeviceManageEntity; import com.mh.user.entity.DeviceManageEntity;
import com.mh.user.entity.GaugeEntity; import com.mh.user.entity.GaugeEntity;
import com.mh.user.factory.PressureTrans;
import com.mh.user.job.DealDataJob; import com.mh.user.job.DealDataJob;
import com.mh.user.serialport.SerialPortThread; import com.mh.user.serialport.SerialPortThread;
import com.mh.user.service.DeviceManageService; import com.mh.user.service.DeviceManageService;
@ -11,7 +10,6 @@ import com.mh.user.service.HistoryDataPreService;
import com.mh.user.service.NowDataService; import com.mh.user.service.NowDataService;
import com.mh.user.strategy.PressureTransStrategy; import com.mh.user.strategy.PressureTransStrategy;
import com.mh.user.utils.*; import com.mh.user.utils.*;
import org.checkerframework.checker.units.qual.A;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
@ -125,8 +123,8 @@ class UserServiceApplicationTests {
"澳升", "澳升",
"59", "59",
"46栋", "46栋",
"30030200E105C8" "30030200E105C8",
); );
} }
@Autowired @Autowired

Loading…
Cancel
Save