From ab9cd2915f21a222906c6dc37dc9927f034ca5b2 Mon Sep 17 00:00:00 2001 From: "3067418132@qq.com" Date: Thu, 28 May 2026 18:38:03 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E6=AD=A3=E5=B8=9D?= =?UTF-8?q?=E7=83=AD=E6=B3=B5=E6=8E=A7=E5=88=B6=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/CollectionParamsManageEntity.java | 2 +- .../mapper/CollectionParamsManageMapper.java | 1 + .../CollectionParamsManageServiceImpl.java | 3 ++ .../impl/DeviceControlServiceImpl.java | 30 +++++++++++++++++++ .../mh/user/strategy/HeatPumpStrategy.java | 2 +- .../user/utils/XK814ModbusParamWriteUtil.java | 26 +++++++++------- 6 files changed, 51 insertions(+), 13 deletions(-) diff --git a/user-service/src/main/java/com/mh/user/entity/CollectionParamsManageEntity.java b/user-service/src/main/java/com/mh/user/entity/CollectionParamsManageEntity.java index 54a64ca..c3ef737 100644 --- a/user-service/src/main/java/com/mh/user/entity/CollectionParamsManageEntity.java +++ b/user-service/src/main/java/com/mh/user/entity/CollectionParamsManageEntity.java @@ -78,7 +78,7 @@ public class CollectionParamsManageEntity implements Serializable { /** * 参数组类型 */ - private Integer paramGroupTypeId; + private Integer paramTypeGroupId; /** 遥测、遥信数据类型 */ private Integer collectionType; /** 上报质量 */ diff --git a/user-service/src/main/java/com/mh/user/mapper/CollectionParamsManageMapper.java b/user-service/src/main/java/com/mh/user/mapper/CollectionParamsManageMapper.java index 32c4129..d7269f9 100644 --- a/user-service/src/main/java/com/mh/user/mapper/CollectionParamsManageMapper.java +++ b/user-service/src/main/java/com/mh/user/mapper/CollectionParamsManageMapper.java @@ -266,6 +266,7 @@ public interface CollectionParamsManageMapper extends BaseMapper list = null; if (StringUtils.isBlank(deviceName)) { @@ -784,6 +812,8 @@ public class DeviceControlServiceImpl implements DeviceControlService { } else if ("海尔2".equals(deviceCodeParam.getBrand())) { deviceCodeParam.setRegisterAddr(ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex("1302"), 4)); //寄存器地址 deviceCodeParam.setFunCode("06"); //功能码写数据 + } else if (Constant.BRAND_ZHENG_DI.equals(deviceCodeParam.getBrand())) { + deviceCodeParam.setFunCode("06"); //功能码写数据 } else { deviceCodeParam.setRegisterAddr("0003"); //寄存器地址 deviceCodeParam.setFunCode("06"); //功能码写数据 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 efedd22..0aa1a5f 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 @@ -223,7 +223,7 @@ public class HeatPumpStrategy implements DeviceStrategy { str = str + funCode + registerAddr + "0002"; } else if ("06".equals(funCode)) { str = XK814ModbusParamWriteUtil.buildWriteSingleRegisterMessage(Integer.parseInt(deviceAddr), registerAddr, dataValue); - str = str.substring(0, str.length() - 4); + return str.toUpperCase(); } } diff --git a/user-service/src/main/java/com/mh/user/utils/XK814ModbusParamWriteUtil.java b/user-service/src/main/java/com/mh/user/utils/XK814ModbusParamWriteUtil.java index 63c2729..dcc2208 100644 --- a/user-service/src/main/java/com/mh/user/utils/XK814ModbusParamWriteUtil.java +++ b/user-service/src/main/java/com/mh/user/utils/XK814ModbusParamWriteUtil.java @@ -31,15 +31,15 @@ public class XK814ModbusParamWriteUtil { static { // TEMP2 编码:温度 → raw = temp + 32 Function temp2Encoder = val -> { - if (!(val instanceof Integer)) throw new IllegalArgumentException("温度值必须是 Integer 类型"); - int temp = (Integer) val; + if (!(val instanceof String)) throw new IllegalArgumentException("温度值必须是 String 类型"); + int temp = Integer.parseInt((String) val); return temp + 32; }; // 布尔值编码:true→1, false→0 Function boolEncoder = val -> { - if (!(val instanceof Boolean)) throw new IllegalArgumentException("开关值必须是 Boolean 类型"); - return (Boolean) val ? 1 : 0; + if (!(val instanceof String)) throw new IllegalArgumentException("开关值必须是 String 类型"); + return Integer.valueOf((String) val); }; // 模式编码:字符串映射到 0/1/2 @@ -47,11 +47,11 @@ public class XK814ModbusParamWriteUtil { if (!(val instanceof String)) throw new IllegalArgumentException("模式必须是 String 类型"); String mode = (String) val; switch (mode) { - case "制热": + case "0": return 0; - case "制冷": + case "1": return 1; - case "恒温": + case "2": return 2; default: throw new IllegalArgumentException("无效模式,必须为 制热/制冷/恒温"); @@ -153,19 +153,23 @@ public class XK814ModbusParamWriteUtil { // 示例 public static void main(String[] args) { // 示例1:从机地址1,设置开机(B000H,true) - String msg = buildWriteSingleRegisterMessage(1, ADDR_ON_OFF, true); + String msg = buildWriteSingleRegisterMessage(1, ADDR_ON_OFF, "1"); System.out.println("开机报文: " + (msg)); // 示例2:设置制热温度45℃(B002H,45) - msg = buildWriteSingleRegisterMessage(1, ADDR_HEAT_SET_TEMP, 45); + msg = buildWriteSingleRegisterMessage(1, ADDR_HEAT_SET_TEMP, "45"); System.out.println("设置制热温度45℃: " + (msg)); // 示例3:设置模式为制冷(B003H,"制冷") - msg = buildWriteSingleRegisterMessage(1, ADDR_MODE, "制冷"); + msg = buildWriteSingleRegisterMessage(1, ADDR_MODE, "1"); System.out.println("设置制冷模式: " + (msg)); + // 示例3:设置恒温温度25℃(B001H,25) + msg = buildWriteSingleRegisterMessage(1, ADDR_CONSTANT_TEMP_SET, "25"); + System.out.println("设置恒温温度25℃: " + (msg)); + // 示例4:使用整数地址 - msg = buildWriteSingleRegisterMessage(1, 0xB005, true); // 强制电加热开启 + msg = buildWriteSingleRegisterMessage(1, 0xB005, "1"); // 强制电加热开启 System.out.println("强制电加热开启: " + (msg)); }