Browse Source

格式化时间日期字符串

andyliu 3 weeks ago
parent
commit
1326aedc78

+ 5 - 5
src/main/java/com/shkpr/service/warncore/bizhandler/SiteDataWarnHandler.java

@@ -71,7 +71,7 @@ public class SiteDataWarnHandler {
         int curClock = (int)((curUTCTm/1000/60/60%24+8)%24);
         long queryBeginUTC = 0L, queryEndUTC = 0L;
         final String curDate = TimeTool.convertUTC2DateStr(curUTCTm, TimeTool.YEAR_MONTH_DAY_FORMAT);
-        long conditionMinUTC = TimeTool.convertDateStr2UTC(String.format("%s %2d:00:00"
+        long conditionMinUTC = TimeTool.convertDateStr2UTC(String.format("%s %02d:00:00"
                 , curDate
                 , rules.get(0).getStarts()));//触发规则列表中第一个时段的起始时刻
         if (FrequencyUnit.MIN.equals(planDetail.getFrequencyUnit())){//以分钟为单位进行分析
@@ -96,10 +96,10 @@ public class SiteDataWarnHandler {
                     findStartClock = rules.get(i).getStarts();
                     if (FrequencyUnit.MIN.equals(planDetail.getFrequencyUnit())){//以分钟为单位进行分析
                         queryEndUTC = Math.min(curUTCTm
-                                , TimeTool.convertDateStr2UTC(String.format("%s %2d:59:59", curDate, rules.get(i).getEnds())));
+                                , TimeTool.convertDateStr2UTC(String.format("%s %02d:59:59", curDate, rules.get(i).getEnds())));
                     }else {//以小时或其他单位进行分析
-                        queryEndUTC = Math.min(TimeTool.convertDateStr2UTC(String.format("%s %2d:59:59", curDate, curClock))
-                                , TimeTool.convertDateStr2UTC(String.format("%s %2d:59:59", curDate, rules.get(i).getEnds())));
+                        queryEndUTC = Math.min(TimeTool.convertDateStr2UTC(String.format("%s %02d:59:59", curDate, curClock))
+                                , TimeTool.convertDateStr2UTC(String.format("%s %02d:59:59", curDate, rules.get(i).getEnds())));
                     }
                     break;
                 }
@@ -118,7 +118,7 @@ public class SiteDataWarnHandler {
                 if (findStartClock == rules.get(i).getEnds())
                     findStartClock = rules.get(i).getStarts()-1;
             }
-            queryBeginUTC = TimeTool.convertDateStr2UTC(String.format("%s %2d:00:00", curDate, findStartClock+1));
+            queryBeginUTC = TimeTool.convertDateStr2UTC(String.format("%s %02d:00:00", curDate, findStartClock+1));
 
             if (doForTodayBefore){//只分析昨日
                 queryBeginUTC = queryBeginUTC - TimeTool.MS_ONE_DAY;

+ 13 - 12
src/main/java/com/shkpr/service/warncore/bizhandler/ZoneDataWarnHandler.java

@@ -77,7 +77,7 @@ public class ZoneDataWarnHandler {
         int curClock = (int)((curUTCTm/1000/60/60%24+8)%24);
         long queryBeginUTC = 0L, queryEndUTC = 0L;
         final String curDate = TimeTool.convertUTC2DateStr(curUTCTm, TimeTool.YEAR_MONTH_DAY_FORMAT);
-        long conditionMinUTC = TimeTool.convertDateStr2UTC(String.format("%s %2d:00:00"
+        long conditionMinUTC = TimeTool.convertDateStr2UTC(String.format("%s %02d:00:00"
                 , curDate
                 , rules.get(0).getStarts()));//触发规则列表中第一个时段的起始时刻
         curClock = curClock - 1;
@@ -97,8 +97,8 @@ public class ZoneDataWarnHandler {
             for (int i=rules.size()-1;i>=0;i--){
                 if (curClock >= rules.get(i).getStarts() && curClock <= rules.get(i).getEnds()){
                     findStartClock = rules.get(i).getStarts();
-                    queryEndUTC = Math.min(TimeTool.convertDateStr2UTC(String.format("%s %2d:59:59", curDate, curClock))
-                            , TimeTool.convertDateStr2UTC(String.format("%s %2d:59:59", curDate, rules.get(i).getEnds())));
+                    queryEndUTC = Math.min(TimeTool.convertDateStr2UTC(String.format("%s %02d:59:59", curDate, curClock))
+                            , TimeTool.convertDateStr2UTC(String.format("%s %02d:59:59", curDate, rules.get(i).getEnds())));
                     break;
                 }
             }
@@ -116,7 +116,7 @@ public class ZoneDataWarnHandler {
                 if (findStartClock == rules.get(i).getEnds())
                     findStartClock = rules.get(i).getStarts()-1;
             }
-            queryBeginUTC = TimeTool.convertDateStr2UTC(String.format("%s %2d:00:00", curDate, findStartClock+1));
+            queryBeginUTC = TimeTool.convertDateStr2UTC(String.format("%s %02d:00:00", curDate, findStartClock+1));
 
             if (doForTodayBefore){//只分析昨日
                 queryBeginUTC = queryBeginUTC - TimeTool.MS_ONE_DAY;
@@ -237,7 +237,7 @@ public class ZoneDataWarnHandler {
                 if (findStartRange == rules.get(i).getEnds())
                     findStartRange = rules.get(i).getStarts()-1;
             }
-            queryBeginUTC = TimeTool.convertDateStr2BeginUTC(String.format("%d-%2d-01 00:00:00", preMonthInYear, findStartRange+1));
+            queryBeginUTC = TimeTool.convertDateStr2BeginUTC(String.format("%d-%02d-01 00:00:00", preMonthInYear, findStartRange+1));
             conditionMinUTC = queryBeginUTC;
             long before3MonthUTC =  TimeTool.getTimeChgMonth(queryEndUTC,-3);//最多只往前分析3个月
             if (before3MonthUTC > queryBeginUTC)
@@ -356,7 +356,7 @@ public class ZoneDataWarnHandler {
                     findStartRange = rules.get(i).getStarts()-1;
             }
 
-            queryBeginUTC = TimeTool.convertDateStr2BeginUTC(String.format("%d-%2d-01 00:00:00", preDayInYear, findStartRange+1));
+            queryBeginUTC = TimeTool.convertDateStr2BeginUTC(String.format("%d-%02d-01 00:00:00", preDayInYear, findStartRange+1));
             conditionMinUTC = queryBeginUTC;
             long before3DayUTC = queryEndUTC-TimeTool.MS_ONE_DAY*7;//最多只往前分析7天
             if (before3DayUTC > queryBeginUTC)
@@ -801,6 +801,7 @@ public class ZoneDataWarnHandler {
     public static TRecordRes<DateKeyValue> getSampleDataFromDB(String fieldUnit, String frequencyUnit, String itemKey, String objId, long beginTm, long endTm, String metricId, String doDb, String doField, String doTime){
         TRecordRes<DateKeyValue> oRes = new TRecordRes<>(ResponseCode.RESULT_BAD.toInt());
         String desTable = doDb.split("@")[1];
+        String storeField = doField.split("@")[0];
         String backField = doField.split("@")[1];
         String doTimeFunction = doTime.replaceAll("\\(.*\\)", "");
         String doTimeField = doTime.replaceAll("^.*\\(|\\)", "");
@@ -809,9 +810,9 @@ public class ZoneDataWarnHandler {
                 , backField
                 , doTimeField);
         if ("%".equals(fieldUnit)){
-            queryField += String.format(",COALESCE(%s, 0)*100 as value", backField);
+            queryField += String.format(",COALESCE(%s, 0)*100 as value", storeField);
         }else
-            queryField += String.format(",COALESCE(%s, 0) as value", backField);
+            queryField += String.format(",COALESCE(%s, 0) as value", storeField);
 
         switch (itemKey){
             case WarnItemType.ZONE_HWO:{//小时水量,存储的是累计流量:(n+1)点-(n)点=(n)点水量,故分区水量要将endTm += TimeTool.MS_ONE_HOUR;然后再查询
@@ -823,8 +824,8 @@ public class ZoneDataWarnHandler {
                 doTimeField = String.format("mnf.%s", doTimeField);
                 queryField = String.format("mnf.zone_id,'%s' as key,(mnf.%s - COALESCE(lmnf.%s, 0)) AS value,%s as date"
                         , backField
-                        , backField
-                        , backField
+                        , storeField
+                        , storeField
                         , doTimeField);
             }
             break;
@@ -890,8 +891,8 @@ public class ZoneDataWarnHandler {
 
                 arrRecordRes =  new ArrayList<>();
                 for (int i=0;i<arrDbs.size()-1;i++){
-                    long thisTm = ((Timestamp)(arrDbs.get(i).get("date"))).getTime();
-                    long nextTm = ((Timestamp)(arrDbs.get(i+1).get("date"))).getTime();
+                    long thisTm = TimeTool.convertDateStr2UTC((String)(arrDbs.get(i).get("date")));
+                    long nextTm = TimeTool.convertDateStr2UTC((String)(arrDbs.get(i+1).get("date")));
                     double thisValue = CastUtil.castDouble(arrDbs.get(i).get("value"), 0.0);
                     double nextValue = CastUtil.castDouble(arrDbs.get(i+1).get("value"), 0.0);
                     if (thisTm == (nextTm-TimeTool.MS_ONE_HOUR)){