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);
}
}