Browse Source

兼容时间格式

Gaokun Wang 4 months ago
parent
commit
69aa29dbf3

+ 15 - 5
als-common/common-core/src/main/java/org/eco/common/core/utils/DateUtils.java

@@ -1,15 +1,13 @@
 package org.eco.common.core.utils;
 
+import cn.hutool.core.util.ReUtil;
 import org.apache.commons.lang3.time.DateFormatUtils;
+import org.eco.common.core.exception.BusinessException;
 
 import java.lang.management.ManagementFactory;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
+import java.time.*;
 import java.util.Date;
 
 /**
@@ -165,4 +163,16 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
         ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
         return Date.from(zdt.toInstant());
     }
+
+    public static String checkTimeFormat(String timeStr) {
+        // 尝试解析为完整日期时间格式
+        if (ReUtil.isMatch("^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3}$", timeStr)) {
+            return "yyyy-MM-dd HH:mm:ss.SSS";
+        }
+        // 尝试解析为时间格式
+        else if (ReUtil.isMatch("^\\d{2}:\\d{2}:\\d{2}\\.\\d{3}$", timeStr)) {
+            return "HH:mm:ss.SSS";
+        }
+        throw new BusinessException("时间格式错误");
+    }
 }

+ 10 - 3
als-modules/agile-assurance/src/main/java/org/eco/als/utils/CheckVibrationDuration.java

@@ -3,6 +3,8 @@ package org.eco.als.utils;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.format.FastDateFormat;
 import com.ql.util.express.Operator;
+import org.eco.common.core.exception.BusinessException;
+import org.eco.common.core.utils.DateUtils;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -15,13 +17,15 @@ public class CheckVibrationDuration extends Operator {
     private static final Map<String, Long> VIBRATION_STATE = new HashMap<>();
 
     @Override
-    public Object executeInner(Object[] list) throws Exception {
+    public Object executeInner(Object[] list) {
+        try {
         double currentVibration = (Double) list[0];
         String symbol = list[1].toString();
         double targetVibration = (Double) list[2];
         double durationSeconds = (Double) list[3];
-        FastDateFormat format = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss.SSS");
-        long firstTimeDefault = DateUtil.parse((String) list[4], format).getTime();
+            String curr = (String) list[4];
+            FastDateFormat format = FastDateFormat.getInstance(DateUtils.checkTimeFormat(curr));
+            long firstTimeDefault = DateUtil.parse(curr, format).getTime();
         boolean result = false;
         switch (symbol) {
             case "=":
@@ -58,5 +62,8 @@ public class CheckVibrationDuration extends Operator {
         long elapsedSeconds = (firstTimeDefault - firstTime) / 1000;
         // 返回是否满足持续时间要求
         return elapsedSeconds >= durationSeconds;
+        } catch (Exception e) {
+            throw new BusinessException(e.getMessage());
+        }
     }
 }

+ 5 - 4
als-modules/agile-assurance/src/main/java/org/eco/als/utils/CsvUtils.java

@@ -1,7 +1,6 @@
 package org.eco.als.utils;
 
 import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.map.MapUtil;
@@ -304,8 +303,9 @@ public class CsvUtils {
         Date beginDate = null;
         Date endDate = null;
         if (StrUtil.isNotBlank(begin) && StrUtil.isNotBlank(end)) {
-            beginDate = DateUtil.parse(begin, DatePattern.NORM_DATETIME_MS_PATTERN);
-            endDate = DateUtil.parse(end, DatePattern.NORM_DATETIME_MS_PATTERN);
+
+            beginDate = DateUtil.parse(begin, DateUtils.checkTimeFormat(begin));
+            endDate = DateUtil.parse(end, DateUtils.checkTimeFormat(end));
         }
         // 去除第一行,保留后续数据
         List<CsvRow> dataLines = rows.subList(1, rows.size());
@@ -313,7 +313,8 @@ public class CsvUtils {
         for (int i = 0; i < headers.size(); i++) {
             JSONArray jsonArray = new JSONArray();
             for (CsvRow line : dataLines) {
-                Date currDate = DateUtil.parse(line.getRawList().get(headers.indexOf("时间")), DatePattern.NORM_DATETIME_MS_PATTERN);
+                String curr = line.getRawList().get(headers.indexOf("时间"));
+                Date currDate = DateUtil.parse(curr, DateUtils.checkTimeFormat(curr));
                 if (!(ObjUtil.isEmpty(beginDate) || ObjUtil.isEmpty(end)) && !DateUtil.isIn(currDate, beginDate, endDate)) {
                     continue;
                 }

+ 1 - 0
als-start/src/main/resources/application-prod.yml

@@ -167,6 +167,7 @@ easy-es:
   banner: false # 默认为true 打印banner 若您不期望打印banner,可配置为false
   username: elk #es用户名,若无则删去此行配置
   password: #es密码,若无则删去此行配置
+  
 --- # 定时任务配置
 scheduling:
   enabled: true