Bläddra i källkod

导出查询结果

lamphua 1 vecka sedan
förälder
incheckning
e5a5f22540

+ 93
- 82
cmc-temperature-back/cmc-monitoring/src/main/java/com/ruoyi/monitoring/controller/CmcTemperatureController.java Visa fil

1
 package com.ruoyi.monitoring.controller;
1
 package com.ruoyi.monitoring.controller;
2
 
2
 
3
+import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
3
 import com.mybatisflex.core.paginate.Page;
4
 import com.mybatisflex.core.paginate.Page;
4
 import com.mybatisflex.core.query.QueryWrapper;
5
 import com.mybatisflex.core.query.QueryWrapper;
6
+import com.ruoyi.common.utils.ExcelUtil;
5
 import com.ruoyi.common.web.domain.PageData;
7
 import com.ruoyi.common.web.domain.PageData;
6
 import com.ruoyi.monitoring.domain.CmcChannel;
8
 import com.ruoyi.monitoring.domain.CmcChannel;
7
 import com.ruoyi.monitoring.domain.CmcTemperature;
9
 import com.ruoyi.monitoring.domain.CmcTemperature;
10
 import com.ruoyi.common.web.controller.BaseController;
12
 import com.ruoyi.common.web.controller.BaseController;
11
 import org.noear.solon.annotation.*;
13
 import org.noear.solon.annotation.*;
12
 
14
 
13
-import java.util.ArrayList;
14
-import java.util.Date;
15
-import java.util.List;
15
+import java.text.SimpleDateFormat;
16
+import java.util.*;
16
 
17
 
17
 /**
18
 /**
18
  * 水温监测
19
  * 水温监测
38
         return cmcTemperatureService.list(qw);
39
         return cmcTemperatureService.list(qw);
39
     }
40
     }
40
 
41
 
41
-    private QueryWrapper getQW(CmcTemperature cmcTemperature) {
42
-        QueryWrapper qw = QueryWrapper.create();
43
-        qw.and(CmcTemperature::getId).eq(cmcTemperature.getId());
44
-        qw.and(CmcTemperature::getGroupNo).eq(cmcTemperature.getGroupNo());
45
-        qw.and(CmcTemperature::getSensorNo).eq(cmcTemperature.getSensorNo());
46
-        qw.and(CmcTemperature::getData).eq(cmcTemperature.getData());
47
-        qw.and(CmcTemperature::getVolt).eq(cmcTemperature.getVolt());
48
-        qw.and(CmcTemperature::getCSQ).eq(cmcTemperature.getCSQ());
49
-        qw.and(CmcTemperature::getDatetime).ge(cmcTemperature.getStartTime());
50
-        qw.and(CmcTemperature::getDatetime).le(cmcTemperature.getEndTime());
51
-        qw.orderBy(CmcTemperature::getDatetime).desc();
52
-        return qw;
53
-    }
54
-
55
     /**
42
     /**
56
      * 根据点位查询水温监测列表
43
      * 根据点位查询水温监测列表
57
      */
44
      */
58
     @Get
45
     @Get
59
     @Mapping("listByInfo")
46
     @Mapping("listByInfo")
60
-    public PageData<CmcTemperature> listByInfo(Page<CmcTemperature> page, CmcTemperature cmcTemperature, String Info) {
61
-        CmcChannel channel = new CmcChannel();
62
-        channel.setInfo(Info);
63
-        int channelSize = cmcChannelService.listChannel(channel).size();
47
+    public PageData<CmcTemperature> listByInfo(Page<CmcTemperature> page, CmcTemperature cmcTemperature, CmcChannel cmcChannel) {
48
+        int channelSize = cmcChannelService.listChannel(cmcChannel).size();
64
         page.setPageSize(page.getPageSize() * channelSize);
49
         page.setPageSize(page.getPageSize() * channelSize);
65
-        QueryWrapper qw = getQW(cmcTemperature, Info);
50
+        QueryWrapper qw = getQW(cmcTemperature, cmcChannel);
66
         List<CmcTemperature> records = cmcTemperatureService.list(qw);
51
         List<CmcTemperature> records = cmcTemperatureService.list(qw);
67
         List<CmcTemperature> temperatureList = new ArrayList<>();
52
         List<CmcTemperature> temperatureList = new ArrayList<>();
68
         int total = 0;
53
         int total = 0;
84
             Date fifteenMinutesAgo = new Date(fifteenMinutesAgoMillis);
69
             Date fifteenMinutesAgo = new Date(fifteenMinutesAgoMillis);
85
             temperature.setStartTime(fifteenMinutesAgo);
70
             temperature.setStartTime(fifteenMinutesAgo);
86
             temperature.setEndTime(cmcTemperature.getStartTime());
71
             temperature.setEndTime(cmcTemperature.getStartTime());
87
-            QueryWrapper qw1 = getQW(temperature, Info);
72
+            QueryWrapper qw1 = getQW(temperature, cmcChannel);
88
             temperatureList = cmcTemperatureService.list(qw1);
73
             temperatureList = cmcTemperatureService.list(qw1);
89
             temperatureList.addAll(records);
74
             temperatureList.addAll(records);
90
             if (channelSize > 30) {
75
             if (channelSize > 30) {
121
      */
106
      */
122
     @Get
107
     @Get
123
     @Mapping("listAllByInfo")
108
     @Mapping("listAllByInfo")
124
-    public PageData<CmcTemperature> listAllByInfo(CmcTemperature cmcTemperature, String Info) {
125
-        CmcChannel channel = new CmcChannel();
126
-        channel.setInfo(Info);
127
-        int channelSize = cmcChannelService.listChannel(channel).size();
128
-        QueryWrapper qw = getQW(cmcTemperature, Info);
129
-        List<CmcTemperature> records = cmcTemperatureService.list(qw);
130
-        List<CmcTemperature> temperatureList = new ArrayList<>();
131
-        if (records.size() > 2) {
132
-            long diffInMillis;
133
-            // 第30条与第31条数据时间差 毫秒
134
-            if (channelSize > 30) {
135
-                diffInMillis = records.get(30).getDatetime().getTime() - records.get(29).getDatetime().getTime();
136
-                // 时间差超过15分钟,删最后10条数据
137
-                if (diffInMillis / 1000 / 60 > 15)
138
-                    records.subList(records.size() - channelSize + 30, records.size()).clear();
109
+    public PageData<CmcTemperature> listAllByInfo(CmcTemperature cmcTemperature, CmcChannel cmcChannel) {
110
+        int channelSize = cmcChannelService.listChannel(cmcChannel).size();
111
+        List<CmcTemperature> temperatureList = cmcTemperatureService.listTemperature(cmcTemperature, cmcChannel);
112
+        return getPageData(temperatureList).total(temperatureList.size() / channelSize);
113
+    }
114
+
115
+    /**
116
+     * 导出用户列表
117
+     */
118
+    @Post
119
+    @Mapping("export")
120
+    public void export(CmcTemperature cmcTemperature, CmcChannel cmcChannel) {
121
+        List<CmcTemperature> temperatureList = cmcTemperatureService.listTemperature(cmcTemperature, cmcChannel);
122
+        List<ExcelExportEntity> entityList = new ArrayList<>();
123
+        ExcelExportEntity timeColumn = new ExcelExportEntity("时间", "Datetime");
124
+        timeColumn.setNeedMerge(true);
125
+        timeColumn.setWidth(20);
126
+        entityList.add(timeColumn);
127
+        cmcChannelService.listChannel(cmcChannel).forEach(channel -> {
128
+            ExcelExportEntity entity = new ExcelExportEntity(channel.getInfo(), channel.getSensorNo().toString());
129
+            entityList.add(entity);
130
+        });
131
+        List<Map<String, Object>> dataList = prepareData(temperatureList);
132
+        ExcelUtil.customExport(entityList, dataList);
133
+    }
134
+
135
+    private static List<Map<String, Object>> prepareData(List<CmcTemperature> temperatureList) {
136
+        Map<String, Map<Long, Float>> timeDataMap = new LinkedHashMap<>();
137
+        Set<Long> locations = new TreeSet<>();
138
+
139
+        for (CmcTemperature cmcTemperature : temperatureList) {
140
+            Date datetime = cmcTemperature.getDatetime();
141
+            Long sensorNo = cmcTemperature.getSensorNo();
142
+
143
+            locations.add(sensorNo);
144
+            String dateTme = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(datetime);
145
+            if (!timeDataMap.containsKey(dateTme)) {
146
+                timeDataMap.put(dateTme, new HashMap<>());
139
             }
147
             }
140
-            // 第1条数据与0时时间差 毫秒
141
-            diffInMillis = records.get(0).getDatetime().getTime() - cmcTemperature.getStartTime().getTime();
142
-            if (diffInMillis / 1000 / 60 > 15)
143
-                records.subList(records.size() - channelSize, records.size()).clear();
144
-            CmcTemperature temperature = new CmcTemperature();
145
-            long fifteenMinutesAgoMillis = cmcTemperature.getStartTime().getTime() - (15 * 60 * 1000);
146
-            Date fifteenMinutesAgo = new Date(fifteenMinutesAgoMillis);
147
-            temperature.setStartTime(fifteenMinutesAgo);
148
-            temperature.setEndTime(cmcTemperature.getStartTime());
149
-            QueryWrapper qw1 = getQW(temperature, Info);
150
-            temperatureList = cmcTemperatureService.list(qw1);
151
-            temperatureList.addAll(records);
152
-            if (channelSize > 30) {
153
-                for (int i = 0; i < temperatureList.size() - channelSize + 1; i = i + channelSize) {
154
-                    Date minTime = temperatureList.get(i).getDatetime();
155
-                    if (temperatureList.get(i + 10).getDatetime().getTime() > minTime.getTime()) {
156
-                        for (int j = i + 10; j < i + channelSize; j++) {
157
-                            temperatureList.get(j).setDatetime(minTime);
158
-                        }
159
-                    } else {
160
-                        if (temperatureList.get(i + 30).getDatetime().getTime() > minTime.getTime()) {
161
-                            for (int j = i + 30; j < i + channelSize; j++) {
162
-                                temperatureList.get(j).setDatetime(minTime);
163
-                            }
164
-                        }
165
-                    }
166
-                }
148
+
149
+            timeDataMap.get(dateTme).put(sensorNo, cmcTemperature.getData());
150
+        }
151
+
152
+        // 转换为导出格式
153
+        List<Map<String, Object>> exportData = new ArrayList<>();
154
+
155
+        for (Map.Entry<String, Map<Long, Float>> entry : timeDataMap.entrySet()) {
156
+            Map<String, Object> rowData = new HashMap<>();
157
+            rowData.put("Datetime", entry.getKey());
158
+
159
+            Map<Long, Float> locationData = entry.getValue();
160
+            for (Long location : locations) {
161
+                rowData.put(String.valueOf(location), locationData.get(location));
167
             }
162
             }
163
+
164
+            exportData.add(rowData);
168
         }
165
         }
169
-        return getPageData(temperatureList).total(temperatureList.size() / channelSize);
166
+        return exportData;
167
+    }
168
+
169
+    private QueryWrapper getQW(CmcTemperature cmcTemperature) {
170
+        QueryWrapper qw = QueryWrapper.create();
171
+        qw.and(CmcTemperature::getId).eq(cmcTemperature.getId());
172
+        qw.and(CmcTemperature::getGroupNo).eq(cmcTemperature.getGroupNo());
173
+        qw.and(CmcTemperature::getSensorNo).eq(cmcTemperature.getSensorNo());
174
+        qw.and(CmcTemperature::getData).eq(cmcTemperature.getData());
175
+        qw.and(CmcTemperature::getVolt).eq(cmcTemperature.getVolt());
176
+        qw.and(CmcTemperature::getCSQ).eq(cmcTemperature.getCSQ());
177
+        qw.and(CmcTemperature::getDatetime).ge(cmcTemperature.getStartTime());
178
+        qw.and(CmcTemperature::getDatetime).le(cmcTemperature.getEndTime());
179
+        qw.orderBy(CmcTemperature::getDatetime).desc();
180
+        return qw;
170
     }
181
     }
171
 
182
 
172
-    private QueryWrapper getQW(CmcTemperature cmcTemperature, String Info) {
183
+    private QueryWrapper getQW(CmcTemperature cmcTemperature, CmcChannel cmcChannel) {
173
         QueryWrapper qw = QueryWrapper.create();
184
         QueryWrapper qw = QueryWrapper.create();
174
         qw.select(CmcTemperature::getId, CmcTemperature::getGroupNo, CmcTemperature::getSensorNo, CmcTemperature::getData, CmcTemperature::getVolt, CmcTemperature::getCSQ, CmcTemperature::getDatetime)
185
         qw.select(CmcTemperature::getId, CmcTemperature::getGroupNo, CmcTemperature::getSensorNo, CmcTemperature::getData, CmcTemperature::getVolt, CmcTemperature::getCSQ, CmcTemperature::getDatetime)
175
-            .select(CmcChannel::getInfo)
176
-            .from(CmcTemperature.class)
177
-            .leftJoin(CmcChannel.class)
178
-            .on(CmcChannel::getSensorNo, CmcTemperature::getSensorNo)
179
-            .where(CmcChannel::getInfo).like(Info)
180
-            .and(CmcTemperature::getId).eq(cmcTemperature.getId())
181
-            .and(CmcTemperature::getGroupNo).eq(cmcTemperature.getGroupNo())
182
-            .and(CmcTemperature::getSensorNo).eq(cmcTemperature.getSensorNo())
183
-            .and(CmcTemperature::getData).eq(cmcTemperature.getData())
184
-            .and(CmcTemperature::getVolt).eq(cmcTemperature.getVolt())
185
-            .and(CmcTemperature::getCSQ).eq(cmcTemperature.getCSQ())
186
-            .and(CmcTemperature::getDatetime).ge(cmcTemperature.getStartTime())
187
-            .and(CmcTemperature::getDatetime).le(cmcTemperature.getEndTime())
188
-            .orderBy(CmcTemperature::getDatetime).asc()
189
-            .orderBy(CmcTemperature::getSensorNo).asc();
186
+                .select(CmcChannel::getInfo)
187
+                .from(CmcTemperature.class)
188
+                .leftJoin(CmcChannel.class)
189
+                .on(CmcChannel::getSensorNo, CmcTemperature::getSensorNo)
190
+                .where(CmcChannel::getInfo).like(cmcChannel.getInfo())
191
+                .and(CmcTemperature::getId).eq(cmcTemperature.getId())
192
+                .and(CmcTemperature::getGroupNo).eq(cmcTemperature.getGroupNo())
193
+                .and(CmcTemperature::getSensorNo).eq(cmcTemperature.getSensorNo())
194
+                .and(CmcTemperature::getData).eq(cmcTemperature.getData())
195
+                .and(CmcTemperature::getVolt).eq(cmcTemperature.getVolt())
196
+                .and(CmcTemperature::getCSQ).eq(cmcTemperature.getCSQ())
197
+                .and(CmcTemperature::getDatetime).ge(cmcTemperature.getStartTime())
198
+                .and(CmcTemperature::getDatetime).le(cmcTemperature.getEndTime())
199
+                .orderBy(CmcTemperature::getDatetime).asc()
200
+                .orderBy(CmcTemperature::getSensorNo).asc();
190
         return qw;
201
         return qw;
191
     }
202
     }
192
 
203
 

+ 3
- 1
cmc-temperature-back/cmc-monitoring/src/main/java/com/ruoyi/monitoring/mapper/CmcTemperatureMapper.java Visa fil

1
 package com.ruoyi.monitoring.mapper;
1
 package com.ruoyi.monitoring.mapper;
2
 
2
 
3
+import com.ruoyi.monitoring.domain.CmcChannel;
3
 import com.ruoyi.monitoring.domain.CmcTemperature;
4
 import com.ruoyi.monitoring.domain.CmcTemperature;
4
 import com.mybatisflex.annotation.UseDataSource;
5
 import com.mybatisflex.annotation.UseDataSource;
5
 import com.mybatisflex.core.BaseMapper;
6
 import com.mybatisflex.core.BaseMapper;
16
     /**
17
     /**
17
      * 查询水温监测列表信息
18
      * 查询水温监测列表信息
18
      * @param cmcTemperature 水温监测信息
19
      * @param cmcTemperature 水温监测信息
20
+     * @param cmcChannel 监测点位信息
19
      */
21
      */
20
-    List<CmcTemperature> listTemperature(CmcTemperature cmcTemperature);
22
+    List<CmcTemperature> listTemperature(CmcTemperature cmcTemperature, CmcChannel cmcChannel);
21
 
23
 
22
 }
24
 }

+ 3
- 1
cmc-temperature-back/cmc-monitoring/src/main/java/com/ruoyi/monitoring/service/ICmcTemperatureService.java Visa fil

1
 package com.ruoyi.monitoring.service;
1
 package com.ruoyi.monitoring.service;
2
 
2
 
3
 import com.mybatisflex.core.service.IService;
3
 import com.mybatisflex.core.service.IService;
4
+import com.ruoyi.monitoring.domain.CmcChannel;
4
 import com.ruoyi.monitoring.domain.CmcTemperature;
5
 import com.ruoyi.monitoring.domain.CmcTemperature;
5
 
6
 
6
 import java.util.List;
7
 import java.util.List;
14
     /**
15
     /**
15
      * 查询水温监测列表信息
16
      * 查询水温监测列表信息
16
      * @param cmcTemperature 水温监测信息
17
      * @param cmcTemperature 水温监测信息
18
+     * @param cmcChannel 监测点位信息
17
      */
19
      */
18
-    List<CmcTemperature> listTemperature(CmcTemperature cmcTemperature);
20
+    List<CmcTemperature> listTemperature(CmcTemperature cmcTemperature, CmcChannel cmcChannel);
19
 
21
 
20
 }
22
 }

+ 0
- 2
cmc-temperature-back/cmc-monitoring/src/main/java/com/ruoyi/monitoring/service/impl/CmcChannelServiceImpl.java Visa fil

2
 
2
 
3
 import com.mybatisflex.solon.service.impl.ServiceImpl;
3
 import com.mybatisflex.solon.service.impl.ServiceImpl;
4
 import com.ruoyi.monitoring.domain.CmcChannel;
4
 import com.ruoyi.monitoring.domain.CmcChannel;
5
-import com.ruoyi.monitoring.domain.CmcTemperature;
6
 import com.ruoyi.monitoring.mapper.CmcChannelMapper;
5
 import com.ruoyi.monitoring.mapper.CmcChannelMapper;
7
-import com.ruoyi.monitoring.mapper.CmcTemperatureMapper;
8
 import com.ruoyi.monitoring.service.ICmcChannelService;
6
 import com.ruoyi.monitoring.service.ICmcChannelService;
9
 import org.noear.solon.annotation.Component;
7
 import org.noear.solon.annotation.Component;
10
 import org.noear.solon.annotation.Inject;
8
 import org.noear.solon.annotation.Inject;

+ 81
- 2
cmc-temperature-back/cmc-monitoring/src/main/java/com/ruoyi/monitoring/service/impl/CmcTemperatureServiceImpl.java Visa fil

1
 package com.ruoyi.monitoring.service.impl;
1
 package com.ruoyi.monitoring.service.impl;
2
 
2
 
3
+import com.mybatisflex.core.query.QueryWrapper;
3
 import com.mybatisflex.solon.service.impl.ServiceImpl;
4
 import com.mybatisflex.solon.service.impl.ServiceImpl;
5
+import com.ruoyi.monitoring.domain.CmcChannel;
4
 import com.ruoyi.monitoring.domain.CmcTemperature;
6
 import com.ruoyi.monitoring.domain.CmcTemperature;
7
+import com.ruoyi.monitoring.mapper.CmcChannelMapper;
5
 import com.ruoyi.monitoring.mapper.CmcTemperatureMapper;
8
 import com.ruoyi.monitoring.mapper.CmcTemperatureMapper;
9
+import com.ruoyi.monitoring.service.ICmcChannelService;
6
 import com.ruoyi.monitoring.service.ICmcTemperatureService;
10
 import com.ruoyi.monitoring.service.ICmcTemperatureService;
7
 import org.noear.solon.annotation.Component;
11
 import org.noear.solon.annotation.Component;
8
 import org.noear.solon.annotation.Inject;
12
 import org.noear.solon.annotation.Inject;
9
 
13
 
14
+import java.util.ArrayList;
15
+import java.util.Date;
10
 import java.util.List;
16
 import java.util.List;
11
 
17
 
12
 /**
18
 /**
19
     @Inject
25
     @Inject
20
     CmcTemperatureMapper cmcTemperatureMapper;
26
     CmcTemperatureMapper cmcTemperatureMapper;
21
 
27
 
28
+    @Inject
29
+    CmcChannelMapper cmcChannelMapper;
30
+
31
+    @Inject
32
+    ICmcTemperatureService cmcTemperatureService;
33
+
34
+    @Inject
35
+    ICmcChannelService cmcChannelService;
36
+
22
     /**
37
     /**
23
      * 查询水温监测列表信息
38
      * 查询水温监测列表信息
24
      * @param cmcTemperature 水温监测信息
39
      * @param cmcTemperature 水温监测信息
40
+     * @param cmcChannel 监测点位信息
25
      * @return 水温监测列表
41
      * @return 水温监测列表
26
      */
42
      */
27
     @Override
43
     @Override
28
-    public List<CmcTemperature> listTemperature(CmcTemperature cmcTemperature) {
29
-        return  cmcTemperatureMapper.listTemperature(cmcTemperature);
44
+    public List<CmcTemperature> listTemperature(CmcTemperature cmcTemperature, CmcChannel cmcChannel) {
45
+        int channelSize = cmcChannelMapper.listChannel(cmcChannel).size();
46
+        QueryWrapper qw = getQW(cmcTemperature, cmcChannel);
47
+        List<CmcTemperature> records = cmcTemperatureService.list(qw);
48
+        List<CmcTemperature> temperatureList = new ArrayList<>();
49
+        if (records.size() > 2) {
50
+            long diffInMillis;
51
+            // 第30条与第31条数据时间差 毫秒
52
+            if (channelSize > 30) {
53
+                diffInMillis = records.get(30).getDatetime().getTime() - records.get(29).getDatetime().getTime();
54
+                // 时间差超过15分钟,删最后10条数据
55
+                if (diffInMillis / 1000 / 60 > 15)
56
+                    records.subList(records.size() - channelSize + 30, records.size()).clear();
57
+            }
58
+            // 第1条数据与0时时间差 毫秒
59
+            diffInMillis = records.get(0).getDatetime().getTime() - cmcTemperature.getStartTime().getTime();
60
+            if (diffInMillis / 1000 / 60 > 15)
61
+                records.subList(records.size() - channelSize, records.size()).clear();
62
+            CmcTemperature temperature = new CmcTemperature();
63
+            long fifteenMinutesAgoMillis = cmcTemperature.getStartTime().getTime() - (15 * 60 * 1000);
64
+            Date fifteenMinutesAgo = new Date(fifteenMinutesAgoMillis);
65
+            temperature.setStartTime(fifteenMinutesAgo);
66
+            temperature.setEndTime(cmcTemperature.getStartTime());
67
+            QueryWrapper qw1 = getQW(temperature, cmcChannel);
68
+            temperatureList = cmcTemperatureService.list(qw1);
69
+            temperatureList.addAll(records);
70
+            if (channelSize > 30) {
71
+                for (int i = 0; i < temperatureList.size() - channelSize + 1; i = i + channelSize) {
72
+                    Date minTime = temperatureList.get(i).getDatetime();
73
+                    if (temperatureList.get(i + 10).getDatetime().getTime() > minTime.getTime()) {
74
+                        for (int j = i + 10; j < i + channelSize; j++) {
75
+                            temperatureList.get(j).setDatetime(minTime);
76
+                        }
77
+                    } else {
78
+                        if (temperatureList.get(i + 30).getDatetime().getTime() > minTime.getTime()) {
79
+                            for (int j = i + 30; j < i + channelSize; j++) {
80
+                                temperatureList.get(j).setDatetime(minTime);
81
+                            }
82
+                        }
83
+                    }
84
+                }
85
+            }
86
+        }
87
+        return temperatureList;
88
+    }
89
+
90
+    private QueryWrapper getQW(CmcTemperature cmcTemperature, CmcChannel cmcChannel) {
91
+        QueryWrapper qw = QueryWrapper.create();
92
+        qw.select(CmcTemperature::getId, CmcTemperature::getGroupNo, CmcTemperature::getSensorNo, CmcTemperature::getData, CmcTemperature::getVolt, CmcTemperature::getCSQ, CmcTemperature::getDatetime)
93
+                .select(CmcChannel::getInfo)
94
+                .from(CmcTemperature.class)
95
+                .leftJoin(CmcChannel.class)
96
+                .on(CmcChannel::getSensorNo, CmcTemperature::getSensorNo)
97
+                .where(CmcChannel::getInfo).like(cmcChannel.getInfo())
98
+                .and(CmcTemperature::getId).eq(cmcTemperature.getId())
99
+                .and(CmcTemperature::getGroupNo).eq(cmcTemperature.getGroupNo())
100
+                .and(CmcTemperature::getSensorNo).eq(cmcTemperature.getSensorNo())
101
+                .and(CmcTemperature::getData).eq(cmcTemperature.getData())
102
+                .and(CmcTemperature::getVolt).eq(cmcTemperature.getVolt())
103
+                .and(CmcTemperature::getCSQ).eq(cmcTemperature.getCSQ())
104
+                .and(CmcTemperature::getDatetime).ge(cmcTemperature.getStartTime())
105
+                .and(CmcTemperature::getDatetime).le(cmcTemperature.getEndTime())
106
+                .orderBy(CmcTemperature::getDatetime).asc()
107
+                .orderBy(CmcTemperature::getSensorNo).asc();
108
+        return qw;
30
     }
109
     }
31
 
110
 
32
 }
111
 }

+ 30
- 0
cmc-temperature-back/ruoyi-common/src/main/java/com/ruoyi/common/utils/ExcelUtil.java Visa fil

3
 import cn.afterturn.easypoi.excel.ExcelExportUtil;
3
 import cn.afterturn.easypoi.excel.ExcelExportUtil;
4
 import cn.afterturn.easypoi.excel.entity.ExportParams;
4
 import cn.afterturn.easypoi.excel.entity.ExportParams;
5
 import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
5
 import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
6
+import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
6
 import com.ruoyi.common.constants.HttpConstant;
7
 import com.ruoyi.common.constants.HttpConstant;
7
 import com.ruoyi.common.web.exception.ServiceException;
8
 import com.ruoyi.common.web.exception.ServiceException;
8
 import org.apache.poi.ss.usermodel.Workbook;
9
 import org.apache.poi.ss.usermodel.Workbook;
10
 
11
 
11
 import java.io.IOException;
12
 import java.io.IOException;
12
 import java.util.List;
13
 import java.util.List;
14
+import java.util.Map;
13
 
15
 
14
 /**
16
 /**
15
  * Excel相关处理
17
  * Excel相关处理
44
         }
46
         }
45
     }
47
     }
46
 
48
 
49
+    /**
50
+     * 导出 Excel
51
+     * @param entityList 字段
52
+     * @param list 数据
53
+     * @return
54
+     */
55
+    public static <T> void customExport(List<ExcelExportEntity> entityList, List<T> list) {
56
+        if(list.isEmpty()) {
57
+            throw new ServiceException("导出数据为空");
58
+        }
59
+        Context ctx = ContextUtil.getContext();
60
+        ctx.contentType(HttpConstant.CONTENT_TYPE_FORM);
61
+        ExportParams exportParams = new ExportParams();
62
+        exportParams.setType(ExcelType.HSSF);
63
+        Workbook workbook = ExcelExportUtil.exportExcel(exportParams,entityList, list);
64
+        try {
65
+            workbook.write(ctx.outputStream());
66
+        } catch (IOException e) {
67
+            e.printStackTrace();
68
+        } finally {
69
+            try {
70
+                workbook.close();
71
+            } catch (IOException e) {
72
+                e.printStackTrace();
73
+            }
74
+        }
75
+    }
76
+
47
 }
77
 }

+ 7
- 1
cmc-temperature-ui/src/views/temperature/temMonitor.vue Visa fil

119
 const totalCount = ref(0)
119
 const totalCount = ref(0)
120
 const activeTab = ref('table')
120
 const activeTab = ref('table')
121
 const chartRef = ref(null)
121
 const chartRef = ref(null)
122
+const { proxy } = getCurrentInstance()
122
 
123
 
123
 // 搜索表单数据
124
 // 搜索表单数据
124
 const searchForm = reactive({
125
 const searchForm = reactive({
348
     return
349
     return
349
   }
350
   }
350
 
351
 
351
-  ElMessage.success('导出功能开发中...')
352
+  // ElMessage.success('导出功能开发中...')
352
   // 这里可以添加导出逻辑
353
   // 这里可以添加导出逻辑
354
+  proxy.$download('monitoring/temperature/export', {    
355
+    startTime: searchForm.timeRange[0] + ' 00:00:00',
356
+    endTime: searchForm.timeRange[1] + ' 23:59:59',
357
+    Info: searchForm.Info
358
+  }, `水温监测_${searchForm.timeRange[0] + "-" + searchForm.timeRange[1]}.xls`)
353
 }
359
 }
354
 
360
 
355
 
361
 

Loading…
Avbryt
Spara