谐波监测-详细分析:谐波统计,部门列表查询速度优化
This commit is contained in:
@@ -56,6 +56,7 @@ public class HarmonicServiceImpl implements IHarmonicService {
|
|||||||
private final LineFeignClient lineFeignClient;
|
private final LineFeignClient lineFeignClient;
|
||||||
|
|
||||||
private final RStatLimitTargetDMapper targetDMapper;
|
private final RStatLimitTargetDMapper targetDMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PollutionVO> getDeptSubstationRelations(HarmonicPublicParam harmonicPublicParam) {
|
public List<PollutionVO> getDeptSubstationRelations(HarmonicPublicParam harmonicPublicParam) {
|
||||||
harmonicPublicParam.setServerName(generalInfo.getMicroServiceName());
|
harmonicPublicParam.setServerName(generalInfo.getMicroServiceName());
|
||||||
@@ -105,7 +106,7 @@ public class HarmonicServiceImpl implements IHarmonicService {
|
|||||||
|
|
||||||
List<RStatLimitTargetDPO> sumList = finalAllData.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
|
List<RStatLimitTargetDPO> sumList = finalAllData.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
|
||||||
|
|
||||||
children.setData(handleDataNew(collect,sumList,harmonicPublicParam.getStatisticalType().getCode(),l1.stream().map(PollutionLineDTO::getId).collect(Collectors.toList()), harmonicPublicParam.getSearchBeginTime(),harmonicPublicParam.getSearchEndTime()).getRatio());
|
children.setData(handleDataNew(collect, sumList, harmonicPublicParam.getStatisticalType().getCode()).getRatio());
|
||||||
childrenList.add(children);
|
childrenList.add(children);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -129,12 +130,32 @@ public class HarmonicServiceImpl implements IHarmonicService {
|
|||||||
param.setServerName(generalInfo.getMicroServiceName());
|
param.setServerName(generalInfo.getMicroServiceName());
|
||||||
List<HarmonicDeptVO> list = new ArrayList<>();
|
List<HarmonicDeptVO> list = new ArrayList<>();
|
||||||
List<GeneralDeviceDTO> deptList = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData();
|
List<GeneralDeviceDTO> deptList = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData();
|
||||||
|
|
||||||
|
//获取所有监测点
|
||||||
|
List<String> lineIds = deptList.stream().flatMap(dto -> dto.getLineIndexes().stream()).collect(Collectors.toList());
|
||||||
|
//获取所有的数据信息
|
||||||
|
List<RStatLimitTargetDPO> limitTargetNew = getLimitTargetNew(lineIds, param.getSearchBeginTime(), param.getSearchEndTime());
|
||||||
|
//聚合查询
|
||||||
|
List<RStatLimitTargetDPO> allData = new ArrayList<>();
|
||||||
|
if (Objects.equals(param.getStatisticalType().getCode(), DicDataEnum.XBDY_ENUM.getCode())) {
|
||||||
|
allData = getAllDataV(lineIds, param.getSearchBeginTime(), param.getSearchEndTime());
|
||||||
|
} else if (Objects.equals(param.getStatisticalType().getCode(), DicDataEnum.XBDL_ENUM.getCode())) {
|
||||||
|
allData = getAllDataI(lineIds, param.getSearchBeginTime(), param.getSearchEndTime());
|
||||||
|
|
||||||
|
}
|
||||||
|
List<RStatLimitTargetDPO> finalAllData = allData;
|
||||||
deptList.forEach(item -> {
|
deptList.forEach(item -> {
|
||||||
List<String> lineList = item.getLineIndexes();
|
List<String> lineList = item.getLineIndexes();
|
||||||
HarmonicDeptVO harmonicDeptVO = new HarmonicDeptVO();
|
HarmonicDeptVO harmonicDeptVO = new HarmonicDeptVO();
|
||||||
if (!CollectionUtils.isEmpty(lineList)) {
|
if (!CollectionUtils.isEmpty(lineList)) {
|
||||||
List<LimitTarget> limitTargetList = getLimitTarget(lineList,param.getSearchBeginTime(),param.getSearchEndTime());
|
|
||||||
AreaDTO areaDTO = handleData(limitTargetList,param.getStatisticalType().getCode(),lineList,param.getSearchBeginTime(),param.getSearchEndTime());
|
|
||||||
|
List<RStatLimitTargetDPO> collect = limitTargetNew.stream().filter(x -> lineList.contains(x.getLineId())).collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<RStatLimitTargetDPO> sumList = finalAllData.stream().filter(x -> lineList.contains(x.getLineId())).collect(Collectors.toList());
|
||||||
|
|
||||||
|
AreaDTO areaDTO = handleDataNew(collect, sumList, param.getStatisticalType().getCode());
|
||||||
|
|
||||||
BeanUtil.copyProperties(areaDTO, harmonicDeptVO);
|
BeanUtil.copyProperties(areaDTO, harmonicDeptVO);
|
||||||
}
|
}
|
||||||
harmonicDeptVO.setId(item.getIndex());
|
harmonicDeptVO.setId(item.getIndex());
|
||||||
@@ -265,8 +286,10 @@ public class HarmonicServiceImpl implements IHarmonicService {
|
|||||||
);
|
);
|
||||||
return limitRates;
|
return limitRates;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 功能描述: 获取limitTarget数据
|
* 功能描述: 获取limitTarget数据
|
||||||
|
*
|
||||||
* @param lineList 部门列表
|
* @param lineList 部门列表
|
||||||
* @param startTime 开始时间
|
* @param startTime 开始时间
|
||||||
* @param endTime 结束时间
|
* @param endTime 结束时间
|
||||||
@@ -350,7 +373,7 @@ public class HarmonicServiceImpl implements IHarmonicService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public AreaDTO handleDataNew(List<RStatLimitTargetDPO> list, List<RStatLimitTargetDPO> sumList,String type,List<String> lineList,String startTime,String endTime) {
|
public AreaDTO handleDataNew(List<RStatLimitTargetDPO> list, List<RStatLimitTargetDPO> sumList, String type) {
|
||||||
int onlineCount = 0, overLineCount = 0, overCountByDay = 0;
|
int onlineCount = 0, overLineCount = 0, overCountByDay = 0;
|
||||||
double avgOverDay = 0.0, ratio = 0.0;
|
double avgOverDay = 0.0, ratio = 0.0;
|
||||||
AreaDTO areaDTO = new AreaDTO();
|
AreaDTO areaDTO = new AreaDTO();
|
||||||
@@ -404,13 +427,10 @@ public class HarmonicServiceImpl implements IHarmonicService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* todo
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** todo
|
|
||||||
* 功能描述: 处理区域(变电站)在线监测点数、超标监测点数、平均超标天数、占比
|
* 功能描述: 处理区域(变电站)在线监测点数、超标监测点数、平均超标天数、占比
|
||||||
|
*
|
||||||
* @param list 集合
|
* @param list 集合
|
||||||
* type 类型
|
* type 类型
|
||||||
* @return
|
* @return
|
||||||
@@ -482,6 +502,7 @@ public class HarmonicServiceImpl implements IHarmonicService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 功能描述: 处理区域在线监测点数、超标监测点数
|
* 功能描述: 处理区域在线监测点数、超标监测点数
|
||||||
|
*
|
||||||
* @param list 集合
|
* @param list 集合
|
||||||
* @return
|
* @return
|
||||||
* @author xy
|
* @author xy
|
||||||
@@ -490,6 +511,7 @@ public class HarmonicServiceImpl implements IHarmonicService {
|
|||||||
private List<RStatLimitTargetDPO> getAllDataV(List<String> list, String startTime, String endTime) {
|
private List<RStatLimitTargetDPO> getAllDataV(List<String> list, String startTime, String endTime) {
|
||||||
return targetDMapper.getSumV(list, startTime, endTime);
|
return targetDMapper.getSumV(list, startTime, endTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<RStatLimitTargetDPO> getAllDataI(List<String> list, String startTime, String endTime) {
|
private List<RStatLimitTargetDPO> getAllDataI(List<String> list, String startTime, String endTime) {
|
||||||
return targetDMapper.getSumI(list, startTime, endTime);
|
return targetDMapper.getSumI(list, startTime, endTime);
|
||||||
}
|
}
|
||||||
@@ -497,13 +519,14 @@ public class HarmonicServiceImpl implements IHarmonicService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 功能描述: 获取告警频次
|
* 功能描述: 获取告警频次
|
||||||
* @author xy
|
*
|
||||||
* @param lineList 监测点id
|
* @param lineList 监测点id
|
||||||
* @param startTime 开始时间
|
* @param startTime 开始时间
|
||||||
* @param endTime 结束时间
|
* @param endTime 结束时间
|
||||||
* @param type 类型
|
* @param type 类型
|
||||||
* @date 2022/4/24 16:47
|
|
||||||
* @return
|
* @return
|
||||||
|
* @author xy
|
||||||
|
* @date 2022/4/24 16:47
|
||||||
*/
|
*/
|
||||||
private Integer getWarningInfo(List<String> lineList, String startTime, String endTime, String type) {
|
private Integer getWarningInfo(List<String> lineList, String startTime, String endTime, String type) {
|
||||||
List<RStatLimitTargetDPO> sum = new ArrayList<>();
|
List<RStatLimitTargetDPO> sum = new ArrayList<>();
|
||||||
@@ -525,16 +548,16 @@ public class HarmonicServiceImpl implements IHarmonicService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 功能描述: 获取监测点超标天数
|
* 功能描述: 获取监测点超标天数
|
||||||
* @author xy
|
*
|
||||||
* @param lineList 监测点id
|
* @param lineList 监测点id
|
||||||
* @param startTime 开始时间
|
* @param startTime 开始时间
|
||||||
* @param endTime 结束时间
|
* @param endTime 结束时间
|
||||||
* @param type 类型
|
* @param type 类型
|
||||||
* @date 2022/4/24 16:47
|
|
||||||
* @return
|
* @return
|
||||||
|
* @author xy
|
||||||
|
* @date 2022/4/24 16:47
|
||||||
*/
|
*/
|
||||||
private List<LimitTarget> getLineOverDays(List<String> lineList, String startTime, String endTime, String type) {
|
private List<LimitTarget> getLineOverDays(List<String> lineList, String startTime, String endTime, String type) {
|
||||||
List<LimitTarget> listInfo = new ArrayList<>();
|
List<LimitTarget> listInfo = new ArrayList<>();
|
||||||
|
|||||||
Reference in New Issue
Block a user