微调
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user