diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/param/EventParam.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/param/EventParam.java new file mode 100644 index 000000000..469b0523b --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/param/EventParam.java @@ -0,0 +1,25 @@ +package com.njcn.prepare.harmonic.pojo.param; + +import lombok.Data; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/11/23 19:14 + */ +@Data +public class EventParam { + + /** + * 暂态监测点个数 + */ + private Integer eventLineCount; + + /** + * 发生暂态时间次数 + */ + private Float eventCount; + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/PmsDimExecutor.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/PmsDimExecutor.java index fae316cca..601ae7459 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/PmsDimExecutor.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/PmsDimExecutor.java @@ -7,6 +7,8 @@ import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.prepare.harmonic.service.mysql.dim.IRDimBusGlobalDService; import com.njcn.prepare.harmonic.service.mysql.dim.IRDimObjEventDService; +import com.njcn.prepare.harmonic.service.mysql.dim.IRDimObjEventMService; +import com.njcn.prepare.harmonic.service.mysql.dim.IRDimObjEventYService; import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.po.Dept; import com.yomahub.liteflow.annotation.LiteflowComponent; @@ -33,6 +35,8 @@ public class PmsDimExecutor extends BaseExecutor{ private final CommTerminalGeneralClient commTerminalGeneralClient; private final IRDimObjEventDService irDimObjEventDService; + private final IRDimObjEventMService irDimObjEventMService; + private final IRDimObjEventYService irDimObjEventYService; private final IRDimBusGlobalDService irDimBusGlobalDService; @@ -79,12 +83,13 @@ public class PmsDimExecutor extends BaseExecutor{ //数据补招不执行非日表算法 if (!calculatedParam.isRepair()) { //月表 - + irDimObjEventMService.eventUserRatioM(calculatedParam); } }else if (tag.equalsIgnoreCase("r_dim_obj_event_y")) { //数据补招不执行非日表算法 if (!calculatedParam.isRepair()) { //年表 + irDimObjEventYService.eventUserRatioY(calculatedParam); } } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjEventMMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjEventMMapper.java index 00b988a20..77ba1aacf 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjEventMMapper.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjEventMMapper.java @@ -1,6 +1,7 @@ package com.njcn.prepare.harmonic.mapper.mysql.dim; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.njcn.prepare.harmonic.pojo.po.RDimObjEventM; /** @@ -11,6 +12,6 @@ import com.njcn.prepare.harmonic.pojo.po.RDimObjEventM; * @author xuyang * @since 2023-11-23 */ -public interface RDimObjEventMMapper extends BaseMapper { +public interface RDimObjEventMMapper extends MppBaseMapper { } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjEventYMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjEventYMapper.java index d0b973fbd..aec29e0d7 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjEventYMapper.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimObjEventYMapper.java @@ -1,6 +1,7 @@ package com.njcn.prepare.harmonic.mapper.mysql.dim; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.njcn.prepare.harmonic.pojo.po.RDimObjEventY; /** @@ -11,6 +12,6 @@ import com.njcn.prepare.harmonic.pojo.po.RDimObjEventY; * @author xuyang * @since 2023-11-23 */ -public interface RDimObjEventYMapper extends BaseMapper { +public interface RDimObjEventYMapper extends MppBaseMapper { } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjEventMService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjEventMService.java index cd033e59c..a24fb8883 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjEventMService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjEventMService.java @@ -1,6 +1,8 @@ package com.njcn.prepare.harmonic.service.mysql.dim; import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.po.RDimObjEventM; /** @@ -13,4 +15,10 @@ import com.njcn.prepare.harmonic.pojo.po.RDimObjEventM; */ public interface IRDimObjEventMService extends IService { + /** + * 监测到暂态指标的用户-月表 + * @param calculatedParam + */ + void eventUserRatioM(CalculatedParam calculatedParam); + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjEventYService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjEventYService.java index 3943dbe8a..34b7cbd9b 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjEventYService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimObjEventYService.java @@ -1,6 +1,8 @@ package com.njcn.prepare.harmonic.service.mysql.dim; import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.po.RDimObjEventY; /** @@ -13,4 +15,9 @@ import com.njcn.prepare.harmonic.pojo.po.RDimObjEventY; */ public interface IRDimObjEventYService extends IService { + /** + * 监测到暂态指标的用户-年表 + * @param calculatedParam + */ + void eventUserRatioY(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjEventDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjEventDServiceImpl.java index a9d2a7aa1..e8978d557 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjEventDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjEventDServiceImpl.java @@ -14,6 +14,7 @@ import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper; import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimObjEventDMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; +import com.njcn.prepare.harmonic.pojo.param.EventParam; import com.njcn.prepare.harmonic.pojo.po.RDimObjEventD; import com.njcn.prepare.harmonic.service.mysql.dim.IRDimObjEventDService; import com.njcn.system.api.DicDataFeignClient; @@ -69,11 +70,12 @@ public class RDimObjEventDServiceImpl extends MppServiceImpl effectiveList = getEffective(userList,calculatedParam.getDataDate()); if (CollectionUtil.isNotEmpty(effectiveList)){ - rDimObjEventD.setMonitorRate((float)monitorList.size()/effectiveList.size()*100); + EventParam param = getEventTimes(userList,calculatedParam.getDataDate()); + //获取发生暂态的监测点数 + rDimObjEventD.setMonitorRate((float)param.getEventLineCount()/effectiveList.size()*100); //获取重要用户、敏感用户监测点发生的暂态次数之和 - float times = getEventTimes(userList,calculatedParam.getDataDate()); - if (!Objects.equals(3.1415926f,times)){ - rDimObjEventD.setLimitFreqRate(times/effectiveList.size()); + if (!Objects.equals(3.1415926f,param.getEventCount())){ + rDimObjEventD.setLimitFreqRate(param.getEventCount()/effectiveList.size()); } } else { rDimObjEventD.setMonitorRate(-1.0f); @@ -106,9 +108,11 @@ public class RDimObjEventDServiceImpl extends MppServiceImpl lineList, String time) { + public EventParam getEventTimes(List lineList, String time) { + EventParam eventParam = new EventParam(); float result = 3.1415926f; int data = 0; + int count = 0; LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.select(RMpEventDetailDPO::getSwellTimes,RMpEventDetailDPO::getSagTimes,RMpEventDetailDPO::getInterruptTimes) .in(RMpEventDetailDPO::getMeasurementPointId,lineList) @@ -117,11 +121,16 @@ public class RDimObjEventDServiceImpl extends MppServiceImpl @@ -15,6 +43,102 @@ import org.springframework.stereotype.Service; * @since 2023-11-23 */ @Service -public class RDimObjEventMServiceImpl extends ServiceImpl implements IRDimObjEventMService { +@RequiredArgsConstructor +@Slf4j +public class RDimObjEventMServiceImpl extends MppServiceImpl implements IRDimObjEventMService { + + private final DicDataFeignClient dicDataFeignClient; + private final RMpEventDetailMMapper rMpEventDetailMMapper; + private final PmsMonitorPOMapper pmsMonitorPOMapper; + private final ROperatingMonitorMMapper rOperatingMonitorMMapper; + + @Override + @Transactional(rollbackFor = {Exception.class}) + public void eventUserRatioM(CalculatedParam calculatedParam) { + log.info(LocalDateTime.now()+"===>监测点指标数据质量月表开始"); + List result = new ArrayList<>(); + List deptList = calculatedParam.getIdList(); + String beginMonth = DateUtil.format(DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)), DatePattern.NORM_DATE_PATTERN); + //获取敏感用户、重要用户字典id + String sensitiveUserId = dicDataFeignClient.getDicDataByCode(DicDataEnum.SENSITIVE_USERS.getCode()).getData().getId(); + String importantUserId = dicDataFeignClient.getDicDataByCode(DicDataEnum.IMPORTANT_USERS.getCode()).getData().getId(); + deptList.forEach(item->{ + RDimObjEventM rDimObjEventM = new RDimObjEventM(); + rDimObjEventM.setOrgId(item.getDeptId()); + rDimObjEventM.setStatisDate(LocalDate.parse(beginMonth, DatePattern.NORM_DATE_FORMATTER)); + rDimObjEventM.setMonitorRate(3.1415926f); + rDimObjEventM.setLimitFreqRate(3.1415926f); + List lineList = item.getLineIds(); + if (CollectionUtil.isNotEmpty(lineList)){ + //获取当前单位下的重要用户、敏感用户监测点信息 + List monitorList = getUser(lineList, Arrays.asList(sensitiveUserId,importantUserId)); + if(CollectionUtil.isNotEmpty(monitorList)){ + List userList = monitorList.stream().map(Monitor::getId).collect(Collectors.toList()); + //获取当前单位下的有效接入重要、敏感用户监测点信息 + List effectiveList = getEffective(userList,beginMonth); + if (CollectionUtil.isNotEmpty(effectiveList)){ + EventParam param = getEventTimes(userList,beginMonth); + //获取发生暂态的监测点数 + rDimObjEventM.setMonitorRate((float)param.getEventLineCount()/effectiveList.size()*100); + //获取重要用户、敏感用户监测点发生的暂态次数之和 + if (!Objects.equals(3.1415926f,param.getEventCount())){ + rDimObjEventM.setLimitFreqRate(param.getEventCount()/effectiveList.size()); + } + } else { + rDimObjEventM.setMonitorRate(-1.0f); + rDimObjEventM.setLimitFreqRate(-1.0f); + } + } + } + result.add(rDimObjEventM); + }); + if (CollectionUtil.isNotEmpty(result)){ + this.saveOrUpdateBatchByMultiId(result,100); + } + } + + public List getUser(List lineList, List monitorTag) { + LambdaQueryWrapper monitorLambdaQueryWrapper = new LambdaQueryWrapper<>(); + monitorLambdaQueryWrapper.select(Monitor::getId, Monitor::getMonitorTag) + .in(Monitor::getId, lineList) + .in(Monitor::getMonitorTag, monitorTag) + .eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode()); + return pmsMonitorPOMapper.selectList(monitorLambdaQueryWrapper); + } + + public List getEffective(List lineList, String time) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(ROperatingMonitorMPO::getMeasurementPointId) + .in(ROperatingMonitorMPO::getMeasurementPointId,lineList) + .eq(ROperatingMonitorMPO::getDataDate,time) + .ge(ROperatingMonitorMPO::getDataIntegrityRate,0.95) + .eq(ROperatingMonitorMPO::getIsUnusual,DataStateEnum.ENABLE.getCode()); + return rOperatingMonitorMMapper.selectList(lambdaQueryWrapper); + } + + public EventParam getEventTimes(List lineList, String time) { + EventParam eventParam = new EventParam(); + float result = 3.1415926f; + int data = 0; + int count = 0; + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RMpEventDetailMPO::getSwellTimes,RMpEventDetailMPO::getSagTimes,RMpEventDetailMPO::getInterruptTimes) + .in(RMpEventDetailMPO::getMeasurementPointId,lineList) + .eq(RMpEventDetailMPO::getDataDate,time); + List eventDay = rMpEventDetailMMapper.selectList(lambdaQueryWrapper); + if (CollectionUtil.isNotEmpty(eventDay)){ + for (RMpEventDetailMPO item : eventDay) { + int times = item.getSwellTimes() + item.getSagTimes() + item.getInterruptTimes(); + if (times == 0){ + count++; + } + data = data + times; + } + result = (float) data; + } + eventParam.setEventLineCount(count); + eventParam.setEventCount(result); + return eventParam; + } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjEventYServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjEventYServiceImpl.java index 6ec89c247..b467915a3 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjEventYServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimObjEventYServiceImpl.java @@ -1,10 +1,36 @@ package com.njcn.prepare.harmonic.service.mysql.dim.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.common.pojo.enums.common.DataStateEnum; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO; +import com.njcn.device.pms.pojo.po.Monitor; +import com.njcn.harmonic.pojo.po.RMpEventDetailMPO; +import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper; import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimObjEventYMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorMMapper; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; +import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorMPO; +import com.njcn.prepare.harmonic.pojo.param.EventParam; +import com.njcn.prepare.harmonic.pojo.po.RDimObjEventM; import com.njcn.prepare.harmonic.pojo.po.RDimObjEventY; import com.njcn.prepare.harmonic.service.mysql.dim.IRDimObjEventYService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -15,6 +41,109 @@ import org.springframework.stereotype.Service; * @since 2023-11-23 */ @Service -public class RDimObjEventYServiceImpl extends ServiceImpl implements IRDimObjEventYService { +@RequiredArgsConstructor +@Slf4j +public class RDimObjEventYServiceImpl extends MppServiceImpl implements IRDimObjEventYService { + private final DicDataFeignClient dicDataFeignClient; + private final RMpEventDetailMMapper rMpEventDetailMMapper; + private final PmsMonitorPOMapper pmsMonitorPOMapper; + private final ROperatingMonitorMMapper rOperatingMonitorMMapper; + + @Override + @Transactional(rollbackFor = {Exception.class}) + public void eventUserRatioY(CalculatedParam calculatedParam) { + log.info(LocalDateTime.now()+"===>监测点指标数据质量年表开始"); + List result = new ArrayList<>(); + List deptList = calculatedParam.getIdList(); + String beginYear = DateUtil.format(DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)), DatePattern.NORM_DATE_PATTERN); + String endYear = DateUtil.format(DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)), DatePattern.NORM_DATE_PATTERN); + //获取敏感用户、重要用户字典id + String sensitiveUserId = dicDataFeignClient.getDicDataByCode(DicDataEnum.SENSITIVE_USERS.getCode()).getData().getId(); + String importantUserId = dicDataFeignClient.getDicDataByCode(DicDataEnum.IMPORTANT_USERS.getCode()).getData().getId(); + deptList.forEach(item->{ + RDimObjEventY rDimObjEventY = new RDimObjEventY(); + rDimObjEventY.setOrgId(item.getDeptId()); + rDimObjEventY.setStatisDate(LocalDate.parse(beginYear, DatePattern.NORM_DATE_FORMATTER)); + rDimObjEventY.setMonitorRate(3.1415926f); + rDimObjEventY.setLimitFreqRate(3.1415926f); + List lineList = item.getLineIds(); + if (CollectionUtil.isNotEmpty(lineList)){ + //获取当前单位下的重要用户、敏感用户监测点信息 + List monitorList = getUser(lineList, Arrays.asList(sensitiveUserId,importantUserId)); + if(CollectionUtil.isNotEmpty(monitorList)){ + List userList = monitorList.stream().map(Monitor::getId).collect(Collectors.toList()); + //获取当前单位下的有效接入重要、敏感用户监测点信息,年按照月来统计,只要一个月是有效接入,当年就算有效接入 + List effectiveList = getEffective(userList,beginYear,endYear); + if (CollectionUtil.isNotEmpty(effectiveList)){ + EventParam param = getEventTimes(userList,beginYear,endYear); + //获取发生暂态的监测点数 + rDimObjEventY.setMonitorRate((float)param.getEventLineCount()/effectiveList.size()*100); + //获取重要用户、敏感用户监测点发生的暂态次数之和 + if (!Objects.equals(3.1415926f,param.getEventCount())){ + rDimObjEventY.setLimitFreqRate(param.getEventCount()/effectiveList.size()); + } + } else { + rDimObjEventY.setMonitorRate(-1.0f); + rDimObjEventY.setLimitFreqRate(-1.0f); + } + } + } + result.add(rDimObjEventY); + }); + if (CollectionUtil.isNotEmpty(result)){ + this.saveOrUpdateBatchByMultiId(result,100); + } + } + + public List getUser(List lineList, List monitorTag) { + LambdaQueryWrapper monitorLambdaQueryWrapper = new LambdaQueryWrapper<>(); + monitorLambdaQueryWrapper.select(Monitor::getId, Monitor::getMonitorTag) + .in(Monitor::getId, lineList) + .in(Monitor::getMonitorTag, monitorTag) + .eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode()); + return pmsMonitorPOMapper.selectList(monitorLambdaQueryWrapper); + } + + public List getEffective(List lineList, String startTime, String endTime) { + List result = new ArrayList<>(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(ROperatingMonitorMPO::getMeasurementPointId) + .in(ROperatingMonitorMPO::getMeasurementPointId,lineList) + .between(ROperatingMonitorMPO::getDataDate,startTime,endTime) + .ge(ROperatingMonitorMPO::getDataIntegrityRate,0.95) + .eq(ROperatingMonitorMPO::getIsUnusual,DataStateEnum.ENABLE.getCode()); + List list = rOperatingMonitorMMapper.selectList(lambdaQueryWrapper); + if (CollectionUtil.isNotEmpty(list)){ + result = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(ROperatingMonitorMPO :: getMeasurementPointId))), ArrayList::new)); + } + return result; + } + + public EventParam getEventTimes(List lineList, String startTime, String endTime) { + EventParam eventParam = new EventParam(); + float result = 3.1415926f; + int data = 0; + int count = 0; + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RMpEventDetailMPO::getSwellTimes,RMpEventDetailMPO::getSagTimes,RMpEventDetailMPO::getInterruptTimes) + .in(RMpEventDetailMPO::getMeasurementPointId,lineList) + .between(RMpEventDetailMPO::getDataDate,startTime,endTime); + List eventDay = rMpEventDetailMMapper.selectList(lambdaQueryWrapper); + if (CollectionUtil.isNotEmpty(eventDay)){ + Map> map = eventDay.stream().collect(Collectors.groupingBy(RMpEventDetailMPO::getMeasurementPointId)); + for(String key : map.keySet()){ + for (RMpEventDetailMPO item : map.get(key)) { + int times = item.getSwellTimes() + item.getSagTimes() + item.getInterruptTimes(); + data = data + times; + } + if (data > 0){ + count++; + } + } + } + eventParam.setEventLineCount(count); + eventParam.setEventCount(result); + return eventParam; + } }