From acdc64162b17d8d67d5b8695481898ce6cbb9131 Mon Sep 17 00:00:00 2001 From: "3067418132@qq.com" Date: Thu, 7 May 2026 16:35:11 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=AD=98=E5=82=A8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mh/user/strategy/EleProtocolStrategy.java | 36 +++++++++++++++++-- .../user/strategy/ModbusProtocolStrategy.java | 35 +++++++++++++----- .../com/mh/user/utils/ExchangeStringUtil.java | 2 +- 3 files changed, 62 insertions(+), 11 deletions(-) diff --git a/user-service/src/main/java/com/mh/user/strategy/EleProtocolStrategy.java b/user-service/src/main/java/com/mh/user/strategy/EleProtocolStrategy.java index ee5648d..540291d 100644 --- a/user-service/src/main/java/com/mh/user/strategy/EleProtocolStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/EleProtocolStrategy.java @@ -21,6 +21,7 @@ import org.springframework.context.ApplicationContext; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.SimpleDateFormat; +import java.util.Calendar; import java.util.Date; import java.util.concurrent.ThreadPoolExecutor; @@ -176,14 +177,45 @@ public class EleProtocolStrategy implements ProtocolStrategy { public void analysisMeterOrder485(final String dataStr, final DeviceCodeParamEntity deviceCodeParam) { // threadPoolService.execute(() -> { Date date = new Date(); - String dateStr = sdf1.format(date); + // 使用Calendar进行更安全的时间处理 + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + + if (ExchangeStringUtil.isInDate(date, "00:00:00", "00:05:00")) { + cal.set(Calendar.MINUTE, 0); + } else if (ExchangeStringUtil.isInDate(date, "00:05:00", "00:10:00")) { + cal.set(Calendar.MINUTE, 5); + } else if (ExchangeStringUtil.isInDate(date, "00:10:00", "00:15:00")) { + cal.set(Calendar.MINUTE, 10); + } else if (ExchangeStringUtil.isInDate(date, "00:15:00", "00:20:00")) { + cal.set(Calendar.MINUTE, 15); + } else if (ExchangeStringUtil.isInDate(date, "00:20:00", "00:25:00")) { + cal.set(Calendar.MINUTE, 20); + } else if (ExchangeStringUtil.isInDate(date, "00:25:00", "00:30:00")) { + cal.set(Calendar.MINUTE, 25); + } else if (ExchangeStringUtil.isInDate(date, "00:30:00", "00:35:00")) { + cal.set(Calendar.MINUTE, 30); + } else if (ExchangeStringUtil.isInDate(date, "00:35:00", "00:40:00")) { + cal.set(Calendar.MINUTE, 35); + } else if (ExchangeStringUtil.isInDate(date, "00:40:00", "00:45:00")) { + cal.set(Calendar.MINUTE, 40); + } else if (ExchangeStringUtil.isInDate(date, "00:45:00", "00:50:00")) { + cal.set(Calendar.MINUTE, 45); + } else if (ExchangeStringUtil.isInDate(date, "00:50:00", "00:55:00")) { + cal.set(Calendar.MINUTE, 50); + } else if (ExchangeStringUtil.isInDate(date, "00:55:00", "00:59:00")) { + cal.set(Calendar.MINUTE, 55); + } + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + date = cal.getTime(); 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.setCurDate(date); //当前日期 dataResultEntity.setGrade(deviceCodeParam.getGrade()); dataResultEntity.setRegisterAddr(deviceCodeParam.getRegisterAddr()); dataResultEntity.setRegisterName(deviceCodeParam.getRegisterName()); 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 16ce5d0..813b3e9 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 @@ -229,15 +229,34 @@ public class ModbusProtocolStrategy implements ProtocolStrategy { Calendar cal = Calendar.getInstance(); cal.setTime(date); - if (ExchangeStringUtil.isInDate(date, "00:00:00", "00:00:30")) { - cal.set(Calendar.SECOND, 0); - date = cal.getTime(); - log.info("插入时间00: {}", sdf1.format(date)); - } else if (ExchangeStringUtil.isInDate(date, "00:00:30", "00:00:59")) { - cal.set(Calendar.SECOND, 30); - date = cal.getTime(); - log.info("插入时间30: {}", sdf1.format(date)); + if (ExchangeStringUtil.isInDate(date, "00:00:00", "00:05:00")) { + cal.set(Calendar.MINUTE, 0); + } else if (ExchangeStringUtil.isInDate(date, "00:05:00", "00:10:00")) { + cal.set(Calendar.MINUTE, 5); + } else if (ExchangeStringUtil.isInDate(date, "00:10:00", "00:15:00")) { + cal.set(Calendar.MINUTE, 10); + } else if (ExchangeStringUtil.isInDate(date, "00:15:00", "00:20:00")) { + cal.set(Calendar.MINUTE, 15); + } else if (ExchangeStringUtil.isInDate(date, "00:20:00", "00:25:00")) { + cal.set(Calendar.MINUTE, 20); + } else if (ExchangeStringUtil.isInDate(date, "00:25:00", "00:30:00")) { + cal.set(Calendar.MINUTE, 25); + } else if (ExchangeStringUtil.isInDate(date, "00:30:00", "00:35:00")) { + cal.set(Calendar.MINUTE, 30); + } else if (ExchangeStringUtil.isInDate(date, "00:35:00", "00:40:00")) { + cal.set(Calendar.MINUTE, 35); + } else if (ExchangeStringUtil.isInDate(date, "00:40:00", "00:45:00")) { + cal.set(Calendar.MINUTE, 40); + } else if (ExchangeStringUtil.isInDate(date, "00:45:00", "00:50:00")) { + cal.set(Calendar.MINUTE, 45); + } else if (ExchangeStringUtil.isInDate(date, "00:50:00", "00:55:00")) { + cal.set(Calendar.MINUTE, 50); + } else if (ExchangeStringUtil.isInDate(date, "00:55:00", "00:59:00")) { + cal.set(Calendar.MINUTE, 55); } + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + date = cal.getTime(); try { if (grade >= 140 && grade <= 149) { diff --git a/user-service/src/main/java/com/mh/user/utils/ExchangeStringUtil.java b/user-service/src/main/java/com/mh/user/utils/ExchangeStringUtil.java index 9d0d21e..78fbf1e 100644 --- a/user-service/src/main/java/com/mh/user/utils/ExchangeStringUtil.java +++ b/user-service/src/main/java/com/mh/user/utils/ExchangeStringUtil.java @@ -1289,7 +1289,7 @@ public class ExchangeStringUtil { // } else { // return false; // } - if (strDateS >= strDateBeginS && strDateS < strDateEndS) { + if (strDateM >= strDateBeginM && strDateM < strDateEndM) { return true; } else { return false;