diff --git a/business-css/frontend/vite.config.ts b/business-css/frontend/vite.config.ts index 4fb0f3d..342d0d7 100644 --- a/business-css/frontend/vite.config.ts +++ b/business-css/frontend/vite.config.ts @@ -27,7 +27,7 @@ export default ({ mode }: ConfigEnv): UserConfig => { // 线上API地址 // target: 'http://192.168.1.166:8090/', // 本地API地址 - target: 'http://192.168.1.166:8090', + target: 'http://localhost:8090', changeOrigin: true, ws: true, rewrite: path => diff --git a/business-css/src/main/java/com/yfd/business/css/controller/AlgorithmModelController.java b/business-css/src/main/java/com/yfd/business/css/controller/AlgorithmModelController.java index 7d87cc0..a973245 100644 --- a/business-css/src/main/java/com/yfd/business/css/controller/AlgorithmModelController.java +++ b/business-css/src/main/java/com/yfd/business/css/controller/AlgorithmModelController.java @@ -113,7 +113,7 @@ public class AlgorithmModelController { } if (versionTag != null && !versionTag.isEmpty()) qw.eq("version_tag", versionTag); if (isCurrent != null && !isCurrent.isEmpty()) qw.eq("is_current", isCurrent); - qw.orderByDesc("updated_at"); + qw.orderByDesc("is_current").orderByDesc("updated_at"); Page page = new Page<>(pageNum, pageSize, true); return algorithmModelService.page(page, qw); } diff --git a/business-css/src/main/java/com/yfd/business/css/controller/MaterialController.java b/business-css/src/main/java/com/yfd/business/css/controller/MaterialController.java index e6590b9..d9583e5 100644 --- a/business-css/src/main/java/com/yfd/business/css/controller/MaterialController.java +++ b/business-css/src/main/java/com/yfd/business/css/controller/MaterialController.java @@ -146,13 +146,14 @@ public class MaterialController { @PreAuthorize("hasAuthority('material:export')") @Log(value = "导出物料", module = "物料管理") @GetMapping("/export") - public ResponseEntity exportMaterialsV2(@RequestParam String projectId, + public ResponseEntity exportMaterialsV2(@RequestParam(required = false) String projectId, @RequestParam(required = false) List ids, @RequestParam(required = false) String nameLike) { - if (projectId != null && !projectId.isBlank() && !"-1".equals(projectId)) { - projectAccessHelper.assertCanReadProject(projectId); + String pid = (projectId == null || projectId.isBlank()) ? "-1" : projectId; + if (!"-1".equals(pid)) { + projectAccessHelper.assertCanReadProject(pid); } - byte[] bytes = materialService.exportMaterialsV2(projectId, ids, nameLike); + byte[] bytes = materialService.exportMaterialsV2(pid, ids, nameLike); String fn = "materials.xlsx"; return ResponseEntity.ok() .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fn) 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: