From 0fe80e12b5c3381cc51e3991b55fed48eec52420 Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Tue, 15 Jul 2025 18:45:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/param/StatisticsDataParam.java | 2 + .../service/impl/DataServiceImpl.java | 2 +- .../impl/StatisticsDataDataServiceImpl.java | 123 +++++++++--------- 3 files changed, 65 insertions(+), 62 deletions(-) diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/StatisticsDataParam.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/StatisticsDataParam.java index f55ec8d..b4dafa6 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/StatisticsDataParam.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/StatisticsDataParam.java @@ -23,6 +23,8 @@ public class StatisticsDataParam implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd") private String endTime; + private Integer process; + private List idList; } diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/DataServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/DataServiceImpl.java index dfa7714..bea3828 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/DataServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/DataServiceImpl.java @@ -316,7 +316,7 @@ public class DataServiceImpl implements IDataService { if (Objects.equals(last.getDataType(),0)) { moduleVO.setModuleState(last.getStateDesc()); } else if (Objects.equals(last.getDataType(),1)) { - moduleVO.setModuleState(Objects.equals(last.getStateDesc(),"Alm_Apf_ModDisConnect") ? "离线" : "运行"); + moduleVO.setModuleState(Objects.equals(last.getEventCode(),"Alm_Apf_ModDisConnect") ? "离线" : "运行"); } } moduleVO.setModOutList(list2); diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/StatisticsDataDataServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/StatisticsDataDataServiceImpl.java index 4be5cca..915f6a8 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/StatisticsDataDataServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/StatisticsDataDataServiceImpl.java @@ -21,10 +21,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -94,68 +91,72 @@ public class StatisticsDataDataServiceImpl implements IStatisticsDataDataService //获取装置 List equipmentDeliveryList = equipmentFeignClient.getAll().getData(); if (CollectionUtil.isNotEmpty(equipmentDeliveryList)) { - //获取监测点集合 - List devList = equipmentDeliveryList.stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList()); - List csLineList = csLineFeignClient.getLinesByDevList(devList).getData(); - if (CollectionUtil.isNotEmpty(csLineList)) { - Map> devMap = csLineList.stream().collect(Collectors.groupingBy(CsLinePO::getDeviceId)); - List lineList = csLineList.stream().map(CsLinePO::getLineId).collect(Collectors.toList()); - List deviceList = csLineList.stream().map(CsLinePO::getDeviceId).collect(Collectors.toList()); - //获取监测点数据完整性 - List list1 = integrityFeignClient.list(lineList,param.getStartTime(),param.getEndTime()).getData(); - //获取终端在线率 - List list2 = onlineRateFeignClient.list(deviceList,param.getStartTime(),param.getEndTime()).getData(); - //获取监测点最新数据时间 - List list3 = csLineLatestDataFeignClient.listData().getData(); - equipmentDeliveryList.forEach(dev->{ - List list = devMap.get(dev.getId()); + List processList = equipmentDeliveryList.stream().filter(item-> Objects.equals(item.getProcess(),param.getProcess())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(processList)) { + //获取监测点集合 + List devList = processList.stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList()); + List csLineList = csLineFeignClient.getLinesByDevList(devList).getData(); + if (CollectionUtil.isNotEmpty(csLineList)) { + Map> devMap = csLineList.stream().collect(Collectors.groupingBy(CsLinePO::getDeviceId)); + List lineList = csLineList.stream().map(CsLinePO::getLineId).collect(Collectors.toList()); + List deviceList = csLineList.stream().map(CsLinePO::getDeviceId).collect(Collectors.toList()); + //获取监测点数据完整性 + List list1 = integrityFeignClient.list(lineList,param.getStartTime(),param.getEndTime()).getData(); + //获取终端在线率 + List list2 = onlineRateFeignClient.list(deviceList,param.getStartTime(),param.getEndTime()).getData(); + //获取监测点最新数据时间 + List list3 = csLineLatestDataFeignClient.listData().getData(); + equipmentDeliveryList.forEach(dev->{ + List list = devMap.get(dev.getId()); - if (CollectionUtil.isNotEmpty(list)) { - list.forEach(line->{ - DevDetailDTO dto = csLedgerFeignClient.queryDevDetail(dev.getId()).getData(); - HalfMonthReportVO vo = new HalfMonthReportVO(); - vo.setEngineeringName(dto.getEngineeringName()); - vo.setProjectName(dto.getProjectName()); - vo.setDevName(dev.getName()); - vo.setDevType(dev.getDevModel()); - vo.setMac(dev.getMac()); - vo.setOperationalTime(dev.getCreateTime()); - vo.setOperationalStatus(dev.getUsageStatus() == 0 ? "停运" : "在运"); - vo.setLineName(line.getName()); - vo.setCommunicationStatus(dev.getRunStatus() == 1 ? "离线" : "在线"); - vo.setLatestTime(LocalDateTime.now()); - vo.setProcess(dev.getProcess()); + if (CollectionUtil.isNotEmpty(list)) { + list.forEach(line->{ + DevDetailDTO dto = csLedgerFeignClient.queryDevDetail(dev.getId()).getData(); + HalfMonthReportVO vo = new HalfMonthReportVO(); + vo.setEngineeringName(dto.getEngineeringName()); + vo.setProjectName(dto.getProjectName()); + vo.setDevName(dev.getName()); + vo.setDevType(dev.getDevModel()); + vo.setMac(dev.getMac()); + vo.setOperationalTime(dev.getCreateTime()); + vo.setOperationalStatus(dev.getUsageStatus() == 0 ? "停运" : "在运"); + vo.setLineName(line.getName()); + vo.setCommunicationStatus(dev.getRunStatus() == 1 ? "离线" : "在线"); + vo.setLatestTime(LocalDateTime.now()); + vo.setProcess(dev.getProcess()); - List l1 = list1.stream().filter(item -> item.getLineIndex().equals(line.getLineId())).collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(l1)) { - double ratio = BigDecimal.valueOf( - l1.stream().mapToDouble(RStatIntegrityD::getRealTime).sum() * 100.0 - ).divide( - BigDecimal.valueOf(l1.stream().mapToDouble(RStatIntegrityD::getDueTime).sum()), - 2, RoundingMode.HALF_UP - ).doubleValue(); - vo.setIntegrity(ratio); - } else { - vo.setIntegrity(0.0); - } + List l1 = list1.stream().filter(item -> item.getLineIndex().equals(line.getLineId())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(l1)) { + double ratio = BigDecimal.valueOf( + l1.stream().mapToDouble(RStatIntegrityD::getRealTime).sum() * 100.0 + ).divide( + BigDecimal.valueOf(l1.stream().mapToDouble(RStatIntegrityD::getDueTime).sum()), + 2, RoundingMode.HALF_UP + ).doubleValue(); + vo.setIntegrity(ratio); + } else { + vo.setIntegrity(0.0); + } - List l2 = list2.stream().filter(item -> item.getDevIndex().equals(dev.getId())).collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(l2)) { - int onlineMin = l2.stream().mapToInt(RStatOnlineRateD::getOnlineMin).sum(); - double ratio = new BigDecimal(onlineMin * 100.0 / (1440 * l2.size())).setScale(2,RoundingMode.HALF_UP).doubleValue(); - vo.setOnlineRate(ratio); - } else { - vo.setOnlineRate(0.0); - } - //获取最新数据时间 - List l3 = list3.stream().filter(item -> item.getLineId().equals(line.getLineId())).collect(Collectors.toList()); - vo.setLatestTime(CollectionUtil.isNotEmpty(l3) ? l3.get(0).getTimeId() : null); - result.add(vo); - }); - } - }); + List l2 = list2.stream().filter(item -> item.getDevIndex().equals(dev.getId())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(l2)) { + int onlineMin = l2.stream().mapToInt(RStatOnlineRateD::getOnlineMin).sum(); + double ratio = new BigDecimal(onlineMin * 100.0 / (1440 * l2.size())).setScale(2,RoundingMode.HALF_UP).doubleValue(); + vo.setOnlineRate(ratio); + } else { + vo.setOnlineRate(0.0); + } + //获取最新数据时间 + List l3 = list3.stream().filter(item -> item.getLineId().equals(line.getLineId())).collect(Collectors.toList()); + vo.setLatestTime(CollectionUtil.isNotEmpty(l3) ? l3.get(0).getTimeId() : null); + result.add(vo); + }); + } + }); + } } + } return result; }