|
|
@@ -34,6 +34,7 @@ import com.itextpdf.layout.element.*;
|
|
|
import com.itextpdf.layout.properties.HorizontalAlignment;
|
|
|
import com.itextpdf.layout.properties.TextAlignment;
|
|
|
import com.itextpdf.layout.properties.UnitValue;
|
|
|
+import jakarta.annotation.Resource;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -42,6 +43,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
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.dto.AppInfo;
|
|
|
import vip.xiaonuo.coldchain.modular.app.param.*;
|
|
|
import vip.xiaonuo.coldchain.modular.app.param.export.AppTrendParam;
|
|
|
import vip.xiaonuo.coldchain.modular.app.param.export.ExportParam;
|
|
|
@@ -54,6 +56,8 @@ import vip.xiaonuo.coldchain.modular.monitortargetregion.entity.MonitorTargetReg
|
|
|
import vip.xiaonuo.coldchain.modular.monitortargetregion.service.MonitorTargetRegionService;
|
|
|
import vip.xiaonuo.common.enums.CommonDeleteFlagEnum;
|
|
|
import vip.xiaonuo.common.exception.CommonException;
|
|
|
+import vip.xiaonuo.dev.modular.config.entity.DevConfig;
|
|
|
+import vip.xiaonuo.dev.modular.config.service.DevConfigService;
|
|
|
|
|
|
import java.io.*;
|
|
|
import java.math.RoundingMode;
|
|
|
@@ -83,6 +87,8 @@ public class AppDeviceService {
|
|
|
private final MonitorTargetRegionService monitorTargetRegionService;
|
|
|
private final JfcloudSensorDataService jfcloudSensorDataService;
|
|
|
private final MonitorDeviceService monitorDeviceService;
|
|
|
+ @Resource
|
|
|
+ DevConfigService devConfigService;
|
|
|
|
|
|
// 模拟设备保存操作,实际应用中可能会是数据库操作
|
|
|
public boolean addDevice(AppDeviceAddParam device) {
|
|
|
@@ -533,10 +539,12 @@ public class AppDeviceService {
|
|
|
public void export(HttpServletResponse response, AppTrendParam trendParam, MultipartFile file) {
|
|
|
// 初始化配置和计时器
|
|
|
TEMP_FORMAT.setRoundingMode(RoundingMode.HALF_UP);
|
|
|
+
|
|
|
+ MonitorTargetRegion monitorTargetRegion1 = monitorTargetRegionService.findOneByDeviceCodeAndSensorNo(trendParam.getSensorCode(), trendParam.getRoads());
|
|
|
try {
|
|
|
// 并行执行设备查询和数据查询
|
|
|
- CompletableFuture<MonitorTargetRegion> regionFuture = CompletableFuture.supplyAsync(() ->
|
|
|
- monitorTargetRegionService.findOneByDeviceCodeAndSensorNo(trendParam.getSensorCode(), trendParam.getRoads()));
|
|
|
+ CompletableFuture<MonitorTargetRegion> regionFuture = CompletableFuture.supplyAsync(() -> monitorTargetRegion1
|
|
|
+ );
|
|
|
|
|
|
AppDeviceQueryParams appDeviceQueryParams = BeanUtil.copyProperties(trendParam, AppDeviceQueryParams.class);
|
|
|
appDeviceQueryParams.setSensorRoute(trendParam.getRoads());
|
|
|
@@ -771,28 +779,40 @@ public class AppDeviceService {
|
|
|
Float[] co2Stats = statsMap.get("co2");
|
|
|
|
|
|
if (sensorType.contains("W")) {
|
|
|
- addTableRow(recordTable, "开始时间:", trendParam.getStartTime(),
|
|
|
- "最高温度:", TEMP_FORMAT.format(tempStats[0]) + "°C");
|
|
|
- addTableRow(recordTable, "结束时间:", trendParam.getEndTime(),
|
|
|
- "最低温度:", TEMP_FORMAT.format(tempStats[1]) + "°C");
|
|
|
- addTableRow(recordTable, "", "",
|
|
|
- "平均温度:", TEMP_FORMAT.format(tempStats[2]) + "°C");
|
|
|
+ String maxTemp = (tempStats != null && tempStats.length > 0 && tempStats[0] != null) ?
|
|
|
+ TEMP_FORMAT.format(tempStats[0]) + "℃" : "";
|
|
|
+ String minTemp = (tempStats != null && tempStats.length > 1 && tempStats[1] != null) ?
|
|
|
+ TEMP_FORMAT.format(tempStats[1]) + "℃" : "";
|
|
|
+ String avgTemp = (tempStats != null && tempStats.length > 2 && tempStats[2] != null) ?
|
|
|
+ TEMP_FORMAT.format(tempStats[2]) + "℃" : "";
|
|
|
+
|
|
|
+ addTableRow(recordTable, "开始时间:", trendParam.getStartTime(), "最高温度:", maxTemp);
|
|
|
+ addTableRow(recordTable, "结束时间:", trendParam.getEndTime(), "最低温度:", minTemp);
|
|
|
+ addTableRow(recordTable, "", "", "平均温度:", avgTemp);
|
|
|
}
|
|
|
if (sensorType.contains("S")) {
|
|
|
- addTableRow(recordTable, "开始时间:", trendParam.getStartTime(),
|
|
|
- "最高湿度:", TEMP_FORMAT.format(humStats[0]) + "%");
|
|
|
- addTableRow(recordTable, "结束时间:", trendParam.getEndTime(),
|
|
|
- "最低湿度:", TEMP_FORMAT.format(humStats[1]) + "%");
|
|
|
- addTableRow(recordTable, "", "",
|
|
|
- "平均湿度:", TEMP_FORMAT.format(humStats[2]) + "%");
|
|
|
+ String maxHum = (humStats != null && humStats.length > 0 && humStats[0] != null)
|
|
|
+ ? TEMP_FORMAT.format(humStats[0]) + "%" : "";
|
|
|
+ String minHum = (humStats != null && humStats.length > 1 && humStats[1] != null)
|
|
|
+ ? TEMP_FORMAT.format(humStats[1]) + "%" : "";
|
|
|
+ String avgHum = (humStats != null && humStats.length > 2 && humStats[2] != null)
|
|
|
+ ? TEMP_FORMAT.format(humStats[2]) + "%" : "";
|
|
|
+
|
|
|
+ addTableRow(recordTable, "开始时间:", trendParam.getStartTime(), "最高湿度:", maxHum);
|
|
|
+ addTableRow(recordTable, "结束时间:", trendParam.getEndTime(), "最低湿度:", minHum);
|
|
|
+ addTableRow(recordTable, "", "", "平均湿度:", avgHum);
|
|
|
}
|
|
|
if (sensorType.contains("C")) {
|
|
|
- addTableRow(recordTable, "开始时间:", trendParam.getStartTime(),
|
|
|
- "最高Co2浓度:", TEMP_FORMAT.format(co2Stats[0]) + "ppm");
|
|
|
- addTableRow(recordTable, "结束时间:", trendParam.getEndTime(),
|
|
|
- "最低Co2浓度:", TEMP_FORMAT.format(co2Stats[1]) + "ppm");
|
|
|
- addTableRow(recordTable, "", "",
|
|
|
- "平均Co2浓度:", TEMP_FORMAT.format(co2Stats[2]) + "ppm");
|
|
|
+ String maxCo2 = (co2Stats != null && co2Stats.length > 0 && co2Stats[0] != null)
|
|
|
+ ? TEMP_FORMAT.format(co2Stats[0]) + "ppm" : "";
|
|
|
+ String minCo2 = (co2Stats != null && co2Stats.length > 1 && co2Stats[1] != null)
|
|
|
+ ? TEMP_FORMAT.format(co2Stats[1]) + "ppm" : "";
|
|
|
+ String avgCo2 = (co2Stats != null && co2Stats.length > 2 && co2Stats[2] != null)
|
|
|
+ ? TEMP_FORMAT.format(co2Stats[2]) + "ppm" : "";
|
|
|
+
|
|
|
+ addTableRow(recordTable, "开始时间:", trendParam.getStartTime(), "最高CO₂浓度:", maxCo2);
|
|
|
+ addTableRow(recordTable, "结束时间:", trendParam.getEndTime(), "最低CO₂浓度:", minCo2);
|
|
|
+ addTableRow(recordTable, "", "", "平均CO₂浓度:", avgCo2);
|
|
|
}
|
|
|
recordTable.setMarginBottom(10);
|
|
|
elements.add(recordTable);
|
|
|
@@ -985,4 +1005,32 @@ public class AppDeviceService {
|
|
|
default -> time;
|
|
|
};
|
|
|
}
|
|
|
+
|
|
|
+ public AppInfo getAppInfo() {
|
|
|
+ List<DevConfig> devConfigs = devConfigService.sysBaseList();
|
|
|
+ AppInfo appInfo = new AppInfo();
|
|
|
+ for (DevConfig devConfig : devConfigs) {
|
|
|
+ switch (devConfig.getConfigKey()) {
|
|
|
+ case "SNOWY_SYS_LOGO":
|
|
|
+ appInfo.setSysIcon(devConfig.getConfigValue());
|
|
|
+ break;
|
|
|
+ case "SNOWY_SYS_VERSION":
|
|
|
+ appInfo.setSysVersion(devConfig.getConfigValue());
|
|
|
+ break;
|
|
|
+ case "SNOWY_SYS_COPYRIGHT":
|
|
|
+ appInfo.setCopyright(devConfig.getConfigValue());
|
|
|
+ break;
|
|
|
+ case "SNOWY_SYS_COPYRIGHT_URL":
|
|
|
+ appInfo.setOfficialWebsite(devConfig.getConfigValue());
|
|
|
+ break;
|
|
|
+ case "SNOWY_SYS_DEFAULT_DESCRRIPTION":
|
|
|
+ appInfo.setSysIntro(devConfig.getConfigValue());
|
|
|
+ break;
|
|
|
+ case "SNOWY_SYS_COPYRIGHT_NO":
|
|
|
+ appInfo.setCopyRightNo(devConfig.getConfigValue());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return appInfo;
|
|
|
+ }
|
|
|
}
|