From 2769afa5e6a6592218ec4bf5570da558851cc0a0 Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Thu, 4 Jan 2024 16:15:57 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=81=BF=E8=83=BD=E4=BA=91=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E7=A7=BB=E6=A4=8D,=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../njcn/cloud/pojo/dto/AppStatistics.java | 172 ++++++++++- .../njcn/cloud/pojo/vo/StatisticsData.java | 21 +- .../njcn/cloud/pojo/vo/StatisticsDetail.java | 2 +- .../njcn/cloud/pojo/vo/StatisticsEvent.java | 2 +- .../statistics/StatisticsController.java | 57 +++- .../cloud/controller/task/SteadyMsgTask.java | 247 +++++++++++++-- .../cloud/service/IAppEventMsgService.java | 1 - .../cloud/service/IAppStatisticsService.java | 19 ++ .../impl/AppStatisticsServiceImpl.java | 285 +++++++++++++++++- 9 files changed, 764 insertions(+), 42 deletions(-) diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/dto/AppStatistics.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/dto/AppStatistics.java index 882a599..2f1714a 100644 --- a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/dto/AppStatistics.java +++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/dto/AppStatistics.java @@ -16,12 +16,12 @@ import lombok.Setter; *

* * @author wr - * @since 2024-01-03 + * @since 2024-01-04 */ @Getter @Setter @TableName("app_statistics") -public class AppStatistics extends BaseEntity { +public class AppStatistics { private static final long serialVersionUID = 1L; @@ -37,165 +37,327 @@ public class AppStatistics extends BaseEntity { @MppMultiId("Time_Id") private LocalDateTime timeId; + /** + * 暂降次数 + */ @TableField("Event_Count") - private Boolean eventCount; + private Integer eventCount; + /** + * 频率偏差合格率 + */ @TableField("Freq_Dev_Rate") private Float freqDevRate; + /** + * 电压偏差合格率 + */ @TableField("Voltage_Dev_Rate") private Float voltageDevRate; + /** + * 电压不平衡合格率 + */ @TableField("Ubalance_Rate") private Float ubalanceRate; - @TableField("FLICKER_Rate") + /** + * 闪变合格率 + */ + @TableField("Flicker_Rate") private Float flickerRate; - @TableField("UABERRANCE_Rate") + /** + * 电压谐波畸变率合格率 + */ + @TableField("Uaberrance_Rate") private Float uaberranceRate; + /** + * 2次电压谐波含有率合格率 + */ @TableField("Uharm_2_Rate") private Float uharm2Rate; + /** + * 3次电压谐波含有率合格率 + */ @TableField("Uharm_3_Rate") private Float uharm3Rate; + /** + * 4次电压谐波含有率合格率 + */ @TableField("Uharm_4_Rate") private Float uharm4Rate; + /** + * 5次电压谐波含有率合格率 + */ @TableField("Uharm_5_Rate") private Float uharm5Rate; + /** + * 6次电压谐波含有率合格率 + */ @TableField("Uharm_6_Rate") private Float uharm6Rate; + /** + * 7次电压谐波含有率合格率 + */ @TableField("Uharm_7_Rate") private Float uharm7Rate; + /** + * 8次电压谐波含有率合格率 + */ @TableField("Uharm_8_Rate") private Float uharm8Rate; + /** + * 9次电压谐波含有率合格率 + */ @TableField("Uharm_9_Rate") private Float uharm9Rate; + /** + * 10次电压谐波含有率合格率 + */ @TableField("Uharm_10_Rate") private Float uharm10Rate; + /** + * 11次电压谐波含有率合格率 + */ @TableField("Uharm_11_Rate") private Float uharm11Rate; + /** + * 12次电压谐波含有率合格率 + */ @TableField("Uharm_12_Rate") private Float uharm12Rate; + /** + * 13次电压谐波含有率合格率 + */ @TableField("Uharm_13_Rate") private Float uharm13Rate; + /** + * 14次电压谐波含有率合格率 + */ @TableField("Uharm_14_Rate") private Float uharm14Rate; + /** + * 15次电压谐波含有率合格率 + */ @TableField("Uharm_15_Rate") private Float uharm15Rate; + /** + * 16次电压谐波含有率合格率 + */ @TableField("Uharm_16_Rate") private Float uharm16Rate; + /** + * 17次电压谐波含有率合格率 + */ @TableField("Uharm_17_Rate") private Float uharm17Rate; + /** + * 18次电压谐波含有率合格率 + */ @TableField("Uharm_18_Rate") private Float uharm18Rate; + /** + * 19次电压谐波含有率合格率 + */ @TableField("Uharm_19_Rate") private Float uharm19Rate; + /** + * 20次电压谐波含有率合格率 + */ @TableField("Uharm_20_Rate") private Float uharm20Rate; + /** + * 21次电压谐波含有率合格率 + */ @TableField("Uharm_21_Rate") private Float uharm21Rate; + /** + * 22次电压谐波含有率合格率 + */ @TableField("Uharm_22_Rate") private Float uharm22Rate; + /** + * 23次电压谐波含有率合格率 + */ @TableField("Uharm_23_Rate") private Float uharm23Rate; + /** + * 24次电压谐波含有率合格率 + */ @TableField("Uharm_24_Rate") private Float uharm24Rate; + /** + * 25次电压谐波含有率合格率 + */ @TableField("Uharm_25_Rate") private Float uharm25Rate; + /** + * 2次电流谐波幅值合格率 + */ @TableField("Iharm_2_Rate") private Float iharm2Rate; + /** + * 3次电流谐波幅值合格率 + */ @TableField("Iharm_3_Rate") private Float iharm3Rate; + /** + * 4次电流谐波幅值合格率 + */ @TableField("Iharm_4_Rate") private Float iharm4Rate; + /** + * 5次电流谐波幅值合格率 + */ @TableField("Iharm_5_Rate") private Float iharm5Rate; + /** + * 6次电流谐波幅值合格率 + */ @TableField("Iharm_6_Rate") private Float iharm6Rate; + /** + * 7次电流谐波幅值合格率 + */ @TableField("Iharm_7_Rate") private Float iharm7Rate; + /** + * 8次电流谐波幅值合格率 + */ @TableField("Iharm_8_Rate") private Float iharm8Rate; + /** + * 9次电流谐波幅值合格率 + */ @TableField("Iharm_9_Rate") private Float iharm9Rate; + /** + * 10次电流谐波幅值合格率 + */ @TableField("Iharm_10_Rate") private Float iharm10Rate; + /** + * 11次电流谐波幅值合格率 + */ @TableField("Iharm_11_Rate") private Float iharm11Rate; + /** + * 12次电流谐波幅值合格率 + */ @TableField("Iharm_12_Rate") private Float iharm12Rate; + /** + * 13次电流谐波幅值合格率 + */ @TableField("Iharm_13_Rate") private Float iharm13Rate; + /** + * 14次电流谐波幅值合格率 + */ @TableField("Iharm_14_Rate") private Float iharm14Rate; + /** + * 15次电流谐波幅值合格率 + */ @TableField("Iharm_15_Rate") private Float iharm15Rate; + /** + * 16次电流谐波幅值合格率 + */ @TableField("Iharm_16_Rate") private Float iharm16Rate; + /** + * 17次电流谐波幅值合格率 + */ @TableField("Iharm_17_Rate") private Float iharm17Rate; + /** + * 18次电流谐波幅值合格率 + */ @TableField("Iharm_18_Rate") private Float iharm18Rate; + /** + * 19次电流谐波幅值合格率 + */ @TableField("Iharm_19_Rate") private Float iharm19Rate; + /** + * 20次电流谐波幅值合格率 + */ @TableField("Iharm_20_Rate") private Float iharm20Rate; + /** + * 21次电流谐波幅值合格率 + */ @TableField("Iharm_21_Rate") private Float iharm21Rate; + /** + * 22次电流谐波幅值合格率 + */ @TableField("Iharm_22_Rate") private Float iharm22Rate; + /** + * 23次电流谐波幅值合格率 + */ @TableField("Iharm_23_Rate") private Float iharm23Rate; + /** + * 24次电流谐波幅值合格率 + */ @TableField("Iharm_24_Rate") private Float iharm24Rate; + /** + * 25次电流谐波幅值合格率 + */ @TableField("Iharm_25_Rate") private Float iharm25Rate; diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsData.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsData.java index 89f5299..955afb2 100644 --- a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsData.java +++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsData.java @@ -1,16 +1,31 @@ package com.njcn.cloud.pojo.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.time.LocalDateTime; + /** - * @author gbl + * @author wr * @description:统计数据 */ @Data -public class StatisticsData { +public class StatisticsData{ + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("监测点名称") private String lineName; - private Long time; + + @ApiModelProperty("统计时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime time; + + @ApiModelProperty("暂态信息描述") private String eventDescribe; + + @ApiModelProperty("稳态信息描述") private String steadyDescribe; diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsDetail.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsDetail.java index 71f017a..e552b50 100644 --- a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsDetail.java +++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsDetail.java @@ -5,7 +5,7 @@ import lombok.Data; import java.util.List; /** - * @author gbl + * @author wr * @description:统计数据详细信息 */ @Data diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsEvent.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsEvent.java index 2d5718e..fda9414 100644 --- a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsEvent.java +++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsEvent.java @@ -3,7 +3,7 @@ package com.njcn.cloud.pojo.vo; import lombok.Data; /** - * @author gbl + * @author wr * @description:统计数据暂降信息 */ @Data diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/statistics/StatisticsController.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/statistics/StatisticsController.java index b051267..3ba31b3 100644 --- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/statistics/StatisticsController.java +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/statistics/StatisticsController.java @@ -1,12 +1,24 @@ package com.njcn.cloud.controller.statistics; +import com.njcn.cloud.pojo.vo.StatisticsData; +import com.njcn.cloud.pojo.vo.StatisticsDetail; +import com.njcn.cloud.service.IAppStatisticsService; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.njcn.web.controller.BaseController; -import java.util.Date; +import javax.servlet.http.HttpServletRequest; import java.util.List; /** @@ -19,7 +31,50 @@ import java.util.List; */ @RestController @RequestMapping("/appStatistics") +@Api(tags = "统计数据") +@RequiredArgsConstructor public class StatisticsController extends BaseController { + private final IAppStatisticsService appStatisticsService; + + /** + * @param lineIndex 监测点ID + * @param page 当前页数 + * @param num 每页数量 + * @description: 统计数据 + * @author wr + */ + @PostMapping("/statistics") + @ApiImplicitParams({ + @ApiImplicitParam(name = "lineIndex", value = "监测点ID", required = true, paramType = "query"), + @ApiImplicitParam(name = "startTime", value = "查询的开始时间", paramType = "query"), + @ApiImplicitParam(name = "endTime", value = "查询的结束时间", paramType = "query"), + @ApiImplicitParam(name = "page", value = "当前页", required = true, paramType = "query"), + @ApiImplicitParam(name = "num", value = "每页数量", required = true, paramType = "query") + }) + @ApiOperation(value = "统计数据", notes = "统计数据") + public HttpResult> statistics(String lineIndex, String startTime, String endTime, int page, int num, HttpServletRequest request) { + String methodDescribe = getMethodDescribe("statistics"); + List statisticsData = appStatisticsService.queryData(lineIndex, startTime, endTime, page, num); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, statisticsData, methodDescribe); + } + + /** + * @param lineIndex 监测点ID + * @param timeID 统计时间 + * @description: 统计数据详情 + * @author wr + */ + @PostMapping("/statisticsDetail") + @ApiImplicitParams({ + @ApiImplicitParam(name = "lineIndex", value = "监测点ID", required = true, paramType = "query"), + @ApiImplicitParam(name = "timeID", value = "统计时间", required = true, paramType = "query") + }) + @ApiOperation(value = "统计数据详情", notes = "统计数据详情") + public HttpResult statisticsDetail(String lineIndex, String timeID) { + String methodDescribe = getMethodDescribe("statistics"); + StatisticsDetail statisticsDetail = appStatisticsService.queryDetail(lineIndex, timeID); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, statisticsDetail, methodDescribe); + } } diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/task/SteadyMsgTask.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/task/SteadyMsgTask.java index 0262781..60479ba 100644 --- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/task/SteadyMsgTask.java +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/task/SteadyMsgTask.java @@ -7,16 +7,14 @@ import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.njcn.cloud.pojo.dto.AppDevMsg; -import com.njcn.cloud.pojo.dto.AppSteadyAss; -import com.njcn.cloud.pojo.dto.AppSteadyUrl; -import com.njcn.cloud.service.IAppDevMsgService; -import com.njcn.cloud.service.IAppSteadyAssService; -import com.njcn.cloud.service.IAppSteadyUrlService; -import com.njcn.cloud.service.MsgService; +import com.njcn.cloud.pojo.dto.*; +import com.njcn.cloud.service.*; import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.pojo.param.OnlineRateParam; import com.njcn.device.pq.pojo.po.TopMsgPO; +import com.njcn.event.api.EventDetailFeignClient; +import com.njcn.event.pojo.param.EventCountParam; +import com.njcn.event.pojo.po.RmpEventDetailPO; import com.njcn.harmonic.api.HarmDataFeignClient; import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; @@ -25,8 +23,11 @@ import com.njcn.user.pojo.po.User; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; + import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.stream.Collectors; @Component @RequiredArgsConstructor @@ -39,11 +40,14 @@ public class SteadyMsgTask { private final IAppSteadyUrlService appSteadyUrlService; private final IAppSteadyAssService appSteadyAssService; private final IAppDevMsgService appDevMsgService; + private final EventDetailFeignClient eventDetailFeignClient; + private final IAppStatisticsService appStatisticsService; + private final IAppEventInfoService appEventInfoService; @Scheduled(cron = "0 0 10 * * ?") public void timer() { - System.out.println("开始执行++++++++++++++++++++++++"+new Date()); - Date date = DateUtil.offsetDay(new Date(), -1); + System.out.println("开始执行++++++++++++++++++++++++" + new Date()); + Date date = DateUtil.offsetDay(new Date(), -1); String time = DateUtil.format(date, DatePattern.NORM_DATE_PATTERN); //开始时间 @@ -52,41 +56,44 @@ public class SteadyMsgTask { String endTime = DateUtil.endOfDay(date).toString(); //执行稳态消息推送 - steadyMsg(time,startTime,endTime); + steadyMsg(time, startTime, endTime); //终端消息推送 - devDegree(time,startTime,endTime); + devDegree(time, startTime, endTime); + //统计消息推送 + statisticsData(time, startTime, endTime); } + /** * @Description: 稳态消息 * @Date: 2023/11/17 15:07 */ - public void steadyMsg(String time,String startTime,String endTime) { + public void steadyMsg(String time, String startTime, String endTime) { List users = userFeignClient.getUserByIdList(new ArrayList<>()).getData(); // List users = userFeignClient.getUserByIdList(Arrays.asList("5434cc08dc9d4b7cba5e856de52f0dda")).getData(); - if(CollUtil.isNotEmpty(users)){ + if (CollUtil.isNotEmpty(users)) { StatSubstationBizBaseParam param; for (User user : users) { //根据单位获取投运监测点 List lineIds = generalDeviceInfoClient.deptGetRunLine(user.getDeptId()).getData(); - param=new StatSubstationBizBaseParam(); + param = new StatSubstationBizBaseParam(); param.setIds(lineIds); param.setStartTime(startTime); param.setEndTime(endTime); List linesTargets = harmDataFeignClient.getLinesTarget(param).getData(); - if(CollUtil.isNotEmpty(linesTargets)){ + if (CollUtil.isNotEmpty(linesTargets)) { param.setIds(linesTargets); List limitRates = harmDataFeignClient.getLinesRate(param).getData(); //获取稳态消息guid String msgIndex = msgService.sendSteadyMsg(user.getId(), time, linesTargets.size()); - LocalDateTime date = LocalDateTimeUtil.parse(time,DatePattern.NORM_DATE_PATTERN); + LocalDateTime date = LocalDateTimeUtil.parse(time, DatePattern.NORM_DATE_PATTERN); AppSteadyAss steadyAss; for (RStatLimitRateDPO line : limitRates) { - steadyAss=new AppSteadyAss(); + steadyAss = new AppSteadyAss(); steadyAss.setSteadyIndex(msgIndex); steadyAss.setLineIndex(line.getLineId()); steadyAss.setTimeId(date); appSteadyAssService.save(steadyAss); - saveSteadyUrl(line,date); + saveSteadyUrl(line, date); } } @@ -98,14 +105,14 @@ public class SteadyMsgTask { * @Description: 新增终端异常通告 * @Date: 2023/11/17 15:08 */ - public void devDegree(String time,String startTime,String endTime){ - LocalDateTime date = LocalDateTimeUtil.parse(time,DatePattern.NORM_DATE_PATTERN); + public void devDegree(String time, String startTime, String endTime) { + LocalDateTime date = LocalDateTimeUtil.parse(time, DatePattern.NORM_DATE_PATTERN); List users = userFeignClient.getUserByIdList(new ArrayList<>()).getData(); - if(CollUtil.isNotEmpty(users)){ + if (CollUtil.isNotEmpty(users)) { for (User user : users) { List devIds = generalDeviceInfoClient.deptGetRunDev(user.getDeptId()).getData(); //获取消息信息 - OnlineRateParam top=new OnlineRateParam(); + OnlineRateParam top = new OnlineRateParam(); top.setIds(devIds); top.setType(1); top.setStartTime(startTime); @@ -113,17 +120,17 @@ public class SteadyMsgTask { List topMsgList = generalDeviceInfoClient.getTopMsgInfoByIds(top).getData(); AppDevMsg appDevMsg; for (TopMsgPO topMsgPO : topMsgList) { - appDevMsg=new AppDevMsg(); + appDevMsg = new AppDevMsg(); appDevMsg.setDevmsgIndex(IdUtil.simpleUUID()); appDevMsg.setTopId(topMsgPO.getTopId()); appDevMsg.setUserIndex(user.getId()); appDevMsg.setTimeId(date); appDevMsg.setState(0); appDevMsgService.save(appDevMsg); - msgService.sendTerminalMsg(user.getId(),user.getDevCode(),time, - topMsgPO.getDeviceAbnormalNum(), - topMsgPO.getAlarmCount(), - topMsgPO.getComOutCount() + msgService.sendTerminalMsg(user.getId(), user.getDevCode(), time, + topMsgPO.getDeviceAbnormalNum(), + topMsgPO.getAlarmCount(), + topMsgPO.getComOutCount() ); } @@ -131,9 +138,104 @@ public class SteadyMsgTask { } } + /** + * @param + * @Description: 统计数据 + * @Author: wr + * @Date: 2024/1/4 13:48 + */ + public void statisticsData(String time, String startTime, String endTime) { + LocalDateTime timeDay = LocalDateTimeUtil.parse(time, DatePattern.NORM_DATE_PATTERN); + List users = userFeignClient.getUserByIdList(new ArrayList<>()).getData(); +// List users = userFeignClient.getUserByIdList(Arrays.asList("5434cc08dc9d4b7cba5e856de52f0dda")).getData(); + if (CollUtil.isNotEmpty(users)) { + StatSubstationBizBaseParam baseParam; + EventCountParam param; + for (User user : users) { + //根据单位获取投运监测点 + List lineIds = generalDeviceInfoClient.deptGetRunLine(user.getDeptId()).getData(); + //1.根据监测点层级进行统计数据 + for (String lineId : lineIds) { + List list = appStatisticsService.list(new LambdaQueryWrapper() + .eq(AppStatistics::getLineIndex, lineId) + ); + List eventIndexS = new ArrayList<>(); + //2.查询数据库中是否有统计数据,没有则进行补录 + if (CollUtil.isNotEmpty(list)) { + eventIndexS.addAll(statisticsMethod(startTime, endTime, timeDay, lineId)); + } else { + List dates = getListDate(lineId); + for (String date : dates) { + LocalDateTime dateDay = LocalDateTimeUtil.parse(date, DatePattern.NORM_DATE_PATTERN); + String startDate = DateUtil.beginOfDay(DateUtil.parse(date)).toString(); + String endDate = DateUtil.endOfDay(DateUtil.parse(date)).toString(); + eventIndexS.addAll(statisticsMethod(startDate, endDate, dateDay, lineId)); + } + } + saveEventInfo(eventIndexS); + } + } + } + } + + /** + * 获取暂态时间和谐波时间 + * + * @param lineId + * @return + */ + private List getListDate(String lineId) { + EventCountParam param; + StatSubstationBizBaseParam baseParam; + List dates = new ArrayList<>(); + baseParam = new StatSubstationBizBaseParam(); + baseParam.setIds(Collections.singletonList(lineId)); + //获取谐波数据 + List limitRates = harmDataFeignClient.getLinesRate(baseParam).getData(); + if (CollUtil.isNotEmpty(limitRates)) { + dates.addAll(limitRates.stream().map(x -> x.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN))) + .distinct().collect(Collectors.toList())); + } + param = new EventCountParam(); + param.setIds(Collections.singletonList(lineId)); + List detailPOList = eventDetailFeignClient.getAppEventDetailLtAmplitude(param).getData(); + if (CollUtil.isNotEmpty(limitRates)) { + dates.addAll(detailPOList.stream().map(x -> x.getStartTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN))) + .distinct().collect(Collectors.toList())); + } + return dates; + } + + /** + * 查询方法信息 + * + * @param startTime + * @param endTime + * @param timeDay + * @param lineId + */ + private List statisticsMethod(String startTime, String endTime, LocalDateTime timeDay, String lineId) { + EventCountParam param; + StatSubstationBizBaseParam baseParam; + //获取谐波数据 + baseParam = new StatSubstationBizBaseParam(); + baseParam.setIds(Collections.singletonList(lineId)); + baseParam.setStartTime(startTime); + baseParam.setEndTime(endTime); + List limitRates = harmDataFeignClient.getLinesRate(baseParam).getData(); + //获取暂态数据 + param = new EventCountParam(); + param.setIds(Collections.singletonList(lineId)); + param.setStartTime(startTime); + param.setEndTime(endTime); + //获取特征增幅小于0.9的暂态信息 + List detailPOList = eventDetailFeignClient.getAppEventDetailLtAmplitude(param).getData(); + saveStatistics(lineId, timeDay, detailPOList.size(), limitRates.get(0)); + return detailPOList.stream().map(RmpEventDetailPO::getEventId).distinct().collect(Collectors.toList()); + } public void saveSteadyUrl(RStatLimitRateDPO limit, LocalDateTime timeId) { - String lineIndex=limit.getLineId(); + String lineIndex = limit.getLineId(); if (limit.getFreqDevOvertime() > 0) { insertUrlDate(lineIndex, timeId, 2, limit.getFreqDevOvertime()); } @@ -294,6 +396,7 @@ public class SteadyMsgTask { insertUrlDate(lineIndex, timeId, 54, limit.getIharm25Overtime()); } } + public void insertUrlDate(String lineIndex, LocalDateTime timeId, Integer typeCode, Integer limitNum) { AppSteadyUrl url = new AppSteadyUrl(); url.setLineIndex(lineIndex); @@ -310,4 +413,92 @@ public class SteadyMsgTask { appSteadyUrlService.save(url); } } + + public void saveStatistics(String lineIndex, LocalDateTime time, Integer count, RStatLimitRateDPO limit) { + List list = appStatisticsService.list(new LambdaQueryWrapper() + .eq(AppStatistics::getLineIndex, lineIndex) + .eq(AppStatistics::getTimeId, time) + ); + if (CollUtil.isEmpty(list)) { + AppStatistics statistics = new AppStatistics(); + statistics.setLineIndex(lineIndex); + statistics.setTimeId(time); + statistics.setEventCount(count); + if (ObjectUtil.isNotNull(limit)) { + if (limit.getAllTime() > 0) { + Integer times = limit.getAllTime(); + statistics.setFreqDevRate((float) Math.round((times - limit.getFreqDevOvertime()) * 10000 / times) / 100); + statistics.setVoltageDevRate((float) Math.round((times - limit.getVoltageDevOvertime()) * 10000 / times) / 100); + statistics.setUbalanceRate((float) Math.round((times - limit.getUbalanceOvertime()) * 10000 / times) / 100); + statistics.setFlickerRate((float) Math.round((times - limit.getFlickerOvertime()) * 10000 / times) / 100); + statistics.setUaberranceRate((float) Math.round((times - limit.getUaberranceOvertime()) * 10000 / times) / 100); + statistics.setUharm2Rate((float) Math.round((times - limit.getUharm2Overtime()) * 10000 / times) / 100); + statistics.setUharm3Rate((float) Math.round((times - limit.getUharm3Overtime()) * 10000 / times) / 100); + statistics.setUharm4Rate((float) Math.round((times - limit.getUharm4Overtime()) * 10000 / times) / 100); + statistics.setUharm5Rate((float) Math.round((times - limit.getUharm5Overtime()) * 10000 / times) / 100); + statistics.setUharm6Rate((float) Math.round((times - limit.getUharm6Overtime()) * 10000 / times) / 100); + statistics.setUharm7Rate((float) Math.round((times - limit.getUharm7Overtime()) * 10000 / times) / 100); + statistics.setUharm8Rate((float) Math.round((times - limit.getUharm8Overtime()) * 10000 / times) / 100); + statistics.setUharm9Rate((float) Math.round((times - limit.getUharm9Overtime()) * 10000 / times) / 100); + statistics.setUharm10Rate((float) Math.round((times - limit.getUharm10Overtime()) * 10000 / times) / 100); + statistics.setUharm11Rate((float) Math.round((times - limit.getUharm11Overtime()) * 10000 / times) / 100); + statistics.setUharm12Rate((float) Math.round((times - limit.getUharm12Overtime()) * 10000 / times) / 100); + statistics.setUharm13Rate((float) Math.round((times - limit.getUharm13Overtime()) * 10000 / times) / 100); + statistics.setUharm14Rate((float) Math.round((times - limit.getUharm14Overtime()) * 10000 / times) / 100); + statistics.setUharm15Rate((float) Math.round((times - limit.getUharm15Overtime()) * 10000 / times) / 100); + statistics.setUharm16Rate((float) Math.round((times - limit.getUharm16Overtime()) * 10000 / times) / 100); + statistics.setUharm17Rate((float) Math.round((times - limit.getUharm17Overtime()) * 10000 / times) / 100); + statistics.setUharm18Rate((float) Math.round((times - limit.getUharm18Overtime()) * 10000 / times) / 100); + statistics.setUharm19Rate((float) Math.round((times - limit.getUharm19Overtime()) * 10000 / times) / 100); + statistics.setUharm20Rate((float) Math.round((times - limit.getUharm20Overtime()) * 10000 / times) / 100); + statistics.setUharm21Rate((float) Math.round((times - limit.getUharm21Overtime()) * 10000 / times) / 100); + statistics.setUharm22Rate((float) Math.round((times - limit.getUharm22Overtime()) * 10000 / times) / 100); + statistics.setUharm23Rate((float) Math.round((times - limit.getUharm23Overtime()) * 10000 / times) / 100); + statistics.setUharm24Rate((float) Math.round((times - limit.getUharm24Overtime()) * 10000 / times) / 100); + statistics.setUharm25Rate((float) Math.round((times - limit.getUharm25Overtime()) * 10000 / times) / 100); + statistics.setIharm2Rate((float) Math.round((times - limit.getIharm2Overtime()) * 10000 / times) / 100); + statistics.setIharm3Rate((float) Math.round((times - limit.getIharm3Overtime()) * 10000 / times) / 100); + statistics.setIharm4Rate((float) Math.round((times - limit.getIharm4Overtime()) * 10000 / times) / 100); + statistics.setIharm5Rate((float) Math.round((times - limit.getIharm5Overtime()) * 10000 / times) / 100); + statistics.setIharm6Rate((float) Math.round((times - limit.getIharm6Overtime()) * 10000 / times) / 100); + statistics.setIharm7Rate((float) Math.round((times - limit.getIharm7Overtime()) * 10000 / times) / 100); + statistics.setIharm8Rate((float) Math.round((times - limit.getIharm8Overtime()) * 10000 / times) / 100); + statistics.setIharm9Rate((float) Math.round((times - limit.getIharm9Overtime()) * 10000 / times) / 100); + statistics.setIharm10Rate((float) Math.round((times - limit.getIharm10Overtime()) * 10000 / times) / 100); + statistics.setIharm11Rate((float) Math.round((times - limit.getIharm11Overtime()) * 10000 / times) / 100); + statistics.setIharm12Rate((float) Math.round((times - limit.getIharm12Overtime()) * 10000 / times) / 100); + statistics.setIharm13Rate((float) Math.round((times - limit.getIharm13Overtime()) * 10000 / times) / 100); + statistics.setIharm14Rate((float) Math.round((times - limit.getIharm14Overtime()) * 10000 / times) / 100); + statistics.setIharm15Rate((float) Math.round((times - limit.getIharm15Overtime()) * 10000 / times) / 100); + statistics.setIharm16Rate((float) Math.round((times - limit.getIharm16Overtime()) * 10000 / times) / 100); + statistics.setIharm17Rate((float) Math.round((times - limit.getIharm17Overtime()) * 10000 / times) / 100); + statistics.setIharm18Rate((float) Math.round((times - limit.getIharm18Overtime()) * 10000 / times) / 100); + statistics.setIharm19Rate((float) Math.round((times - limit.getIharm19Overtime()) * 10000 / times) / 100); + statistics.setIharm20Rate((float) Math.round((times - limit.getIharm20Overtime()) * 10000 / times) / 100); + statistics.setIharm21Rate((float) Math.round((times - limit.getIharm21Overtime()) * 10000 / times) / 100); + statistics.setIharm22Rate((float) Math.round((times - limit.getIharm22Overtime()) * 10000 / times) / 100); + statistics.setIharm23Rate((float) Math.round((times - limit.getIharm23Overtime()) * 10000 / times) / 100); + statistics.setIharm24Rate((float) Math.round((times - limit.getIharm24Overtime()) * 10000 / times) / 100); + statistics.setIharm25Rate((float) Math.round((times - limit.getIharm25Overtime()) * 10000 / times) / 100); + saveSteadyUrl(limit, time); + } + } + appStatisticsService.save(statistics); + } + } + public void saveEventInfo(List indexList) { + if (indexList != null && indexList.size() > 0) { + for (String eventDetail_index : indexList) { + AppEventInfo byId = appEventInfoService.getById(eventDetail_index); + if (ObjectUtil.isNull(byId)) { + AppEventInfo info=new AppEventInfo(); + info.setEventdetailIndex(eventDetail_index); + info.setEvaluate(0); + info.setUpdateTime(LocalDateTime.now()); + info.setReportState(0); + appEventInfoService.save(info); + } + } + } + } } diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppEventMsgService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppEventMsgService.java index 4dd14e1..5a4d4fa 100644 --- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppEventMsgService.java +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppEventMsgService.java @@ -1,6 +1,5 @@ package com.njcn.cloud.service; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.cloud.pojo.dto.AppEventMsg; import com.njcn.cloud.pojo.vo.EventInfoDetailVO; diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppStatisticsService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppStatisticsService.java index 76e971a..e1f0767 100644 --- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppStatisticsService.java +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppStatisticsService.java @@ -17,7 +17,26 @@ import java.util.List; */ public interface IAppStatisticsService extends IService { + /** + * @Description: 统计数据 + * @param lineIndex + * @param startTime + * @param endTime + * @param page + * @param num + * @return: java.util.List + * @Author: wr + * @Date: 2024/1/4 9:23 + */ List queryData(String lineIndex, String startTime, String endTime, int page, int num); + /** + * @Description: 统计数据详情 + * @param lineIndex + * @param timeID + * @return: com.njcn.cloud.pojo.vo.StatisticsDetail + * @Author: wr + * @Date: 2024/1/4 10:48 + */ StatisticsDetail queryDetail(String lineIndex, String timeID); } diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppStatisticsServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppStatisticsServiceImpl.java index a136cf6..08081bc 100644 --- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppStatisticsServiceImpl.java +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppStatisticsServiceImpl.java @@ -1,13 +1,33 @@ package com.njcn.cloud.service.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.njcn.cloud.enums.app.TypeCodeEnum; import com.njcn.cloud.mapper.AppStatisticsMapper; import com.njcn.cloud.pojo.dto.AppStatistics; +import com.njcn.cloud.pojo.dto.AppSteadyUrl; import com.njcn.cloud.pojo.vo.StatisticsData; import com.njcn.cloud.pojo.vo.StatisticsDetail; +import com.njcn.cloud.pojo.vo.StatisticsEvent; import com.njcn.cloud.service.IAppStatisticsService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.cloud.service.IAppSteadyUrlService; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.device.pq.api.LineFeignClient; +import com.njcn.device.pq.pojo.vo.LineDetailVO; +import com.njcn.event.api.EventDetailFeignClient; +import com.njcn.event.pojo.param.EventCountParam; +import com.njcn.event.pojo.po.RmpEventDetailPO; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -19,15 +39,276 @@ import java.util.List; * @since 2024-01-03 */ @Service +@RequiredArgsConstructor public class AppStatisticsServiceImpl extends ServiceImpl implements IAppStatisticsService { + private final LineFeignClient lineFeignClient; + private final IAppSteadyUrlService appSteadyUrlService; + private final EventDetailFeignClient eventDetailFeignClient; + @Override public List queryData(String lineIndex, String startTime, String endTime, int page, int num) { - return null; + List lineDetail = lineFeignClient.getLineDetailByIds(Collections.singletonList(lineIndex)).getData(); + if (CollUtil.isEmpty(lineDetail)) { + throw new BusinessException("监测点信息不存在,监测点编号有误!"); + } + List info = new ArrayList<>(); + Page statisticsPage = this.page(new Page<>(page, num), new LambdaQueryWrapper() + .eq(AppStatistics::getLineIndex, lineIndex) + .ge(StrUtil.isNotBlank(startTime), AppStatistics::getTimeId, DateUtil.beginOfDay(DateUtil.parse(startTime))) + .le(StrUtil.isNotBlank(endTime), AppStatistics::getTimeId, DateUtil.endOfDay(DateUtil.parse(endTime))) + .orderByDesc(AppStatistics::getTimeId) + ); + //数据整理 + List records = statisticsPage.getRecords(); + if (CollUtil.isNotEmpty(records)) { + for (AppStatistics statistics : records) { + StatisticsData data = new StatisticsData(); + data.setLineName(lineDetail.get(0).getLineName()); + data.setTime(statistics.getTimeId()); + String describe = ""; + String describe1 = ""; + if (statistics.getEventCount() != null && statistics.getEventCount() > 0) { + describe = describe + "暂降次数:" + statistics.getEventCount().toString() + "次;"; + } + if (statistics.getFreqDevRate() != null && statistics.getFreqDevRate() > 0 && statistics.getFreqDevRate() < 100) { + describe1 = describe1 + "频率偏差合格率" + statistics.getFreqDevRate().toString() + "%;"; + } + if (statistics.getVoltageDevRate() != null && statistics.getVoltageDevRate() > 0 && statistics.getVoltageDevRate() < 100) { + describe1 = describe1 + "电压偏差合格率" + statistics.getVoltageDevRate().toString() + "%;"; + } + if (statistics.getUbalanceRate() != null && statistics.getUbalanceRate() > 0 && statistics.getUbalanceRate() < 100) { + describe1 = describe1 + "电压不平衡合格率" + statistics.getUbalanceRate().toString() + "%;"; + } + if (statistics.getFlickerRate() != null && statistics.getFlickerRate() > 0 && statistics.getFlickerRate() < 100) { + describe1 = describe1 + "闪变合格率" + statistics.getFlickerRate().toString() + "%;"; + } + if (statistics.getUaberranceRate() != null && statistics.getUaberranceRate() > 0 && statistics.getUaberranceRate() < 100) { + describe1 = describe1 + "电压谐波畸变率合格率" + statistics.getUaberranceRate().toString() + "%;"; + } + if (statistics.getUharm2Rate() != null && statistics.getUharm2Rate() > 0 && statistics.getUharm2Rate() < 100) { + describe1 = describe1 + "2次电压谐波含有率合格率" + statistics.getUharm2Rate().toString() + "%;"; + } + if (statistics.getUharm3Rate() != null && statistics.getUharm3Rate() > 0 && statistics.getUharm3Rate() < 100) { + describe1 = describe1 + "3次电压谐波含有率合格率" + statistics.getUharm3Rate().toString() + "%;"; + } + if (statistics.getUharm4Rate() != null && statistics.getUharm4Rate() > 0 && statistics.getUharm4Rate() < 100) { + describe1 = describe1 + "4次电压谐波含有率合格率" + statistics.getUharm4Rate().toString() + "%;"; + } + if (statistics.getUharm5Rate() != null && statistics.getUharm5Rate() > 0 && statistics.getUharm5Rate() < 100) { + describe1 = describe1 + "5次电压谐波含有率合格率" + statistics.getUharm5Rate().toString() + "%;"; + } + if (statistics.getUharm6Rate() != null && statistics.getUharm6Rate() > 0 && statistics.getUharm6Rate() < 100) { + describe1 = describe1 + "6次电压谐波含有率合格率" + statistics.getUharm6Rate().toString() + "%;"; + } + if (statistics.getUharm7Rate() != null && statistics.getUharm7Rate() > 0 && statistics.getUharm7Rate() < 100) { + describe1 = describe1 + "7次电压谐波含有率合格率" + statistics.getUharm7Rate().toString() + "%;"; + } + if (statistics.getUharm8Rate() != null && statistics.getUharm8Rate() > 0 && statistics.getUharm8Rate() < 100) { + describe1 = describe1 + "8次电压谐波含有率合格率" + statistics.getUharm8Rate().toString() + "%;"; + } + if (statistics.getUharm9Rate() != null && statistics.getUharm9Rate() > 0 && statistics.getUharm9Rate() < 100) { + describe1 = describe1 + "9次电压谐波含有率合格率" + statistics.getUharm9Rate().toString() + "%;"; + } + if (statistics.getUharm10Rate() != null && statistics.getUharm10Rate() > 0 && statistics.getUharm10Rate() < 100) { + describe1 = describe1 + "10次电压谐波含有率合格率" + statistics.getUharm10Rate().toString() + "%;"; + } + if (statistics.getUharm11Rate() != null && statistics.getUharm11Rate() > 0 && statistics.getUharm11Rate() < 100) { + describe1 = describe1 + "11次电压谐波含有率合格率" + statistics.getUharm11Rate().toString() + "%;"; + } + if (statistics.getUharm12Rate() != null && statistics.getUharm12Rate() > 0 && statistics.getUharm12Rate() < 100) { + describe1 = describe1 + "12次电压谐波含有率合格率" + statistics.getUharm12Rate().toString() + "%;"; + } + if (statistics.getUharm13Rate() != null && statistics.getUharm13Rate() > 0 && statistics.getUharm13Rate() < 100) { + describe1 = describe1 + "13次电压谐波含有率合格率" + statistics.getUharm13Rate().toString() + "%;"; + } + if (statistics.getUharm14Rate() != null && statistics.getUharm14Rate() > 0 && statistics.getUharm14Rate() < 100) { + describe1 = describe1 + "14次电压谐波含有率合格率" + statistics.getUharm14Rate().toString() + "%;"; + } + if (statistics.getUharm15Rate() != null && statistics.getUharm15Rate() > 0 && statistics.getUharm15Rate() < 100) { + describe1 = describe1 + "15次电压谐波含有率合格率" + statistics.getUharm15Rate().toString() + "%;"; + } + if (statistics.getUharm16Rate() != null && statistics.getUharm16Rate() > 0 && statistics.getUharm16Rate() < 100) { + describe1 = describe1 + "16次电压谐波含有率合格率" + statistics.getUharm16Rate().toString() + "%;"; + } + if (statistics.getUharm17Rate() != null && statistics.getUharm17Rate() > 0 && statistics.getUharm17Rate() < 100) { + describe1 = describe1 + "17次电压谐波含有率合格率" + statistics.getUharm17Rate().toString() + "%;"; + } + if (statistics.getUharm18Rate() != null && statistics.getUharm18Rate() > 0 && statistics.getUharm18Rate() < 100) { + describe1 = describe1 + "18次电压谐波含有率合格率" + statistics.getUharm18Rate().toString() + "%;"; + } + if (statistics.getUharm19Rate() != null && statistics.getUharm19Rate() > 0 && statistics.getUharm19Rate() < 100) { + describe1 = describe1 + "19次电压谐波含有率合格率" + statistics.getUharm19Rate().toString() + "%;"; + } + if (statistics.getUharm20Rate() != null && statistics.getUharm20Rate() > 0 && statistics.getUharm20Rate() < 100) { + describe1 = describe1 + "20次电压谐波含有率合格率" + statistics.getUharm20Rate().toString() + "%;"; + } + if (statistics.getUharm21Rate() != null && statistics.getUharm21Rate() > 0 && statistics.getUharm21Rate() < 100) { + describe1 = describe1 + "21次电压谐波含有率合格率" + statistics.getUharm21Rate().toString() + "%;"; + } + if (statistics.getUharm22Rate() != null && statistics.getUharm22Rate() > 0 && statistics.getUharm22Rate() < 100) { + describe1 = describe1 + "22次电压谐波含有率合格率" + statistics.getUharm22Rate().toString() + "%;"; + } + if (statistics.getUharm23Rate() != null && statistics.getUharm23Rate() > 0 && statistics.getUharm23Rate() < 100) { + describe1 = describe1 + "23次电压谐波含有率合格率" + statistics.getUharm23Rate().toString() + "%;"; + } + if (statistics.getUharm24Rate() != null && statistics.getUharm24Rate() > 0 && statistics.getUharm24Rate() < 100) { + describe1 = describe1 + "24次电压谐波含有率合格率" + statistics.getUharm24Rate().toString() + "%;"; + } + if (statistics.getUharm25Rate() != null && statistics.getUharm25Rate() > 0 && statistics.getUharm25Rate() < 100) { + describe1 = describe1 + "25次电压谐波含有率合格率" + statistics.getUharm25Rate().toString() + "%;"; + } + if (statistics.getIharm2Rate() != null && statistics.getIharm2Rate() > 0 && statistics.getIharm2Rate() < 100) { + describe1 = describe1 + "2次电流谐波幅值合格率" + statistics.getIharm2Rate().toString() + "%;"; + } + if (statistics.getIharm3Rate() != null && statistics.getIharm3Rate() > 0 && statistics.getIharm3Rate() < 100) { + describe1 = describe1 + "3次电流谐波幅值合格率" + statistics.getIharm3Rate().toString() + "%;"; + } + if (statistics.getIharm4Rate() != null && statistics.getIharm4Rate() > 0 && statistics.getIharm4Rate() < 100) { + describe1 = describe1 + "4次电流谐波幅值合格率" + statistics.getIharm4Rate().toString() + "%;"; + } + if (statistics.getIharm5Rate() != null && statistics.getIharm5Rate() > 0 && statistics.getIharm5Rate() < 100) { + describe1 = describe1 + "5次电流谐波幅值合格率" + statistics.getIharm5Rate().toString() + "%;"; + } + if (statistics.getIharm6Rate() != null && statistics.getIharm6Rate() > 0 && statistics.getIharm6Rate() < 100) { + describe1 = describe1 + "6次电流谐波幅值合格率" + statistics.getIharm6Rate().toString() + "%;"; + } + if (statistics.getIharm7Rate() != null && statistics.getIharm7Rate() > 0 && statistics.getIharm7Rate() < 100) { + describe1 = describe1 + "7次电流谐波幅值合格率" + statistics.getIharm7Rate().toString() + "%;"; + } + if (statistics.getIharm8Rate() != null && statistics.getIharm8Rate() > 0 && statistics.getIharm8Rate() < 100) { + describe1 = describe1 + "8次电流谐波幅值合格率" + statistics.getIharm8Rate().toString() + "%;"; + } + if (statistics.getIharm9Rate() != null && statistics.getIharm9Rate() > 0 && statistics.getIharm9Rate() < 100) { + describe1 = describe1 + "9次电流谐波幅值合格率" + statistics.getIharm9Rate().toString() + "%;"; + } + if (statistics.getIharm10Rate() != null && statistics.getIharm10Rate() > 0 && statistics.getIharm10Rate() < 100) { + describe1 = describe1 + "10次电流谐波幅值合格率" + statistics.getIharm10Rate().toString() + "%;"; + } + if (statistics.getIharm11Rate() != null && statistics.getIharm11Rate() > 0 && statistics.getIharm11Rate() < 100) { + describe1 = describe1 + "11次电流谐波幅值合格率" + statistics.getIharm11Rate().toString() + "%;"; + } + if (statistics.getIharm12Rate() != null && statistics.getIharm12Rate() > 0 && statistics.getIharm12Rate() < 100) { + describe1 = describe1 + "12次电流谐波幅值合格率" + statistics.getIharm12Rate().toString() + "%;"; + } + if (statistics.getIharm13Rate() != null && statistics.getIharm13Rate() > 0 && statistics.getIharm13Rate() < 100) { + describe1 = describe1 + "13次电流谐波幅值合格率" + statistics.getIharm13Rate().toString() + "%;"; + } + if (statistics.getIharm14Rate() != null && statistics.getIharm14Rate() > 0 && statistics.getIharm14Rate() < 100) { + describe1 = describe1 + "14次电流谐波幅值合格率" + statistics.getIharm14Rate().toString() + "%;"; + } + if (statistics.getIharm15Rate() != null && statistics.getIharm15Rate() > 0 && statistics.getIharm15Rate() < 100) { + describe1 = describe1 + "15次电流谐波幅值合格率" + statistics.getIharm15Rate().toString() + "%;"; + } + if (statistics.getIharm16Rate() != null && statistics.getIharm16Rate() > 0 && statistics.getIharm16Rate() < 100) { + describe1 = describe1 + "16次电流谐波幅值合格率" + statistics.getIharm16Rate().toString() + "%;"; + } + if (statistics.getIharm17Rate() != null && statistics.getIharm17Rate() > 0 && statistics.getIharm17Rate() < 100) { + describe1 = describe1 + "17次电流谐波幅值合格率" + statistics.getIharm17Rate().toString() + "%;"; + } + if (statistics.getIharm18Rate() != null && statistics.getIharm18Rate() > 0 && statistics.getIharm18Rate() < 100) { + describe1 = describe1 + "18次电流谐波幅值合格率" + statistics.getIharm18Rate().toString() + "%;"; + } + if (statistics.getIharm19Rate() != null && statistics.getIharm19Rate() > 0 && statistics.getIharm19Rate() < 100) { + describe1 = describe1 + "19次电流谐波幅值合格率" + statistics.getIharm19Rate().toString() + "%;"; + } + if (statistics.getIharm20Rate() != null && statistics.getIharm20Rate() > 0 && statistics.getIharm20Rate() < 100) { + describe1 = describe1 + "20次电流谐波幅值合格率" + statistics.getIharm20Rate().toString() + "%;"; + } + if (statistics.getIharm21Rate() != null && statistics.getIharm21Rate() > 0 && statistics.getIharm21Rate() < 100) { + describe1 = describe1 + "21次电流谐波幅值合格率" + statistics.getIharm21Rate().toString() + "%;"; + } + if (statistics.getIharm22Rate() != null && statistics.getIharm22Rate() > 0 && statistics.getIharm22Rate() < 100) { + describe1 = describe1 + "22次电流谐波幅值合格率" + statistics.getIharm22Rate().toString() + "%;"; + } + if (statistics.getIharm23Rate() != null && statistics.getIharm23Rate() > 0 && statistics.getIharm23Rate() < 100) { + describe1 = describe1 + "23次电流谐波幅值合格率" + statistics.getIharm23Rate().toString() + "%;"; + } + if (statistics.getIharm24Rate() != null && statistics.getIharm24Rate() > 0 && statistics.getIharm24Rate() < 100) { + describe1 = describe1 + "24次电流谐波幅值合格率" + statistics.getIharm24Rate().toString() + "%;"; + } + if (statistics.getIharm25Rate() != null && statistics.getIharm25Rate() > 0 && statistics.getIharm25Rate() < 100) { + describe1 = describe1 + "25次电流谐波幅值合格率" + statistics.getIharm25Rate().toString() + "%;"; + } + boolean flag = false; + if (describe.length() > 0) { + describe = describe.substring(0, describe.length() - 1); + data.setEventDescribe(describe); + flag = true; + } + if (describe1.length() > 0) { + describe1 = "越限详情:" + describe1; + describe1 = describe1.substring(0, describe1.length() - 1); + data.setSteadyDescribe(describe1); + flag = true; + } + if (flag) { + info.add(data); + } + } + } + return info; } @Override public StatisticsDetail queryDetail(String lineIndex, String timeID) { - return null; + List lineDetail = lineFeignClient.getLineDetailByIds(Collections.singletonList(lineIndex)).getData(); + if (CollUtil.isEmpty(lineDetail)) { + throw new BusinessException("监测点信息不存在,监测点编号有误!"); + } + StatisticsDetail result = new StatisticsDetail(); + //获取监测点完整名称 + result.setName(lineDetail.get(0).getGdName() + "->" + + lineDetail.get(0).getSubName() + "->" + + lineDetail.get(0).getDevName() + "->" + + lineDetail.get(0).getLineName()); + //获取稳态消息详情 + String steadyDescribe = ""; + List steadyUrlList = appSteadyUrlService.list(new LambdaQueryWrapper() + .eq(AppSteadyUrl::getLineIndex, lineIndex) + .eq(AppSteadyUrl::getTimeId, timeID) + .orderByAsc(AppSteadyUrl::getTypeCode) + + ); + if (CollUtil.isNotEmpty(steadyUrlList)) { + for (int n = 0; n < steadyUrlList.size(); n++) { + String typename = TypeCodeEnum.getMsgByCode(steadyUrlList.get(n).getTypeCode()); + if (n == steadyUrlList.size() - 1) { + steadyDescribe = steadyDescribe + typename + steadyUrlList.get(n).getLimitNum() + "次"; + } else { + steadyDescribe = steadyDescribe + typename + steadyUrlList.get(n).getLimitNum() + "次,"; + } + + } + result.setSteadyInfo(steadyDescribe); + } + //获取暂态消息详情 + List eventInfo = new ArrayList<>(); + //获取监测点暂态消息信息 + String startTime = DateUtil.beginOfDay(DateUtil.parse(timeID)).toString(); + String endTime = DateUtil.endOfDay(DateUtil.parse(timeID)).toString(); + EventCountParam param=new EventCountParam(); + param.setIds(Collections.singletonList(lineIndex)); + param.setStartTime(startTime); + param.setEndTime(endTime); + + List eventDetailList = eventDetailFeignClient.getAppEventDetailLtAmplitude(param).getData(); + if (CollUtil.isNotEmpty(eventDetailList)) { + for (RmpEventDetailPO event : eventDetailList) { + StatisticsEvent eventData = new StatisticsEvent(); + String describe = ""; + describe = describe + lineDetail.get(0).getLineName() + "于" + + LocalDateTimeUtil.format(event.getStartTime(), DatePattern.NORM_DATETIME_MS_PATTERN) + + "发生暂降事件,特征幅值:" + event.getFeatureAmplitude() + + "%,持续时间:" + event.getDuration() + "s"; + eventData.setDescribe(describe); + eventData.setEventDetail_index(event.getEventId()); + eventInfo.add(eventData); + } + result.setEventInfo(eventInfo); + + } + + return result; } }