From a1c68e8506340d62d86196e94940ec8b4abc38e8 Mon Sep 17 00:00:00 2001 From: qinjie <463333974@qq.com> Date: Tue, 10 Dec 2024 21:17:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SummaryController.java | 17 ++++ .../com/isu/gaswellwatch/dao/DeviceDao.java | 4 + .../gaswellwatch/service/DeviceService.java | 4 + .../gaswellwatch/service/SummaryService.java | 5 + .../service/impl/DeviceServiceImpl.java | 12 +++ .../service/impl/SummaryServiceImpl.java | 93 +++++++++++++++++++ .../gaswellwatch/vo/summary/LineDataVO.java | 26 ++++++ .../vo/summary/LineSummaryVO.java | 29 ++++++ src/main/resources/mapper/DeviceDao.xml | 33 +++++++ src/main/resources/mapper/RemindDao.xml | 4 +- 10 files changed, 225 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/isu/gaswellwatch/vo/summary/LineDataVO.java create mode 100644 src/main/java/com/isu/gaswellwatch/vo/summary/LineSummaryVO.java diff --git a/src/main/java/com/isu/gaswellwatch/controller/SummaryController.java b/src/main/java/com/isu/gaswellwatch/controller/SummaryController.java index 51ce5d4..fefac69 100644 --- a/src/main/java/com/isu/gaswellwatch/controller/SummaryController.java +++ b/src/main/java/com/isu/gaswellwatch/controller/SummaryController.java @@ -3,10 +3,12 @@ package com.isu.gaswellwatch.controller; import com.isu.gaswellwatch.entity.Response; import com.isu.gaswellwatch.service.SummaryService; +import com.isu.gaswellwatch.vo.summary.LineSummaryVO; import com.isu.gaswellwatch.vo.summary.PieSummaryVO; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; @@ -25,5 +27,20 @@ public class SummaryController { return Response.succeed(this.summaryService.getIndexPieSummary()); } + @GetMapping("/getPressureChartData") + public Response getPressureChartData(@RequestParam(required = false)String startTime, + @RequestParam (required = false)String endTime, + @RequestParam Long deviceId) { + return Response.succeed(this.summaryService.getPressureChartData(startTime,endTime,deviceId)); + } + + @GetMapping("/getSwitchChartData") + public Response getSwitchChartData(@RequestParam(required = false)String startTime, + @RequestParam (required = false)String endTime, + @RequestParam Long deviceId) { + return Response.succeed(this.summaryService.getSwitchChartData(startTime,endTime,deviceId)); + } + + } diff --git a/src/main/java/com/isu/gaswellwatch/dao/DeviceDao.java b/src/main/java/com/isu/gaswellwatch/dao/DeviceDao.java index d77e020..c586d4e 100644 --- a/src/main/java/com/isu/gaswellwatch/dao/DeviceDao.java +++ b/src/main/java/com/isu/gaswellwatch/dao/DeviceDao.java @@ -39,5 +39,9 @@ public interface DeviceDao extends BaseMapper { @Param("deviceId") Long deviceId); List getDeviceVOByIds(@Param("idList")List deviceIdList); + + List getPressureChartData(Long deviceId, String startTime, String endTime, String tableName); + + List getSwitchStatusData(Long deviceId, String startTime, String endTime, String tableName,String deviceProduct); } diff --git a/src/main/java/com/isu/gaswellwatch/service/DeviceService.java b/src/main/java/com/isu/gaswellwatch/service/DeviceService.java index 075d156..c5305b0 100644 --- a/src/main/java/com/isu/gaswellwatch/service/DeviceService.java +++ b/src/main/java/com/isu/gaswellwatch/service/DeviceService.java @@ -32,5 +32,9 @@ public interface DeviceService extends IService { Page getDeviceLogData(Integer currentPage, Integer pageSize, String startTime, String endTime, Long deviceId) throws ParseException; List getDeviceVOByIds(List deviceIdList); + + List getPressureChartData(Long deviceId, String startTime, String endTime); + + List getSwitchStatusData(Long deviceId, String startTime, String endTime,String deviceProduct); } diff --git a/src/main/java/com/isu/gaswellwatch/service/SummaryService.java b/src/main/java/com/isu/gaswellwatch/service/SummaryService.java index 6877544..f516155 100644 --- a/src/main/java/com/isu/gaswellwatch/service/SummaryService.java +++ b/src/main/java/com/isu/gaswellwatch/service/SummaryService.java @@ -1,6 +1,7 @@ package com.isu.gaswellwatch.service; +import com.isu.gaswellwatch.vo.summary.LineSummaryVO; import com.isu.gaswellwatch.vo.summary.PieSummaryVO; import java.util.List; @@ -8,5 +9,9 @@ import java.util.List; public interface SummaryService{ List getIndexPieSummary(); + + LineSummaryVO getPressureChartData(String startTime, String endTime, Long deviceId); + + LineSummaryVO getSwitchChartData(String startTime, String endTime, Long deviceId); } diff --git a/src/main/java/com/isu/gaswellwatch/service/impl/DeviceServiceImpl.java b/src/main/java/com/isu/gaswellwatch/service/impl/DeviceServiceImpl.java index 8dcbeeb..22fdf40 100644 --- a/src/main/java/com/isu/gaswellwatch/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/isu/gaswellwatch/service/impl/DeviceServiceImpl.java @@ -183,6 +183,18 @@ public class DeviceServiceImpl extends ServiceImpl implements return this.deviceDao.getDeviceVOByIds(deviceIdList); } + @Override + public List getPressureChartData(Long deviceId, String startTime, String endTime) { + String tableName = Redis2DBPersistenceService.DEFAULT_DATA_TABLE + deviceId; + return deviceDao.getPressureChartData(deviceId,startTime,endTime,tableName); + } + + @Override + public List getSwitchStatusData(Long deviceId, String startTime, String endTime,String deviceProduct) { + String tableName = Redis2DBPersistenceService.DEFAULT_DATA_TABLE + deviceId; + return deviceDao.getSwitchStatusData(deviceId,startTime,endTime,tableName,deviceProduct); + } + @Override public Page getDeviceHistoryData(Integer currentPage, Integer pageSize, String startTime, String endTime, Long deviceId) throws ParseException { diff --git a/src/main/java/com/isu/gaswellwatch/service/impl/SummaryServiceImpl.java b/src/main/java/com/isu/gaswellwatch/service/impl/SummaryServiceImpl.java index df7a09f..2a7391d 100644 --- a/src/main/java/com/isu/gaswellwatch/service/impl/SummaryServiceImpl.java +++ b/src/main/java/com/isu/gaswellwatch/service/impl/SummaryServiceImpl.java @@ -2,11 +2,15 @@ package com.isu.gaswellwatch.service.impl; import com.isu.gaswellwatch.service.DeviceService; import com.isu.gaswellwatch.service.SummaryService; +import com.isu.gaswellwatch.vo.DeviceHistoryVO; import com.isu.gaswellwatch.vo.DeviceVO; +import com.isu.gaswellwatch.vo.summary.LineDataVO; +import com.isu.gaswellwatch.vo.summary.LineSummaryVO; import com.isu.gaswellwatch.vo.summary.PieDataVO; import com.isu.gaswellwatch.vo.summary.PieSummaryVO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.RedisConnectionFailureException; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -95,6 +99,95 @@ public class SummaryServiceImpl implements SummaryService { return pieSummaryVOList; } + @Override + public LineSummaryVO getPressureChartData(String startTime, String endTime, Long deviceId) { + //根据设备ID、时间范围查询设备历史数据表的油压 套压 + DeviceVO deviceVO = deviceService.getDevice(deviceId); + if(deviceVO == null){ + throw new RuntimeException("设备不存在"); + } + List xAxisData = new ArrayList<>(); + + List dataList = deviceService.getPressureChartData(deviceId,startTime,endTime); + //将查询到的结果组装成LineSummaryVO返回给前端 + LineSummaryVO lineSummaryVO = new LineSummaryVO(); + lineSummaryVO.setTitle(deviceVO.getGasWell().getName()); + + //设置图例数据 + List legendData = new ArrayList<>(); + legendData.add("油压"); + legendData.add("套压"); + lineSummaryVO.setLegendData(legendData); + + List oilPressureData = new ArrayList<>(); + List casPressureData = new ArrayList<>(); + + for(DeviceHistoryVO deviceHistoryVO : dataList){ + xAxisData.add(deviceHistoryVO.getCollectionTime()); + oilPressureData.add(StringUtils.isEmpty(deviceHistoryVO.getOilPressure())?"0":deviceHistoryVO.getOilPressure()); + casPressureData.add(StringUtils.isEmpty(deviceHistoryVO.getCasPressure())?"0":deviceHistoryVO.getCasPressure()); + } + + //设置x轴数据(日期) + lineSummaryVO.setXAxisData(xAxisData); + + //设置y轴数据(油压、套压) + List series = new ArrayList<>(); + LineDataVO oil = new LineDataVO(); + oil.setName("油压"); + oil.setType("line"); + oil.setData(oilPressureData); + + LineDataVO cas = new LineDataVO(); + cas.setName("套压"); + cas.setType("line"); + cas.setData(casPressureData); + + series.add(oil); + series.add(cas); + + lineSummaryVO.setSeries(series); + return lineSummaryVO; + } + + @Override + public LineSummaryVO getSwitchChartData(String startTime, String endTime, Long deviceId) { + DeviceVO deviceVO = deviceService.getDevice(deviceId); + if(deviceVO == null){ + throw new RuntimeException("设备不存在"); + } + List xAxisData = new ArrayList<>(); + + List dataList = deviceService.getSwitchStatusData(deviceId,startTime,endTime,deviceVO.getProduct().getCode()); + LineSummaryVO lineSummaryVO = new LineSummaryVO(); + lineSummaryVO.setTitle(deviceVO.getGasWell().getName()); + + //设置图例数据 + List legendData = new ArrayList<>(); + legendData.add("开关状态"); + lineSummaryVO.setLegendData(legendData); + + List switchStatusData = new ArrayList<>(); + + for(DeviceHistoryVO deviceHistoryVO : dataList){ + xAxisData.add(deviceHistoryVO.getCollectionTime()); + switchStatusData.add(StringUtils.isEmpty(deviceHistoryVO.getWellStatus())?"0":deviceHistoryVO.getWellStatus()); + } + + //设置x轴数据(日期) + lineSummaryVO.setXAxisData(xAxisData); + + //设置y轴数据(开关状态) + List series = new ArrayList<>(); + LineDataVO status = new LineDataVO(); + status.setName("开关状态"); + status.setType("line"); + status.setData(switchStatusData); + series.add(status); + lineSummaryVO.setSeries(series); + return lineSummaryVO; + } + private static List getPieSummaryVOS() { List result = new ArrayList<>(); PieSummaryVO pieSummaryVO = new PieSummaryVO(); diff --git a/src/main/java/com/isu/gaswellwatch/vo/summary/LineDataVO.java b/src/main/java/com/isu/gaswellwatch/vo/summary/LineDataVO.java new file mode 100644 index 0000000..187e883 --- /dev/null +++ b/src/main/java/com/isu/gaswellwatch/vo/summary/LineDataVO.java @@ -0,0 +1,26 @@ +package com.isu.gaswellwatch.vo.summary; + +import lombok.*; +import lombok.experimental.SuperBuilder; + +import java.io.Serializable; +import java.util.List; + +@Getter +@Setter +@SuperBuilder +@NoArgsConstructor +@EqualsAndHashCode +@ToString(callSuper = true) +public class LineDataVO implements Serializable { + + private static final long serialVersionUID = 1L; + + private String name; + + private String type = "line"; + + private List data; + + +} diff --git a/src/main/java/com/isu/gaswellwatch/vo/summary/LineSummaryVO.java b/src/main/java/com/isu/gaswellwatch/vo/summary/LineSummaryVO.java new file mode 100644 index 0000000..f9ca69d --- /dev/null +++ b/src/main/java/com/isu/gaswellwatch/vo/summary/LineSummaryVO.java @@ -0,0 +1,29 @@ +package com.isu.gaswellwatch.vo.summary; + +import lombok.*; +import lombok.experimental.SuperBuilder; + +import java.io.Serializable; +import java.util.List; + +@Getter +@Setter +@SuperBuilder +@NoArgsConstructor +@EqualsAndHashCode +@ToString(callSuper = true) +public class LineSummaryVO implements Serializable { + + private static final long serialVersionUID = 1L; + + private List xAxisData; + + private List legendData; + + /** 数据 */ + private List series; + + /** 井号 */ + private String title; + +} diff --git a/src/main/resources/mapper/DeviceDao.xml b/src/main/resources/mapper/DeviceDao.xml index 62610e0..e40cef6 100644 --- a/src/main/resources/mapper/DeviceDao.xml +++ b/src/main/resources/mapper/DeviceDao.xml @@ -108,5 +108,38 @@ + + + + diff --git a/src/main/resources/mapper/RemindDao.xml b/src/main/resources/mapper/RemindDao.xml index fe0a41f..a991185 100644 --- a/src/main/resources/mapper/RemindDao.xml +++ b/src/main/resources/mapper/RemindDao.xml @@ -28,10 +28,10 @@ and g.name LIKE CONCAT('%',#{gasWellName},'%') - + and t.create_time >= #{startTime} - + and t.create_time <= #{endTime}