|
|
@ -1,10 +1,12 @@ |
|
|
|
package com.mh.user.utils; |
|
|
|
package com.mh.user.utils; |
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson2.JSON; |
|
|
|
import com.alibaba.fastjson2.JSON; |
|
|
|
|
|
|
|
import com.mh.common.utils.StringUtils; |
|
|
|
import com.mh.user.entity.*; |
|
|
|
import com.mh.user.entity.*; |
|
|
|
import com.mh.user.service.*; |
|
|
|
import com.mh.user.service.*; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.context.ApplicationContext; |
|
|
|
import org.springframework.context.ApplicationContext; |
|
|
|
|
|
|
|
|
|
|
|
import java.text.DecimalFormat; |
|
|
|
import java.text.DecimalFormat; |
|
|
|
import java.text.ParseException; |
|
|
|
import java.text.ParseException; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
@ -30,8 +32,10 @@ public class AnalysisReceiveOrder485 { |
|
|
|
PumpSetService pumpSetService = context.getBean(PumpSetService.class); |
|
|
|
PumpSetService pumpSetService = context.getBean(PumpSetService.class); |
|
|
|
DeviceInstallService deviceInstallService = context.getBean(DeviceInstallService.class); |
|
|
|
DeviceInstallService deviceInstallService = context.getBean(DeviceInstallService.class); |
|
|
|
BuildingService buildingService = context.getBean(BuildingService.class); |
|
|
|
BuildingService buildingService = context.getBean(BuildingService.class); |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 解析电表返回的数据 |
|
|
|
* 解析电表返回的数据 |
|
|
|
|
|
|
|
* |
|
|
|
* @param dataStr |
|
|
|
* @param dataStr |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public void analysisMeterOrder485(final String dataStr, final String registerAddr, final String brand, String buildingId, String buildingName) { |
|
|
|
public void analysisMeterOrder485(final String dataStr, final String registerAddr, final String brand, String buildingId, String buildingName) { |
|
|
@ -64,7 +68,6 @@ public class AnalysisReceiveOrder485 { |
|
|
|
data = String.format("%08d", Long.parseLong(data)); |
|
|
|
data = String.format("%08d", Long.parseLong(data)); |
|
|
|
data = data.substring(0, 6) + "." + data.substring(6, 8); |
|
|
|
data = data.substring(0, 6) + "." + data.substring(6, 8); |
|
|
|
log.info("电表表号:" + meterId + ",电表读数:" + data); |
|
|
|
log.info("电表表号:" + meterId + ",电表读数:" + data); |
|
|
|
// String buildingName=buildingService.queryBuildingName(buildingId); //查询楼栋名称
|
|
|
|
|
|
|
|
try { |
|
|
|
try { |
|
|
|
DataResultEntity dataResultEntity = new DataResultEntity(); |
|
|
|
DataResultEntity dataResultEntity = new DataResultEntity(); |
|
|
|
dataResultEntity.setDeviceAddr(meterId);//通讯编号
|
|
|
|
dataResultEntity.setDeviceAddr(meterId);//通讯编号
|
|
|
@ -86,9 +89,7 @@ public class AnalysisReceiveOrder485 { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public String analysisMeterOrder4852(final String dataStr, final String registerAddr, final String brand, String buildingId, final String buildingName) { |
|
|
|
public String analysisMeterOrder4852(final String dataStr, final String registerAddr, final String brand, String buildingId, final String buildingName) { |
|
|
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
|
|
|
Date date = new Date(); |
|
|
|
Date date = new Date(); |
|
|
|
String dateStr = sdf1.format(date); |
|
|
|
|
|
|
|
String data = ""; |
|
|
|
String data = ""; |
|
|
|
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) { |
|
|
|
String checkStr = dataStr.substring(0, dataStr.length() - 4); //减去校验码
|
|
|
|
String checkStr = dataStr.substring(0, dataStr.length() - 4); //减去校验码
|
|
|
@ -124,12 +125,11 @@ public class AnalysisReceiveOrder485 { |
|
|
|
dataResultEntity.setDeviceType("电表"); |
|
|
|
dataResultEntity.setDeviceType("电表"); |
|
|
|
dataResultEntity.setBuildingId(buildingId); |
|
|
|
dataResultEntity.setBuildingId(buildingId); |
|
|
|
dataResultEntity.setCurValue(Double.parseDouble(data)); //当前读数
|
|
|
|
dataResultEntity.setCurValue(Double.parseDouble(data)); //当前读数
|
|
|
|
dataResultEntity.setCurDate(sdf1.parse(dateStr)); //当前日期
|
|
|
|
dataResultEntity.setCurDate(date); //当前日期
|
|
|
|
dataResultService.saveDataResult(dataResultEntity); |
|
|
|
dataResultService.saveDataResult(dataResultEntity); |
|
|
|
log.info("电表数据保存数据库成功! 楼栋名称:" + buildingName); |
|
|
|
log.info("电表数据保存数据库成功! 楼栋名称:" + buildingName); |
|
|
|
} catch (Exception e) { |
|
|
|
} catch (Exception e) { |
|
|
|
// e.printStackTrace();
|
|
|
|
log.error("电表数据保存数据库失败!楼栋名称:" + buildingName, e); |
|
|
|
log.error("电表数据保存数据库失败!楼栋名称:"+buildingName); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
log.info("电表报文检验失败: " + dataStr); |
|
|
|
log.info("电表报文检验失败: " + dataStr); |
|
|
@ -202,9 +202,7 @@ public class AnalysisReceiveOrder485 { |
|
|
|
|
|
|
|
|
|
|
|
// 水表
|
|
|
|
// 水表
|
|
|
|
public String analysisWtMeterOrder4852(final String dataStr, final String registerAddr, final String brand, String buildingId, String buildingName) { |
|
|
|
public String analysisWtMeterOrder4852(final String dataStr, final String registerAddr, final String brand, String buildingId, String buildingName) { |
|
|
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
|
|
|
Date date = new Date(); |
|
|
|
Date date = new Date(); |
|
|
|
String dateStr = sdf1.format(date); |
|
|
|
|
|
|
|
String data = ""; |
|
|
|
String data = ""; |
|
|
|
String meterId = ""; |
|
|
|
String meterId = ""; |
|
|
|
if (dataStr.length() == 44 || dataStr.length() == 70) { |
|
|
|
if (dataStr.length() == 44 || dataStr.length() == 70) { |
|
|
@ -216,7 +214,6 @@ public class AnalysisReceiveOrder485 { |
|
|
|
meterId = String.format("%014d", Long.parseLong(meterId)); |
|
|
|
meterId = String.format("%014d", Long.parseLong(meterId)); |
|
|
|
StringBuilder stringBuilder = new StringBuilder(); |
|
|
|
StringBuilder stringBuilder = new StringBuilder(); |
|
|
|
for (int i = 0; i < 4; i++) { |
|
|
|
for (int i = 0; i < 4; i++) { |
|
|
|
//String data1 = checkStr.substring(checkStr.length() - 2 * (i + 1), checkStr.length() - 2 * i);
|
|
|
|
|
|
|
|
String data1 = checkStr.substring(36 - 2 * (i + 1), 36 - 2 * i); |
|
|
|
String data1 = checkStr.substring(36 - 2 * (i + 1), 36 - 2 * i); |
|
|
|
stringBuilder.append(data1); |
|
|
|
stringBuilder.append(data1); |
|
|
|
} |
|
|
|
} |
|
|
@ -233,7 +230,6 @@ public class AnalysisReceiveOrder485 { |
|
|
|
int checkNum = CRC16.CRC16_MODBUS(strOrder); |
|
|
|
int checkNum = CRC16.CRC16_MODBUS(strOrder); |
|
|
|
String checkWord = ExchangeStringUtil.decToHex(String.valueOf(checkNum)); |
|
|
|
String checkWord = ExchangeStringUtil.decToHex(String.valueOf(checkNum)); |
|
|
|
checkWord = checkWord.substring(2, 4) + checkWord.substring(0, 2); |
|
|
|
checkWord = checkWord.substring(2, 4) + checkWord.substring(0, 2); |
|
|
|
String sValue=null; |
|
|
|
|
|
|
|
if (checkWord.equalsIgnoreCase(dataStr.substring(dataStr.length() - 4))) { |
|
|
|
if (checkWord.equalsIgnoreCase(dataStr.substring(dataStr.length() - 4))) { |
|
|
|
meterId = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2));//地址
|
|
|
|
meterId = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2));//地址
|
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) { |
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) { |
|
|
@ -246,20 +242,15 @@ public class AnalysisReceiveOrder485 { |
|
|
|
log.info("水表表号: " + meterId + ",水表读数:" + data); |
|
|
|
log.info("水表表号: " + meterId + ",水表读数:" + data); |
|
|
|
try { |
|
|
|
try { |
|
|
|
DataResultEntity dataResultEntity = new DataResultEntity(); |
|
|
|
DataResultEntity dataResultEntity = new DataResultEntity(); |
|
|
|
// if (meterId.length()>8){
|
|
|
|
|
|
|
|
// dataResultEntity.setDeviceAddr(meterId.substring(meterId.length()-8,meterId.length()));//通讯编号
|
|
|
|
|
|
|
|
// }else{
|
|
|
|
|
|
|
|
dataResultEntity.setDeviceAddr(meterId);//通讯编号
|
|
|
|
dataResultEntity.setDeviceAddr(meterId);//通讯编号
|
|
|
|
// }
|
|
|
|
|
|
|
|
dataResultEntity.setDeviceType("水表"); |
|
|
|
dataResultEntity.setDeviceType("水表"); |
|
|
|
dataResultEntity.setCurValue(Double.parseDouble(data)); //当前读数
|
|
|
|
dataResultEntity.setCurValue(Double.parseDouble(data)); //当前读数
|
|
|
|
dataResultEntity.setCurDate(sdf1.parse(dateStr)); //当前日期
|
|
|
|
dataResultEntity.setCurDate(date); //当前日期
|
|
|
|
dataResultEntity.setBuildingId(buildingId); |
|
|
|
dataResultEntity.setBuildingId(buildingId); |
|
|
|
dataResultService.saveDataResult(dataResultEntity); |
|
|
|
dataResultService.saveDataResult(dataResultEntity); |
|
|
|
log.info("水表数据保存数据库成功!楼栋名称:" + buildingName); |
|
|
|
log.info("水表数据保存数据库成功!楼栋名称:" + buildingName); |
|
|
|
} catch (Exception e) { |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
log.error("水表数据保存数据库失败!楼栋名称:" + buildingName, e); |
|
|
|
log.error("水表数据保存数据库失败!楼栋名称:"+buildingName); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
if (!data.equals("")) { |
|
|
|
if (!data.equals("")) { |
|
|
|
data = String.valueOf(Double.valueOf(data)); |
|
|
|
data = String.valueOf(Double.valueOf(data)); |
|
|
@ -271,17 +262,17 @@ public class AnalysisReceiveOrder485 { |
|
|
|
public void analysisPumpOrder485(final String receiveData, final String registerAddr, final String brand, String buildingId, String buildingName) { |
|
|
|
public void analysisPumpOrder485(final String receiveData, final String registerAddr, final String brand, String buildingId, String buildingName) { |
|
|
|
// if (!Constant.CONTROL_WEB_FLAG) {
|
|
|
|
// if (!Constant.CONTROL_WEB_FLAG) {
|
|
|
|
// threadPoolService.execute(() -> {
|
|
|
|
// threadPoolService.execute(() -> {
|
|
|
|
// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
|
|
// Date date = new Date();
|
|
|
|
|
|
|
|
String dateStr = DateUtil.dateToString(new Date(), "yyyy-MM-dd HH:mm:ss"); |
|
|
|
String dateStr = DateUtil.dateToString(new Date(), "yyyy-MM-dd HH:mm:ss"); |
|
|
|
String checkStr = receiveData.substring(0, receiveData.length() - 4);//检验报文
|
|
|
|
String checkStr = receiveData.substring(0, receiveData.length() - 4);//检验报文
|
|
|
|
String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码
|
|
|
|
String checkWord = ExchangeStringUtil.getStrCRC16(checkStr);//生成校验码
|
|
|
|
String sValue = null; |
|
|
|
String sValue = null; |
|
|
|
String dataType = null; |
|
|
|
String dataType = null; |
|
|
|
if (checkWord.equalsIgnoreCase(receiveData.substring(receiveData.length() - 4))) { |
|
|
|
if (!checkWord.equalsIgnoreCase(receiveData.substring(receiveData.length() - 4))) { |
|
|
|
|
|
|
|
log.info("热泵报文检验失败: " + receiveData); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
String addr = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2));//地址
|
|
|
|
String addr = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2));//地址
|
|
|
|
String data = ""; |
|
|
|
String data = ""; |
|
|
|
// String buildingName=buildingService.queryBuildingName(buildingId); //查询楼栋名称
|
|
|
|
|
|
|
|
if (brand == null || brand.equals("") || brand.equals("美的")) { |
|
|
|
if (brand == null || brand.equals("") || brand.equals("美的")) { |
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {//读
|
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {//读
|
|
|
|
if (registerAddr.equalsIgnoreCase("0641")) { //运行状态
|
|
|
|
if (registerAddr.equalsIgnoreCase("0641")) { //运行状态
|
|
|
@ -442,9 +433,7 @@ public class AnalysisReceiveOrder485 { |
|
|
|
} |
|
|
|
} |
|
|
|
nowDataService.proWaterTemp(dateStr, buildingId, addr); //保存楼栋时间点温度变化
|
|
|
|
nowDataService.proWaterTemp(dateStr, buildingId, addr); //保存楼栋时间点温度变化
|
|
|
|
log.info("----------------保存楼栋时间点温度变化值!----------------"); |
|
|
|
log.info("----------------保存楼栋时间点温度变化值!----------------"); |
|
|
|
}else{ |
|
|
|
|
|
|
|
log.info("热泵报文检验失败: " + receiveData); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// });
|
|
|
|
// });
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
} |
|
|
|
} |
|
|
@ -463,7 +452,7 @@ public class AnalysisReceiveOrder485 { |
|
|
|
log.info("热泵报文检验成功: " + receiveData); |
|
|
|
log.info("热泵报文检验成功: " + receiveData); |
|
|
|
String addr = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2)); |
|
|
|
String addr = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2)); |
|
|
|
String data = ""; |
|
|
|
String data = ""; |
|
|
|
if (brand==null || brand.equals("") || brand.equals("美的")){ |
|
|
|
if (StringUtils.isBlank(brand) || brand.equals("美的")) { |
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {//读
|
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {//读
|
|
|
|
if (registerAddr.equalsIgnoreCase("0641")) { //运行状态
|
|
|
|
if (registerAddr.equalsIgnoreCase("0641")) { //运行状态
|
|
|
|
dataType = "runState"; |
|
|
|
dataType = "runState"; |
|
|
@ -483,10 +472,6 @@ public class AnalysisReceiveOrder485 { |
|
|
|
nowDataService.proPumpMinutes(buildingId, addr, sValue); |
|
|
|
nowDataService.proPumpMinutes(buildingId, addr, sValue); |
|
|
|
log.info("计算热泵运行时长,楼栋名称:" + buildingName + ",热泵编号:" + addr + ",状态:" + sValue); |
|
|
|
log.info("计算热泵运行时长,楼栋名称:" + buildingName + ",热泵编号:" + addr + ",状态:" + sValue); |
|
|
|
nowDataService.saveNowHistoryData(addr, "热泵", sValue, dataType, buildingId); |
|
|
|
nowDataService.saveNowHistoryData(addr, "热泵", sValue, dataType, buildingId); |
|
|
|
// NowPublicDataEntity publicData=new NowPublicDataEntity();
|
|
|
|
|
|
|
|
// publicData.setBuildingId(buildingId);
|
|
|
|
|
|
|
|
// publicData.setUpWater(sValue);
|
|
|
|
|
|
|
|
// nowPublicDataService.saveNowHistoryPublicData(publicData);
|
|
|
|
|
|
|
|
log.info("时间: " + dateStr + ",热泵ID: " + addr + ",数据: " + sValue + "保存数据库成功!楼栋名称:" + buildingName); |
|
|
|
log.info("时间: " + dateStr + ",热泵ID: " + addr + ",数据: " + sValue + "保存数据库成功!楼栋名称:" + buildingName); |
|
|
|
} else if (registerAddr.equalsIgnoreCase("0642") || registerAddr.equalsIgnoreCase("0007")) { |
|
|
|
} else if (registerAddr.equalsIgnoreCase("0642") || registerAddr.equalsIgnoreCase("0007")) { |
|
|
|
//0642设定温度,0007水箱水温
|
|
|
|
//0642设定温度,0007水箱水温
|
|
|
@ -522,7 +507,8 @@ public class AnalysisReceiveOrder485 { |
|
|
|
} |
|
|
|
} |
|
|
|
nowDataService.saveNowHistoryData(addr, "热泵", sValue, dataType, buildingId); |
|
|
|
nowDataService.saveNowHistoryData(addr, "热泵", sValue, dataType, buildingId); |
|
|
|
log.info("时间: " + dateStr + ",热泵ID: " + addr + ",数据: " + sValue + "保存数据库成功!楼栋名称:" + buildingName); |
|
|
|
log.info("时间: " + dateStr + ",热泵ID: " + addr + ",数据: " + sValue + "保存数据库成功!楼栋名称:" + buildingName); |
|
|
|
}else if (registerAddr.equalsIgnoreCase("0656") || registerAddr.equalsIgnoreCase("065A") |
|
|
|
} else if (registerAddr.equalsIgnoreCase("0656") |
|
|
|
|
|
|
|
|| registerAddr.equalsIgnoreCase("065A") |
|
|
|
|| registerAddr.equalsIgnoreCase("065E")) { //读定时设置值
|
|
|
|
|| registerAddr.equalsIgnoreCase("065E")) { //读定时设置值
|
|
|
|
String startTime = checkStr.substring(8, 10) + checkStr.substring(12, 14); |
|
|
|
String startTime = checkStr.substring(8, 10) + checkStr.substring(12, 14); |
|
|
|
String closetTime = checkStr.substring(16, 18) + checkStr.substring(20, 22); |
|
|
|
String closetTime = checkStr.substring(16, 18) + checkStr.substring(20, 22); |
|
|
@ -533,7 +519,7 @@ public class AnalysisReceiveOrder485 { |
|
|
|
} |
|
|
|
} |
|
|
|
rtData = sValue; |
|
|
|
rtData = sValue; |
|
|
|
} else if (brand.equals("美的2")) { |
|
|
|
} else if (brand.equals("美的2")) { |
|
|
|
System.out.println("品牌:"+brand+","+"寄存器地址:"+registerAddr); |
|
|
|
log.info("品牌:" + brand + "," + "寄存器地址:" + registerAddr); |
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {// 读
|
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {// 读
|
|
|
|
if (registerAddr.equalsIgnoreCase("0BBD")) { //运行状态
|
|
|
|
if (registerAddr.equalsIgnoreCase("0BBD")) { //运行状态
|
|
|
|
dataType = "runState"; |
|
|
|
dataType = "runState"; |
|
|
@ -559,10 +545,6 @@ public class AnalysisReceiveOrder485 { |
|
|
|
nowDataService.proPumpMinutes(buildingId, addr, sValue); |
|
|
|
nowDataService.proPumpMinutes(buildingId, addr, sValue); |
|
|
|
log.info("计算热泵运行时长,楼栋名称:" + buildingName + ",热泵编号:" + addr + ",状态:" + sValue); |
|
|
|
log.info("计算热泵运行时长,楼栋名称:" + buildingName + ",热泵编号:" + addr + ",状态:" + sValue); |
|
|
|
nowDataService.saveNowHistoryData(addr, "热泵", sValue, dataType, buildingId); |
|
|
|
nowDataService.saveNowHistoryData(addr, "热泵", sValue, dataType, buildingId); |
|
|
|
// NowPublicDataEntity publicData=new NowPublicDataEntity();
|
|
|
|
|
|
|
|
// publicData.setBuildingId(buildingId);
|
|
|
|
|
|
|
|
// publicData.setUpWater(sValue);
|
|
|
|
|
|
|
|
// nowPublicDataService.saveNowHistoryPublicData(publicData);
|
|
|
|
|
|
|
|
log.info("时间: " + dateStr + ",热泵ID: " + addr + ",数据: " + sValue + "保存数据库成功!楼栋名称:" + buildingName); |
|
|
|
log.info("时间: " + dateStr + ",热泵ID: " + addr + ",数据: " + sValue + "保存数据库成功!楼栋名称:" + buildingName); |
|
|
|
} else if (registerAddr.equalsIgnoreCase("0003") || registerAddr.equalsIgnoreCase("0064")) { |
|
|
|
} else if (registerAddr.equalsIgnoreCase("0003") || registerAddr.equalsIgnoreCase("0064")) { |
|
|
|
//0003设定温度,0064水箱水温
|
|
|
|
//0003设定温度,0064水箱水温
|
|
|
@ -596,7 +578,8 @@ public class AnalysisReceiveOrder485 { |
|
|
|
} |
|
|
|
} |
|
|
|
nowDataService.saveNowHistoryData(addr, "热泵", sValue, dataType, buildingId); |
|
|
|
nowDataService.saveNowHistoryData(addr, "热泵", sValue, dataType, buildingId); |
|
|
|
log.info("时间: " + dateStr + ",热泵ID: " + addr + ",数据: " + sValue + "保存数据库成功!楼栋名称:" + buildingName); |
|
|
|
log.info("时间: " + dateStr + ",热泵ID: " + addr + ",数据: " + sValue + "保存数据库成功!楼栋名称:" + buildingName); |
|
|
|
}else if (registerAddr.equalsIgnoreCase("0656") || registerAddr.equalsIgnoreCase("065A") |
|
|
|
} else if (registerAddr.equalsIgnoreCase("0656") |
|
|
|
|
|
|
|
|| registerAddr.equalsIgnoreCase("065A") |
|
|
|
|| registerAddr.equalsIgnoreCase("065E")) { //定时设置值
|
|
|
|
|| registerAddr.equalsIgnoreCase("065E")) { //定时设置值
|
|
|
|
String startTime = checkStr.substring(8, 10) + checkStr.substring(12, 14); |
|
|
|
String startTime = checkStr.substring(8, 10) + checkStr.substring(12, 14); |
|
|
|
String closetTime = checkStr.substring(16, 18) + checkStr.substring(20, 22); |
|
|
|
String closetTime = checkStr.substring(16, 18) + checkStr.substring(20, 22); |
|
|
@ -741,6 +724,7 @@ public class AnalysisReceiveOrder485 { |
|
|
|
checkWord = checkWord.substring(2, 4) + checkWord.substring(0, 2); |
|
|
|
checkWord = checkWord.substring(2, 4) + checkWord.substring(0, 2); |
|
|
|
if (!checkWord.equalsIgnoreCase(receiveData.substring(receiveData.length() - 4))) { |
|
|
|
if (!checkWord.equalsIgnoreCase(receiveData.substring(receiveData.length() - 4))) { |
|
|
|
log.info("温控报文检验失败: " + receiveData); |
|
|
|
log.info("温控报文检验失败: " + receiveData); |
|
|
|
|
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
String addr = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2));//地址
|
|
|
|
String addr = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2));//地址
|
|
|
|
String data = ""; |
|
|
|
String data = ""; |
|
|
@ -769,21 +753,21 @@ public class AnalysisReceiveOrder485 { |
|
|
|
|
|
|
|
|
|
|
|
// 压变,长度14,18读功能03
|
|
|
|
// 压变,长度14,18读功能03
|
|
|
|
public void analysisPressureOrder485(final String receiveData, final String registerAddr, final String brand, String buildingId, String buildingName) { |
|
|
|
public void analysisPressureOrder485(final String receiveData, final String registerAddr, final String brand, String buildingId, String buildingName) { |
|
|
|
// if (!Constant.CONTROL_WEB_FLAG) {
|
|
|
|
|
|
|
|
// threadPoolService.execute(() -> {
|
|
|
|
// threadPoolService.execute(() -> {
|
|
|
|
String checkStr = receiveData.substring(0, receiveData.length() - 4);// 检验报文
|
|
|
|
String checkStr = receiveData.substring(0, receiveData.length() - 4);// 检验报文
|
|
|
|
byte[] strOrder = ExchangeStringUtil.hexStrToBinaryStr(checkStr); |
|
|
|
byte[] strOrder = ExchangeStringUtil.hexStrToBinaryStr(checkStr); |
|
|
|
int checkNum = CRC16.CRC16_MODBUS(strOrder); |
|
|
|
int checkNum = CRC16.CRC16_MODBUS(strOrder); |
|
|
|
String checkWord = ExchangeStringUtil.decToHex(String.valueOf(checkNum)); |
|
|
|
String checkWord = ExchangeStringUtil.decToHex(String.valueOf(checkNum)); |
|
|
|
checkWord = checkWord.substring(2, 4) + checkWord.substring(0, 2); |
|
|
|
checkWord = checkWord.substring(2, 4) + checkWord.substring(0, 2); |
|
|
|
String sValue=null; |
|
|
|
if (!checkWord.equalsIgnoreCase(receiveData.substring(receiveData.length() - 4))) { |
|
|
|
if (checkWord.equalsIgnoreCase(receiveData.substring(receiveData.length() - 4))) { |
|
|
|
log.info("压变报文检验失败: " + receiveData); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
Date date = new Date(); |
|
|
|
Date date = new Date(); |
|
|
|
String dateStr = sdf1.format(date); |
|
|
|
String dateStr = sdf1.format(date); |
|
|
|
String addr = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2));//地址
|
|
|
|
String addr = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2));//地址
|
|
|
|
String data = ""; |
|
|
|
String data = ""; |
|
|
|
// String buildingName=buildingService.queryBuildingName(buildingId); //查询楼栋名称
|
|
|
|
|
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {// 读
|
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {// 读
|
|
|
|
Double wtHeight = 0.0; |
|
|
|
Double wtHeight = 0.0; |
|
|
|
if (brand == null || brand.equals("")) { |
|
|
|
if (brand == null || brand.equals("")) { |
|
|
@ -811,11 +795,7 @@ public class AnalysisReceiveOrder485 { |
|
|
|
nowDataService.proWaterLevel(dateStr, buildingId); //楼栋水位
|
|
|
|
nowDataService.proWaterLevel(dateStr, buildingId); //楼栋水位
|
|
|
|
log.info("------保存每栋楼小时水位情况" + dateStr + "------"); |
|
|
|
log.info("------保存每栋楼小时水位情况" + dateStr + "------"); |
|
|
|
} |
|
|
|
} |
|
|
|
}else{ |
|
|
|
|
|
|
|
log.info("压变报文检验失败: " + receiveData); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// });
|
|
|
|
// });
|
|
|
|
// }
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 压变,长度14,18读功能03
|
|
|
|
// 压变,长度14,18读功能03
|
|
|
@ -826,7 +806,6 @@ public class AnalysisReceiveOrder485 { |
|
|
|
int checkNum = CRC16.CRC16_MODBUS(strOrder); |
|
|
|
int checkNum = CRC16.CRC16_MODBUS(strOrder); |
|
|
|
String checkWord = ExchangeStringUtil.decToHex(String.valueOf(checkNum)); |
|
|
|
String checkWord = ExchangeStringUtil.decToHex(String.valueOf(checkNum)); |
|
|
|
checkWord = checkWord.substring(2, 4) + checkWord.substring(0, 2); |
|
|
|
checkWord = checkWord.substring(2, 4) + checkWord.substring(0, 2); |
|
|
|
String sValue=null; |
|
|
|
|
|
|
|
if (checkWord.equalsIgnoreCase(receiveData.substring(receiveData.length() - 4))) { |
|
|
|
if (checkWord.equalsIgnoreCase(receiveData.substring(receiveData.length() - 4))) { |
|
|
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
Date date = new Date(); |
|
|
|
Date date = new Date(); |
|
|
@ -835,7 +814,7 @@ public class AnalysisReceiveOrder485 { |
|
|
|
String data = ""; |
|
|
|
String data = ""; |
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {// 读
|
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {// 读
|
|
|
|
Double wtHeight = 0.0; |
|
|
|
Double wtHeight = 0.0; |
|
|
|
if (brand==null || brand.equals("")){ |
|
|
|
if (StringUtils.isBlank(brand)) { |
|
|
|
float fdata = ExchangeStringUtil.hexToSingle(checkStr.substring(6, 14));//十六进制转浮点型
|
|
|
|
float fdata = ExchangeStringUtil.hexToSingle(checkStr.substring(6, 14));//十六进制转浮点型
|
|
|
|
wtHeight = fdata * 1.02; //通过压力求水高
|
|
|
|
wtHeight = fdata * 1.02; //通过压力求水高
|
|
|
|
} else if (brand.equals("澳升") || brand.equals("汝翊")) { |
|
|
|
} else if (brand.equals("澳升") || brand.equals("汝翊")) { |
|
|
@ -1509,7 +1488,6 @@ public class AnalysisReceiveOrder485 { |
|
|
|
|
|
|
|
|
|
|
|
//状态检测
|
|
|
|
//状态检测
|
|
|
|
public void analysisStateOrder485(final String dataStr, final String registerAddr, final String brand, String buildingId, String buildingName) { |
|
|
|
public void analysisStateOrder485(final String dataStr, final String registerAddr, final String brand, String buildingId, String buildingName) { |
|
|
|
// threadPoolService.execute(() -> {
|
|
|
|
|
|
|
|
if (dataStr.length() == 30) { |
|
|
|
if (dataStr.length() == 30) { |
|
|
|
//检验报文
|
|
|
|
//检验报文
|
|
|
|
String checkStr = dataStr.substring(0, dataStr.length() - 4); //减去校验码
|
|
|
|
String checkStr = dataStr.substring(0, dataStr.length() - 4); //减去校验码
|
|
|
@ -1561,13 +1539,12 @@ public class AnalysisReceiveOrder485 { |
|
|
|
nowDataService.proPumpMinutes(buildingId, "1", hotPump); //如果只有一台热泵,pumpId为1
|
|
|
|
nowDataService.proPumpMinutes(buildingId, "1", hotPump); //如果只有一台热泵,pumpId为1
|
|
|
|
log.info("状态ID:" + meterId + ",回水:" + backWater + ",补水:" + upWater + ",供水:" + useWater + ",热泵:" + hotPump + ",保存数据成功!楼栋:" + buildingName); |
|
|
|
log.info("状态ID:" + meterId + ",回水:" + backWater + ",补水:" + upWater + ",供水:" + useWater + ",热泵:" + hotPump + ",保存数据成功!楼栋:" + buildingName); |
|
|
|
} catch (Exception e) { |
|
|
|
} catch (Exception e) { |
|
|
|
// e.printStackTrace();
|
|
|
|
log.error("解析状态检测异常==>", e); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
log.info("状态检测报文检验失败: " + dataStr); |
|
|
|
log.info("状态检测报文检验失败: " + dataStr); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// });
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//时间控制器,长度26、22
|
|
|
|
//时间控制器,长度26、22
|
|
|
|