From 62d0e20cba9f05e26c886814907dc72f12bcb751 Mon Sep 17 00:00:00 2001 From: zhangbaojian <1065122561@qq.com> Date: Mon, 3 Apr 2023 11:47:46 +0800 Subject: [PATCH] =?UTF-8?q?zbj//=E5=A4=A7=E5=B1=8F=E6=9A=82=E9=99=8D?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E6=97=B6=E9=97=B4=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../njcn/device/pq/pojo/vo/DownTimeVO.java | 29 ++++++++ .../majornetwork/LargeScreenController.java | 14 ++++ .../majornetwork/LargeScreenMapper.java | 2 + .../mapping/LargeScreenMapper.xml | 16 +++++ .../Impl/LargeScreenServiceImpl.java | 67 ++++++++++++++++++- .../majornetwork/LargeScreenService.java | 2 + 6 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DownTimeVO.java diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DownTimeVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DownTimeVO.java new file mode 100644 index 000000000..77dc580b1 --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DownTimeVO.java @@ -0,0 +1,29 @@ +package com.njcn.device.pq.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @version 1.0.0 + * @author: zbj + * @date: 2023/04/03 + */ +@Data +public class DownTimeVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 时间 + */ + @ApiModelProperty("时间") + private String time; + + /** + * 干扰源暂降次数 + */ + @ApiModelProperty("干扰源暂降次数") + private Integer count; +} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/LargeScreenController.java b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/LargeScreenController.java index 04e321d69..d6b7b91bc 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/LargeScreenController.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/LargeScreenController.java @@ -7,6 +7,7 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.device.pq.pojo.param.LargeScreenParam; import com.njcn.device.pq.pojo.vo.AreaDownVO; +import com.njcn.device.pq.pojo.vo.DownTimeVO; import com.njcn.device.pq.pojo.vo.LoadTypeVO; import com.njcn.device.pq.pojo.vo.MonitoringPointScaleVO; @@ -64,4 +65,17 @@ public class LargeScreenController extends BaseController { List result = largeScreenService.getLoadType(largeScreenParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + + /** + * 暂降事件时间统计 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getTimeCount") + @ApiOperation("暂降事件时间统计") + @ApiImplicitParam(name = "largeScreenParam", value = "暂降事件时间统计", required = true) + public HttpResult> getTimeCount(@RequestBody @Validated LargeScreenParam largeScreenParam) { + String methodDescribe = getMethodDescribe("getTimeCount"); + List result = largeScreenService.getTimeCount(largeScreenParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } } diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/majornetwork/LargeScreenMapper.java b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/majornetwork/LargeScreenMapper.java index 5f438750d..c58093b22 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/majornetwork/LargeScreenMapper.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/majornetwork/LargeScreenMapper.java @@ -16,4 +16,6 @@ public interface LargeScreenMapper { List> selectLoadTypeCount(@Param("lineIds") List lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime); + List> getTimeCount(@Param("lineIds") List lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime); + } diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/majornetwork/mapping/LargeScreenMapper.xml b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/majornetwork/mapping/LargeScreenMapper.xml index 748772a56..2145c44b4 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/majornetwork/mapping/LargeScreenMapper.xml +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/majornetwork/mapping/LargeScreenMapper.xml @@ -37,4 +37,20 @@ group by ed.measurement_point_id + + diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/LargeScreenServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/LargeScreenServiceImpl.java index 1faeb4aba..736358a4f 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/LargeScreenServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/LargeScreenServiceImpl.java @@ -6,16 +6,19 @@ import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.param.LargeScreenParam; import com.njcn.device.pq.pojo.param.MonitoringPointScaleParam; import com.njcn.device.pq.pojo.vo.AreaDownVO; +import com.njcn.device.pq.pojo.vo.DownTimeVO; import com.njcn.device.pq.pojo.vo.LoadTypeVO; -import com.njcn.device.pq.pojo.vo.MonitoringPointScaleVO; import com.njcn.event.mapper.majornetwork.LargeScreenMapper; import com.njcn.event.service.majornetwork.LargeScreenService; import com.njcn.system.pojo.enums.StatisticsEnum; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.map.HashedMap; import org.springframework.stereotype.Service; import com.njcn.device.pq.api.GeneralDeviceInfoClient; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -162,4 +165,66 @@ public class LargeScreenServiceImpl implements LargeScreenService { } return result; } + + /** + * 暂降事件时间统计 + */ + @Override + public List getTimeCount(LargeScreenParam largeScreenParam) { + //创建返回VO + List result = new ArrayList<>(); + DeviceInfoParam.BusinessParam deviceInfoParam = new DeviceInfoParam.BusinessParam(); + //部门索引 + deviceInfoParam.setDeptIndex(largeScreenParam.getDeptIndex()); + //统计类型 + SimpleDTO simpleDTO = new SimpleDTO(); + simpleDTO.setCode(String.valueOf(StatisticsEnum.LOAD_TYPE)); + deviceInfoParam.setStatisticalType(simpleDTO); + //添加时间 + deviceInfoParam.setSearchBeginTime(largeScreenParam.getSearchBeginTime()); + deviceInfoParam.setSearchEndTime(largeScreenParam.getSearchEndTime()); + //添加服务名 + deviceInfoParam.setServerName("event-boot"); + // 获取所有数据 + List generalDeviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(deviceInfoParam).getData(); + + //获取所有监测点集合 + List lineIds = generalDeviceDTOList.stream().flatMap(dto -> dto.getLineIndexes().stream()).collect(Collectors.toList()); + + List> maps = largeScreenMapper.getTimeCount(lineIds, largeScreenParam.getSearchBeginTime(), largeScreenParam.getSearchEndTime()); + + Map eventMap = new HashedMap(); + + for (Map map : maps) { + eventMap.put(LocalDate.parse(map.get("day").toString()),Integer.parseInt(map.get("count").toString())); + } + + // 创建返回结果的Map集合 + Map resultMap = new HashMap<>(); + // 定义事件日期区间 + LocalDate start = LocalDate.parse(largeScreenParam.getSearchBeginTime()); // 开始日期 + LocalDate end = LocalDate.parse( largeScreenParam.getSearchEndTime()); // 结束日期 + // 循环遍历事件日期区间中的每一天,并尝试从事件日期的Map集合中获取对应的值 + for (LocalDate date = start; !date.isAfter(end); date = date.plusDays(1)) { + Integer value = eventMap.get(date); + + // 如果事件日期的Map集合中存在这一天,则将对应键值对添加到返回结果的Map集合中 + if (value != null) { + resultMap.put(date, value); + } + // 否则,将这一天添加到返回结果的Map集合中,并将值设为0,表示这一天没有事件 + else { + resultMap.put(date, 0); + } + } + // 输出返回结果的Map集合中的每一个键值对 + resultMap.entrySet().forEach(System.out::println); + for (LocalDate s : resultMap.keySet()) { + DownTimeVO downTimeVO = new DownTimeVO(); + downTimeVO.setTime(s.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + downTimeVO.setCount(resultMap.get(s)); + result.add(downTimeVO); + } + return result; + } } diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/LargeScreenService.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/LargeScreenService.java index 40282ccdd..76f93ff92 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/LargeScreenService.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/LargeScreenService.java @@ -2,6 +2,7 @@ package com.njcn.event.service.majornetwork; import com.njcn.device.pq.pojo.param.LargeScreenParam; import com.njcn.device.pq.pojo.vo.AreaDownVO; +import com.njcn.device.pq.pojo.vo.DownTimeVO; import com.njcn.device.pq.pojo.vo.LoadTypeVO; import java.util.List; @@ -18,4 +19,5 @@ public interface LargeScreenService { List getLoadType(LargeScreenParam largeScreenParam); + List getTimeCount(LargeScreenParam largeScreenParam); }