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")
private String endTime;
private Integer process;
private List<String> idList;
}

View File

@@ -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);

View File

@@ -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<CsEquipmentDeliveryPO> equipmentDeliveryList = equipmentFeignClient.getAll().getData();
if (CollectionUtil.isNotEmpty(equipmentDeliveryList)) {
//获取监测点集合
List<String> devList = equipmentDeliveryList.stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList());
List<CsLinePO> csLineList = csLineFeignClient.getLinesByDevList(devList).getData();
if (CollectionUtil.isNotEmpty(csLineList)) {
Map<String,List<CsLinePO>> devMap = csLineList.stream().collect(Collectors.groupingBy(CsLinePO::getDeviceId));
List<String> lineList = csLineList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
List<String> deviceList = csLineList.stream().map(CsLinePO::getDeviceId).collect(Collectors.toList());
//获取监测点数据完整性
List<RStatIntegrityD> list1 = integrityFeignClient.list(lineList,param.getStartTime(),param.getEndTime()).getData();
//获取终端在线率
List<RStatOnlineRateD> list2 = onlineRateFeignClient.list(deviceList,param.getStartTime(),param.getEndTime()).getData();
//获取监测点最新数据时间
List<CsLineLatestData> list3 = csLineLatestDataFeignClient.listData().getData();
equipmentDeliveryList.forEach(dev->{
List<CsLinePO> list = devMap.get(dev.getId());
List<CsEquipmentDeliveryPO> processList = equipmentDeliveryList.stream().filter(item-> Objects.equals(item.getProcess(),param.getProcess())).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(processList)) {
//获取监测点集合
List<String> devList = processList.stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList());
List<CsLinePO> csLineList = csLineFeignClient.getLinesByDevList(devList).getData();
if (CollectionUtil.isNotEmpty(csLineList)) {
Map<String,List<CsLinePO>> devMap = csLineList.stream().collect(Collectors.groupingBy(CsLinePO::getDeviceId));
List<String> lineList = csLineList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
List<String> deviceList = csLineList.stream().map(CsLinePO::getDeviceId).collect(Collectors.toList());
//获取监测点数据完整性
List<RStatIntegrityD> list1 = integrityFeignClient.list(lineList,param.getStartTime(),param.getEndTime()).getData();
//获取终端在线率
List<RStatOnlineRateD> list2 = onlineRateFeignClient.list(deviceList,param.getStartTime(),param.getEndTime()).getData();
//获取监测点最新数据时间
List<CsLineLatestData> list3 = csLineLatestDataFeignClient.listData().getData();
equipmentDeliveryList.forEach(dev->{
List<CsLinePO> 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<RStatIntegrityD> 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<RStatIntegrityD> 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<RStatOnlineRateD> 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<CsLineLatestData> 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<RStatOnlineRateD> 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<CsLineLatestData> 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;
}