From 49140e026bf52cdb8ee4ca5d4ba994a34e7b432e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=B6=85?= <973677575@qq.com> Date: Wed, 10 Aug 2022 20:09:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=BB=88=E7=AB=AF=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=B8=89=E4=B8=AA=E7=BB=9F=E8=AE=A1=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/vo/TerminalRunningStatisticsVO.java | 50 +++++++++++++------ .../service/Impl/AreaLineServiceImpl.java | 22 +++++++- 2 files changed, 54 insertions(+), 18 deletions(-) diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/TerminalRunningStatisticsVO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/TerminalRunningStatisticsVO.java index 3148a80d2..d3c7bbfd0 100644 --- a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/TerminalRunningStatisticsVO.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/TerminalRunningStatisticsVO.java @@ -42,18 +42,27 @@ public class TerminalRunningStatisticsVO implements Serializable { @ApiModelProperty("区域名称") private String areaName; - + @ApiModelProperty("终端个数") private Integer numberOfTerminals; - + @ApiModelProperty("投运") private Long normal; - + + @ApiModelProperty("投运率") + private Double normalRate; + @ApiModelProperty("热备用") private Long breaks; - + + @ApiModelProperty("热备用率") + private Double breaksRate; + @ApiModelProperty("停运") private Long shutdown; + + @ApiModelProperty("停运率") + private Double shutdownRate; @ApiModelProperty("在线率") private Double onlineRate; @@ -66,36 +75,45 @@ public class TerminalRunningStatisticsVO implements Serializable { }; } } - + @Data @Builder public static class TerminalRunningVO implements Serializable { private static final long serialVersionUID = 8990224131248734699L; - + @ApiModelProperty("总计-终端个数") private Integer numberOfTerminals; - + @ApiModelProperty("总计-投运") private Long normal; - + + @ApiModelProperty("总计-投运率") + private Double normalRate; + @ApiModelProperty("总计-热备用") private Long breaks; - + + @ApiModelProperty("总计-热备用率") + private Double breaksRate; + @ApiModelProperty("总计-停运") private Long shutdown; - + + @ApiModelProperty("总计-停运率") + private Double shutdownRate; + @ApiModelProperty("总计-在线率") private Double onlineRate; - + @ApiModelProperty("列表数据") private List areaInfo; - + public static TerminalRunningVO empty() { - return TerminalRunningVO.buildVO(0, 0L, 0L, 0L, 0.00D, Collections.emptyList()); + return TerminalRunningVO.buildVO(0, 0L, 0.00D, 0L, 0.00D, 0L, 0.00D, 0.00D, Collections.emptyList()); } - - public static TerminalRunningVO buildVO(Integer numberOfTerminals, Long normal, Long breaks, Long shutdown, Double onlineRate, List areaInfo) { - return TerminalRunningVO.builder().numberOfTerminals(numberOfTerminals).normal(normal).breaks(breaks).shutdown(shutdown).onlineRate(onlineRate).areaInfo(areaInfo).build(); + + public static TerminalRunningVO buildVO(Integer numberOfTerminals, Long normal, Double normalRate, Long breaks, Double breaksRate, Long shutdown, Double shutdownRate, Double onlineRate, List areaInfo) { + return TerminalRunningVO.builder().numberOfTerminals(numberOfTerminals).normal(normal).normalRate(normalRate).breaks(breaks).breaksRate(breaksRate).shutdown(shutdown).shutdownRate(shutdownRate).onlineRate(onlineRate).areaInfo(areaInfo).build(); } } } diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/AreaLineServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/AreaLineServiceImpl.java index c586ebd05..dac59ead6 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/AreaLineServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/AreaLineServiceImpl.java @@ -270,6 +270,18 @@ public class AreaLineServiceImpl implements AreaLineService { terminalRunningInfoVO.setNormal(countDeviceRunStatus(pqDeviceList).apply(0, deviceIndexes)); terminalRunningInfoVO.setBreaks(countDeviceRunStatus(pqDeviceList).apply(1, deviceIndexes)); terminalRunningInfoVO.setShutdown(countDeviceRunStatus(pqDeviceList).apply(2, deviceIndexes)); + if (deviceIndexes.size()==0) { + terminalRunningInfoVO.setNormalRate(0.0); + terminalRunningInfoVO.setBreaksRate(0.0); + terminalRunningInfoVO.setShutdownRate(0.0); + } else { + double normalRate = terminalRunningInfoVO.getNormal().doubleValue() / terminalRunningInfoVO.getNumberOfTerminals() * 100; + terminalRunningInfoVO.setNormalRate(new BigDecimal(normalRate).setScale(2, RoundingMode.HALF_UP).doubleValue()); + double breaksRate = terminalRunningInfoVO.getBreaks().doubleValue() / terminalRunningInfoVO.getNumberOfTerminals() * 100; + terminalRunningInfoVO.setBreaksRate(new BigDecimal(breaksRate).setScale(2, RoundingMode.HALF_UP).doubleValue()); + double shutdownRate = terminalRunningInfoVO.getShutdown().doubleValue() / terminalRunningInfoVO.getNumberOfTerminals() * 100; + terminalRunningInfoVO.setShutdownRate(new BigDecimal(shutdownRate).setScale(2, RoundingMode.HALF_UP).doubleValue()); + } terminalRunningInfoVO.setOnlineRate(computingDeviceOnlineRate(pqsOnlinerateList).apply(deviceIndexes)); return terminalRunningInfoVO; }).sorted(TerminalRunningInfoVO.sortAscAreaName()) @@ -283,9 +295,15 @@ public class AreaLineServiceImpl implements AreaLineService { .sum(); Long shutdownSum = terminalRun.stream().mapToLong(TerminalRunningInfoVO::getShutdown) .sum(); + Double normalRateSum = 0.0,breaksRateSum = 0.0,shutdownRateSum = 0.0; + if (terminalSum!=0) { + normalRateSum = new BigDecimal(normalSum.doubleValue() / terminalSum *100).setScale(2, RoundingMode.HALF_UP).doubleValue(); + breaksRateSum = new BigDecimal(breaksSum.doubleValue() / terminalSum *100).setScale(2, RoundingMode.HALF_UP).doubleValue(); + shutdownRateSum = new BigDecimal(shutdownSum.doubleValue() / terminalSum *100).setScale(2, RoundingMode.HALF_UP).doubleValue(); + } Double onlineRateAvg = computingDeviceOnlineRate(pqsOnlinerateList).apply(deviceIndexList); - return TerminalRunningVO.buildVO(terminalSum, normalSum, breaksSum, shutdownSum, - onlineRateAvg, terminalRun); + return TerminalRunningVO.buildVO(terminalSum, normalSum, normalRateSum, breaksSum, breaksRateSum, shutdownSum, + shutdownRateSum, onlineRateAvg, terminalRun); } /**