|
@@ -12,16 +12,23 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.excel.support.ExcelTypeEnum;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.github.jfcloud.influxdb.flux.AggregationWindow;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import jakarta.servlet.http.HttpServletResponse;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
|
import vip.xiaonuo.coldchain.core.bean.influxdb.SensorData;
|
|
|
import vip.xiaonuo.coldchain.core.service.JfcloudSensorDataService;
|
|
|
import vip.xiaonuo.coldchain.modular.app.param.*;
|
|
|
+import vip.xiaonuo.coldchain.modular.app.param.export.ExportParam;
|
|
|
+import vip.xiaonuo.coldchain.modular.app.param.export.TrendParam;
|
|
|
+import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDeviceTemplate;
|
|
|
+import vip.xiaonuo.coldchain.modular.monitordevice.handler.CustomCellWriteHandler;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
|
|
|
import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
|
|
|
import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetPageParam;
|
|
@@ -31,6 +38,10 @@ import vip.xiaonuo.coldchain.modular.monitortargetregion.entity.MonitorTargetReg
|
|
|
import vip.xiaonuo.coldchain.modular.monitortargetregion.service.MonitorTargetRegionService;
|
|
|
import vip.xiaonuo.common.enums.CommonDeleteFlagEnum;
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.net.URLEncoder;
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
import java.util.*;
|
|
|
import java.util.function.Consumer;
|
|
|
import java.util.function.Supplier;
|
|
@@ -430,4 +441,64 @@ public class AppDeviceService {
|
|
|
monitorTargetRegion.setDeviceOfflineAlarm(appDeviceAlarmParam.getDeviceOfflineAlarm());
|
|
|
return monitorTargetRegionService.updateById(monitorTargetRegion);
|
|
|
}
|
|
|
+
|
|
|
+ public void export(HttpServletResponse response, TrendParam trendParam) {
|
|
|
+ AppDeviceQueryParams appDeviceQueryParams = BeanUtil.copyProperties(trendParam, AppDeviceQueryParams.class);
|
|
|
+ SensorEchartDataResult sensorEchartDataResult = queryDataByDeviceIdAndRoads(appDeviceQueryParams);
|
|
|
+ MonitorTargetRegion monitorTargetRegion = monitorTargetRegionService.findOneByDeviceCodeAndSensorNo(trendParam.getSensorCode(), trendParam.getRoads());
|
|
|
+ List<ExportParam> exportParamList = new ArrayList<>();
|
|
|
+ ExportParam exportParam = new ExportParam();
|
|
|
+ exportParam.setRegionName(monitorTargetRegion.getName());
|
|
|
+ exportParam.setDeviceCode(trendParam.getSensorCode());
|
|
|
+ exportParam.setSensorRoad(trendParam.getRoads());
|
|
|
+ List<String> list = List.of(Arrays.toString(monitorTargetRegion.getSensorType().toCharArray()));
|
|
|
+ if (list.contains("W")) {
|
|
|
+ exportParam.setDataType("温度");
|
|
|
+ LinkedHashSet<String> x = sensorEchartDataResult.getTemperature().getX();
|
|
|
+ List<Float> y = sensorEchartDataResult.getTemperature().getY();
|
|
|
+ int i = 0;
|
|
|
+ for (String s : x) {
|
|
|
+ exportParam.setTime(s);
|
|
|
+ exportParam.setData(y.get(i));
|
|
|
+ i++;
|
|
|
+ exportParamList.add(exportParam);
|
|
|
+ }
|
|
|
+ } else if (list.contains("S")) {
|
|
|
+ exportParam.setDataType("湿度");
|
|
|
+ LinkedHashSet<String> x = sensorEchartDataResult.getHumidity().getX();
|
|
|
+ List<Float> y = sensorEchartDataResult.getHumidity().getY();
|
|
|
+ int i = 0;
|
|
|
+ for (String s : x) {
|
|
|
+ exportParam.setTime(s);
|
|
|
+ exportParam.setData(y.get(i));
|
|
|
+ i++;
|
|
|
+ exportParamList.add(exportParam);
|
|
|
+ }
|
|
|
+ } else if (list.contains("C")) {
|
|
|
+ exportParam.setDataType("二氧化碳浓度");
|
|
|
+ LinkedHashSet<String> x = sensorEchartDataResult.getCo2().getX();
|
|
|
+ List<Float> y = sensorEchartDataResult.getCo2().getY();
|
|
|
+ int i = 0;
|
|
|
+ for (String s : x) {
|
|
|
+ exportParam.setTime(s);
|
|
|
+ exportParam.setData(y.get(i));
|
|
|
+ i++;
|
|
|
+ exportParamList.add(exportParam);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String fileName = "传感器数据";
|
|
|
+ String sheetName = "传感器数据";
|
|
|
+ response.setContentType("application/vnd.ms-excel");
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
+
|
|
|
+ response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + URLEncoder.encode(fileName, StandardCharsets.UTF_8) + ".xls");
|
|
|
+ try (OutputStream outputStream = response.getOutputStream()) {
|
|
|
+ EasyExcel.write(outputStream, MonitorDeviceTemplate.class)
|
|
|
+ .excelType(ExcelTypeEnum.XLS)
|
|
|
+ .sheet(sheetName)
|
|
|
+ .doWrite(exportParamList);
|
|
|
+ } catch (IOException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|