|
@@ -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
|
|