Browse Source

1、TX60回水温控、阿丽塔时控前后端调试;

dev
25604 2 weeks ago
parent
commit
ca4926349f
  1. 5
      user-service/src/main/java/com/mh/user/constants/Constant.java
  2. 1
      user-service/src/main/java/com/mh/user/constants/DeviceEnum.java
  3. 2
      user-service/src/main/java/com/mh/user/constants/DeviceStrategyEnum.java
  4. 8
      user-service/src/main/java/com/mh/user/mapper/ControlSetMapper.java
  5. 3
      user-service/src/main/java/com/mh/user/service/impl/ControlSetServiceImpl.java
  6. 25
      user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java
  7. 21
      user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java
  8. 20
      user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java

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

@ -10,7 +10,8 @@ package com.mh.user.constants;
public class Constant { 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_HUARUAN = "广州软件学院";
public static final String WEATHER_DATA = "weather_data"; public static final String WEATHER_DATA = "weather_data";
public static boolean CONTROL_WEB_FLAG = false; public static boolean CONTROL_WEB_FLAG = false;
public static boolean SEND_STATUS = 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_ZHONG_KAI = "中凯";
public static final String BRAND_ALITA = "阿丽塔";
private static final String RUNNING = "运行"; private static final String RUNNING = "运行";
private static final String NOT_RUNNING = "不运行"; private static final String NOT_RUNNING = "不运行";

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

@ -18,6 +18,7 @@ public enum DeviceEnum {
TempControlEnum("温控", TempControl.getInstance()), TempControlEnum("温控", TempControl.getInstance()),
BackTempControlEnum("回水温控", BackTempControl.getInstance()), BackTempControlEnum("回水温控", BackTempControl.getInstance()),
TimeControlEnum("时控", TimeControl.getInstance()), TimeControlEnum("时控", TimeControl.getInstance()),
ALiTaControlEnum("阿丽塔时控", TimeControl.getInstance()),
WaterLevelSwitchEnum("水位开关", WaterLevelSwitch.getInstance()), WaterLevelSwitchEnum("水位开关", WaterLevelSwitch.getInstance()),
StatusCheckEnum("状态检测", StatusCheck.getInstance()), StatusCheckEnum("状态检测", StatusCheck.getInstance()),
TempTransEnum("温度变送器", TempTrans.getInstance()), TempTransEnum("温度变送器", TempTrans.getInstance()),

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

@ -17,7 +17,9 @@ public enum DeviceStrategyEnum {
PressureTransEnum("压变", PressureTransStrategy.getInstance()), PressureTransEnum("压变", PressureTransStrategy.getInstance()),
HeatPumpEnum("热泵", HeatPumpStrategy.getInstance()), HeatPumpEnum("热泵", HeatPumpStrategy.getInstance()),
TempControlEnum("温控", TempControlStrategy.getInstance()), TempControlEnum("温控", TempControlStrategy.getInstance()),
BackTempControlEnum("回水温控", BackTempControlStrategy.getInstance()),
TimeControlEnum("时控", TimeControlStrategy.getInstance()), TimeControlEnum("时控", TimeControlStrategy.getInstance()),
ALitaTimeControlEnum("阿丽塔时控", TimeControlStrategy.getInstance()),
WaterLevelSwitchEnum("水位开关", WaterLevelSwitchStrategy.getInstance()), WaterLevelSwitchEnum("水位开关", WaterLevelSwitchStrategy.getInstance()),
StatusCheckEnum("状态检测", StatusCheckStrategy.getInstance()), StatusCheckEnum("状态检测", StatusCheckStrategy.getInstance()),
TempTransEnum("温度变送器", TempTransStrategy.getInstance()), TempTransEnum("温度变送器", TempTransStrategy.getInstance()),

8
user-service/src/main/java/com/mh/user/mapper/ControlSetMapper.java

@ -64,17 +64,17 @@ public interface ControlSetMapper {
" top 1 " + " top 1 " +
" * " + " * " +
"from " + "from " +
" control_Set " + " control_Set cs " +
"where " + "where " +
" building_id = #{buildingId} " + " cs.building_id = #{buildingId} " +
" and exists ( " + " and exists ( " +
" select " + " select " +
" 1 " + " 1 " +
" from " + " from " +
" device_install di " + " device_install di " +
" where " + " where " +
" di.building_id = building_id " + " di.building_id = cs.building_id " +
" and di.device_name like concat('%',#{timeName}, '时控') " + " and di.device_name like concat('%',#{timeName}, '%') " +
") ") ") ")
ControlSetEntity queryControlSet(@Param("buildingId") String buildingId, @Param("timeName") String timeName); ControlSetEntity queryControlSet(@Param("buildingId") String buildingId, @Param("timeName") String timeName);
} }

3
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)) { if (StringUtils.isBlank(timeName)) {
return null; return null;
} }
if (timeName.contains("时控")) {
timeName = timeName.replaceAll("时控","");
}
ControlSetEntity controlSetEntity = controlSetMapper.queryControlSet(buildingId, timeName + "时控"); ControlSetEntity controlSetEntity = controlSetMapper.queryControlSet(buildingId, timeName + "时控");
if (null == controlSetEntity) { if (null == controlSetEntity) {
controlSetEntity = controlSetMapper.queryControlSet(buildingId, timeName + "温控"); controlSetEntity = controlSetMapper.queryControlSet(buildingId, timeName + "温控");

25
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) { private String handleAlitaTimeControl(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, String type, SerialPortSingle2 serialPortSingle) {
// 设置值前面两位是场景选择,_隔开,后面是传入实际操作值 // 设置值前面两位是场景选择,_隔开,后面是传入实际操作值
String[] split = serialPortModel.getDataValue().split("_"); String[] split = serialPortModel.getDataValue().split("_");
if (split.length < 2) { if (split.length < 1) {
return Constant.FAIL; return Constant.FAIL;
} }
// 场景 // 场景
int scene = Integer.parseInt(split[0]); int scene = Integer.parseInt(split[0]);
// 实际操作值
deviceCodeParam.setDataValue(split[1]); if (Constant.WRITE.equals(type)) {
serialPortModel.setDataValue(split[1]); // 实际操作值
deviceCodeParam.setDataValue(split[1]);
serialPortModel.setDataValue(split[1]);
}
// 根据读写类型设置功能码 // 根据读写类型设置功能码
deviceCodeParam.setFunCode(Constant.READ.equals(type) ? "03" : "06"); 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); registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(65 + (scene - 1) * 6)), 4);
deviceCodeParam.setRegisterSize(2); deviceCodeParam.setRegisterSize(2);
if (Constant.WRITE.equals(type)) {
deviceCodeParam.setFunCode("10");
}
break; break;
case "channelSet": case "channelSet":
// 多路设置 // 多路设置
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(68 + (scene - 1) * 6)), 4); registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(68 + (scene - 1) * 6)), 4);
deviceCodeParam.setRegisterSize(2); deviceCodeParam.setRegisterSize(2);
if (Constant.WRITE.equals(type)) {
deviceCodeParam.setFunCode("10");
}
break; break;
case "weekSet": case "weekSet":
// 星期设置 // 星期设置
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(67 + (scene - 1) * 6)), 4); 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); deviceCodeParam.setRegisterSize(1);
break; break;
case "dateCalibrationSet": case "dateCalibrationSet":
@ -373,6 +387,9 @@ public class DeviceControlServiceImpl implements DeviceControlService {
int registerValue = Constant.READ.equals(type) ? 16 : 264; int registerValue = Constant.READ.equals(type) ? 16 : 264;
deviceCodeParam.setRegisterSize(7); deviceCodeParam.setRegisterSize(7);
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(registerValue)), 4); registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(registerValue)), 4);
if (Constant.WRITE.equals(type)) {
deviceCodeParam.setFunCode("10");
}
break; break;
default: default:
return Constant.FAIL; return Constant.FAIL;

21
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()) { if (deviceAddr != null && !deviceAddr.isEmpty()) {
str = ExchangeStringUtil.decToHex(deviceAddr); str = ExchangeStringUtil.decToHex(deviceAddr);
str = ExchangeStringUtil.addZeroForNum(str, 2); //以0补位 str = ExchangeStringUtil.addZeroForNum(str, 2); //以0补位
if (!StringUtils.isBlank(brand) && "阿丽塔".equals(brand)) { if (!StringUtils.isBlank(brand) && Constant.BRAND_ALITA.equals(brand)) {
try { try {
if (!StringUtils.isBlank(funCode)) { if (!StringUtils.isBlank(funCode)) {
registerAddr = ExchangeStringUtil.addZeroForNum(registerAddr, 4); //寄存器地址 registerAddr = ExchangeStringUtil.addZeroForNum(registerAddr, 4); //寄存器地址
@ -63,21 +63,32 @@ public class TimeControlStrategy implements DeviceStrategy {
str = str + "03" + registerAddr + registerSize; str = str + "03" + registerAddr + registerSize;
} else if (funCode.equals("10")) {//写 } else if (funCode.equals("10")) {//写
// 判断寄存器地址 // 判断寄存器地址
registerAddr = registerAddr.toUpperCase();
if ("0108".equals(registerAddr)) { if ("0108".equals(registerAddr)) {
// 1F1001080003060014001200225B97 // 1F1001080003060014001200225B97
str = str + funCode + registerAddr + "000306" str = str + funCode + registerAddr + "000306"
+ "00" + dataValue.substring(2, 4) // 年 + "00" + dataValue.substring(2, 4) // 年
+ "00" + dataValue.substring(4,6) // 月 + "00" + dataValue.substring(4,6) // 月
+ "00" + dataValue.substring(6,8); // 日 + "00" + dataValue.substring(6,8); // 日
} else if ("010c".equals(registerAddr)) { } else if ("010C".equals(registerAddr)) {
// 1F10010C0004080015004300300002BA23 // 1F10010C0004080015004300300002BA23
str = str + funCode + registerAddr + "000408" str = str + funCode + registerAddr + "000408"
+ "00" + dataValue.substring(8, 10) // 时 + "00" + dataValue.substring(8, 10) // 时
+ "00" + dataValue.substring(10,12) // 分 + "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校验 String checkWord = ExchangeStringUtil.getStrCRC16(str); //CRC16校验
@ -133,7 +144,7 @@ public class TimeControlStrategy implements DeviceStrategy {
String data = ""; String data = "";
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {// 读 if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {// 读
int rec = dataStr.length(); 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)) { if (rec == 14 && isExactlyDivisible("0040", registerAddr)) {
// 开关设置 // 开关设置
// 16进制转2进制 10011 // 16进制转2进制 10011

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

@ -508,6 +508,26 @@ public class WaterLevelSwitchStrategy implements DeviceStrategy {
publicData.setBackWater("不运行"); publicData.setBackWater("不运行");
} }
log.info("-----------------供水/回水状态:" + l8 + "-----------------"); 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 { } else {
if (l2.equals("0001") || l3.equals("0001")) { //2,3路,0000表示有输入,0001表示无输入 if (l2.equals("0001") || l3.equals("0001")) { //2,3路,0000表示有输入,0001表示无输入
publicData.setUseWater("运行"); //供水 publicData.setUseWater("运行"); //供水

Loading…
Cancel
Save