diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/PmsCountLedger.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/PmsCountLedger.java new file mode 100644 index 000000000..5276fc5cf --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/PmsCountLedger.java @@ -0,0 +1,46 @@ +package com.njcn.device.pms.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 每日变电站-母线数据总条目表 + *

+ * + * @author cdf + * @since 2023-11-15 + */ +@Getter +@Setter +@TableName("pms_count_ledger") +public class PmsCountLedger extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 日期 + */ + private LocalDateTime date; + + /** + * 运行单位 + */ + private String section; + + /** + * 变电站总数 + */ + private Integer subCount; + + /** + * 母线总数 + */ + private Integer subvCount; + + +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/PmsMidLedger.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/PmsMidLedger.java new file mode 100644 index 000000000..f2ea2fbd3 --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/PmsMidLedger.java @@ -0,0 +1,78 @@ +package com.njcn.device.pms.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 变电站-母线数据中间表 + *

+ * + * @author cdf + * @since 2023-11-15 + */ +@Getter +@Setter +@TableName("pms_mid_ledger") +public class PmsMidLedger extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * Id + */ + private String id; + + /** + * 父节点(0为根节点) + */ + private String pid; + + /** + * 上层所有节点 + */ + private String pids; + + /** + * 运行单位 + */ + private String section; + + /** + * 名称 + */ + private String name; + + /** + * 等级:0-变电站;1-母线; + */ + private Boolean level; + + /** + * 排序(默认为0,有特殊排序需要时候人为输入) + */ + private Integer sort; + + /** + * 备注 + */ + private String remark; + + /** + * 状态 0-删除;1-正常;默认正常 + */ + private Integer state; + + /** + * 运行状态 + */ + private String runStatus; + + + + +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusGlobalD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusGlobalD.java index f7d0eedc6..20830f6a6 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusGlobalD.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusGlobalD.java @@ -1,6 +1,7 @@ package com.njcn.harmonic.pojo.po.dim; import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.njcn.db.bo.BaseEntity; import java.io.Serializable; import java.time.LocalDate; @@ -26,11 +27,13 @@ public class RDimBusGlobalD extends BaseEntity { /** * 单位code */ + @MppMultiId private String orgId; /** * 统计时间 yyyy-mm-dd */ + @MppMultiId private LocalDate statisDate; /** @@ -48,6 +51,23 @@ public class RDimBusGlobalD extends BaseEntity { */ private Float limitAvgRate; + /** + * 电站监测率(%) + */ + private Float stationMonitorRate; + + + /** + * 电站指标超标或监测到暂态指标的变电站/换流站占比(%) + */ + private Float stationLimitRate; + + /** + * 电站指标超标或监测到暂态指标的变电站/换流站平均占比(%) + */ + private Float stationLimitAvgRate; + + private Integer state; diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java index 3193cdb70..8f5b01cfa 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java @@ -230,4 +230,56 @@ public class ExecutionCenter extends BaseController { } + /** + * pms dim母线,电站运行情况 + * @author cdf + * @date 2023/11/17 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("变电站算法执行链") + @PostMapping("/pmsdimexecutor") + public void pmsDimExecutor(@RequestBody BaseParam baseParam) { + String methodDescribe = getMethodDescribe("pmsdimexecutor"); + //手动判断参数是否合法, + CalculatedParam calculatedParam = judgeExecuteParam(baseParam); + // 测点索引 + DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); + + if (CollectionUtils.isEmpty(calculatedParam.getIdList())) { + Dept data = deptFeignClient.getRootDept().getData(); + deptGetLineParam.setDeptId(data.getId()); + List data1 = commTerminalGeneralClient.deptSubStation(deptGetLineParam).getData(); + List stationIds = new ArrayList<>(); + for (DeptGetSubStationDTO deptGetSubStationDTO : data1) { + Collection union = CollectionUtils.union(Optional.ofNullable(deptGetSubStationDTO.getStationIds()).orElse(new ArrayList()), + Optional.ofNullable(deptGetSubStationDTO.getStationIds()).orElse(new ArrayList())); + List collect = union.stream().distinct().collect(Collectors.toList()); + stationIds.addAll(collect); + } + stationIds = stationIds.stream().distinct().collect(Collectors.toList()); + calculatedParam.setIdList(stationIds); + } + LiteflowResponse liteflowResponse; + if (baseParam.isRepair()) { + //补招时,起始日期、截止日期必填 + DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT); + DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT); + long betweenDay = DateUtil.betweenDay(startDate, endDate, true); + //递增日期执行算法链 + for (int i = 0; i < betweenDay; i++) { + if (i != 0) { + startDate = DateUtil.offsetDay(startDate, 1); + } + calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN)); + liteflowResponse = flowExecutor.execute2Resp("sub_station", calculatedParam); + dealResponse(calculatedParam, liteflowResponse, methodDescribe); + } + } else { + //非补招 + liteflowResponse = flowExecutor.execute2Resp("sub_station", calculatedParam); + dealResponse(calculatedParam, liteflowResponse, methodDescribe); + } + + } + } 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 new file mode 100644 index 000000000..8f67395e3 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/PmsDimExecutor.java @@ -0,0 +1,32 @@ +package com.njcn.prepare.executor; + +import com.njcn.prepare.harmonic.service.mysql.dim.IRDimBusGlobalDService; +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.annotation.LiteflowMethod; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.enums.LiteFlowMethodEnum; +import com.yomahub.liteflow.enums.NodeTypeEnum; +import lombok.RequiredArgsConstructor; + +/** + * pqs + * + * @author cdf + * @date 2023/11/17 + */ +@LiteflowComponent +@RequiredArgsConstructor +public class PmsDimExecutor extends BaseExecutor{ + + private final IRDimBusGlobalDService irDimBusGlobalDService; + + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dimBusGlobalAccess", nodeType = NodeTypeEnum.COMMON) + public boolean dimBusGlobalAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dimBusGlobalAccess", nodeType = NodeTypeEnum.COMMON) + public void dimBusGlobalProcess(NodeComponent bindCmp) { + irDimBusGlobalDService.globalCalBusBarDay(bindCmp.getRequestData()); + } + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/PmsCountLedgerMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/PmsCountLedgerMapper.java new file mode 100644 index 000000000..38d745e8d --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/PmsCountLedgerMapper.java @@ -0,0 +1,28 @@ +package com.njcn.prepare.harmonic.mapper.mysql.dim; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.device.pms.pojo.po.PmsCountLedger; +import com.njcn.device.pms.pojo.po.PmsMidLedger; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 每日变电站-母线数据总条目表 Mapper 接口 + *

+ * + * @author hongawen + * @since 2023-11-15 + */ +public interface PmsCountLedgerMapper extends BaseMapper { + + /** + * 获取最新的一组数据 + * @author cdf + * @date 2023/11/17 + */ + List newDateData(); + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/PmsMidLedgerMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/PmsMidLedgerMapper.java new file mode 100644 index 000000000..8a050e1ab --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/PmsMidLedgerMapper.java @@ -0,0 +1,17 @@ +package com.njcn.prepare.harmonic.mapper.mysql.dim; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.device.pms.pojo.po.PmsMidLedger; + +/** + *

+ * 变电站-母线数据中间表 Mapper 接口 + *

+ * + * @author hongawen + * @since 2023-11-15 + */ +public interface PmsMidLedgerMapper extends BaseMapper { + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusGlobalDMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusGlobalDMapper.java index c03fac0a7..b3da285ed 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusGlobalDMapper.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusGlobalDMapper.java @@ -2,6 +2,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.harmonic.pojo.po.dim.RDimBusGlobalD; /** @@ -12,6 +13,6 @@ import com.njcn.harmonic.pojo.po.dim.RDimBusGlobalD; * @author hongawen * @since 2023-11-14 */ -public interface RDimBusGlobalDMapper extends BaseMapper { +public interface RDimBusGlobalDMapper extends MppBaseMapper { } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/PmsCountLedgerMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/PmsCountLedgerMapper.xml new file mode 100644 index 000000000..a6f5708ee --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/PmsCountLedgerMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimBusGlobalDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimBusGlobalDService.java index 163206dda..3b71a2db1 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimBusGlobalDService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimBusGlobalDService.java @@ -2,6 +2,7 @@ package com.njcn.prepare.harmonic.service.mysql.dim; import com.baomidou.mybatisplus.extension.service.IService; +import com.github.jeffreyning.mybatisplus.service.IMppService; import com.njcn.harmonic.pojo.po.dim.RDimBusGlobalD; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; @@ -13,8 +14,8 @@ import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; * @author hongawen * @since 2023-11-14 */ -public interface IRDimBusGlobalDService extends IService { +public interface IRDimBusGlobalDService extends IMppService { - public void globalCalBusBar(CalculatedParam calculatedParam); + public void globalCalBusBarDay(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusGlobalDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusGlobalDServiceImpl.java index f02347a7b..529ff044b 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusGlobalDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusGlobalDServiceImpl.java @@ -4,27 +4,42 @@ package com.njcn.prepare.harmonic.service.mysql.dim.impl; import cn.hutool.core.collection.CollectionUtil; 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.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO; import com.njcn.device.biz.pojo.param.DeptGetLineParam; -import com.njcn.device.pms.pojo.po.Monitor; +import com.njcn.device.pms.pojo.po.GeneratrixWire; +import com.njcn.device.pms.pojo.po.PmsCountLedger; +import com.njcn.device.pms.pojo.po.PmsMidLedger; import com.njcn.device.pq.pojo.po.RStatIntegrityD; +import com.njcn.device.pms.pojo.po.Monitor; +import com.njcn.harmonic.pojo.po.RMpEventDetailDPO; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.po.dim.RDimBusGlobalD; import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper; import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitTargetDMapper; import com.njcn.prepare.harmonic.mapper.mysql.dim.GeneratrixWireMapper; +import com.njcn.prepare.harmonic.mapper.mysql.dim.PmsCountLedgerMapper; import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusGlobalDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.prepare.harmonic.service.mysql.dim.IRDimBusGlobalDService; import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.po.Dept; import lombok.RequiredArgsConstructor; +import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDate; import java.util.ArrayList; +import java.util.Collection; import java.util.List; +import java.util.Map; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -37,7 +52,7 @@ import java.util.stream.Collectors; */ @Service @RequiredArgsConstructor -public class RDimBusGlobalDServiceImpl extends ServiceImpl implements IRDimBusGlobalDService { +public class RDimBusGlobalDServiceImpl extends MppServiceImpl implements IRDimBusGlobalDService { private final DeptFeignClient deptFeignClient; @@ -49,19 +64,26 @@ public class RDimBusGlobalDServiceImpl extends ServiceImpl poList = new ArrayList<>(); - LocalDate date = LocalDate.parse(calculatedParam.getDataDate()); + List pmsMidLedgerList = pmsCountLedgerMapper.newDateData(); + Map map = pmsMidLedgerList.stream().collect(Collectors.toMap(PmsCountLedger::getSection, Function.identity())); Dept dept = deptFeignClient.getRootDept().getData(); @@ -70,21 +92,34 @@ public class RDimBusGlobalDServiceImpl extends ServiceImpl deptList = commTerminalGeneralClient.deptGetLineList(deptGetLineParam).getData(); - for(DeptGetChildrenDTO dto : deptList){ + for (DeptGetChildrenDTO dto : deptList) { + + Integer stationNum; + Integer busBarNum; + + if(map.containsKey(dto.getDeptId())){ + PmsCountLedger pmsCountLedger = map.get(dto.getDeptId()); + stationNum = pmsCountLedger.getSubCount(); + busBarNum = pmsCountLedger.getSubvCount(); + }else { + continue; + } + + RDimBusGlobalD rDimBusGlobalD = new RDimBusGlobalD(); rDimBusGlobalD.setOrgId(dto.getDeptId()); rDimBusGlobalD.setStatisDate(date); List monitorIds = dto.getLineIds(); - if(CollectionUtil.isNotEmpty(monitorIds)){ + if (CollectionUtil.isNotEmpty(monitorIds)) { //先初步筛选出完整性大于95%的 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(RStatIntegrityD::getLineIndex,monitorIds).eq(RStatIntegrityD::getTimeId,date); + lambdaQueryWrapper.in(RStatIntegrityD::getLineIndex, monitorIds).eq(RStatIntegrityD::getTimeId, date); List integrityDList = rStatIntegrityDMapper.selectList(lambdaQueryWrapper); - if(CollectionUtil.isEmpty(integrityDList)){ + if (CollectionUtil.isEmpty(integrityDList)) { + rDimBusGlobalD.setMonitorRate(0f); rDimBusGlobalD.setLimitRate(3.14159f); - rDimBusGlobalD.setMonitorRate(3.14159f); rDimBusGlobalD.setLimitAvgRate(3.14159f); poList.add(rDimBusGlobalD); break; @@ -92,31 +127,77 @@ public class RDimBusGlobalDServiceImpl extends ServiceImpl it.getRealTime() / it.getDueTime() > 0.95f) + .filter(it -> it.getRealTime() / it.getDueTime() >= 0.95f) .collect(Collectors.toList()); - if(CollectionUtil.isEmpty(integrityDList)){ + if (CollectionUtil.isEmpty(integrityDList)) { + rDimBusGlobalD.setMonitorRate(0f); rDimBusGlobalD.setLimitRate(3.14159f); - rDimBusGlobalD.setMonitorRate(3.14159f); rDimBusGlobalD.setLimitAvgRate(3.14159f); poList.add(rDimBusGlobalD); break; - }else { - List goodMonitorIds = integrityDList.stream().map(RStatIntegrityD::getLineIndex).distinct().collect(Collectors.toList()); + } else { + //有效接入监测点(分母) + List goodMonitorIds = integrityDList.stream().map(RStatIntegrityD::getLineIndex).distinct().collect(Collectors.toList()); LambdaQueryWrapper monitorLambdaQueryWrapper = new LambdaQueryWrapper<>(); - monitorLambdaQueryWrapper.select(Monitor::getId,Monitor::getLineId).in(Monitor::getId,goodMonitorIds).eq(Monitor::getStatus,DataStateEnum.ENABLE.getCode()); + monitorLambdaQueryWrapper.select(Monitor::getId, Monitor::getLineId,Monitor::getPowerrId).in(Monitor::getId, goodMonitorIds).eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode()); List monitorList = pmsMonitorPOMapper.selectList(monitorLambdaQueryWrapper); - List busBarIds = monitorList.stream().map(Monitor::getLineId).collect(Collectors.toList()); + List goodLineIds = monitorList.stream().map(Monitor::getLineId).distinct().collect(Collectors.toList()); + + List goodStationIds = monitorList.stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList()); + + rDimBusGlobalD.setMonitorRate((float) goodLineIds.size() / busBarNum * 100); + rDimBusGlobalD.setStationLimitRate((float) goodStationIds.size() / stationNum * 100); + + LambdaQueryWrapper limitWrapper = new LambdaQueryWrapper<>(); + limitWrapper.in(RStatLimitTargetDPO::getLineId, goodMonitorIds).eq(RStatLimitTargetDPO::getTime, date); + List rStatLimitRateDPOList = rStatLimitTargetDMapper.selectList(limitWrapper); + + LambdaQueryWrapper eventLambda = new LambdaQueryWrapper<>(); + eventLambda.select(RMpEventDetailDPO::getMeasurementPointId).in(RMpEventDetailDPO::getMeasurementPointId, goodMonitorIds) + .eq(RMpEventDetailDPO::getDataDate, date); + + List eventList = rMpEventDetailDMapper.selectList(eventLambda); + if (CollectionUtil.isEmpty(rStatLimitRateDPOList) && CollectionUtil.isEmpty(eventList)) { + rDimBusGlobalD.setMonitorRate(3.14159f); + rDimBusGlobalD.setLimitAvgRate(3.14159f); + break; + } else { + rStatLimitRateDPOList = rStatLimitRateDPOList.stream().filter(item -> item.getAllTime() == 1).collect(Collectors.toList()); + List dianOneIds = rStatLimitRateDPOList.stream().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()); + eventList = eventList.stream().filter(it -> it.getSagTimes() > 0 || it.getInterruptTimes() > 0 || it.getSwellTimes() > 0).collect(Collectors.toList()); + List dianTwoIds = eventList.stream().map(RMpEventDetailDPO::getMeasurementPointId).collect(Collectors.toList()); + Collection union = CollectionUtils.union(dianOneIds, dianTwoIds); + List collect = union.stream().distinct().collect(Collectors.toList()); + + if (CollectionUtil.isEmpty(collect)) { + rDimBusGlobalD.setLimitRate(0f); + rDimBusGlobalD.setLimitAvgRate(0f); + } else { + //反推到母线 + monitorLambdaQueryWrapper.clear(); + monitorLambdaQueryWrapper.select(Monitor::getId, Monitor::getLineId,Monitor::getPowerrId).in(Monitor::getId, collect).eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode()); + List temMonitorList = pmsMonitorPOMapper.selectList(monitorLambdaQueryWrapper); + List targetLineIds = temMonitorList.stream().map(Monitor::getLineId).distinct().collect(Collectors.toList()); + + float re = (float) targetLineIds.size() / goodLineIds.size(); + rDimBusGlobalD.setLimitRate(re); + rDimBusGlobalD.setLimitAvgRate(re); + + //反推电站 + List targetSubIds = temMonitorList.stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList()); + float reStation = (float) targetSubIds.size() / goodStationIds.size(); + rDimBusGlobalD.setStationLimitRate(reStation); + rDimBusGlobalD.setStationLimitAvgRate(reStation); + + } + } } - - - - } + poList.add(rDimBusGlobalD); } - - + this.saveOrUpdateBatchByMultiId(poList); } }