From 47a6e1672fdb50840501bd30281ae531bebd1a38 Mon Sep 17 00:00:00 2001 From: 25604 Date: Wed, 16 Jul 2025 16:39:36 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=B7=BB=E5=8A=A0modbus=E7=94=B5?= =?UTF-8?q?=E8=A1=A8=E9=80=9A=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DataResultServiceImpl.java | 4 +- .../impl/DealDataExceptionServiceImpl.java | 4 +- .../service/impl/MeterManageServiceImpl.java | 1 + .../user/strategy/ModbusProtocolStrategy.java | 37 +++++++++++++++++-- .../main/java/com/mh/user/utils/AESUtil.java | 6 ++- 5 files changed, 43 insertions(+), 9 deletions(-) diff --git a/user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java index 94848fd..ae69c48 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java @@ -409,7 +409,9 @@ public class DataResultServiceImpl implements DataResultService { } else { count = dataResultFiveMiCount(projectId, startDate, curDate, momentCoolingStr, registerAddr); } - dealDataExceptionService.dealFifteenInstantaneousExceptionData(mergedRecords); + new Thread(() ->{ + dealDataExceptionService.dealFifteenInstantaneousExceptionData(mergedRecords); + }).start(); return HttpResult.ok(count, mergedRecords); } // else if (dateType.equals("12小时")) { diff --git a/user-service/src/main/java/com/mh/user/service/impl/DealDataExceptionServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/DealDataExceptionServiceImpl.java index 3f3f969..7f17b58 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/DealDataExceptionServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/DealDataExceptionServiceImpl.java @@ -41,7 +41,7 @@ public class DealDataExceptionServiceImpl implements DealDataExceptionService { BigDecimal momentCooling = new BigDecimal(dataResultDTO.getMomentCooling()); return momentCooling.compareTo(BigDecimal.ZERO) <= 0; }).collect(Collectors.toList()); - if (momentCoolingList.size() <= 10 && !momentCoolingList.isEmpty()) { + if (momentCoolingList.size() <= 20 && !momentCoolingList.isEmpty()) { // 重新计算momentCooling的值 for (DataResultDTO dataResultDTO : momentCoolingList) { // 将字符串转换为 LocalDateTime @@ -58,7 +58,7 @@ public class DealDataExceptionServiceImpl implements DealDataExceptionService { BigDecimal intTemp = new BigDecimal(dataResultDTO.getIntTemp()); return intTemp.compareTo(BigDecimal.ZERO) <= 0; }).collect(Collectors.toList()); - if (intTempList.size() <= 10 && !intTempList.isEmpty()) { + if (intTempList.size() <= 20 && !intTempList.isEmpty()) { // 重新计算intTemp,outTemp的值 for (DataResultDTO dataResultDTO : intTempList) { // 将字符串转换为 LocalDateTime diff --git a/user-service/src/main/java/com/mh/user/service/impl/MeterManageServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/MeterManageServiceImpl.java index 876b9ef..de5d214 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/MeterManageServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/MeterManageServiceImpl.java @@ -93,6 +93,7 @@ public class MeterManageServiceImpl implements MeterManageService { // 电表格式化成12位 if (entity.getMtType() == 1) { entity.setMtCode(ExchangeStringUtil.addZeroForNum(entity.getMtCode(), 12)); + entity.setMtNum(ExchangeStringUtil.addZeroForNum(entity.getMtNum(), 12)); } meterManageMapper.updateById(entity); // 更新对应的设备采集参数 diff --git a/user-service/src/main/java/com/mh/user/strategy/ModbusProtocolStrategy.java b/user-service/src/main/java/com/mh/user/strategy/ModbusProtocolStrategy.java index df8a422..4ce4296 100644 --- a/user-service/src/main/java/com/mh/user/strategy/ModbusProtocolStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/ModbusProtocolStrategy.java @@ -2,10 +2,7 @@ package com.mh.user.strategy; import com.mh.common.utils.StringUtils; import com.mh.user.constants.Constant; -import com.mh.user.entity.DataResultChEntity; -import com.mh.user.entity.DataResultClEntity; -import com.mh.user.entity.DeviceCodeParamEntity; -import com.mh.user.entity.MeterManageEntity; +import com.mh.user.entity.*; import com.mh.user.service.DataResultService; import com.mh.user.service.ProjectInfoService; import com.mh.user.utils.ExchangeStringUtil; @@ -134,6 +131,9 @@ public class ModbusProtocolStrategy implements ProtocolStrategy { analysisCloudOrder485(sValue, deviceCodeParamEntity); } else if ("0".equals(deviceCodeParamEntity.getDeviceType())) { analysisChillerOrder485(sValue, deviceCodeParamEntity); + } else if ("1".equals(deviceCodeParamEntity.getDeviceType())) { + // 解析入库 + analysisMeterOrder485(sValue, deviceCodeParamEntity); } } catch (NumberFormatException e) { log.error("modbus标准协议:策略解析报文异常", e); @@ -141,6 +141,35 @@ public class ModbusProtocolStrategy implements ProtocolStrategy { return sValue; } + /** + * 解析电表返回的数据 + * + * @param dataStr + */ + public void analysisMeterOrder485(final String dataStr, final DeviceCodeParamEntity deviceCodeParam) { + threadPoolService.execute(() -> { + Date date = new Date(); + String dateStr = sdf1.format(date); + try { + DataResultEntity dataResultEntity = new DataResultEntity(); + dataResultEntity.setDeviceAddr(deviceCodeParam.getDeviceAddr()); //通讯编号 + dataResultEntity.setDeviceType(deviceCodeParam.getDeviceType()); //类型 + dataResultEntity.setProjectId(deviceCodeParam.getProjectId()); //所属项目 + dataResultEntity.setCurValue(new BigDecimal(dataStr)); //当前读数 + dataResultEntity.setCurDate(sdf1.parse(dateStr)); //当前日期 + dataResultEntity.setGrade(deviceCodeParam.getGrade()); + dataResultEntity.setRegisterAddr(deviceCodeParam.getRegisterAddr()); + dataResultEntity.setRegisterName(deviceCodeParam.getRegisterName()); + String projectName = projectInfoService.selectName(deviceCodeParam.getProjectId()); + log.info("电表==>{},读数==>{},项目名称==>{}", deviceCodeParam.getDeviceAddr(), dataStr, projectName); + dataResultService.saveDataResult(dataResultEntity); + log.info("电表保存数据成功!项目名称:{}", projectName); + } catch (Exception e) { + log.error("保存电表数据失败!", e); + } + }); + } + /** * 解析冷水机组返回的数据 */ diff --git a/user-service/src/main/java/com/mh/user/utils/AESUtil.java b/user-service/src/main/java/com/mh/user/utils/AESUtil.java index 2705a2a..020c40d 100644 --- a/user-service/src/main/java/com/mh/user/utils/AESUtil.java +++ b/user-service/src/main/java/com/mh/user/utils/AESUtil.java @@ -21,8 +21,10 @@ public class AESUtil { private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding"; // 默认的加密算法,CBC模式 public static void main(String[] args) throws Exception { - String s = AESencrypt("test"); - System.out.println(s); + String dataStr = "030302002d0199"; + String data = dataStr.substring(dataStr.length() - 8, dataStr.length() - 6) + + dataStr.substring(dataStr.length() - 6, dataStr.length() - 4); + System.out.println(data); } /**