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-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/EventVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/EventVO.java new file mode 100644 index 000000000..35a1771bb --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/EventVO.java @@ -0,0 +1,53 @@ +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 EventVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 发生时间 + */ + @ApiModelProperty("发生时间") + private String time; + + /** + * 监测点名称 + */ + @ApiModelProperty("监测点名称") + private String name; + + /** + * 暂降原因 + */ + @ApiModelProperty("暂降原因") + private String reason; + + /** + * 暂降类型 + */ + @ApiModelProperty("暂降类型") + private String type; + + /** + * 暂降幅值 + */ + @ApiModelProperty("暂降幅值") + private String amplitude; + + /** + * 持续时间 + */ + @ApiModelProperty("持续时间") + private String duration; +} diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LoadTypeVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LoadTypeVO.java new file mode 100644 index 000000000..2c2e49d2c --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LoadTypeVO.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 LoadTypeVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 干扰源类型名称 + */ + @ApiModelProperty("干扰源类型名称") + private String name; + + /** + * 干扰源暂降次数 + */ + @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 f87c3f92f..d70dee297 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 @@ -6,8 +6,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum; 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.MonitoringPointScaleVO; +import com.njcn.device.pq.pojo.vo.*; import com.njcn.event.service.majornetwork.LargeScreenService; import com.njcn.web.controller.BaseController; @@ -22,6 +21,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * @version 1.0.0 * @author: zbj @@ -37,15 +38,54 @@ public class LargeScreenController extends BaseController { private final LargeScreenService largeScreenService; /** - * 监测点规模 + * 暂降事件区域 */ @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getAreaDownStatistics") - @ApiOperation("区域暂降统计") - @ApiImplicitParam(name = "largeScreenParam", value = "区域暂降统计", required = true) + @ApiOperation("暂降事件区域") + @ApiImplicitParam(name = "largeScreenParam", value = "暂降事件区域", required = true) public HttpResult getAreaDownStatistics(@RequestBody @Validated LargeScreenParam largeScreenParam) { String methodDescribe = getMethodDescribe("getAreaDownStatistics"); AreaDownVO result = largeScreenService.getAreaDownStatistics(largeScreenParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + + /** + * 暂降事件负荷类型 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getLoadType") + @ApiOperation("暂降事件负荷类型") + @ApiImplicitParam(name = "largeScreenParam", value = "暂降事件负荷类型", required = true) + public HttpResult> getLoadType(@RequestBody @Validated LargeScreenParam largeScreenParam) { + String methodDescribe = getMethodDescribe("getLoadType"); + 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); + } + + /** + * 大屏获取暂降事件最新50条数据 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/eventLists") + @ApiOperation("大屏获取暂降事件最新50条数据") + @ApiImplicitParam(name = "largeScreenParam", value = "大屏获取暂降事件最新50条数据", required = true) + public HttpResult> eventLists(@RequestBody @Validated LargeScreenParam largeScreenParam) { + String methodDescribe = getMethodDescribe("eventLists"); + List result = largeScreenService.eventLists(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 c8cbca97c..d3d76ef13 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 @@ -13,4 +13,10 @@ import java.util.Map; public interface LargeScreenMapper { Map selectDownCount(@Param("lineIds") List lineIds, @Param("startTime") String startTime, @Param("endTime") String endTime); + + 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); + + List> eventLists(@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 75dd78923..45adf4496 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 @@ -6,17 +6,71 @@ select count(ed.event_id) "count" from r_mp_event_detail ed - left join sys_dict_data dd on ed.event_type and dd.Type_Id ='c37861896dafab0883321e1d508caa51' where ed.measurement_point_id in #{item} - and date_format(pl.Create_Time,'%y%m%d') >= date_format(#{startTime},'%y%m%d') + and date_format(ed.create_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d') - and date_format(pl.Create_Time,'%y%m%d') <= date_format(#{endTime},'%y%m%d') + and date_format(ed.create_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d') + + + + + + + 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 745ee2fac..308e037a1 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,17 +6,25 @@ 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.MonitoringPointScaleVO; +import com.njcn.device.pq.pojo.vo.DownTimeVO; +import com.njcn.device.pq.pojo.vo.EventVO; +import com.njcn.device.pq.pojo.vo.LoadTypeVO; 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; import java.util.Map; +import java.util.stream.Collectors; /** * @version 1.0.0 @@ -33,7 +41,7 @@ public class LargeScreenServiceImpl implements LargeScreenService { private final LargeScreenMapper largeScreenMapper; /** - * 区域暂降统计 + * 暂降事件区域 */ @Override public AreaDownVO getAreaDownStatistics(LargeScreenParam largeScreenParam) { @@ -56,14 +64,14 @@ public class LargeScreenServiceImpl implements LargeScreenService { List generalDeviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(deviceInfoParam).getData(); for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { - if (generalDeviceDTO.getLineIndexes().size() == 0){ + if (generalDeviceDTO.getLineIndexes().size() == 0) { MonitoringPointScaleParam param = new MonitoringPointScaleParam(); param.setName(generalDeviceDTO.getName()); param.setIndex(generalDeviceDTO.getIndex()); param.setCount(0); list.add(param); - }else{ - Map map = largeScreenMapper.selectDownCount(generalDeviceDTO.getLineIndexes(),largeScreenParam.getSearchBeginTime(), largeScreenParam.getSearchEndTime()); + } else { + Map map = largeScreenMapper.selectDownCount(generalDeviceDTO.getLineIndexes(), largeScreenParam.getSearchBeginTime(), largeScreenParam.getSearchEndTime()); MonitoringPointScaleParam param = new MonitoringPointScaleParam(); param.setName(generalDeviceDTO.getName()); param.setIndex(generalDeviceDTO.getIndex()); @@ -97,4 +105,149 @@ public class LargeScreenServiceImpl implements LargeScreenService { }*/ } + + /** + * 暂降事件负荷类型 + */ + @Override + public List getLoadType(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.selectLoadTypeCount(lineIds, largeScreenParam.getSearchBeginTime(), largeScreenParam.getSearchEndTime()); + + Map countMap = new HashMap<>(); + for (Map map : maps) { + for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { + for (String lineIndex : generalDeviceDTO.getLineIndexes()) { + if (map.get("id").equals(lineIndex)) { + if (countMap.containsKey(generalDeviceDTO.getName())) { + int id = Integer.parseInt(map.get("count").toString()); + countMap.put(generalDeviceDTO.getName(), countMap.get(generalDeviceDTO.getName()) + id); + break; + } else { + int id = Integer.parseInt(map.get("count").toString()); + countMap.put(generalDeviceDTO.getName(), id); + break; + } + } + } + } + + } + List nameList = generalDeviceDTOList.stream().map(GeneralDeviceDTO::getName).collect(Collectors.toList()); + for (String s : nameList) { + if (!countMap.containsKey(s)) { + countMap.put(s, 0); + } + } + for (String s : countMap.keySet()) { + LoadTypeVO loadTypeVO = new LoadTypeVO(); + loadTypeVO.setName(s); + loadTypeVO.setCount(countMap.get(s)); + result.add(loadTypeVO); + } + 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; + } + + /** + * 大屏获取暂降事件最新50条数据 + */ + @Override + public List eventLists(LargeScreenParam largeScreenParam) { + List result = new ArrayList<>(); + List> maps = largeScreenMapper.eventLists(largeScreenParam.getSearchBeginTime(), largeScreenParam.getSearchEndTime()); + for (Map map : maps) { + EventVO eventVO = new EventVO(); + eventVO.setTime(map.get("time").toString()); + eventVO.setName(map.get("name").toString()); + eventVO.setReason(map.get("reason").toString()); + eventVO.setType(map.get("type").toString()); + eventVO.setAmplitude(map.get("amplitude").toString()); + eventVO.setDuration(map.get("duration").toString()); + result.add(eventVO); + } + 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 2e3a2454b..7b33030b4 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,11 @@ 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.EventVO; +import com.njcn.device.pq.pojo.vo.LoadTypeVO; + +import java.util.List; /** @@ -13,4 +18,9 @@ public interface LargeScreenService { AreaDownVO getAreaDownStatistics(LargeScreenParam largeScreenParam); + List getLoadType(LargeScreenParam largeScreenParam); + + List getTimeCount(LargeScreenParam largeScreenParam); + + List eventLists(LargeScreenParam largeScreenParam); } diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java index 14ad7df09..cfa13df96 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java @@ -63,6 +63,7 @@ public enum DicDataTypeEnum { WORK_ORDER_PROCESS("工单流程","Work_Order_Process"), ASSESS_RESULT("评估结果","Assess_Result"), WORK_ORDER_TYPE("工单类型","Work_Order_Type"), + DEV_VOLTAGE_STAND("标准电压等级","Dev_Voltage_Stand"), PRIMARY_TYPE("一级业务类型","Primary_Type");