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 + +