From 2ba00054264e1077a5f1c3f9a99e08e5d4f7c504 Mon Sep 17 00:00:00 2001 From: weitang Date: Mon, 28 Apr 2025 15:43:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DeviceWorkDataController.java | 105 ++++++++++-------- .../auxcontrol/domain/DeviceAlarmRecord.java | 5 + .../auxcontrol/domain/DeviceWorkData.java | 3 + .../mapper/DeviceWorkDataMapper.java | 4 +- .../service/IDeviceWorkDataService.java | 4 +- .../impl/DeviceWorkDataServiceImpl.java | 8 +- .../mapper/auxcontrol/DeviceSignalMapper.xml | 1 + .../auxcontrol/DeviceWorkDataMapper.xml | 4 +- 8 files changed, 80 insertions(+), 54 deletions(-) diff --git a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/controller/DeviceWorkDataController.java b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/controller/DeviceWorkDataController.java index 85ecc13..50ddccc 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/controller/DeviceWorkDataController.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/controller/DeviceWorkDataController.java @@ -15,11 +15,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.LongStream; @@ -40,55 +38,74 @@ public class DeviceWorkDataController { private IDeviceWorkDataService deviceWorkDataService; @GetMapping("/page") - @ApiOperation("分页查询变电站辅控设备告警记录") - public ResponseResult getDeviceWorkDataPage(Page page, String stationId, String startDate, + @ApiOperation("分页查询变电站设备运行记录") + public ResponseResult getDeviceWorkDataPage(Page page, String signalId, String startDate, String endDate) { - Page deviceWorkDataPage = deviceWorkDataService.getDeviceWorkDataPage(page, stationId, + Page deviceWorkDataPage = deviceWorkDataService.getDeviceWorkDataPage(page, signalId, startDate, endDate); return ResponseResult.successData(deviceWorkDataPage); } - public List processMinuteDataOptimized(List deviceWorkDataList) { - return null; + public Map processDeviceData(List deviceWorkDataList) { + // 生成过去60分钟的分钟时间槽 + LocalDateTime now = LocalDateTime.now().truncatedTo(ChronoUnit.MINUTES); + LocalDateTime startTime = now.minusMinutes(59); + List minuteSlots = new ArrayList<>(); + for (int i = 0; i < 60; i++) { + minuteSlots.add(startTime.plusMinutes(i)); + } + + // 按分钟分组数据 + Map minuteDataMap = new HashMap<>(); + for (DeviceWorkData data : deviceWorkDataList) { + LocalDateTime minuteKey = data.getStartTime().truncatedTo(ChronoUnit.MINUTES); + minuteDataMap.put(minuteKey, data.getValue()); + } + + // 构建xAxis和series数据 + List xAxisData = new ArrayList<>(); + List seriesData = new ArrayList<>(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH分mm秒"); + for (LocalDateTime slot : minuteSlots) { + xAxisData.add(slot.format(formatter)); + BigDecimal value = minuteDataMap.getOrDefault(slot, BigDecimal.ZERO); + seriesData.add(value.doubleValue()); + } + + // 构建ECharts数据结构 + Map result = new HashMap<>(); + + Map xAxis = new HashMap<>(); + xAxis.put("type", "category"); + xAxis.put("data", xAxisData); + result.put("xAxis", xAxis); + + Map yAxis = new HashMap<>(); + yAxis.put("type", "value"); + result.put("yAxis", yAxis); + + List> seriesList = new ArrayList<>(); + Map series = new HashMap<>(); + series.put("name", "Step Start"); + series.put("type", "line"); + series.put("step", "start"); + series.put("data", seriesData); + seriesList.add(series); + + // 如果需要多个系列,可以继续添加 + // 例如复制series并修改name和step + + result.put("series", seriesList); + + return result; } @GetMapping("/getHistoricalCurve") @ApiOperation("查询历史曲线") - public ResponseResult getHistoricalCurve(String stationId, String type) { - List deviceWorkDataList = deviceWorkDataService.getHistoricalCurve(stationId); - - Map historicalCurve = new HashMap<>(); - historicalCurve.put("xAxis", JSONUtil.parseObj("{\n" + - " type: 'category',\n" + - " data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n" + - " }")); - - historicalCurve.put("yAxis", JSONUtil.parseObj("{\n" + - " type: 'value'\n" + - " }")); - - historicalCurve.put("series", JSONUtil.parseArray("[\n" + - " {\n" + - " name: 'Step Start',\n" + - " type: 'line',\n" + - " step: 'start',\n" + - " data: [120, 132, 101, 134, 90, 230, 210]\n" + - " },\n" + - " {\n" + - " name: 'Step Middle',\n" + - " type: 'line',\n" + - " step: 'middle',\n" + - " data: [220, 282, 201, 234, 290, 430, 410]\n" + - " },\n" + - " {\n" + - " name: 'Step End',\n" + - " type: 'line',\n" + - " step: 'end',\n" + - " data: [450, 432, 401, 454, 590, 530, 510]\n" + - " }\n" + - " ]")); - - return ResponseResult.successData(historicalCurve); + public ResponseResult getHistoricalCurve(String signalId, String type) { + List deviceWorkDataList = deviceWorkDataService.getHistoricalCurve(signalId); + Map map = processDeviceData(deviceWorkDataList); + return ResponseResult.successData(map); } } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/domain/DeviceAlarmRecord.java b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/domain/DeviceAlarmRecord.java index f668944..72e98d4 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/domain/DeviceAlarmRecord.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/domain/DeviceAlarmRecord.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import java.time.LocalDateTime; import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.EqualsAndHashCode; @@ -40,6 +42,7 @@ public class DeviceAlarmRecord implements Serializable { /** * 告警时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime alarmTime; /** @@ -135,6 +138,7 @@ public class DeviceAlarmRecord implements Serializable { /** * 故障消除时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime fixTime; /** @@ -155,6 +159,7 @@ public class DeviceAlarmRecord implements Serializable { /** * 操作时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime operationTime; /** diff --git a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/domain/DeviceWorkData.java b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/domain/DeviceWorkData.java index 725e6e6..029127a 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/domain/DeviceWorkData.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/domain/DeviceWorkData.java @@ -4,6 +4,8 @@ import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; import java.time.LocalDateTime; import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.EqualsAndHashCode; @@ -60,6 +62,7 @@ public class DeviceWorkData implements Serializable { /** * 采集时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; /** diff --git a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/mapper/DeviceWorkDataMapper.java b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/mapper/DeviceWorkDataMapper.java index bceaffb..f39e6fc 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/mapper/DeviceWorkDataMapper.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/mapper/DeviceWorkDataMapper.java @@ -16,9 +16,9 @@ import java.util.List; */ public interface DeviceWorkDataMapper extends BaseMapper { - Page getDeviceWorkDataPage(Page page,String stationId, String startDate, String endDate); + Page getDeviceWorkDataPage(Page page,String signalId, String startDate, String endDate); - List getHistoricalCurve(String stationId); + List getHistoricalCurve(String signalId); } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/IDeviceWorkDataService.java b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/IDeviceWorkDataService.java index 2ae2840..1ec6977 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/IDeviceWorkDataService.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/IDeviceWorkDataService.java @@ -28,8 +28,8 @@ public interface IDeviceWorkDataService extends IService { ***********************************/ void insertData(String from, String slave_ip, String address, String value, String dateTimeString); - Page getDeviceWorkDataPage(Page page,String stationId, String startDate, String endDate); + Page getDeviceWorkDataPage(Page page,String signalId, String startDate, String endDate); - List getHistoricalCurve(String stationId); + List getHistoricalCurve(String signalId); } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/impl/DeviceWorkDataServiceImpl.java b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/impl/DeviceWorkDataServiceImpl.java index 8121f9a..9d95267 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/impl/DeviceWorkDataServiceImpl.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/impl/DeviceWorkDataServiceImpl.java @@ -72,13 +72,13 @@ public class DeviceWorkDataServiceImpl extends ServiceImpl getDeviceWorkDataPage(Page page,String stationId, String startDate, String endDate) { - return deviceWorkDataMapper.getDeviceWorkDataPage(page,stationId,startDate,endDate); + public Page getDeviceWorkDataPage(Page page,String signalId, String startDate, String endDate) { + return deviceWorkDataMapper.getDeviceWorkDataPage(page,signalId,startDate,endDate); } @Override - public List getHistoricalCurve(String stationId) { - return deviceWorkDataMapper.getHistoricalCurve(stationId); + public List getHistoricalCurve(String signalId) { + return deviceWorkDataMapper.getHistoricalCurve(signalId); } } diff --git a/riis-system/src/main/resources/mapper/auxcontrol/DeviceSignalMapper.xml b/riis-system/src/main/resources/mapper/auxcontrol/DeviceSignalMapper.xml index ad99829..474ed79 100644 --- a/riis-system/src/main/resources/mapper/auxcontrol/DeviceSignalMapper.xml +++ b/riis-system/src/main/resources/mapper/auxcontrol/DeviceSignalMapper.xml @@ -106,6 +106,7 @@ fgd.ip_addr, fgd.Protocol, fgd.frequency, + fgd.device_name, fgd.device_type FROM fk_device_signal fds diff --git a/riis-system/src/main/resources/mapper/auxcontrol/DeviceWorkDataMapper.xml b/riis-system/src/main/resources/mapper/auxcontrol/DeviceWorkDataMapper.xml index e8344df..cd1a543 100644 --- a/riis-system/src/main/resources/mapper/auxcontrol/DeviceWorkDataMapper.xml +++ b/riis-system/src/main/resources/mapper/auxcontrol/DeviceWorkDataMapper.xml @@ -15,7 +15,7 @@ FROM fk_device_work_data WHERE 1=1 - AND station_id=#{stationId} + AND signal_id=#{signalId} AND start_time >= #{startDate} @@ -33,7 +33,7 @@ FROM fk_device_work_data WHERE - station_id=#{stationId} + signal_id=#{signalId} AND start_time >= NOW() - INTERVAL 1 HOUR ORDER BY start_time DESC