From bd8cba6235c81ff948867975b33be98217efb490 Mon Sep 17 00:00:00 2001
From: xuyang <748613696@qq.com>
Date: Thu, 30 Nov 2023 14:37:04 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=95=B0=E6=8D=AE=E4=B8=AD?=
=?UTF-8?q?=E5=BF=83=E7=AE=97=E6=B3=95=201.=E8=A3=85=E7=BD=AE=E5=9C=A8?=
=?UTF-8?q?=E7=BA=BF=E7=8E=87=E7=AE=97=E6=B3=95-=E6=97=A5=E8=A1=A8=202.?=
=?UTF-8?q?=E7=BB=88=E7=AB=AF=E5=BC=82=E5=B8=B8=E9=80=9A=E5=91=8A=E7=AE=97?=
=?UTF-8?q?=E6=B3=95-=E6=97=A5=E8=A1=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../device/pq/pojo/po/DeviceRunException.java | 1 +
.../com/njcn/device/pq/pojo/po/PqsTopMsg.java | 92 ++++++++++++++
.../device/pq/pojo/po/RStatOnlinerateD.java | 5 +-
.../com/njcn/device/pq/pojo/po/TopMsg.java | 1 +
.../service/impl/THDistortionServiceImpl.java | 23 +++-
.../com/njcn/prepare/ExecutionCenter.java | 48 ++++++-
.../njcn/prepare/executor/DeviceExecutor.java | 55 ++++++++
.../device/DeviceAbnormaStatisticsMapper.java | 12 +-
.../mapping/DeviceAbnormaStatisticsMapper.xml | 23 ++++
.../DeviceAbnormaStatisticsServiceImpl.java | 118 +++++++++++++++++-
.../Impl/line/OnlineRateServiceImpl.java | 34 +++++
.../DeviceAbnormalStatisticsService.java | 9 ++
.../service/mysql/line/OnlineRateService.java | 9 ++
13 files changed, 417 insertions(+), 13 deletions(-)
create mode 100644 pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/PqsTopMsg.java
create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/DeviceExecutor.java
diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/DeviceRunException.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/DeviceRunException.java
index e0c2d40eb..4f7260d71 100644
--- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/DeviceRunException.java
+++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/DeviceRunException.java
@@ -14,6 +14,7 @@ import java.io.Serializable;
*/
@Data
@Measurement(name = "pqs_top_msg")
+@Deprecated
public class DeviceRunException implements Serializable {
/**
diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/PqsTopMsg.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/PqsTopMsg.java
new file mode 100644
index 000000000..5423e8ee4
--- /dev/null
+++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/PqsTopMsg.java
@@ -0,0 +1,92 @@
+package com.njcn.device.pq.pojo.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import com.njcn.db.bo.BaseEntity;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ *
+ *
+ *
+ *
+ * @author xuyang
+ * @since 2023-11-30
+ */
+@Data
+@TableName("pqs_top_msg")
+public class PqsTopMsg {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 日期
+ */
+ @MppMultiId
+ private LocalDate timeId;
+
+ /**
+ * 装置索引(外键)
+ */
+ @MppMultiId
+ private String devId;
+
+ /**
+ * 中断次数
+ */
+ private Integer comoutCount;
+
+ /**
+ * 中断时间段描述
+ */
+ private String comoutDesc;
+
+ /**
+ * 数据完整性标识 0.不达标 1.达标
+ */
+ private Integer integrityFlag;
+
+ /**
+ * 数据完成性百分比 0.3555
+ */
+ private Float integrityValue;
+
+ /**
+ * 告警次数
+ */
+ private Integer alarmCount;
+
+ /**
+ * 告警描述
+ */
+ private String alarmDesc;
+
+ /**
+ * 流量超标标识 0.不达标 1.达标
+ */
+ private Integer flowFlag;
+
+ /**
+ * 流量使用百分比
+ */
+ private Float flowValue;
+
+ /**
+ * 在线率达标标识 0.不达标 1.达标
+ */
+ private Integer onlinerateFlag;
+
+ /**
+ * 在线率百分比
+ */
+ private Float onlinerateValue;
+
+ /**
+ * 状态 0.删除 1.正常
+ */
+ private Integer state;
+
+
+}
diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/RStatOnlinerateD.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/RStatOnlinerateD.java
index 9d354161a..6fd2e4ae8 100644
--- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/RStatOnlinerateD.java
+++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/RStatOnlinerateD.java
@@ -5,6 +5,8 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import com.njcn.db.bo.BaseEntity;
import java.io.Serializable;
import java.time.LocalDateTime;
+
+import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@@ -16,8 +18,7 @@ import lombok.Setter;
* @author hongawen
* @since 2023-03-28
*/
-@Getter
-@Setter
+@Data
@TableName("r_stat_onlinerate_d")
public class RStatOnlinerateD {
diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/TopMsg.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/TopMsg.java
index 919644892..33b205f29 100644
--- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/TopMsg.java
+++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/TopMsg.java
@@ -13,6 +13,7 @@ import java.time.Instant;
*/
@Data
@Measurement(name = "pqs_top_msg")
+@Deprecated
public class TopMsg {
@Column(name = "time")
diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/THDistortionServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/THDistortionServiceImpl.java
index 3e1a605d6..2391d7e94 100644
--- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/THDistortionServiceImpl.java
+++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/THDistortionServiceImpl.java
@@ -1,6 +1,7 @@
package com.njcn.harmonic.service.impl;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -176,6 +177,24 @@ public class THDistortionServiceImpl implements THDistortionService {
});
}
+ /**
+ * 计算供电公司畸变率
+ */
+ private void setPowerDistortion(List list) {
+ List result = new ArrayList<>();
+ list.forEach(item->{
+ List children = item.getChildren();
+ children.forEach(item2->{
+ result.addAll(item2.getChildren());
+ });
+ if (CollectionUtil.isNotEmpty(result)){
+ item.setDistortion(roundHalfUp(result.stream().filter(child -> !Objects.equals(child.getDistortion(), 3.14159)).mapToDouble(THDistortionVO::getDistortion).average().orElse(3.14159)));
+ } else {
+ item.setDistortion(3.14159);
+ }
+ });
+ }
+
/**
* 组装树层级
*/
@@ -224,8 +243,8 @@ public class THDistortionServiceImpl implements THDistortionService {
setChildesList(substationList, monitorList);
setFatherDistortion(substationList);
powerCompanyList = powerCompanyList.stream().peek(item -> item.setChildren(getChildCategoryList(item, substationList))).collect(Collectors.toList());
- setFatherDistortion(powerCompanyList);
-
+// setFatherDistortion(powerCompanyList);
+ setPowerDistortion(powerCompanyList);
}
return powerCompanyList;
}
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 8b9e9ed13..9e670bda7 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
@@ -11,10 +11,7 @@ import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
-import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
-import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
-import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
-import com.njcn.device.biz.pojo.dto.DeptGetSubStationDTO;
+import com.njcn.device.biz.pojo.dto.*;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.prepare.harmonic.enums.PrepareResponseEnum;
import com.njcn.prepare.harmonic.pojo.bo.BaseParam;
@@ -142,9 +139,48 @@ public class ExecutionCenter extends BaseController {
liteflowResponse = flowExecutor.execute2Resp("measurement_point", calculatedParam);
dealResponse(calculatedParam,liteflowResponse,methodDescribe);
}
-
-
}
+
+ @OperateInfo(info = LogEnum.BUSINESS_COMMON)
+ @ApiOperation("装置算法执行链")
+ @PostMapping("/deviceExecutor")
+ @Async("asyncExecutor")
+ public void deviceExecutor(@RequestBody BaseParam baseParam) {
+ String methodDescribe = getMethodDescribe("deviceExecutor");
+ //手动判断参数是否合法,
+ CalculatedParam calculatedParam = judgeExecuteParam(baseParam);
+ DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
+ // 设备索引
+ if (CollectionUtils.isEmpty(calculatedParam.getIdList())) {
+ Dept data = deptFeignClient.getRootDept().getData();
+ deptGetLineParam.setDeptId(data.getId());
+ List list = commTerminalGeneralClient.deptGetDevice(deptGetLineParam).getData();
+ DeptGetDeviceDTO dto = list.stream().filter(po ->Objects.equals(po.getUnitId(),data.getId())).collect(Collectors.toList()).get(0);
+ List devList = dto.getDeviceList();
+ calculatedParam.setIdList(devList.stream().map(LineDevGetDTO::getDevId).distinct().collect(Collectors.toList()));
+ }
+ 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("device", calculatedParam);
+ dealResponse(calculatedParam,liteflowResponse,methodDescribe);
+ }
+ } else {
+ //非补招
+ liteflowResponse = flowExecutor.execute2Resp("device", calculatedParam);
+ dealResponse(calculatedParam,liteflowResponse,methodDescribe);
+ }
+ }
+
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("单位监测点算法执行链")
@PostMapping("/orgPointExecutor")
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/DeviceExecutor.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/DeviceExecutor.java
new file mode 100644
index 000000000..6d567449d
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/DeviceExecutor.java
@@ -0,0 +1,55 @@
+package com.njcn.prepare.executor;
+
+import com.njcn.prepare.harmonic.service.mysql.device.DeviceAbnormalStatisticsService;
+import com.njcn.prepare.harmonic.service.mysql.line.OnlineRateService;
+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;
+
+
+/**
+ * @author hongawen
+ * @version 1.0.0
+ * @date 2023年11月06日 15:59
+ */
+@LiteflowComponent
+@RequiredArgsConstructor
+public class DeviceExecutor extends BaseExecutor {
+
+ private final OnlineRateService onlineRateService;
+
+ private final DeviceAbnormalStatisticsService deviceAbnormaStatisticsService;
+
+ /**
+ * 算法名: 暂无-----终端在线率_日表(r_stat_onlinerate_d)
+ *
+ * @author xuyang
+ * @date 2023年11月30日 10:25
+ */
+ @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "deviceOnlineRate", nodeType = NodeTypeEnum.COMMON)
+ public boolean deviceOnlineRateAccess(NodeComponent bindCmp) {
+ return isAccess(bindCmp);
+ }
+ @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "deviceOnlineRate", nodeType = NodeTypeEnum.COMMON)
+ public void deviceOnlineRateProcess(NodeComponent bindCmp) {
+ onlineRateService.deviceOnlineRate(bindCmp.getRequestData());
+ }
+
+ /**
+ * 算法名: 暂无-----终端异常通告功能-日表(pqs_top_msg)
+ *
+ * @author xuyang
+ * @date 2023年11月30日 13:25
+ */
+ @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "pqsTopMsg", nodeType = NodeTypeEnum.COMMON)
+ public boolean pqsTopMsgAccess(NodeComponent bindCmp) {
+ return isAccess(bindCmp);
+ }
+ @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "pqsTopMsg", nodeType = NodeTypeEnum.COMMON)
+ public void pqsTopMsgProcess(NodeComponent bindCmp) {
+ deviceAbnormaStatisticsService.deviceAbnormaStatisticsD(bindCmp.getRequestData());
+ }
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/device/DeviceAbnormaStatisticsMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/device/DeviceAbnormaStatisticsMapper.java
index be57dd13b..1336dfda6 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/device/DeviceAbnormaStatisticsMapper.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/device/DeviceAbnormaStatisticsMapper.java
@@ -1,16 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.device;
import cn.hutool.core.date.DateTime;
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.device.pq.pojo.po.PqsTopMsg;
+import com.njcn.prepare.harmonic.bo.TopMsgPO;
import com.njcn.prepare.harmonic.pojo.mysql.po.line.AlarmPO;
import com.njcn.prepare.harmonic.pojo.mysql.po.line.AlarmStrategyVO;
-import com.njcn.prepare.harmonic.bo.TopMsgPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
-public interface DeviceAbnormaStatisticsMapper {
+public interface DeviceAbnormaStatisticsMapper extends MppBaseMapper{
/**
* 获取所有有等级监测点以及对应设备
@@ -18,6 +20,12 @@ public interface DeviceAbnormaStatisticsMapper {
*/
List getLines();
+ /**
+ * 获取所有有等级监测点以及对应设备
+ * @return List
+ */
+ List getLinesById(@Param("list") List list);
+
List getFlowByDevice(@Param("list") List list, @Param("time") String startTime);
List getIntegrityByLineIds(@Param("list") List list, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime);
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/device/mapping/DeviceAbnormaStatisticsMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/device/mapping/DeviceAbnormaStatisticsMapper.xml
index c66b9e489..c0783b9e9 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/device/mapping/DeviceAbnormaStatisticsMapper.xml
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/device/mapping/DeviceAbnormaStatisticsMapper.xml
@@ -55,6 +55,29 @@
pld.Line_Grade is NOT NULL
+
+