diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/controller/LargeScreenCountController.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/controller/LargeScreenCountController.java index ce03431c..1247611a 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/controller/LargeScreenCountController.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/controller/LargeScreenCountController.java @@ -57,6 +57,15 @@ public class LargeScreenCountController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } @OperateInfo + @PostMapping("/alarmAnalysisDetail") + @ApiOperation("告警统计分析详情") + @ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true) + public HttpResult alarmAnalysisDetail(@RequestBody LargeScreenCountParam largeScreenCountParam) { + String methodDescribe = getMethodDescribe("alarmAnalysisDetail"); + AlarmAnalysisVO result = largeScreenCountService.alarmAnalysisDetail(largeScreenCountParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + @OperateInfo @PostMapping("/eventTrend") @ApiOperation("暂降事件趋势") @ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true) diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/LargeScreenCountService.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/LargeScreenCountService.java index 48d047ad..1d80e410 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/LargeScreenCountService.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/LargeScreenCountService.java @@ -41,5 +41,5 @@ public interface LargeScreenCountService { boolean msgHandle(MessageEventFeedbackParam messageEventFeedbackParam); - + AlarmAnalysisVO alarmAnalysisDetail(LargeScreenCountParam largeScreenCountParam); } diff --git a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/LargeScreenCountServiceImpl.java b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/LargeScreenCountServiceImpl.java index f27e8ff5..3a1dbbfd 100644 --- a/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/LargeScreenCountServiceImpl.java +++ b/event_smart/src/main/java/com/njcn/gather/event/transientes/service/impl/LargeScreenCountServiceImpl.java @@ -205,10 +205,8 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { Integer eventCount = eventdetails.size(); // 告警 List aLarmEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() < 0.5).collect(Collectors.toList()); - aLarmEvent.forEach(temp->temp.setEventSeverity(1)); // 预警 List warnEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() >= 0.5&& temp.getEventvalue() <0.9).collect(Collectors.toList()); - warnEvent.forEach(temp->temp.setEventSeverity(2)); List eventIds = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList()); //通知 List msgEventInfoList = new ArrayList<>(); @@ -247,14 +245,14 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { alarmAnalysisVO.setLookWarnCount(lookWarnCount); alarmAnalysisVO.setLookNoticeCount(lookNoticeCount); - - alarmAnalysisVO.setEventdetails(change(eventdetails,msgEventInfoList)); - alarmAnalysisVO.setALarmEvent(change(aLarmEvent,msgEventInfoList)); - alarmAnalysisVO.setWarnEvent(change(warnEvent,msgEventInfoList)); - alarmAnalysisVO.setNoticeEvent(msgEventInfoList); - alarmAnalysisVO.setLookALarmEvent(change(lookALarmEvent,msgEventInfoList)); - alarmAnalysisVO.setLookWarnEvent(change(lookWarnEvent,msgEventInfoList)); - alarmAnalysisVO.setLookNoticeEvent(handleMsg); +// +// alarmAnalysisVO.setEventdetails(change(eventdetails,msgEventInfoList)); +// alarmAnalysisVO.setALarmEvent(change(aLarmEvent,msgEventInfoList)); +// alarmAnalysisVO.setWarnEvent(change(warnEvent,msgEventInfoList)); +// alarmAnalysisVO.setNoticeEvent(msgEventInfoList); +// alarmAnalysisVO.setLookALarmEvent(change(lookALarmEvent,msgEventInfoList)); +// alarmAnalysisVO.setLookWarnEvent(change(lookWarnEvent,msgEventInfoList)); +// alarmAnalysisVO.setLookNoticeEvent(handleMsg); @@ -719,6 +717,114 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { return true; } + @Override + public AlarmAnalysisVO alarmAnalysisDetail(LargeScreenCountParam largeScreenCountParam) { + AlarmAnalysisVO alarmAnalysisVO = new AlarmAnalysisVO(); + //起始时间 + LocalDateTime startTime; + //结束时间 + LocalDateTime endTime; + if (largeScreenCountParam.getType() == 3) { + //起始时间 + startTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.beginOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER); + //结束时间 + endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER); + } else if (largeScreenCountParam.getType() == 4) { + //起始时间 + startTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.beginOfWeek(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER); + //结束时间 + endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfWeek(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER); + } else { + throw new BusinessException("统计类型有误类型"); + } + + //根据用户获取当前部门及子部门id + List deptAndChildren = pqsDeptsService.findDeptAndChildren(largeScreenCountParam.getDeptId()); + //获取对应监测点id + List deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list(); + List deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(deptslineIds)) { + throw new BusinessException("部门下暂无监测点"); + + } + List eventdetails = new ArrayList<>(); + if(deptslineIds.size()>1000){ + List> listIds = CollUtil.split(deptslineIds,1000); + for(List itemIds : listIds){ + List temp = pqsEventdetailService.lambdaQuery() + .between(PqsEventdetail::getTimeid,startTime, endTime) + .in(PqsEventdetail::getWavetype,msgEventConfigService.getEventType()) + .in(PqsEventdetail::getLineid,listIds) + .orderByDesc(PqsEventdetail::getTimeid).list() + ; + eventdetails.addAll(temp); + } + }else { + List temp = pqsEventdetailService.lambdaQuery() + .between(PqsEventdetail::getTimeid, startTime, endTime) + .in(PqsEventdetail::getWavetype,msgEventConfigService.getEventType()) + .in(PqsEventdetail::getLineid,deptslineIds) + .orderByDesc(PqsEventdetail::getTimeid).list(); + eventdetails.addAll(temp); + } + + Integer eventCount = eventdetails.size(); + // 告警 + List aLarmEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() < 0.5).collect(Collectors.toList()); + // 预警 + List warnEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() >= 0.5&& temp.getEventvalue() <0.9).collect(Collectors.toList()); + List eventIds = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList()); + //通知 + List msgEventInfoList = new ArrayList<>(); + if(!CollectionUtils.isEmpty(eventIds)){ + if(eventIds.size()>1000){ + List> listEven = CollUtil.split(eventIds,1000); + for(List pList: listEven){ + List temp = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex,pList).list(); + msgEventInfoList.addAll(temp); + } + }else { + List temp = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex,eventIds).list(); + msgEventInfoList.addAll(temp); + } + } + msgEventInfoList = msgEventInfoList.stream().sorted(Comparator.comparing(MsgEventInfo::getSendTime,Comparator.reverseOrder())).collect(Collectors.toList()); + + + + List lookALarmEvent = aLarmEvent.stream().filter(temp ->Objects.equals(temp.getLookFlag(),1 )).collect(Collectors.toList()); + List lookWarnEvent = warnEvent.stream().filter(temp ->Objects.equals(temp.getLookFlag(),1 ) ).collect(Collectors.toList()); + List handleMsg = msgEventInfoList.stream().filter(temp -> Objects.equals(temp.getIsHandle(), 1)).collect(Collectors.toList()); + + Integer aLarmCount =aLarmEvent.size(); + Integer warnCount =warnEvent.size(); + Integer noticeCount =msgEventInfoList.size(); + Integer lookALarmCount =lookALarmEvent.size(); + Integer lookWarnCount =lookWarnEvent.size(); + Integer lookNoticeCount =handleMsg.size(); + + alarmAnalysisVO.setEventCount(eventCount); + alarmAnalysisVO.setALarmCount(aLarmCount); + alarmAnalysisVO.setWarnCount(warnCount); + alarmAnalysisVO.setNoticeCount(noticeCount); + alarmAnalysisVO.setLookALarmCount(lookALarmCount); + alarmAnalysisVO.setLookWarnCount(lookWarnCount); + alarmAnalysisVO.setLookNoticeCount(lookNoticeCount); + + + alarmAnalysisVO.setEventdetails(change(eventdetails,msgEventInfoList)); + alarmAnalysisVO.setALarmEvent(change(aLarmEvent,msgEventInfoList)); + alarmAnalysisVO.setWarnEvent(change(warnEvent,msgEventInfoList)); + alarmAnalysisVO.setNoticeEvent(msgEventInfoList); + alarmAnalysisVO.setLookALarmEvent(change(lookALarmEvent,msgEventInfoList)); + alarmAnalysisVO.setLookWarnEvent(change(lookWarnEvent,msgEventInfoList)); + alarmAnalysisVO.setLookNoticeEvent(handleMsg); + + + + return alarmAnalysisVO; + } + private List change(List list,List handleMsg){ List result = new ArrayList<>(); if(CollectionUtils.isEmpty(list)){ @@ -740,10 +846,11 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService { eventDetailVO.setEventvalue(temp.getEventvalue()); eventDetailVO.setLookFlag(temp.getLookFlag()); eventDetailVO.setNoticeFlag(temp.getNoticeFlag()); - if(Objects.nonNull(temp.getEventSeverity())){ - eventDetailVO.setEventSeverity(temp.getEventSeverity()); + if( temp.getEventvalue()< 0.5){ + eventDetailVO.setEventSeverity(1); + }else{ + eventDetailVO.setEventSeverity(2); } - eventDetailVO.setMsgEventInfoSize(handleMsg.stream().filter(msg->Objects.equals(msg.getEventIndex(),temp.getEventdetailIndex())).count()); if(ledgerBaseInfoDTOMap.containsKey(temp.getLineid())){ LedgerBaseInfoDTO ledgerBaseInfoDTO = ledgerBaseInfoDTOMap.get(temp.getLineid());