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 3ec9914..b878034 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 @@ -10,7 +10,8 @@ package com.mh.user.constants; public class Constant { 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_HUARUAN = "广州软件学院"; public static final String WEATHER_DATA = "weather_data"; public static boolean CONTROL_WEB_FLAG = false; public static boolean SEND_STATUS = false; // 指令发送状态 @@ -51,6 +52,8 @@ public class Constant { public static final String BRAND_ZHONG_KAI = "中凯"; + public static final String BRAND_ALITA = "阿丽塔"; + private static final String RUNNING = "运行"; private static final String NOT_RUNNING = "不运行"; 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 3f1542d..32f6da7 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 @@ -18,6 +18,7 @@ public enum DeviceEnum { TempControlEnum("温控", TempControl.getInstance()), BackTempControlEnum("回水温控", BackTempControl.getInstance()), TimeControlEnum("时控", TimeControl.getInstance()), + ALiTaControlEnum("阿丽塔时控", TimeControl.getInstance()), WaterLevelSwitchEnum("水位开关", WaterLevelSwitch.getInstance()), StatusCheckEnum("状态检测", StatusCheck.getInstance()), TempTransEnum("温度变送器", TempTrans.getInstance()), 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 9fe6db5..3c540f1 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 @@ -17,7 +17,9 @@ public enum DeviceStrategyEnum { PressureTransEnum("压变", PressureTransStrategy.getInstance()), HeatPumpEnum("热泵", HeatPumpStrategy.getInstance()), TempControlEnum("温控", TempControlStrategy.getInstance()), + BackTempControlEnum("回水温控", BackTempControlStrategy.getInstance()), TimeControlEnum("时控", TimeControlStrategy.getInstance()), + ALitaTimeControlEnum("阿丽塔时控", TimeControlStrategy.getInstance()), WaterLevelSwitchEnum("水位开关", WaterLevelSwitchStrategy.getInstance()), StatusCheckEnum("状态检测", StatusCheckStrategy.getInstance()), TempTransEnum("温度变送器", TempTransStrategy.getInstance()), diff --git a/user-service/src/main/java/com/mh/user/mapper/ControlSetMapper.java b/user-service/src/main/java/com/mh/user/mapper/ControlSetMapper.java index f1a09dc..2669ae2 100644 --- a/user-service/src/main/java/com/mh/user/mapper/ControlSetMapper.java +++ b/user-service/src/main/java/com/mh/user/mapper/ControlSetMapper.java @@ -64,17 +64,17 @@ public interface ControlSetMapper { " top 1 " + " * " + "from " + - " control_Set " + + " control_Set cs " + "where " + - " building_id = #{buildingId} " + + " cs.building_id = #{buildingId} " + " and exists ( " + " select " + " 1 " + " from " + " device_install di " + " where " + - " di.building_id = building_id " + - " and di.device_name like concat('%',#{timeName}, '时控') " + + " di.building_id = cs.building_id " + + " and di.device_name like concat('%',#{timeName}, '%') " + ") ") ControlSetEntity queryControlSet(@Param("buildingId") String buildingId, @Param("timeName") String timeName); } diff --git a/user-service/src/main/java/com/mh/user/service/impl/ControlSetServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/ControlSetServiceImpl.java index 305f627..25b5b96 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/ControlSetServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/ControlSetServiceImpl.java @@ -31,6 +31,9 @@ public class ControlSetServiceImpl implements ControlSetService { if (StringUtils.isBlank(timeName)) { return null; } + if (timeName.contains("时控")) { + timeName = timeName.replaceAll("时控",""); + } ControlSetEntity controlSetEntity = controlSetMapper.queryControlSet(buildingId, timeName + "时控"); if (null == controlSetEntity) { controlSetEntity = controlSetMapper.queryControlSet(buildingId, timeName + "温控"); 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 b34af7a..7d4580c 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 @@ -332,15 +332,18 @@ public class DeviceControlServiceImpl implements DeviceControlService { private String handleAlitaTimeControl(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, String type, SerialPortSingle2 serialPortSingle) { // 设置值前面两位是场景选择,_隔开,后面是传入实际操作值 String[] split = serialPortModel.getDataValue().split("_"); - if (split.length < 2) { + if (split.length < 1) { return Constant.FAIL; } // 场景 int scene = Integer.parseInt(split[0]); - // 实际操作值 - deviceCodeParam.setDataValue(split[1]); - serialPortModel.setDataValue(split[1]); + + if (Constant.WRITE.equals(type)) { + // 实际操作值 + deviceCodeParam.setDataValue(split[1]); + serialPortModel.setDataValue(split[1]); + } // 根据读写类型设置功能码 deviceCodeParam.setFunCode(Constant.READ.equals(type) ? "03" : "06"); @@ -357,15 +360,26 @@ public class DeviceControlServiceImpl implements DeviceControlService { // 开关时间设置 registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(65 + (scene - 1) * 6)), 4); deviceCodeParam.setRegisterSize(2); + if (Constant.WRITE.equals(type)) { + deviceCodeParam.setFunCode("10"); + } break; case "channelSet": // 多路设置 registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(68 + (scene - 1) * 6)), 4); deviceCodeParam.setRegisterSize(2); + if (Constant.WRITE.equals(type)) { + deviceCodeParam.setFunCode("10"); + } break; case "weekSet": // 星期设置 registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(67 + (scene - 1) * 6)), 4); + String dataValue = ExchangeStringUtil.addZeroForNum(deviceCodeParam.getDataValue(), 8); + dataValue = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.parseByte2HexStr(dataValue), 4); + dataValue = ExchangeStringUtil.hexToDec(dataValue); + deviceCodeParam.setDataValue(dataValue); + serialPortModel.setDataValue(dataValue); deviceCodeParam.setRegisterSize(1); break; case "dateCalibrationSet": @@ -373,6 +387,9 @@ public class DeviceControlServiceImpl implements DeviceControlService { int registerValue = Constant.READ.equals(type) ? 16 : 264; deviceCodeParam.setRegisterSize(7); registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(registerValue)), 4); + if (Constant.WRITE.equals(type)) { + deviceCodeParam.setFunCode("10"); + } break; default: return Constant.FAIL; 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 292aad1..e83e862 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 @@ -53,7 +53,7 @@ public class TimeControlStrategy implements DeviceStrategy { if (deviceAddr != null && !deviceAddr.isEmpty()) { str = ExchangeStringUtil.decToHex(deviceAddr); str = ExchangeStringUtil.addZeroForNum(str, 2); //以0补位 - if (!StringUtils.isBlank(brand) && "阿丽塔".equals(brand)) { + if (!StringUtils.isBlank(brand) && Constant.BRAND_ALITA.equals(brand)) { try { if (!StringUtils.isBlank(funCode)) { registerAddr = ExchangeStringUtil.addZeroForNum(registerAddr, 4); //寄存器地址 @@ -63,21 +63,32 @@ public class TimeControlStrategy implements DeviceStrategy { str = str + "03" + registerAddr + registerSize; } else if (funCode.equals("10")) {//写 // 判断寄存器地址 + registerAddr = registerAddr.toUpperCase(); if ("0108".equals(registerAddr)) { // 1F1001080003060014001200225B97 str = str + funCode + registerAddr + "000306" + "00" + dataValue.substring(2, 4) // 年 + "00" + dataValue.substring(4,6) // 月 + "00" + dataValue.substring(6,8); // 日 - } else if ("010c".equals(registerAddr)) { + } else if ("010C".equals(registerAddr)) { // 1F10010C0004080015004300300002BA23 str = str + funCode + registerAddr + "000408" + "00" + dataValue.substring(8, 10) // 时 + "00" + dataValue.substring(10,12) // 分 - + "00" + dataValue.substring(12,14) // 秒 - + "0000"; // 毫秒 + + "0000" // 秒 + + "0002"; // 只写 写2设置日期,写1读取日期 + } else if ("0041".equals(registerAddr)) { + str = str + funCode + registerAddr + "000204" + + "00" + dataValue.substring(0, 2) // 分 + + "00" + dataValue.substring(2, 4); // 秒 + } else if ("0044".equals(registerAddr)) { + str = str + funCode + registerAddr + "000204" + + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.parseByte2HexStr(dataValue.substring(0, 8)), 4) // 1-8路 + + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.parseByte2HexStr(dataValue.substring(8, 16)), 4); // 9-16路 } + } else if (funCode.equals("06")) { + str = str + funCode + registerAddr + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(dataValue), 4); } } String checkWord = ExchangeStringUtil.getStrCRC16(str); //CRC16校验 @@ -133,7 +144,7 @@ public class TimeControlStrategy implements DeviceStrategy { String data = ""; if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {// 读 int rec = dataStr.length(); - if (!StringUtils.isBlank(brand) && "阿丽塔".equals(brand)) { + if (!StringUtils.isBlank(brand) && Constant.BRAND_ALITA.equals(brand)) { if (rec == 14 && isExactlyDivisible("0040", registerAddr)) { // 开关设置 // 16进制转2进制 10011 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 5946920..b61f2d7 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 @@ -508,6 +508,26 @@ public class WaterLevelSwitchStrategy implements DeviceStrategy { publicData.setBackWater("不运行"); } log.info("-----------------供水/回水状态:" + l8 + "-----------------"); + } else if (Constant.CUSTOM_NAME_HUARUAN.equals(customName)) { + if (l2.equals("0001") || l3.equals("0001")) { //2,3路,0000表示有输入,0001表示无输入 + publicData.setUseWater("运行"); //供水 + } else { + publicData.setUseWater("不运行"); + } + log.info("-----------------供水状态:" + l2 + "--" + l3 + "-----------------"); + // 回水 + if (l4.equals("0001") || l5.equals("0001")) { + publicData.setBackWater("运行");//回水 + } else { + publicData.setBackWater("不运行"); + } + log.info("-----------------回水状态:" + l2 + "--" + l3 + "-----------------"); + if (l1.equals("0001")) { //1路 //补水 + publicData.setUpWater("运行"); + } else { + publicData.setUpWater("不运行"); + } + log.info("-----------------补水状态:" + l1 + "-----------------"); } else { if (l2.equals("0001") || l3.equals("0001")) { //2,3路,0000表示有输入,0001表示无输入 publicData.setUseWater("运行"); //供水