diff --git a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/controller/AlgorithmClassController.java b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/controller/AlgorithmClassController.java index b39630c..ed8c8ae 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/controller/AlgorithmClassController.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/controller/AlgorithmClassController.java @@ -95,17 +95,4 @@ public class AlgorithmClassController { } } - @PostMapping("/callAlgorithmAnalyse") - @ApiOperation("调用算法分析") - public ResponseResult callAlgorithmAnalyse(String id) { - if (StrUtil.isBlank(id)) { - return ResponseResult.error("算法分类id为空"); - } - boolean isOK = algorithmClassService.deleteAlgorithmClass(id); - if (isOK) { - return ResponseResult.success(); - } else { - return ResponseResult.error(); - } - } } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/controller/AlgorithmParamsController.java b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/controller/AlgorithmParamsController.java index 89851e9..8bb0505 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/controller/AlgorithmParamsController.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/controller/AlgorithmParamsController.java @@ -1,5 +1,7 @@ package com.yfd.platform.modules.algorithm.controller; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.config.ResponseResult; import com.yfd.platform.modules.algorithm.domain.AlgorithmClass; @@ -37,11 +39,11 @@ public class AlgorithmParamsController { return ResponseResult.successData(algorithmClassList); } - @GetMapping("/getAlgorithmParamsNameList") - @ApiOperation("根据算法id过去参数名称") - public ResponseResult getAlgorithmParamsNameList(String algorithmId) { - List> algorithmClassList = algorithmParamsService.getAlgorithmParamsNameList(algorithmId); + @ApiOperation("获取参数名称") + public ResponseResult getAlgorithmParamsNameList(String algorithmId, String componentId) { + List> algorithmClassList = algorithmParamsService.getAlgorithmParamsNameList(algorithmId, + componentId); return ResponseResult.successData(algorithmClassList); } @@ -88,4 +90,14 @@ public class AlgorithmParamsController { return ResponseResult.error(); } } + + @PostMapping("/callAlgorithmAnalyse") + @ApiOperation("调用算法分析") + public ResponseResult callAlgorithmAnalyse(String id,String componentId) { + if (StrUtil.isBlank(id)) { + return ResponseResult.error("算法分类id为空"); + } + JSONObject data = algorithmParamsService.callAlgorithmAnalyse(id, componentId); + return ResponseResult.successData(data); + } } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/mapper/AlgorithmParamsMapper.java b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/mapper/AlgorithmParamsMapper.java index 26f9cb6..79a3061 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/mapper/AlgorithmParamsMapper.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/mapper/AlgorithmParamsMapper.java @@ -18,5 +18,5 @@ public interface AlgorithmParamsMapper extends BaseMapper { List> getAlgorithmParamsList(String algorithmId,String componentId); - List> getAlgorithmParamsNameList(String algorithmId); + List> getAlgorithmParamsNameList(String algorithmId,String componentId); } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/service/IAlgorithmParamsService.java b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/service/IAlgorithmParamsService.java index 7d25f09..406d699 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/service/IAlgorithmParamsService.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/service/IAlgorithmParamsService.java @@ -1,5 +1,6 @@ package com.yfd.platform.modules.algorithm.service; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.modules.algorithm.domain.AlgorithmParams; import com.baomidou.mybatisplus.extension.service.IService; @@ -27,5 +28,8 @@ public interface IAlgorithmParamsService extends IService { boolean deleteAlgorithmParams(String id); - List> getAlgorithmParamsNameList(String algorithmId); + List> getAlgorithmParamsNameList(String algorithmId,String componentId); + + JSONObject callAlgorithmAnalyse(String id, String componentId); + } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/service/impl/AlgorithmDeviceServiceImpl.java b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/service/impl/AlgorithmDeviceServiceImpl.java index 8a9be0f..7a8fad4 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/service/impl/AlgorithmDeviceServiceImpl.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/service/impl/AlgorithmDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.yfd.platform.modules.algorithm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -11,17 +12,20 @@ import com.yfd.platform.modules.auxcontrol.domain.DeviceSignal; import com.yfd.platform.modules.auxcontrol.domain.DeviceWorkData; import com.yfd.platform.modules.auxcontrol.mapper.DeviceSignalMapper; import com.yfd.platform.modules.auxcontrol.service.IDeviceWorkDataService; +import com.yfd.platform.modules.basedata.domain.SubstationDevice; +import com.yfd.platform.modules.basedata.mapper.SubstationDeviceMapper; +import com.yfd.platform.modules.patroltask.domain.TaskResult; +import com.yfd.platform.modules.patroltask.mapper.TaskResultMapper; import com.yfd.platform.utils.SecurityUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -41,6 +45,10 @@ public class AlgorithmDeviceServiceImpl extends ServiceImpl deviceIdList = groupedDevices.get("1"); List signalIdList = groupedDevices.get("2"); if (deviceIdList != null && deviceIdList.size() > 0) { - + List deviceWorkDataList = taskResultMapper.getResultCurveData(deviceIdList); + Map> collect = + deviceWorkDataList.stream().collect(Collectors.groupingBy(TaskResult::getDeviceId)); + for (String deviceId : collect.keySet()) { + List taskResults = collect.get(deviceId); + Map map = processDeviceData(taskResults, deviceId); + deviceDataList.add(map); + } } if (signalIdList != null && signalIdList.size() > 0) { List deviceWorkDataList = deviceWorkDataService.getHistoricalCurveList(signalIdList); Map> collect = deviceWorkDataList.stream().collect(Collectors.groupingBy(DeviceWorkData::getSignalId)); + for (String signalId : collect.keySet()) { List deviceWorkDataGroup = collect.get(signalId); - Map map = processDeviceData(deviceWorkDataGroup, signalId); + Map map = processSignalData(deviceWorkDataGroup, signalId); deviceDataList.add(map); } @@ -96,7 +112,13 @@ public class AlgorithmDeviceServiceImpl extends ServiceImpl processDeviceData(List deviceWorkDataList, String signalId) { + /********************************** + * 用途说明: 绘制信号ECharts折线图 + * 参数说明 deviceWorkDataList 信号数据 + * 参数说明 signalId 信号id + * 返回值说明: java.util.Map + ***********************************/ + public Map processSignalData(List deviceWorkDataList, String signalId) { // 生成过去60分钟的分钟时间槽 LocalDateTime now = LocalDateTime.now().truncatedTo(ChronoUnit.MINUTES); LocalDateTime startTime = now.minusMinutes(59); @@ -153,4 +175,96 @@ public class AlgorithmDeviceServiceImpl extends ServiceImpl + ***********************************/ + public Map processDeviceData(List taskResults, String deviceId) { + // 定义时间格式解析器 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + // 预处理:过滤无效数据并解析时间 + List processedList = new ArrayList<>(); + for (TaskResult result : taskResults) { + try { + // 解析时间字符串为LocalDateTime(仅用于排序) + LocalDateTime dateTime = LocalDateTime.parse(result.getPatroldeviceDate(), formatter); + + // 解析数值 + double value; + try { + value = NumberUtil.parseDouble(result.getValue()); + } catch (Exception e) { + // 非数值处理为0 + value = 0.0; + } + + processedList.add(new ProcessedData( + result.getPatroldeviceDate(), + value, + dateTime + )); + } catch (DateTimeParseException e) { + // 时间解析失败时跳过此条记录 + System.err.println("Invalid date format: " + result.getPatroldeviceDate()); + } + } + + // 按时间排序(基于解析后的LocalDateTime) + processedList.sort(Comparator.comparing(ProcessedData::getDateTime)); + + // 构建ECharts数据结构 + Map result = new LinkedHashMap<>(); + + + Map xAxis = new LinkedHashMap<>(); + xAxis.put("type", "category"); // 关键变化点 + xAxis.put("data", processedList.stream() + .map(ProcessedData::getOriginalDate) // 直接使用原始字符串 + .collect(Collectors.toList())); + result.put("xAxis", xAxis); + + + Map yAxis = new HashMap<>(); + yAxis.put("type", "value"); + result.put("yAxis", yAxis); + + + List seriesData = processedList.stream() + .map(ProcessedData::getValue) + .collect(Collectors.toList()); + + SubstationDevice substationDevice = substationDeviceMapper.selectById(deviceId); + String name = substationDevice == null ? "" : substationDevice.getDeviceName(); + Map series = new LinkedHashMap<>(); + series.put("name", name); + series.put("type", "line"); + series.put("data", seriesData); // 直接对应xAxis.data的顺序 + result.put("series", Collections.singletonList(series)); + + return result; + } + + + private static class ProcessedData { + // 原始时间字符串(用于最终展示) + private final String originalDate; + private final double value; + // 仅用于排序 + private final LocalDateTime dateTime; + + public ProcessedData(String originalDate, double value, LocalDateTime dateTime) { + this.originalDate = originalDate; + this.value = value; + this.dateTime = dateTime; + } + + public String getOriginalDate() { return originalDate; } + public double getValue() { return value; } + public LocalDateTime getDateTime() { return dateTime; } + } + } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/service/impl/AlgorithmParamsServiceImpl.java b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/service/impl/AlgorithmParamsServiceImpl.java index 9792614..d3ff05d 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/service/impl/AlgorithmParamsServiceImpl.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/service/impl/AlgorithmParamsServiceImpl.java @@ -1,7 +1,9 @@ package com.yfd.platform.modules.algorithm.service.impl; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.modules.algorithm.domain.AlgorithmParams; +import com.yfd.platform.modules.algorithm.mapper.AlgorithmDeviceMapper; import com.yfd.platform.modules.algorithm.mapper.AlgorithmParamsMapper; import com.yfd.platform.modules.algorithm.service.IAlgorithmParamsService; import org.springframework.stereotype.Service; @@ -23,10 +25,12 @@ public class AlgorithmParamsServiceImpl extends ServiceImpl> getAlgorithmParamsList(String algorithmId,String componentId) { - return algorithmParamsMapper.getAlgorithmParamsList(algorithmId,componentId); + public List> getAlgorithmParamsList(String algorithmId, String componentId) { + return algorithmParamsMapper.getAlgorithmParamsList(algorithmId, componentId); } @Override @@ -50,7 +54,13 @@ public class AlgorithmParamsServiceImpl extends ServiceImpl> getAlgorithmParamsNameList(String algorithmId) { - return algorithmParamsMapper.getAlgorithmParamsNameList(algorithmId); + public List> getAlgorithmParamsNameList(String algorithmId, String componentId) { + return algorithmParamsMapper.getAlgorithmParamsNameList(algorithmId, componentId); + } + + @Override + public JSONObject callAlgorithmAnalyse(String id, String componentId) { + + return null; } } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/patroltask/mapper/TaskResultMapper.java b/riis-system/src/main/java/com/yfd/platform/modules/patroltask/mapper/TaskResultMapper.java index a7abb7f..fbe58af 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/patroltask/mapper/TaskResultMapper.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/patroltask/mapper/TaskResultMapper.java @@ -210,4 +210,6 @@ public interface TaskResultMapper extends BaseMapper { List getNonCoherentResult(String areaId,String bayId,String mainDeviceId,String componentId,String recognitionTypeList,String meterType,String resultId,String taskTodoId,String phase); Page> getHistoryDevice(Page> page, String startDate, String endDate, String deviceId); + + List getResultCurveData(List deviceIdList); } diff --git a/riis-system/src/main/resources/mapper/algorithm/AlgorithmDeviceMapper.xml b/riis-system/src/main/resources/mapper/algorithm/AlgorithmDeviceMapper.xml index 8e013af..1b1bda5 100644 --- a/riis-system/src/main/resources/mapper/algorithm/AlgorithmDeviceMapper.xml +++ b/riis-system/src/main/resources/mapper/algorithm/AlgorithmDeviceMapper.xml @@ -14,10 +14,10 @@ WHERE ap.param_fixed = '1' - AND ad.algorithm_id LIKE CONCAT('%',#{algorithmId},'%') + AND ad.algorithm_id = #{algorithmId} - AND ad.component_id LIKE CONCAT('%',#{componentId},'%') + AND ad.component_id =#{componentId} diff --git a/riis-system/src/main/resources/mapper/algorithm/AlgorithmParamsMapper.xml b/riis-system/src/main/resources/mapper/algorithm/AlgorithmParamsMapper.xml index 07586ec..c978880 100644 --- a/riis-system/src/main/resources/mapper/algorithm/AlgorithmParamsMapper.xml +++ b/riis-system/src/main/resources/mapper/algorithm/AlgorithmParamsMapper.xml @@ -34,15 +34,20 @@ diff --git a/riis-system/src/main/resources/mapper/patroltask/TaskResultMapper.xml b/riis-system/src/main/resources/mapper/patroltask/TaskResultMapper.xml index 04b724b..b3c6f54 100644 --- a/riis-system/src/main/resources/mapper/patroltask/TaskResultMapper.xml +++ b/riis-system/src/main/resources/mapper/patroltask/TaskResultMapper.xml @@ -911,4 +911,28 @@ ORDER BY AND t.patroldevice_date <= #{endDate} +