From 70c0d693638c59b63a0677aeba28ed4070b5777c Mon Sep 17 00:00:00 2001 From: 25604 Date: Tue, 18 Nov 2025 17:37:27 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=A4=9A=E8=B7=AF=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=B1=BB=E5=9E=8B=E8=AF=BB=E5=8F=96=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E8=AE=BE=E7=BD=AE=E6=8A=A5=E6=96=87=E7=94=9F=E6=88=90?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E8=A7=A3=E6=9E=90=EF=BC=9B=202=E3=80=81?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E5=8E=9F=E6=9C=89=E7=B3=BB=E7=BB=9F=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mh/user/constants/Constant.java | 1 + .../com/mh/user/constants/DeviceEnum.java | 3 +- .../mh/user/constants/DeviceStrategyEnum.java | 4 +- .../com/mh/user/factory/BackTempControl.java | 4 +- .../main/java/com/mh/user/factory/Device.java | 2 +- .../java/com/mh/user/factory/EleMeter.java | 4 +- .../java/com/mh/user/factory/HeatPump.java | 4 +- .../com/mh/user/factory/HeatPumpStatus.java | 4 +- .../com/mh/user/factory/MultiControl.java | 43 +++ .../com/mh/user/factory/PressureTrans.java | 4 +- .../java/com/mh/user/factory/StatusCheck.java | 4 +- .../java/com/mh/user/factory/TempControl.java | 4 +- .../java/com/mh/user/factory/TempTrans.java | 4 +- .../java/com/mh/user/factory/TimeControl.java | 4 +- .../com/mh/user/factory/WaterLevelSwitch.java | 4 +- .../java/com/mh/user/factory/WtMeter.java | 4 +- .../mh/user/mapper/GatewayManageMapper.java | 4 +- .../netty/handle/HeartBeatServerHandler.java | 2 +- .../mh/user/netty/session/ServerSession.java | 3 +- .../user/serialport/SendAndReceiveByCom.java | 7 +- .../mh/user/serialport/SerialPortSingle2.java | 3 +- .../impl/DeviceControlServiceImpl.java | 32 +- .../strategy/BackTempControlStrategy.java | 2 +- .../com/mh/user/strategy/DeviceStrategy.java | 2 +- .../mh/user/strategy/EleMeterStrategy.java | 2 +- .../user/strategy/HeatPumpStatusStrategy.java | 2 +- .../mh/user/strategy/HeatPumpStrategy.java | 2 +- .../user/strategy/MultiControlStrategy.java | 333 ++++++++++++++++++ .../user/strategy/PressureTransStrategy.java | 2 +- .../mh/user/strategy/StatusCheckStrategy.java | 2 +- .../mh/user/strategy/TempControlStrategy.java | 8 +- .../mh/user/strategy/TempTransStrategy.java | 2 +- .../mh/user/strategy/TimeControlStrategy.java | 2 +- .../strategy/WaterLevelSwitchStrategy.java | 2 +- .../com/mh/user/strategy/WtMeterStrategy.java | 2 +- .../com/mh/user/tcp/SendAndReceiveByTcp.java | 8 +- .../main/java/com/mh/user/tcp/TcpSingle.java | 2 +- .../mh/user/UserServiceApplicationTests.java | 6 +- 38 files changed, 461 insertions(+), 66 deletions(-) create mode 100644 user-service/src/main/java/com/mh/user/factory/MultiControl.java create mode 100644 user-service/src/main/java/com/mh/user/strategy/MultiControlStrategy.java diff --git a/user-service/src/main/java/com/mh/user/constants/Constant.java b/user-service/src/main/java/com/mh/user/constants/Constant.java index b35f342..6068703 100644 --- a/user-service/src/main/java/com/mh/user/constants/Constant.java +++ b/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_GUANGSHANG = "广州商学院"; + public static final CharSequence CUSTOM_NAME_ZBSD = "北京师范大学珠海校区"; public static final CharSequence CUSTOM_NAME_HUARUAN = "广州软件学院"; public static final String WEATHER_DATA = "weather_data"; public static final String COMMUNITY_TYPE_REAL_COM = "realCom"; diff --git a/user-service/src/main/java/com/mh/user/constants/DeviceEnum.java b/user-service/src/main/java/com/mh/user/constants/DeviceEnum.java index 32f6da7..ae73f78 100644 --- a/user-service/src/main/java/com/mh/user/constants/DeviceEnum.java +++ b/user-service/src/main/java/com/mh/user/constants/DeviceEnum.java @@ -22,7 +22,8 @@ public enum DeviceEnum { WaterLevelSwitchEnum("水位开关", WaterLevelSwitch.getInstance()), StatusCheckEnum("状态检测", StatusCheck.getInstance()), TempTransEnum("温度变送器", TempTrans.getInstance()), - HeatPumpStatusEnum("热泵状态", HeatPumpStatus.getInstance()); + HeatPumpStatusEnum("热泵状态", HeatPumpStatus.getInstance()), + MultiControlEnum("多路控制", MultiControl.getInstance()); private String deviceType; diff --git a/user-service/src/main/java/com/mh/user/constants/DeviceStrategyEnum.java b/user-service/src/main/java/com/mh/user/constants/DeviceStrategyEnum.java index 3c540f1..31f8cc7 100644 --- a/user-service/src/main/java/com/mh/user/constants/DeviceStrategyEnum.java +++ b/user-service/src/main/java/com/mh/user/constants/DeviceStrategyEnum.java @@ -1,6 +1,5 @@ package com.mh.user.constants; -import com.mh.user.factory.*; import com.mh.user.strategy.*; /** @@ -23,7 +22,8 @@ public enum DeviceStrategyEnum { WaterLevelSwitchEnum("水位开关", WaterLevelSwitchStrategy.getInstance()), StatusCheckEnum("状态检测", StatusCheckStrategy.getInstance()), TempTransEnum("温度变送器", TempTransStrategy.getInstance()), - HeatPumpStatusEnum("热泵状态", HeatPumpStatusStrategy.getInstance()); + HeatPumpStatusEnum("热泵状态", HeatPumpStatusStrategy.getInstance()), + MultiControlEnum("多路控制", MultiControlStrategy.getInstance()); private String deviceType; diff --git a/user-service/src/main/java/com/mh/user/factory/BackTempControl.java b/user-service/src/main/java/com/mh/user/factory/BackTempControl.java index 1cf9228..4849b0c 100644 --- a/user-service/src/main/java/com/mh/user/factory/BackTempControl.java +++ b/user-service/src/main/java/com/mh/user/factory/BackTempControl.java @@ -37,7 +37,7 @@ public class BackTempControl implements Device { } @Override - public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { - return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, 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, deviceCodeParamEntity); } } diff --git a/user-service/src/main/java/com/mh/user/factory/Device.java b/user-service/src/main/java/com/mh/user/factory/Device.java index 5867897..d48feaa 100644 --- a/user-service/src/main/java/com/mh/user/factory/Device.java +++ b/user-service/src/main/java/com/mh/user/factory/Device.java @@ -16,5 +16,5 @@ public interface Device { 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); } diff --git a/user-service/src/main/java/com/mh/user/factory/EleMeter.java b/user-service/src/main/java/com/mh/user/factory/EleMeter.java index 48e1774..2adaec8 100644 --- a/user-service/src/main/java/com/mh/user/factory/EleMeter.java +++ b/user-service/src/main/java/com/mh/user/factory/EleMeter.java @@ -40,7 +40,7 @@ public class EleMeter implements Device { } @Override - public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { - return eleMeterStrategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, 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, deviceCodeParamEntity); } } diff --git a/user-service/src/main/java/com/mh/user/factory/HeatPump.java b/user-service/src/main/java/com/mh/user/factory/HeatPump.java index 7382dbe..ed21aec 100644 --- a/user-service/src/main/java/com/mh/user/factory/HeatPump.java +++ b/user-service/src/main/java/com/mh/user/factory/HeatPump.java @@ -37,7 +37,7 @@ public class HeatPump implements Device { } @Override - public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { - return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, 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, deviceCodeParamEntity); } } diff --git a/user-service/src/main/java/com/mh/user/factory/HeatPumpStatus.java b/user-service/src/main/java/com/mh/user/factory/HeatPumpStatus.java index 042c0da..6a1633d 100644 --- a/user-service/src/main/java/com/mh/user/factory/HeatPumpStatus.java +++ b/user-service/src/main/java/com/mh/user/factory/HeatPumpStatus.java @@ -37,7 +37,7 @@ public class HeatPumpStatus implements Device { } @Override - public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { - return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, 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, deviceCodeParamEntity); } } diff --git a/user-service/src/main/java/com/mh/user/factory/MultiControl.java b/user-service/src/main/java/com/mh/user/factory/MultiControl.java new file mode 100644 index 0000000..89959d5 --- /dev/null +++ b/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); + } +} diff --git a/user-service/src/main/java/com/mh/user/factory/PressureTrans.java b/user-service/src/main/java/com/mh/user/factory/PressureTrans.java index 712d7d6..3289a3e 100644 --- a/user-service/src/main/java/com/mh/user/factory/PressureTrans.java +++ b/user-service/src/main/java/com/mh/user/factory/PressureTrans.java @@ -37,7 +37,7 @@ public class PressureTrans implements Device { } @Override - public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { - return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, 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, deviceCodeParamEntity); } } diff --git a/user-service/src/main/java/com/mh/user/factory/StatusCheck.java b/user-service/src/main/java/com/mh/user/factory/StatusCheck.java index ef90b99..8e8afca 100644 --- a/user-service/src/main/java/com/mh/user/factory/StatusCheck.java +++ b/user-service/src/main/java/com/mh/user/factory/StatusCheck.java @@ -41,7 +41,7 @@ public class StatusCheck implements Device { } @Override - public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { - return wtMeterStrategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, 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, deviceCodeParamEntity); } } diff --git a/user-service/src/main/java/com/mh/user/factory/TempControl.java b/user-service/src/main/java/com/mh/user/factory/TempControl.java index 1795c6a..52b130b 100644 --- a/user-service/src/main/java/com/mh/user/factory/TempControl.java +++ b/user-service/src/main/java/com/mh/user/factory/TempControl.java @@ -37,7 +37,7 @@ public class TempControl implements Device { } @Override - public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { - return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, 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, deviceCodeParamEntity); } } diff --git a/user-service/src/main/java/com/mh/user/factory/TempTrans.java b/user-service/src/main/java/com/mh/user/factory/TempTrans.java index d7362a2..90bef12 100644 --- a/user-service/src/main/java/com/mh/user/factory/TempTrans.java +++ b/user-service/src/main/java/com/mh/user/factory/TempTrans.java @@ -37,7 +37,7 @@ public class TempTrans implements Device { } @Override - public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { - return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, 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, deviceCodeParamEntity); } } diff --git a/user-service/src/main/java/com/mh/user/factory/TimeControl.java b/user-service/src/main/java/com/mh/user/factory/TimeControl.java index afd887c..f0c7cf8 100644 --- a/user-service/src/main/java/com/mh/user/factory/TimeControl.java +++ b/user-service/src/main/java/com/mh/user/factory/TimeControl.java @@ -37,7 +37,7 @@ public class TimeControl implements Device { } @Override - public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { - return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, 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, deviceCodeParamEntity); } } diff --git a/user-service/src/main/java/com/mh/user/factory/WaterLevelSwitch.java b/user-service/src/main/java/com/mh/user/factory/WaterLevelSwitch.java index 1642677..f3874b2 100644 --- a/user-service/src/main/java/com/mh/user/factory/WaterLevelSwitch.java +++ b/user-service/src/main/java/com/mh/user/factory/WaterLevelSwitch.java @@ -37,7 +37,7 @@ public class WaterLevelSwitch implements Device { } @Override - public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { - return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, 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, deviceCodeParamEntity); } } diff --git a/user-service/src/main/java/com/mh/user/factory/WtMeter.java b/user-service/src/main/java/com/mh/user/factory/WtMeter.java index 0293781..ab6bb4e 100644 --- a/user-service/src/main/java/com/mh/user/factory/WtMeter.java +++ b/user-service/src/main/java/com/mh/user/factory/WtMeter.java @@ -41,7 +41,7 @@ public class WtMeter implements Device { } @Override - public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr) { - return wtMeterStrategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, 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, deviceCodeParamEntity); } } diff --git a/user-service/src/main/java/com/mh/user/mapper/GatewayManageMapper.java b/user-service/src/main/java/com/mh/user/mapper/GatewayManageMapper.java index a7a80d5..b2e72a0 100644 --- a/user-service/src/main/java/com/mh/user/mapper/GatewayManageMapper.java +++ b/user-service/src/main/java/com/mh/user/mapper/GatewayManageMapper.java @@ -106,10 +106,10 @@ public interface GatewayManageMapper { 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); // 根据设备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); } diff --git a/user-service/src/main/java/com/mh/user/netty/handle/HeartBeatServerHandler.java b/user-service/src/main/java/com/mh/user/netty/handle/HeartBeatServerHandler.java index 8df0350..5e872c2 100644 --- a/user-service/src/main/java/com/mh/user/netty/handle/HeartBeatServerHandler.java +++ b/user-service/src/main/java/com/mh/user/netty/handle/HeartBeatServerHandler.java @@ -88,7 +88,7 @@ public class HeartBeatServerHandler extends IdleStateHandler { if (imei != null) { // 添加到日志表,下线了 SysLog sysLog = new SysLog(); - sysLog.setOperation(imei + "下线了"); + sysLog.setOperation(imeiIP + "下线了"); sysLog.setCreateBy("开发者"); sysLog.setIp(imeiIP); sysLog.setCreateTime(new Date()); diff --git a/user-service/src/main/java/com/mh/user/netty/session/ServerSession.java b/user-service/src/main/java/com/mh/user/netty/session/ServerSession.java index 285be2b..2ad20ae 100644 --- a/user-service/src/main/java/com/mh/user/netty/session/ServerSession.java +++ b/user-service/src/main/java/com/mh/user/netty/session/ServerSession.java @@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; @Data @Slf4j public class ServerSession { + public static final AttributeKey SESSION_KEY = AttributeKey.valueOf("SESSION_KEY"); //通道 @@ -54,7 +55,7 @@ public class ServerSession { ctx.close(); meterNum = serverSession.sessionId; SessionMap.inst().removeSession(serverSession.sessionId); - log.info(ctx.channel().remoteAddress()+" "+serverSession.sessionId + "==>移除会话"); + log.error("{} {}==>移除会话", ctx.channel().remoteAddress(), serverSession.sessionId); } return meterNum; } diff --git a/user-service/src/main/java/com/mh/user/serialport/SendAndReceiveByCom.java b/user-service/src/main/java/com/mh/user/serialport/SendAndReceiveByCom.java index 128dd5c..406b675 100644 --- a/user-service/src/main/java/com/mh/user/serialport/SendAndReceiveByCom.java +++ b/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.DeviceInstallService; import com.mh.user.service.NowDataService; -import com.mh.user.service.SysParamService; import com.mh.user.strategy.DeviceStrategy; import com.mh.user.strategy.DeviceStrategyFactory; import com.mh.user.tcp.SendAndReceiveByTcp; @@ -124,7 +123,7 @@ public class SendAndReceiveByCom { 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) { if (null != serialPort) { @@ -166,7 +165,7 @@ public class SendAndReceiveByCom { String registerAddr, String brand, String buildingId, - String buildingName, byte[] bytes, Device device) { + String buildingName, byte[] bytes, Device device, DeviceCodeParamEntity deviceCodeParamEntity) { try { String receiveStr = ""; 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) { log.error("楼栋:" + buildingName + "设备类型:" + deviceType + "保存数据库失败!" + i, e); diff --git a/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java b/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java index 19c0ea1..dfc3e77 100644 --- a/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java +++ b/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.strategy.DeviceStrategy; import com.mh.user.strategy.DeviceStrategyFactory; -import com.mh.user.tcp.SendAndReceiveByTcp; import com.mh.user.tcp.TcpSingle; import com.mh.user.utils.*; import lombok.extern.slf4j.Slf4j; @@ -174,7 +173,7 @@ public class SerialPortSingle2 { // return "fail"; // } 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() + "单抄结束!-----------------------------"); return rtData; } catch (Exception e) { diff --git a/user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java index 2993cb9..73fb674 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java @@ -97,6 +97,10 @@ public class DeviceControlServiceImpl implements DeviceControlService { // 根据设备类型和参数执行相应的操作 switch (deviceType) { + case "多路控制": + rtData = handleMultiControl(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); + log.info("设备类型为多路控制==>{}", rtData); + break; case "时控": case "阿丽塔时控": 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) { switch (deviceCodeParam.getParam()) { case "controlTemp": @@ -342,8 +370,8 @@ public class DeviceControlServiceImpl implements DeviceControlService { if (Constant.WRITE.equals(type)) { // 实际操作值 - deviceCodeParam.setDataValue(split[1].replace(":","")); - serialPortModel.setDataValue(split[1].replace(":","")); + deviceCodeParam.setDataValue(split[1].replace(":", "")); + serialPortModel.setDataValue(split[1].replace(":", "")); } // 根据读写类型设置功能码 diff --git a/user-service/src/main/java/com/mh/user/strategy/BackTempControlStrategy.java b/user-service/src/main/java/com/mh/user/strategy/BackTempControlStrategy.java index 01832bb..ad81db6 100644 --- a/user-service/src/main/java/com/mh/user/strategy/BackTempControlStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/BackTempControlStrategy.java @@ -71,7 +71,7 @@ public class BackTempControlStrategy implements DeviceStrategy { } @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 checkStr = dataStr.substring(0, dataStr.length() - 4); String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码 diff --git a/user-service/src/main/java/com/mh/user/strategy/DeviceStrategy.java b/user-service/src/main/java/com/mh/user/strategy/DeviceStrategy.java index 780cd29..b316ba0 100644 --- a/user-service/src/main/java/com/mh/user/strategy/DeviceStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/DeviceStrategy.java @@ -16,5 +16,5 @@ public interface DeviceStrategy { */ 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); } diff --git a/user-service/src/main/java/com/mh/user/strategy/EleMeterStrategy.java b/user-service/src/main/java/com/mh/user/strategy/EleMeterStrategy.java index 76fc17e..088b1b6 100644 --- a/user-service/src/main/java/com/mh/user/strategy/EleMeterStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/EleMeterStrategy.java @@ -82,7 +82,7 @@ public class EleMeterStrategy implements DeviceStrategy { } @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 meterId = ""; if (dataStr.length() == 36 || dataStr.length() == 40 || dataStr.length() == 44 || dataStr.length() == 50) { diff --git a/user-service/src/main/java/com/mh/user/strategy/HeatPumpStatusStrategy.java b/user-service/src/main/java/com/mh/user/strategy/HeatPumpStatusStrategy.java index dfa34bc..fc776c7 100644 --- a/user-service/src/main/java/com/mh/user/strategy/HeatPumpStatusStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/HeatPumpStatusStrategy.java @@ -89,7 +89,7 @@ public class HeatPumpStatusStrategy implements DeviceStrategy { } @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 l1 = ""; String l2 = ""; diff --git a/user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java b/user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java index 42fcf34..ff20a8f 100644 --- a/user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java @@ -197,7 +197,7 @@ public class HeatPumpStrategy implements DeviceStrategy { } @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 checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码 String sValue = null; diff --git a/user-service/src/main/java/com/mh/user/strategy/MultiControlStrategy.java b/user-service/src/main/java/com/mh/user/strategy/MultiControlStrategy.java new file mode 100644 index 0000000..5335e49 --- /dev/null +++ b/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 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; + } +} diff --git a/user-service/src/main/java/com/mh/user/strategy/PressureTransStrategy.java b/user-service/src/main/java/com/mh/user/strategy/PressureTransStrategy.java index ef7eb74..079a7ff 100644 --- a/user-service/src/main/java/com/mh/user/strategy/PressureTransStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/PressureTransStrategy.java @@ -67,7 +67,7 @@ public class PressureTransStrategy implements DeviceStrategy { } @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 checkStr = dataStr.substring(0, dataStr.length() - 4);// 检验报文 String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码 diff --git a/user-service/src/main/java/com/mh/user/strategy/StatusCheckStrategy.java b/user-service/src/main/java/com/mh/user/strategy/StatusCheckStrategy.java index 42bf08e..7ed1e00 100644 --- a/user-service/src/main/java/com/mh/user/strategy/StatusCheckStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/StatusCheckStrategy.java @@ -63,7 +63,7 @@ public class StatusCheckStrategy implements DeviceStrategy { } @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 if (dataStr.length() == 30) { //检验报文 diff --git a/user-service/src/main/java/com/mh/user/strategy/TempControlStrategy.java b/user-service/src/main/java/com/mh/user/strategy/TempControlStrategy.java index 4d5531e..a8dbeed 100644 --- a/user-service/src/main/java/com/mh/user/strategy/TempControlStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/TempControlStrategy.java @@ -1,22 +1,16 @@ package com.mh.user.strategy; -import com.alibaba.fastjson2.JSON; import com.mh.user.constants.Constant; import com.mh.user.entity.DeviceCodeParamEntity; import com.mh.user.entity.NowPublicDataEntity; import com.mh.user.service.BuildingService; import com.mh.user.service.NowDataService; import com.mh.user.service.NowPublicDataService; -import com.mh.user.utils.DateUtil; 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.Date; -import java.util.HashMap; -import java.util.Map; - /** * @author LJF * @version 1.0 @@ -85,7 +79,7 @@ public class TempControlStrategy implements DeviceStrategy { } @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 checkStr = dataStr.substring(0, dataStr.length() - 4); String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码 diff --git a/user-service/src/main/java/com/mh/user/strategy/TempTransStrategy.java b/user-service/src/main/java/com/mh/user/strategy/TempTransStrategy.java index e1b29f3..3d77cfe 100644 --- a/user-service/src/main/java/com/mh/user/strategy/TempTransStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/TempTransStrategy.java @@ -64,7 +64,7 @@ public class TempTransStrategy implements DeviceStrategy { } @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 checkStr = dataStr.substring(0, dataStr.length() - 4);// 检验报文 String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码 diff --git a/user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java b/user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java index 49d0ae0..1d92e6b 100644 --- a/user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java @@ -130,7 +130,7 @@ public class TimeControlStrategy implements DeviceStrategy { } @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 checkStr = dataStr.substring(0, dataStr.length() - 4); String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码 diff --git a/user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java b/user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java index 98941e1..f36a384 100644 --- a/user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java @@ -187,7 +187,7 @@ public class WaterLevelSwitchStrategy implements DeviceStrategy { } @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(); String customName = sysParamEntity.getCustomName(); if (StringUtils.isBlank(registerAddr) || Constant.REG_ADDR_0018.equals(registerAddr) || Constant.REG_ADDR_0017.equals(registerAddr)) { diff --git a/user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java b/user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java index d21576f..d4c2c20 100644 --- a/user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java @@ -72,7 +72,7 @@ public class WtMeterStrategy implements DeviceStrategy { } @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 meterId = ""; if (dataStr.length() == 44 || dataStr.length() == 70 || dataStr.length() == 72) { diff --git a/user-service/src/main/java/com/mh/user/tcp/SendAndReceiveByTcp.java b/user-service/src/main/java/com/mh/user/tcp/SendAndReceiveByTcp.java index d91474f..71b7b81 100644 --- a/user-service/src/main/java/com/mh/user/tcp/SendAndReceiveByTcp.java +++ b/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.netty.session.ServerSession; import com.mh.user.netty.session.SessionMap; -import com.mh.user.serialport.SerialTool; import com.mh.user.service.BuildingService; import com.mh.user.service.DeviceInstallService; import com.mh.user.service.NowDataService; @@ -17,7 +16,6 @@ import com.mh.user.utils.*; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.springframework.context.ApplicationContext; -import purejavacomm.SerialPort; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -116,7 +114,7 @@ public class SendAndReceiveByTcp { 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 { log.error("没有找到心跳包数据:{}", heartBeat); } @@ -168,7 +166,7 @@ public class SendAndReceiveByTcp { String registerAddr, String brand, String buildingId, - String buildingName, String receiveStr, Device device) { + String buildingName, String receiveStr, Device device, DeviceCodeParamEntity deviceCodeParamEntity) { try { //去掉空格和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) { log.error("楼栋:{}设备类型:{}保存数据库失败!{}", buildingName, deviceType, i, e); diff --git a/user-service/src/main/java/com/mh/user/tcp/TcpSingle.java b/user-service/src/main/java/com/mh/user/tcp/TcpSingle.java index 47daf0b..b195c39 100644 --- a/user-service/src/main/java/com/mh/user/tcp/TcpSingle.java +++ b/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"), - deviceType, registerAddr, brand, buildingId, buildingName, dataStr); + deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity); return rtData; } else { log.error("没有找到心跳包数据:{}", heartBeat); diff --git a/user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java b/user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java index 966e68b..c514dfb 100644 --- a/user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java +++ b/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.GaugeEntity; -import com.mh.user.factory.PressureTrans; import com.mh.user.job.DealDataJob; import com.mh.user.serialport.SerialPortThread; 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.strategy.PressureTransStrategy; import com.mh.user.utils.*; -import org.checkerframework.checker.units.qual.A; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -125,8 +123,8 @@ class UserServiceApplicationTests { "澳升", "59", "46栋", - "30030200E105C8" - ); + "30030200E105C8", + ); } @Autowired