This commit is contained in:
xy
2025-07-15 18:45:09 +08:00
parent ffb6ead753
commit 0fe80e12b5
3 changed files with 65 additions and 62 deletions

View File

@@ -23,6 +23,8 @@ public class StatisticsDataParam implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
private String endTime; private String endTime;
private Integer process;
private List<String> idList; private List<String> idList;
} }

View File

@@ -316,7 +316,7 @@ public class DataServiceImpl implements IDataService {
if (Objects.equals(last.getDataType(),0)) { if (Objects.equals(last.getDataType(),0)) {
moduleVO.setModuleState(last.getStateDesc()); moduleVO.setModuleState(last.getStateDesc());
} else if (Objects.equals(last.getDataType(),1)) { } 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); moduleVO.setModOutList(list2);

View File

@@ -21,10 +21,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -94,68 +91,72 @@ public class StatisticsDataDataServiceImpl implements IStatisticsDataDataService
//获取装置 //获取装置
List<CsEquipmentDeliveryPO> equipmentDeliveryList = equipmentFeignClient.getAll().getData(); List<CsEquipmentDeliveryPO> equipmentDeliveryList = equipmentFeignClient.getAll().getData();
if (CollectionUtil.isNotEmpty(equipmentDeliveryList)) { if (CollectionUtil.isNotEmpty(equipmentDeliveryList)) {
//获取监测点集合 List<CsEquipmentDeliveryPO> processList = equipmentDeliveryList.stream().filter(item-> Objects.equals(item.getProcess(),param.getProcess())).collect(Collectors.toList());
List<String> devList = equipmentDeliveryList.stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(processList)) {
List<CsLinePO> csLineList = csLineFeignClient.getLinesByDevList(devList).getData(); //获取监测点集合
if (CollectionUtil.isNotEmpty(csLineList)) { List<String> devList = processList.stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList());
Map<String,List<CsLinePO>> devMap = csLineList.stream().collect(Collectors.groupingBy(CsLinePO::getDeviceId)); List<CsLinePO> csLineList = csLineFeignClient.getLinesByDevList(devList).getData();
List<String> lineList = csLineList.stream().map(CsLinePO::getLineId).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(csLineList)) {
List<String> deviceList = csLineList.stream().map(CsLinePO::getDeviceId).collect(Collectors.toList()); Map<String,List<CsLinePO>> devMap = csLineList.stream().collect(Collectors.groupingBy(CsLinePO::getDeviceId));
//获取监测点数据完整性 List<String> lineList = csLineList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
List<RStatIntegrityD> list1 = integrityFeignClient.list(lineList,param.getStartTime(),param.getEndTime()).getData(); List<String> deviceList = csLineList.stream().map(CsLinePO::getDeviceId).collect(Collectors.toList());
//获取终端在线率 //获取监测点数据完整性
List<RStatOnlineRateD> list2 = onlineRateFeignClient.list(deviceList,param.getStartTime(),param.getEndTime()).getData(); List<RStatIntegrityD> list1 = integrityFeignClient.list(lineList,param.getStartTime(),param.getEndTime()).getData();
//获取监测点最新数据时间 //获取终端在线率
List<CsLineLatestData> list3 = csLineLatestDataFeignClient.listData().getData(); List<RStatOnlineRateD> list2 = onlineRateFeignClient.list(deviceList,param.getStartTime(),param.getEndTime()).getData();
equipmentDeliveryList.forEach(dev->{ //获取监测点最新数据时间
List<CsLinePO> list = devMap.get(dev.getId()); List<CsLineLatestData> list3 = csLineLatestDataFeignClient.listData().getData();
equipmentDeliveryList.forEach(dev->{
List<CsLinePO> list = devMap.get(dev.getId());
if (CollectionUtil.isNotEmpty(list)) { if (CollectionUtil.isNotEmpty(list)) {
list.forEach(line->{ list.forEach(line->{
DevDetailDTO dto = csLedgerFeignClient.queryDevDetail(dev.getId()).getData(); DevDetailDTO dto = csLedgerFeignClient.queryDevDetail(dev.getId()).getData();
HalfMonthReportVO vo = new HalfMonthReportVO(); HalfMonthReportVO vo = new HalfMonthReportVO();
vo.setEngineeringName(dto.getEngineeringName()); vo.setEngineeringName(dto.getEngineeringName());
vo.setProjectName(dto.getProjectName()); vo.setProjectName(dto.getProjectName());
vo.setDevName(dev.getName()); vo.setDevName(dev.getName());
vo.setDevType(dev.getDevModel()); vo.setDevType(dev.getDevModel());
vo.setMac(dev.getMac()); vo.setMac(dev.getMac());
vo.setOperationalTime(dev.getCreateTime()); vo.setOperationalTime(dev.getCreateTime());
vo.setOperationalStatus(dev.getUsageStatus() == 0 ? "停运" : "在运"); vo.setOperationalStatus(dev.getUsageStatus() == 0 ? "停运" : "在运");
vo.setLineName(line.getName()); vo.setLineName(line.getName());
vo.setCommunicationStatus(dev.getRunStatus() == 1 ? "离线" : "在线"); vo.setCommunicationStatus(dev.getRunStatus() == 1 ? "离线" : "在线");
vo.setLatestTime(LocalDateTime.now()); vo.setLatestTime(LocalDateTime.now());
vo.setProcess(dev.getProcess()); vo.setProcess(dev.getProcess());
List<RStatIntegrityD> l1 = list1.stream().filter(item -> item.getLineIndex().equals(line.getLineId())).collect(Collectors.toList()); List<RStatIntegrityD> l1 = list1.stream().filter(item -> item.getLineIndex().equals(line.getLineId())).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(l1)) { if (CollectionUtil.isNotEmpty(l1)) {
double ratio = BigDecimal.valueOf( double ratio = BigDecimal.valueOf(
l1.stream().mapToDouble(RStatIntegrityD::getRealTime).sum() * 100.0 l1.stream().mapToDouble(RStatIntegrityD::getRealTime).sum() * 100.0
).divide( ).divide(
BigDecimal.valueOf(l1.stream().mapToDouble(RStatIntegrityD::getDueTime).sum()), BigDecimal.valueOf(l1.stream().mapToDouble(RStatIntegrityD::getDueTime).sum()),
2, RoundingMode.HALF_UP 2, RoundingMode.HALF_UP
).doubleValue(); ).doubleValue();
vo.setIntegrity(ratio); vo.setIntegrity(ratio);
} else { } else {
vo.setIntegrity(0.0); vo.setIntegrity(0.0);
} }
List<RStatOnlineRateD> l2 = list2.stream().filter(item -> item.getDevIndex().equals(dev.getId())).collect(Collectors.toList()); List<RStatOnlineRateD> l2 = list2.stream().filter(item -> item.getDevIndex().equals(dev.getId())).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(l2)) { if (CollectionUtil.isNotEmpty(l2)) {
int onlineMin = l2.stream().mapToInt(RStatOnlineRateD::getOnlineMin).sum(); int onlineMin = l2.stream().mapToInt(RStatOnlineRateD::getOnlineMin).sum();
double ratio = new BigDecimal(onlineMin * 100.0 / (1440 * l2.size())).setScale(2,RoundingMode.HALF_UP).doubleValue(); double ratio = new BigDecimal(onlineMin * 100.0 / (1440 * l2.size())).setScale(2,RoundingMode.HALF_UP).doubleValue();
vo.setOnlineRate(ratio); vo.setOnlineRate(ratio);
} else { } else {
vo.setOnlineRate(0.0); vo.setOnlineRate(0.0);
} }
//获取最新数据时间 //获取最新数据时间
List<CsLineLatestData> l3 = list3.stream().filter(item -> item.getLineId().equals(line.getLineId())).collect(Collectors.toList()); List<CsLineLatestData> l3 = list3.stream().filter(item -> item.getLineId().equals(line.getLineId())).collect(Collectors.toList());
vo.setLatestTime(CollectionUtil.isNotEmpty(l3) ? l3.get(0).getTimeId() : null); vo.setLatestTime(CollectionUtil.isNotEmpty(l3) ? l3.get(0).getTimeId() : null);
result.add(vo); result.add(vo);
}); });
} }
}); });
}
} }
} }
return result; return result;
} }