From 3fecc56f93792c99c0e917affdaf219392b3bf5f Mon Sep 17 00:00:00 2001
From: cdf <857448963@qq.com>
Date: Wed, 8 May 2024 09:57:27 +0800
Subject: [PATCH] =?UTF-8?q?1.=E6=B2=B3=E5=8C=97=E4=B8=A4=E7=BA=A7=E8=B4=AF?=
=?UTF-8?q?=E9=80=9A=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9E=E5=8F=B0=E8=B4=A6?=
=?UTF-8?q?=E8=BF=90=E8=A1=8C=E8=AF=A6=E6=83=85=E7=BB=9F=E8=AE=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../device/pms/pojo/po/PmsRunStatistic.java | 47 ++++++-
.../ledgerManger/CommTerminalController.java | 3 +
.../majornetwork/PmsCountLedgerMapper.java | 21 +++
.../ledgerManger/IPmsRunStatisticService.java | 16 +++
.../impl/PmsRunStatisticServiceImpl.java | 133 +++++++++++++++++-
5 files changed, 210 insertions(+), 10 deletions(-)
create mode 100644 pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/PmsCountLedgerMapper.java
diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/PmsRunStatistic.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/PmsRunStatistic.java
index a53f2ff31..ba8dfb21c 100644
--- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/PmsRunStatistic.java
+++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/PmsRunStatistic.java
@@ -1,12 +1,20 @@
package com.njcn.device.pms.pojo.po;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import com.njcn.db.bo.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDate;
+import java.time.LocalDateTime;
/**
* pqs
@@ -14,15 +22,13 @@ import java.time.LocalDate;
* @author cdf
* @date 2024/4/17
*/
-@TableName(value = "pms_run_statistic")
+@TableName(value = "pms_run_statistic_d")
@Data
-@EqualsAndHashCode(callSuper = true)
-public class PmsRunStatistic extends BaseEntity {
+public class PmsRunStatistic{
/**
*
*/
-
@MppMultiId
private LocalDate statisticDate;
@@ -31,6 +37,39 @@ public class PmsRunStatistic extends BaseEntity {
private String runMonitorIds;
+ private String onlineMonitorIds;
+
+ private String runBusIds;
+
+ private Integer runBusNum;
+
+ private String onlineBusIds;
+
private String runDevIds;
+ private String runStationIds;
+
+ private Integer runStationNum;
+
+ private String onlineStationIds;
+
+ private String typicalTractionIds;
+
+ private String typicalWindIds;
+
+ private String typicalSunIds;
+
+ private String typicalOtherIds;
+
+ /**
+ * 创建时间
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+ @JsonSerialize(using = LocalDateTimeSerializer.class)
+ private LocalDateTime createTime;
+
+
+
}
diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/CommTerminalController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/CommTerminalController.java
index 06f5ee9a0..9ca95d358 100644
--- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/CommTerminalController.java
+++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/CommTerminalController.java
@@ -451,4 +451,7 @@ public class CommTerminalController extends BaseController {
+
+
+
}
diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/PmsCountLedgerMapper.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/PmsCountLedgerMapper.java
new file mode 100644
index 000000000..b92d4b6c3
--- /dev/null
+++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/PmsCountLedgerMapper.java
@@ -0,0 +1,21 @@
+package com.njcn.device.pms.mapper.majornetwork;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.njcn.device.pms.pojo.po.PmsCountLedger;
+
+import java.util.List;
+
+/**
+ *
+ * 每日变电站-母线数据总条目表 Mapper 接口
+ *
+ *
+ * @author hongawen
+ * @since 2023-11-15
+ */
+public interface PmsCountLedgerMapper extends BaseMapper {
+
+
+
+}
diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/IPmsRunStatisticService.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/IPmsRunStatisticService.java
index b8d6838df..a09b60eff 100644
--- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/IPmsRunStatisticService.java
+++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/IPmsRunStatisticService.java
@@ -24,4 +24,20 @@ public interface IPmsRunStatisticService extends IMppService {
*/
void statisticLedgerRunDay(String date);
+
+ /**
+ * 每日统计每月
+ * @author cdf
+ * @date 2024/4/17
+ */
+ void statisticLedgerRunMonth(String date);
+
+
+ /**
+ * 每日统计每年
+ * @author cdf
+ * @date 2024/4/17
+ */
+ void statisticLedgerRunYear(String date);
+
}
diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/PmsRunStatisticServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/PmsRunStatisticServiceImpl.java
index 33f65e935..95fafe168 100644
--- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/PmsRunStatisticServiceImpl.java
+++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/PmsRunStatisticServiceImpl.java
@@ -2,17 +2,31 @@ package com.njcn.device.pms.service.ledgerManger.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
+import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
-import com.njcn.device.pms.mapper.majornetwork.PmsRunStatisticMapper;
-import com.njcn.device.pms.pojo.po.Monitor;
-import com.njcn.device.pms.pojo.po.PmsRunStatistic;
+import com.njcn.device.pms.mapper.majornetwork.*;
+import com.njcn.device.pms.pojo.po.*;
import com.njcn.device.pms.service.ledgerManger.CommTerminalService;
import com.njcn.device.pms.service.ledgerManger.IPmsRunStatisticService;
import com.njcn.device.pms.service.majornetwork.IMonitorService;
+import com.njcn.device.pq.pojo.po.RStatIntegrityD;
+import com.njcn.system.api.DicDataFeignClient;
+import com.njcn.system.api.DictTreeFeignClient;
+import com.njcn.system.enums.DicDataEnum;
+import com.njcn.system.enums.DicDataTypeEnum;
+import com.njcn.system.enums.DicTreeEnum;
+import com.njcn.system.pojo.po.Dic;
+import com.njcn.system.pojo.po.DictData;
+import com.njcn.system.pojo.po.SysDicTreePO;
+import com.njcn.system.pojo.vo.DictTreeVO;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import lombok.RequiredArgsConstructor;
@@ -22,6 +36,7 @@ import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
*
@@ -39,24 +54,130 @@ public class PmsRunStatisticServiceImpl extends MppServiceImpl deptGetChildrenMoreDTOList = commTerminalService.deptGetLine(deptGetLineParam);
List poList = new ArrayList<>();
+
+ //获取在运母线,在运电站数量
+ List midLedgerStationList = this.getBusBarAndStationInfo(0);
+ List midLedgerBusBarList = this.getBusBarAndStationInfo(1);
+
+ //获取在运,符合上送国网的测点,用于过滤监测母线,监测电站
+ DictData dictData = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.RUN.getCode(),DicDataTypeEnum.LINE_STATE.getCode()).getData();
+ List monitorList = monitorMapper.selectList(new LambdaQueryWrapper().eq(Monitor::getMonitorState,dictData.getId()).eq(Monitor::getIsUpToGrid,DataStateEnum.ENABLE.getCode()));
+
+ List statationStatList = statationStatMapper.selectList(new LambdaQueryWrapper().isNotNull(StatationStat::getMidStationId));
+
+
+ //数据完整性
+ List rStatIntegrityIds = rStatIntegrityDMapper.selectList(new LambdaQueryWrapper().eq(RStatIntegrityD::getTimeId,localDate).gt(RStatIntegrityD::getRealTime,0)).stream().map(RStatIntegrityD::getLineIndex).distinct().collect(Collectors.toList());
+
+ //对象类型
+ List sysdictreepo = dictTreeFeignClient.queryAll().getData();
+ List windfarm_user = Stream.of(DicDataEnum.WINDPOWER_STATION.getCode()).collect(Collectors.toList());
+ List photovoltaicsit_eusers = Stream.of(DicDataEnum.PHOTOVOLTAIC_POWER_STATION.getCode()).collect(Collectors.toList());
+ List tractionstation = Stream.of(DicDataEnum.ELECTRIFIED_RAILWAY.getCode()).collect(Collectors.toList());
+
+ DictTreeVO dictTreeVO = dictTreeFeignClient.queryByCode(DicTreeEnum.Imp_Users.getCode()).getData();
+ List dictTreeVOList = dictTreeFeignClient.query(dictTreeVO.getId()).getData();
+ List importUser = dictTreeVOList.stream().map(DictTreeVO::getCode).distinct().collect(Collectors.toList());
+ importUser.add(dictTreeVO.getCode());
+
+
+ List windfarm_user_dict = sysdictreepo.stream().filter(temp -> windfarm_user.contains(temp.getCode())).map(SysDicTreePO::getId).collect(Collectors.toList());
+ List photovoltaicsit_eusers_dict = sysdictreepo.stream().filter(temp -> photovoltaicsit_eusers.contains(temp.getCode())).map(SysDicTreePO::getId).collect(Collectors.toList());
+ List tractionstation_dict = sysdictreepo.stream().filter(temp -> tractionstation.contains(temp.getCode())).map(SysDicTreePO::getId).collect(Collectors.toList());
+ List import_dict = sysdictreepo.stream().filter(temp -> importUser.contains(temp.getCode())).map(SysDicTreePO::getId).collect(Collectors.toList());
+
+ List un_other_interferencesource_users_dict = new ArrayList<>();
+ un_other_interferencesource_users_dict.addAll(photovoltaicsit_eusers_dict);
+ un_other_interferencesource_users_dict.addAll(tractionstation_dict);
+ un_other_interferencesource_users_dict.addAll(windfarm_user_dict);
+ un_other_interferencesource_users_dict.addAll(import_dict);
+
+
+ //遍历每个部门
for(DeptGetChildrenMoreDTO dto : deptGetChildrenMoreDTOList){
+ List childrenDept = dto.getUnitChildrenList();
+
+ List temPointIds = dto.getLineBaseList().stream().map(LineDevGetDTO::getPointId).distinct().collect(Collectors.toList());
+
+ List onlinePointIds = temPointIds.stream().filter(rStatIntegrityIds::contains).collect(Collectors.toList());
+
PmsRunStatistic pmsRunStatistic = new PmsRunStatistic();
- pmsRunStatistic.setStatisticDate(LocalDate.parse(date));
+ pmsRunStatistic.setStatisticDate(localDate);
pmsRunStatistic.setDeptId(dto.getUnitId());
- pmsRunStatistic.setRunMonitorIds(dto.getLineBaseList().stream().map(LineDevGetDTO::getPointId).distinct().collect(Collectors.joining(StrUtil.COMMA)));
+ pmsRunStatistic.setRunMonitorIds(String.join(StrUtil.COMMA, temPointIds));
+ pmsRunStatistic.setOnlineMonitorIds(String.join(StrUtil.COMMA, onlinePointIds));
+
pmsRunStatistic.setRunDevIds(dto.getLineBaseList().stream().map(LineDevGetDTO::getDevId).distinct().collect(Collectors.joining(StrUtil.COMMA)));
+
+
+ long stationCount = midLedgerStationList.stream().filter(it->childrenDept.contains(it.getSectionId())).map(PmsMidLedger::getId).distinct().count();
+ pmsRunStatistic.setRunStationNum((int) stationCount);
+ long busBarCount = midLedgerBusBarList.stream().filter(it->childrenDept.contains(it.getSectionId())).map(PmsMidLedger::getId).distinct().count();
+ pmsRunStatistic.setRunBusNum((int) busBarCount);
+
+ List runBusIds = monitorList.stream().filter(it->childrenDept.contains(it.getOrgId())).map(Monitor::getLineId).distinct().collect(Collectors.toList());
+ pmsRunStatistic.setOnlineBusIds(String.join(StrUtil.COMMA, runBusIds));
+
+ List runStationIds = statationStatList.stream().filter(it->childrenDept.contains(it.getOrgId())).map(StatationStat::getPowerId).distinct().collect(Collectors.toList());
+ pmsRunStatistic.setOnlineStationIds(String.join(StrUtil.COMMA, runStationIds));
+
+ //典型统计
+ List windPointIds = dto.getLineBaseList().stream().filter(it->windfarm_user_dict.contains(it.getObjType())).map(LineDevGetDTO::getPointId).collect(Collectors.toList());
+ List sunPointIds = dto.getLineBaseList().stream().filter(it->photovoltaicsit_eusers_dict.contains(it.getObjType())).map(LineDevGetDTO::getPointId).collect(Collectors.toList());
+ List tractionPointIds = dto.getLineBaseList().stream().filter(it->tractionstation_dict.contains(it.getObjType())).map(LineDevGetDTO::getPointId).collect(Collectors.toList());
+ List otherPointIds = dto.getLineBaseList().stream().filter(it->!un_other_interferencesource_users_dict.contains(it.getObjType())).map(LineDevGetDTO::getPointId).collect(Collectors.toList());
+ pmsRunStatistic.setTypicalWindIds(String.join(StrUtil.COMMA, windPointIds));
+ pmsRunStatistic.setTypicalSunIds(String.join(StrUtil.COMMA, sunPointIds));
+ pmsRunStatistic.setTypicalTractionIds(String.join(StrUtil.COMMA, tractionPointIds));
+ pmsRunStatistic.setTypicalOtherIds(String.join(StrUtil.COMMA, otherPointIds));
poList.add(pmsRunStatistic);
}
this.saveBatch(poList);
}
+
+ @Override
+ public void statisticLedgerRunMonth(String date) {
+ DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(date));
+ DateTime end = DateUtil.endOfMonth(DateUtil.parse(date));
+
+ }
+
+ @Override
+ public void statisticLedgerRunYear(String date) {
+
+ }
+
+
+ /**
+ * 获取中台母线电站信息
+ */
+ public List getBusBarAndStationInfo(Integer type) {
+ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(PmsMidLedger::getLevel,type)
+ .eq(PmsMidLedger::getState, DataStateEnum.ENABLE.getCode());
+ return pmsMidLedgerMapper.selectList(lambdaQueryWrapper);
+ }
}