初始版本提交

This commit is contained in:
hzj
2025-06-27 13:28:31 +08:00
parent 424a81ac53
commit ad2752197a
4 changed files with 182 additions and 56 deletions

View File

@@ -1,5 +1,6 @@
package com.njcn.gather.event.transientes.pojo.vo;
import com.njcn.gather.event.transientes.pojo.po.MsgEventInfo;
import com.njcn.gather.event.transientes.pojo.po.PqsEventdetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -34,8 +35,8 @@ public class AlarmAnalysisVO {
List<PqsEventdetail> eventdetails;
List<PqsEventdetail> aLarmEvent;
List<PqsEventdetail> warnEvent;
List<PqsEventdetail> noticeEvent;
List<MsgEventInfo> noticeEvent;
List<PqsEventdetail> lookALarmEvent;
List<PqsEventdetail> lookWarnEvent;
List<PqsEventdetail> lookNoticeEvent;
List<MsgEventInfo> lookNoticeEvent;
}

View File

@@ -0,0 +1,15 @@
package com.njcn.gather.event.transientes.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.gather.event.transientes.pojo.po.PqsDepts;
import com.njcn.gather.event.transientes.pojo.po.PqsUser;
/**
* Description:
* Date: 2025/06/27 上午 9:45【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface PqsUserService extends IService<PqsUser> {
}

View File

@@ -37,6 +37,7 @@ import com.njcn.gather.event.transientes.service.*;
import com.njcn.gather.event.devcie.service.PqsDeptslineService;
import com.njcn.gather.event.transientes.utils.JwtUtil;
import com.njcn.web.factory.PageFactory;
import io.swagger.models.auth.In;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -75,6 +76,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
private final CommGeneralService commGeneralService;
private final PqsUsersetService pqsUsersetService;
private final PqsUserService pqsUserService;
private final PqLinedetailMapper pqLinedetailMapper;
@Value("${SYS_TYPE_ZT}")
private String sysTypeZt;
@@ -91,7 +93,17 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
throw new BusinessException("部门下暂无监测点");
}
List<PqLine> pqLineList = pqLineService.lambdaQuery().in(PqLine::getLineIndex, deptslineIds).list();
List<PqLine> pqLineList = new ArrayList<>();
if(deptslineIds.size()>1000){
List<List<Integer>> listIds = CollUtil.split(deptslineIds,1000);
for(List<Integer> itemIds : listIds){
List<PqLine> temp =pqLineService.lambdaQuery().in(PqLine::getLineIndex, listIds).list();
pqLineList.addAll(temp);
}
}else {
List<PqLine> temp = pqLineService.lambdaQuery().in(PqLine::getLineIndex, deptslineIds).list();
pqLineList.addAll(temp);
}
//统计总数
long allSubCount = pqLineList.stream().map(PqLine::getSubIndex).distinct().count();
List<Integer> devList = pqLineList.stream().map(PqLine::getDevIndex).distinct().collect(Collectors.toList());
@@ -133,27 +145,53 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
throw new BusinessException("部门下暂无监测点");
}
List<PqsEventdetail> eventdetails = pqsEventdetailService.lambdaQuery()
.between(PqsEventdetail::getTimeid, LocalDateTimeUtil.parse(startTime, DatePattern.NORM_DATETIME_FORMATTER), LocalDateTimeUtil.parse(endTime, DatePattern.NORM_DATETIME_FORMATTER))
.in(PqsEventdetail::getLineid, deptslineIds).list();
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, LocalDateTimeUtil.parse(startTime,DatePattern.NORM_DATETIME_FORMATTER), LocalDateTimeUtil.parse(endTime,DatePattern.NORM_DATETIME_FORMATTER))
.in(PqsEventdetail::getLineid,listIds).list();
eventdetails.addAll(temp);
}
}else {
List<PqsEventdetail> temp = pqsEventdetailService.lambdaQuery()
.between(PqsEventdetail::getTimeid, LocalDateTimeUtil.parse(startTime,DatePattern.NORM_DATETIME_FORMATTER), LocalDateTimeUtil.parse(endTime,DatePattern.NORM_DATETIME_FORMATTER))
.in(PqsEventdetail::getLineid,deptslineIds).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<PqsEventdetail> noticeEvent = eventdetails.stream().filter(temp -> Objects.equals(temp.getNoticeFlag(), 1)).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(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);
}
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<PqsEventdetail> lookNoticeEvent = noticeEvent.stream().filter(temp -> Objects.equals(temp.getLookFlag(), 1)).collect(Collectors.toList());
Integer aLarmCount = aLarmEvent.size();
Integer warnCount = warnEvent.size();
Integer noticeCount = noticeEvent.size();
Integer lookALarmCount = lookALarmEvent.size();
Integer lookWarnCount = lookWarnEvent.size();
Integer lookNoticeCount = lookNoticeEvent.size();
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);
@@ -167,10 +205,10 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
alarmAnalysisVO.setEventdetails(eventdetails);
alarmAnalysisVO.setALarmEvent(aLarmEvent);
alarmAnalysisVO.setWarnEvent(warnEvent);
alarmAnalysisVO.setNoticeEvent(noticeEvent);
alarmAnalysisVO.setNoticeEvent(msgEventInfoList);
alarmAnalysisVO.setLookALarmEvent(lookALarmEvent);
alarmAnalysisVO.setLookWarnEvent(lookWarnEvent);
alarmAnalysisVO.setLookNoticeEvent(lookNoticeEvent);
alarmAnalysisVO.setLookNoticeEvent(handleMsg);
@@ -205,22 +243,49 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
throw new BusinessException("部门下暂无监测点");
}
List<PqsEventdetail> eventdetails = new ArrayList<>();
if (Objects.equals(largeScreenCountParam.getEventtype(), 1)) {
eventdetails = pqsEventdetailService.lambdaQuery()
.between(PqsEventdetail::getTimeid, startTime, endTime)
.in(PqsEventdetail::getLineid, deptslineIds)
.eq(PqsEventdetail::getNoticeFlag, largeScreenCountParam.getEventtype()).list();
} else {
eventdetails = pqsEventdetailService.lambdaQuery()
.between(PqsEventdetail::getTimeid, startTime, endTime)
.in(PqsEventdetail::getLineid, deptslineIds)
.and(w -> w.eq(PqsEventdetail::getNoticeFlag, 0).or().isNull(PqsEventdetail::getNoticeFlag)).list();
}
LocalDate startDate = LocalDate.parse(DateUtil.format(startTime, DatePattern.NORM_DATE_PATTERN));
LocalDate endDate = LocalDate.parse(DateUtil.format(endTime, DatePattern.NORM_DATE_PATTERN));
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::getLineid,listIds).list();
eventdetails.addAll(temp);
}
}else {
List<PqsEventdetail> temp = pqsEventdetailService.lambdaQuery()
.between(PqsEventdetail::getTimeid, startTime, endTime)
.in(PqsEventdetail::getLineid,deptslineIds).list();
eventdetails.addAll(temp);
}
List<String> dateList = new ArrayList<>();
if (Objects.equals(largeScreenCountParam.getEventtype(), 1)) {
List<String> eventIds = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
//通知
List<MsgEventInfo> msgEventInfoList = new ArrayList<>();
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);
}
// 使用 for 循环处理日期范围
for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) {
EventTrendVO eventTrendVO = new EventTrendVO();
eventTrendVO.setLocalDate(date);
LocalDate finalDate = date;
List<MsgEventInfo> collect = msgEventInfoList.stream().filter(temp -> Objects.equals(DateUtil.format(temp.getSendTime(), DatePattern.NORM_DATE_PATTERN), DateUtil.format(finalDate.atStartOfDay(), DatePattern.NORM_DATE_PATTERN))).collect(Collectors.toList());
eventTrendVO.setEventCount(collect.size());
eventTrendVOList.add(eventTrendVO);
}
} else {
// 使用 for 循环处理日期范围
for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) {
@@ -231,6 +296,10 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
eventTrendVO.setEventCount(collect.size());
eventTrendVOList.add(eventTrendVO);
}
}
return eventTrendVOList;
}
@@ -255,31 +324,44 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
Map<Integer,LedgerBaseInfoDTO> ledgerBaseInfoDTOMap = pqLineList.stream().collect(Collectors.toMap(LedgerBaseInfoDTO::getLineId, Function.identity()));
QueryWrapper<PqsEventdetail> queryWrapper = new QueryWrapper<>();
if (Objects.equals(largeScreenCountParam.getEventtype(), 1)) {
if (deptslineIds.size()>1000) {
;
List<List<Integer>> idPartitions = CollUtil.split(deptslineIds,1000);
queryWrapper.lambda()
.between(PqsEventdetail::getTimeid, startTime, endTime)
.in(PqsEventdetail::getLineid, deptslineIds)
.eq(PqsEventdetail::getNoticeFlag, largeScreenCountParam.getEventtype())
.orderByAsc(PqsEventdetail::getLookFlag)
.and(ew->{
for(List<Integer> pList: idPartitions){
ew.or(w->w.in(PqsEventdetail::getLineid, pList));
}
}).orderByAsc(PqsEventdetail::getLookFlag)
.orderByDesc(PqsEventdetail::getTimeid);
} else {
queryWrapper.lambda()
.between(PqsEventdetail::getTimeid, startTime, endTime)
.in(PqsEventdetail::getLineid, deptslineIds)
.and(w -> w.eq(PqsEventdetail::getNoticeFlag, 0).or().isNull(PqsEventdetail::getNoticeFlag))
.orderByAsc(PqsEventdetail::getLookFlag)
.orderByDesc(PqsEventdetail::getTimeid);
}
//查询需要发送短息处理的部门反推监测点
List<PqsUserSet> pqsUserSetList = pqsUsersetService.lambdaQuery().eq(PqsUserSet::getIsNotice, 1).list();
List<Integer> noticeLineIds = new ArrayList<>();
List<PqsUser> pqsUserList = pqsUserService.lambdaQuery().eq(PqsUser::getState, 1).list();
if(!CollectionUtils.isEmpty(pqsUserList)){
List<String> collect = pqsUserList.stream().map(PqsUser::getUserIndex).collect(Collectors.toList());
List<PqsUserSet> pqsUserSetList = pqsUsersetService.lambdaQuery().eq(PqsUserSet::getIsNotice, 1).in(PqsUserSet::getUserIndex,collect).list();
List<String> noticeDept = pqsUserSetList.stream().map(temp -> {
return pqsDeptsService.findDeptAndChildren(temp.getDeptsIndex());
}).flatMap(Collection::stream).distinct().collect(Collectors.toList());
//获取对应监测点id
List<PqsDeptsline> noticeLine = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, noticeDept).eq(PqsDeptsline::getSystype, sysTypeZt).list();
List<Integer> noticeLineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList());
noticeLineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList());
}
IPage<PqsEventdetail> list = pqsEventdetailService.getBaseMapper().selectPage(pqsEventdetailPage,queryWrapper);
List<Integer> finalNoticeLineIds = noticeLineIds;
List<EventDetailVO> collect = list.getRecords().stream().map(temp -> {
EventDetailVO eventDetailVO = new EventDetailVO();
eventDetailVO.setEventdetail_index(temp.getEventdetailIndex());
@@ -296,7 +378,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
eventDetailVO.setPointname(ledgerBaseInfoDTO.getLineName());
eventDetailVO.setBdname(ledgerBaseInfoDTO.getStationName());
}
eventDetailVO.setNeedDealFlag(noticeLineIds.contains(temp.getLineid())?1:0);
eventDetailVO.setNeedDealFlag(finalNoticeLineIds.contains(temp.getLineid())?1:0);
return eventDetailVO;
}).collect(Collectors.toList());
Page<EventDetailVO> returnpage = new Page<>(largeScreenCountParam.getPageNum(), largeScreenCountParam.getPageSize());
@@ -371,6 +453,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
LocalDateTime endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
//根据用户获取当前部门及子部门id
List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren(largeScreenCountParam.getDeptId());
deptAndChildren.remove(largeScreenCountParam.getDeptId());
//获取对应监测点id
List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list();
if (CollectionUtils.isEmpty(deptslines)) {

View File

@@ -0,0 +1,27 @@
package com.njcn.gather.event.transientes.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.gather.event.transientes.mapper.PqsEventdetailMapper;
import com.njcn.gather.event.transientes.mapper.PqsUserMapper;
import com.njcn.gather.event.transientes.pojo.po.PqsEventdetail;
import com.njcn.gather.event.transientes.pojo.po.PqsUser;
import com.njcn.gather.event.transientes.service.PqsUserService;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Map;
import java.util.function.Function;
/**
* Description:
* Date: 2025/06/27 上午 9:46【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class PqsUserServiceImpl extends ServiceImpl<PqsUserMapper, PqsUser> implements PqsUserService {
}