初始版本提交

This commit is contained in:
hzj
2025-07-03 11:36:33 +08:00
parent 0eabe977cb
commit 3a239b5123
3 changed files with 130 additions and 14 deletions

View File

@@ -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<AlarmAnalysisVO> 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)

View File

@@ -41,5 +41,5 @@ public interface LargeScreenCountService {
boolean msgHandle(MessageEventFeedbackParam messageEventFeedbackParam);
AlarmAnalysisVO alarmAnalysisDetail(LargeScreenCountParam largeScreenCountParam);
}

View File

@@ -205,10 +205,8 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
Integer eventCount = eventdetails.size();
// 告警
List<PqsEventdetail> aLarmEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() < 0.5).collect(Collectors.toList());
aLarmEvent.forEach(temp->temp.setEventSeverity(1));
// 预警
List<PqsEventdetail> warnEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() >= 0.5&& temp.getEventvalue() <0.9).collect(Collectors.toList());
warnEvent.forEach(temp->temp.setEventSeverity(2));
List<String> eventIds = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
//通知
List<MsgEventInfo> 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<String> deptAndChildren = pqsDeptsService.findDeptAndChildren(largeScreenCountParam.getDeptId());
//获取对应监测点id
List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list();
List<Integer> deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList());
if (CollectionUtils.isEmpty(deptslineIds)) {
throw new BusinessException("部门下暂无监测点");
}
List<PqsEventdetail> eventdetails = new ArrayList<>();
if(deptslineIds.size()>1000){
List<List<Integer>> listIds = CollUtil.split(deptslineIds,1000);
for(List<Integer> itemIds : listIds){
List<PqsEventdetail> 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<PqsEventdetail> 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<PqsEventdetail> aLarmEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() < 0.5).collect(Collectors.toList());
// 预警
List<PqsEventdetail> warnEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() >= 0.5&& temp.getEventvalue() <0.9).collect(Collectors.toList());
List<String> eventIds = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
//通知
List<MsgEventInfo> msgEventInfoList = new ArrayList<>();
if(!CollectionUtils.isEmpty(eventIds)){
if(eventIds.size()>1000){
List<List<String>> listEven = CollUtil.split(eventIds,1000);
for(List<String> pList: listEven){
List<MsgEventInfo> temp = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex,pList).list();
msgEventInfoList.addAll(temp);
}
}else {
List<MsgEventInfo> 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<PqsEventdetail> lookALarmEvent = aLarmEvent.stream().filter(temp ->Objects.equals(temp.getLookFlag(),1 )).collect(Collectors.toList());
List<PqsEventdetail> lookWarnEvent = warnEvent.stream().filter(temp ->Objects.equals(temp.getLookFlag(),1 ) ).collect(Collectors.toList());
List<MsgEventInfo> 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<EventDetailVO> change(List<PqsEventdetail> list,List<MsgEventInfo> handleMsg){
List<EventDetailVO> 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());