Przeglądaj źródła

按0时开始查询,如时间不一致,取相对较小值

lamphua 1 tydzień temu
rodzic
commit
102e9fcac1

+ 46
- 3
cmc-temperature-back/cmc-monitoring/src/main/java/com/ruoyi/monitoring/controller/CmcTemperatureController.java Wyświetl plik

@@ -10,6 +10,8 @@ import com.ruoyi.monitoring.service.ICmcTemperatureService;
10 10
 import com.ruoyi.common.web.controller.BaseController;
11 11
 import org.noear.solon.annotation.*;
12 12
 
13
+import java.util.ArrayList;
14
+import java.util.Date;
13 15
 import java.util.List;
14 16
 
15 17
 /**
@@ -59,9 +61,50 @@ public class CmcTemperatureController extends BaseController {
59 61
         CmcChannel channel = new CmcChannel();
60 62
         channel.setInfo(Info);
61 63
         int channelSize = cmcChannelService.listChannel(channel).size();
64
+        page.setPageSize(page.getPageSize() * channelSize);
62 65
         QueryWrapper qw = getQW(cmcTemperature, Info);
63 66
         Page<CmcTemperature> result = cmcTemperatureService.page(page, qw);
64
-        return getPageData(result).total(result.getRecords().size() / channelSize);
67
+        List<CmcTemperature> records = result.getRecords();
68
+        List<CmcTemperature> temperatureList = new ArrayList<>();
69
+        if (records.size() > 2) {
70
+            long diffInMillis;
71
+            // 第30条与第31条数据时间差 毫秒
72
+            if (channelSize > 30) {
73
+                diffInMillis = records.get(30).getDatetime().getTime() - records.get(29).getDatetime().getTime();
74
+                // 时间差超过15分钟,删最后10条数据
75
+                if (diffInMillis / 1000 / 60 > 15)
76
+                    records.subList(records.size() - channelSize + 30, records.size()).clear();
77
+            }
78
+            // 第1条数据与0时时间差 毫秒
79
+            diffInMillis = records.get(0).getDatetime().getTime() - cmcTemperature.getStartTime().getTime();
80
+            if (diffInMillis / 1000 / 60 > 15)
81
+                records.subList(records.size() - channelSize, records.size()).clear();
82
+            CmcTemperature temperature = new CmcTemperature();
83
+            long fifteenMinutesAgoMillis = cmcTemperature.getStartTime().getTime() - (15 * 60 * 1000);
84
+            Date fifteenMinutesAgo = new Date(fifteenMinutesAgoMillis);
85
+            temperature.setStartTime(fifteenMinutesAgo);
86
+            temperature.setEndTime(cmcTemperature.getStartTime());
87
+            QueryWrapper qw1 = getQW(temperature, Info);
88
+            temperatureList = cmcTemperatureService.list(qw1);
89
+            temperatureList.addAll(records);
90
+            if (channelSize > 30)
91
+                for (int i = 0; i < temperatureList.size() - channelSize + 1; i = i + channelSize) {
92
+                    Date minTime = temperatureList.get(i).getDatetime();
93
+                    if (temperatureList.get(i + 10).getDatetime().getTime() > minTime.getTime()) {
94
+                        for (int j = i + 10; j < i + channelSize; j ++) {
95
+                            temperatureList.get(j).setDatetime(minTime);
96
+                        }
97
+                    }
98
+                    else {
99
+                        if (temperatureList.get(i + 30).getDatetime().getTime() > minTime.getTime()) {
100
+                            for (int j = i + 30; j < i + channelSize; j++) {
101
+                                temperatureList.get(j).setDatetime(minTime);
102
+                            }
103
+                        }
104
+                    }
105
+                }
106
+        }
107
+        return getPageData(temperatureList).total(temperatureList.size() / channelSize);
65 108
     }
66 109
 
67 110
     private QueryWrapper getQW(CmcTemperature cmcTemperature, String Info) {
@@ -80,8 +123,8 @@ public class CmcTemperatureController extends BaseController {
80 123
             .and(CmcTemperature::getCSQ).eq(cmcTemperature.getCSQ())
81 124
             .and(CmcTemperature::getDatetime).ge(cmcTemperature.getStartTime())
82 125
             .and(CmcTemperature::getDatetime).le(cmcTemperature.getEndTime())
83
-            .orderBy(CmcTemperature::getSensorNo).asc()
84
-            .orderBy(CmcTemperature::getDatetime).desc();
126
+            .orderBy(CmcTemperature::getDatetime).asc()
127
+            .orderBy(CmcTemperature::getSensorNo).asc();
85 128
         return qw;
86 129
     }
87 130
 

Ładowanie…
Anuluj
Zapisz