Browse Source

导出查询结果

lamphua 1 week ago
parent
commit
e5a5f22540

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

@@ -1,7 +1,9 @@
1 1
 package com.ruoyi.monitoring.controller;
2 2
 
3
+import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
3 4
 import com.mybatisflex.core.paginate.Page;
4 5
 import com.mybatisflex.core.query.QueryWrapper;
6
+import com.ruoyi.common.utils.ExcelUtil;
5 7
 import com.ruoyi.common.web.domain.PageData;
6 8
 import com.ruoyi.monitoring.domain.CmcChannel;
7 9
 import com.ruoyi.monitoring.domain.CmcTemperature;
@@ -10,9 +12,8 @@ import com.ruoyi.monitoring.service.ICmcTemperatureService;
10 12
 import com.ruoyi.common.web.controller.BaseController;
11 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,31 +39,15 @@ public class CmcTemperatureController extends BaseController {
38 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 45
     @Get
59 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 49
         page.setPageSize(page.getPageSize() * channelSize);
65
-        QueryWrapper qw = getQW(cmcTemperature, Info);
50
+        QueryWrapper qw = getQW(cmcTemperature, cmcChannel);
66 51
         List<CmcTemperature> records = cmcTemperatureService.list(qw);
67 52
         List<CmcTemperature> temperatureList = new ArrayList<>();
68 53
         int total = 0;
@@ -84,7 +69,7 @@ public class CmcTemperatureController extends BaseController {
84 69
             Date fifteenMinutesAgo = new Date(fifteenMinutesAgoMillis);
85 70
             temperature.setStartTime(fifteenMinutesAgo);
86 71
             temperature.setEndTime(cmcTemperature.getStartTime());
87
-            QueryWrapper qw1 = getQW(temperature, Info);
72
+            QueryWrapper qw1 = getQW(temperature, cmcChannel);
88 73
             temperatureList = cmcTemperatureService.list(qw1);
89 74
             temperatureList.addAll(records);
90 75
             if (channelSize > 30) {
@@ -121,72 +106,98 @@ public class CmcTemperatureController extends BaseController {
121 106
      */
122 107
     @Get
123 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 184
         QueryWrapper qw = QueryWrapper.create();
174 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 201
         return qw;
191 202
     }
192 203
 

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

@@ -1,5 +1,6 @@
1 1
 package com.ruoyi.monitoring.mapper;
2 2
 
3
+import com.ruoyi.monitoring.domain.CmcChannel;
3 4
 import com.ruoyi.monitoring.domain.CmcTemperature;
4 5
 import com.mybatisflex.annotation.UseDataSource;
5 6
 import com.mybatisflex.core.BaseMapper;
@@ -16,7 +17,8 @@ public interface CmcTemperatureMapper extends BaseMapper<CmcTemperature> {
16 17
     /**
17 18
      * 查询水温监测列表信息
18 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 View File

@@ -1,6 +1,7 @@
1 1
 package com.ruoyi.monitoring.service;
2 2
 
3 3
 import com.mybatisflex.core.service.IService;
4
+import com.ruoyi.monitoring.domain.CmcChannel;
4 5
 import com.ruoyi.monitoring.domain.CmcTemperature;
5 6
 
6 7
 import java.util.List;
@@ -14,7 +15,8 @@ public interface ICmcTemperatureService extends IService<CmcTemperature> {
14 15
     /**
15 16
      * 查询水温监测列表信息
16 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 View File

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

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

@@ -1,12 +1,18 @@
1 1
 package com.ruoyi.monitoring.service.impl;
2 2
 
3
+import com.mybatisflex.core.query.QueryWrapper;
3 4
 import com.mybatisflex.solon.service.impl.ServiceImpl;
5
+import com.ruoyi.monitoring.domain.CmcChannel;
4 6
 import com.ruoyi.monitoring.domain.CmcTemperature;
7
+import com.ruoyi.monitoring.mapper.CmcChannelMapper;
5 8
 import com.ruoyi.monitoring.mapper.CmcTemperatureMapper;
9
+import com.ruoyi.monitoring.service.ICmcChannelService;
6 10
 import com.ruoyi.monitoring.service.ICmcTemperatureService;
7 11
 import org.noear.solon.annotation.Component;
8 12
 import org.noear.solon.annotation.Inject;
9 13
 
14
+import java.util.ArrayList;
15
+import java.util.Date;
10 16
 import java.util.List;
11 17
 
12 18
 /**
@@ -19,14 +25,87 @@ public class CmcTemperatureServiceImpl extends ServiceImpl<CmcTemperatureMapper,
19 25
     @Inject
20 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 39
      * @param cmcTemperature 水温监测信息
40
+     * @param cmcChannel 监测点位信息
25 41
      * @return 水温监测列表
26 42
      */
27 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 View File

@@ -3,6 +3,7 @@ package com.ruoyi.common.utils;
3 3
 import cn.afterturn.easypoi.excel.ExcelExportUtil;
4 4
 import cn.afterturn.easypoi.excel.entity.ExportParams;
5 5
 import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
6
+import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
6 7
 import com.ruoyi.common.constants.HttpConstant;
7 8
 import com.ruoyi.common.web.exception.ServiceException;
8 9
 import org.apache.poi.ss.usermodel.Workbook;
@@ -10,6 +11,7 @@ import org.noear.solon.core.handle.Context;
10 11
 
11 12
 import java.io.IOException;
12 13
 import java.util.List;
14
+import java.util.Map;
13 15
 
14 16
 /**
15 17
  * Excel相关处理
@@ -44,4 +46,32 @@ public class ExcelUtil {
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 View File

@@ -119,6 +119,7 @@ const loading = ref(false)
119 119
 const totalCount = ref(0)
120 120
 const activeTab = ref('table')
121 121
 const chartRef = ref(null)
122
+const { proxy } = getCurrentInstance()
122 123
 
123 124
 // 搜索表单数据
124 125
 const searchForm = reactive({
@@ -348,8 +349,13 @@ const handleExport = () => {
348 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…
Cancel
Save