From c0172fda51c546ee9d1a9a50c4d00171ba4151c1 Mon Sep 17 00:00:00 2001 From: wanxiaoli Date: Mon, 18 May 2026 10:43:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ScenarioResultController.java | 69 ++++++++++++++++--- .../business/css/domain/ScenarioResult.java | 6 ++ .../main/resources/application-business.yml | 3 +- 3 files changed, 68 insertions(+), 10 deletions(-) diff --git a/business-css/src/main/java/com/yfd/business/css/controller/ScenarioResultController.java b/business-css/src/main/java/com/yfd/business/css/controller/ScenarioResultController.java index b5c46ff..1e13211 100644 --- a/business-css/src/main/java/com/yfd/business/css/controller/ScenarioResultController.java +++ b/business-css/src/main/java/com/yfd/business/css/controller/ScenarioResultController.java @@ -21,6 +21,12 @@ import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; @RestController @RequestMapping("/scenario-results") @@ -71,6 +77,28 @@ public class ScenarioResultController { } Page page = new Page<>(pageNum, pageSize); Page data = scenarioResultService.page(page, qw.orderByAsc("step").orderByAsc("device_id")); + List records = data.getRecords(); + if (records != null && !records.isEmpty()) { + Set deviceIds = records.stream() + .map(ScenarioResult::getDeviceId) + .filter(id -> id != null && !id.isBlank()) + .collect(Collectors.toSet()); + if (!deviceIds.isEmpty()) { + List devices = deviceService.list(new QueryWrapper() + .select("device_id", "name", "type") + .in("device_id", deviceIds)); + Map deviceMap = devices.stream() + .filter(d -> d.getDeviceId() != null && !d.getDeviceId().isBlank()) + .collect(Collectors.toMap(Device::getDeviceId, d -> d, (a, b) -> a)); + for (ScenarioResult r : records) { + Device d = deviceMap.get(r.getDeviceId()); + if (d != null) { + r.setDeviceName(d.getName()); + r.setDeviceType(d.getType()); + } + } + } + } return ResponseEntity.ok(java.util.Map.of( "code", 0, "msg", "查询成功", @@ -121,6 +149,21 @@ public class ScenarioResultController { } List results = scenarioResultService.list(queryWrapper.orderByAsc("device_id").orderByAsc("step")); + Set deviceIds = results.stream() + .map(ScenarioResult::getDeviceId) + .filter(id -> id != null && !id.isBlank()) + .collect(Collectors.toSet()); + Map deviceMap; + if (deviceIds.isEmpty()) { + deviceMap = java.util.Map.of(); + } else { + List devices = deviceService.list(new QueryWrapper() + .select("device_id", "name", "type") + .in("device_id", deviceIds)); + deviceMap = devices.stream() + .filter(d -> d.getDeviceId() != null && !d.getDeviceId().isBlank()) + .collect(Collectors.toMap(Device::getDeviceId, d -> d, (a, b) -> a)); + } // 创建Excel工作簿 Workbook workbook = new XSSFWorkbook(); @@ -149,11 +192,12 @@ public class ScenarioResultController { dataStyle.setWrapText(true); // 创建表头 - String[] headers = {"场景名称", "设备名称", "时点", "属性值", "Keff值"}; + String[] headers = {"场景名称", "设备名称", "设备类型", "时点", "属性值", "Keff值"}; if (deviceId != null && !deviceId.isEmpty()) { - Device dev = deviceService.getById(deviceId); + Device dev = deviceMap.get(deviceId); String deviceName = dev != null && dev.getName() != null ? dev.getName() : deviceId; + String deviceType = dev != null && dev.getType() != null ? dev.getType() : ""; Sheet sheet = workbook.createSheet(deviceName); Row headerRow = sheet.createRow(0); for (int i = 0; i < headers.length; i++) { @@ -171,14 +215,17 @@ public class ScenarioResultController { cell1.setCellValue(deviceName); cell1.setCellStyle(dataStyle); Cell cell2 = row.createCell(2); - cell2.setCellValue(result.getStep()); + cell2.setCellValue(deviceType); cell2.setCellStyle(dataStyle); Cell cell3 = row.createCell(3); - cell3.setCellValue(result.getAttrState()); + cell3.setCellValue(result.getStep()); cell3.setCellStyle(dataStyle); Cell cell4 = row.createCell(4); - cell4.setCellValue(result.getKeffValue() == null ? 0.0 : result.getKeffValue().doubleValue()); + cell4.setCellValue(result.getAttrState()); cell4.setCellStyle(dataStyle); + Cell cell5 = row.createCell(5); + cell5.setCellValue(result.getKeffValue() == null ? 0.0 : result.getKeffValue().doubleValue()); + cell5.setCellStyle(dataStyle); } for (int i = 0; i < headers.length; i++) { sheet.autoSizeColumn(i); @@ -196,8 +243,9 @@ public class ScenarioResultController { } for (java.util.Map.Entry> entry : byDevice.entrySet()) { String did = entry.getKey(); - Device dev = deviceService.getById(did); + Device dev = deviceMap.get(did); String deviceName = dev != null && dev.getName() != null ? dev.getName() : did; + String deviceType = dev != null && dev.getType() != null ? dev.getType() : ""; Sheet sheet = workbook.createSheet(deviceName); Row headerRow = sheet.createRow(0); for (int i = 0; i < headers.length; i++) { @@ -215,14 +263,17 @@ public class ScenarioResultController { cell1.setCellValue(deviceName); cell1.setCellStyle(dataStyle); Cell cell2 = row.createCell(2); - cell2.setCellValue(result.getStep()); + cell2.setCellValue(deviceType); cell2.setCellStyle(dataStyle); Cell cell3 = row.createCell(3); - cell3.setCellValue(result.getAttrState()); + cell3.setCellValue(result.getStep()); cell3.setCellStyle(dataStyle); Cell cell4 = row.createCell(4); - cell4.setCellValue(result.getKeffValue() == null ? 0.0 : result.getKeffValue().doubleValue()); + cell4.setCellValue(result.getAttrState()); cell4.setCellStyle(dataStyle); + Cell cell5 = row.createCell(5); + cell5.setCellValue(result.getKeffValue() == null ? 0.0 : result.getKeffValue().doubleValue()); + cell5.setCellStyle(dataStyle); } for (int i = 0; i < headers.length; i++) { sheet.autoSizeColumn(i); diff --git a/business-css/src/main/java/com/yfd/business/css/domain/ScenarioResult.java b/business-css/src/main/java/com/yfd/business/css/domain/ScenarioResult.java index 9c804e6..d1be80c 100644 --- a/business-css/src/main/java/com/yfd/business/css/domain/ScenarioResult.java +++ b/business-css/src/main/java/com/yfd/business/css/domain/ScenarioResult.java @@ -27,4 +27,10 @@ public class ScenarioResult implements Serializable { @TableField("keff_value") private BigDecimal keffValue; + + @TableField(exist = false) + private String deviceName; + + @TableField(exist = false) + private String deviceType; } diff --git a/business-css/src/main/resources/application-business.yml b/business-css/src/main/resources/application-business.yml index 4bc54b0..8a18d24 100644 --- a/business-css/src/main/resources/application-business.yml +++ b/business-css/src/main/resources/application-business.yml @@ -22,9 +22,10 @@ file-space: model-path: D:/keff_dataSpace/models/ dataset-path: D:/keff_dataSpace/datasets/ upload-path: D:/keff_dataSpace/upload/ +# 安全配置 生产环境需要关闭permit security: dev: - permit: true + permit: false # 注释掉这里的 file.name,由 logback-spring.xml 接管,防止覆盖 # logging: # file: