修改电能质量评估查询过慢问题

This commit is contained in:
wr
2023-04-27 20:09:12 +08:00
parent 220ac02c65
commit 542bdb39ec

View File

@@ -4,7 +4,10 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.dto.PollutionLineDTO;
import com.njcn.device.pq.pojo.dto.PollutionParamDTO;
import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.harmonic.mapper.RStatComassesDMapper; import com.njcn.harmonic.mapper.RStatComassesDMapper;
import com.njcn.harmonic.pojo.dto.ComAssessDTO; import com.njcn.harmonic.pojo.dto.ComAssessDTO;
@@ -13,19 +16,15 @@ import com.njcn.harmonic.pojo.po.day.RStatComassesDPO;
import com.njcn.harmonic.pojo.vo.ComAssessVO; import com.njcn.harmonic.pojo.vo.ComAssessVO;
import com.njcn.harmonic.service.ComAssessService; import com.njcn.harmonic.service.ComAssessService;
import com.njcn.harmonic.utils.HarmonicComAssesUtil; import com.njcn.harmonic.utils.HarmonicComAssesUtil;
import com.njcn.influxdb.param.InfluxDBPublicParam;
import com.njcn.influxdb.utils.InfluxDbUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -38,60 +37,69 @@ import java.util.stream.Collectors;
public class ComAssessServiceImpl extends ServiceImpl<RStatComassesDMapper, RStatComassesDPO> implements ComAssessService { public class ComAssessServiceImpl extends ServiceImpl<RStatComassesDMapper, RStatComassesDPO> implements ComAssessService {
private final GeneralDeviceInfoClient generalDeviceInfoClient; private final GeneralDeviceInfoClient generalDeviceInfoClient;
private final HarmonicComAssesUtil comAssesUtil; private final HarmonicComAssesUtil comAssesUtil;
private final LineFeignClient lineFeignClient;
@Override @Override
public List<ComAssessVO> getComAccessData(DeviceInfoParam.BusinessParam comAccessParam) { public List<ComAssessVO> getComAccessData(DeviceInfoParam.BusinessParam comAccessParam) {
List<ComAssessVO> comAssessVOList = new ArrayList<>(); List<ComAssessVO> comAssessVOList = new ArrayList<>();
List<ComAssessDTO> comAssessDTOS = new ArrayList<>(); List<String> lineList = new ArrayList<>();
//监测点信息
List<PollutionLineDTO> lineInfo = new ArrayList<>();
//按部门分类的实际运行终端综合信息 //按部门分类的实际运行终端综合信息
List<GeneralDeviceDTO> deviceDataList = generalDeviceInfoClient.getPracticalRunDeviceInfo(comAccessParam).getData(); List<GeneralDeviceDTO> deviceDataList = generalDeviceInfoClient.getPracticalRunDeviceInfo(comAccessParam).getData();
//按变电站分类的实际运行终端综合信息 deviceDataList.forEach(dept->{
List<GeneralDeviceDTO> subDataList = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(comAccessParam).getData(); lineList.addAll(dept.getLineIndexes());
if (!CollectionUtils.isEmpty(deviceDataList)) { });
for (GeneralDeviceDTO generalDeviceDTO: deviceDataList){ if (!CollectionUtils.isEmpty(lineList)){
List<String> lineIndexes = generalDeviceDTO.getLineIndexes(); PollutionParamDTO paramDTO = new PollutionParamDTO();
ComAssessVO comAssessVO = new ComAssessVO(); paramDTO.setLineList(lineList);
comAssessVO.setName(generalDeviceDTO.getName()); lineInfo = lineFeignClient.getLineInfo(paramDTO).getData();
comAssessVO.setMonitors(lineIndexes.size()); }
if (!CollectionUtils.isEmpty(lineIndexes)) { Map<String,List<PollutionLineDTO>> map = lineInfo.stream().collect(Collectors.groupingBy(PollutionLineDTO::getSubstationId));
List<PQSComAssesPO> pqsComAssesPOS = getComAccessData(lineIndexes, comAccessParam.getSearchBeginTime(), comAccessParam.getSearchEndTime()); //查询所有信息
setResults(pqsComAssesPOS,comAssessDTOS); List<PQSComAssesPO> comAccessData = getComAccessData(lineList, comAccessParam.getSearchBeginTime(), comAccessParam.getSearchEndTime());
float allComAss = comAssesUtil.getAllComAss(comAssessDTOS);
String lv = getLevel(allComAss);
comAssessVO.setData(allComAss);
comAssessVO.setLevel(lv);
}
List<ComAssessVO> children = new ArrayList<>();
List<ComAssessDTO> childrenDTOS = new ArrayList<>();
List<GeneralDeviceDTO> tempList = new ArrayList<>(); //按变电站分类的实际运行终端综合信息
List<String> subIndexes = generalDeviceDTO.getSubIndexes(); // List<GeneralDeviceDTO> subDataList = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(comAccessParam).getData();
if (!CollectionUtils.isEmpty(subIndexes)) { if (!CollectionUtils.isEmpty(deviceDataList)) {
for (String s: subIndexes) { deviceDataList.forEach(dept-> {
GeneralDeviceDTO subData = subDataList.stream().filter(item -> item.getIndex().equals(s)).collect(Collectors.toList()).get(0); ComAssessVO comAssessVO = new ComAssessVO();
tempList.add(subData); comAssessVO.setName(dept.getName());
} comAssessVO.setMonitors(dept.getLineIndexes().size());
for (GeneralDeviceDTO generalSubDTO: tempList){
List<String> lines = generalSubDTO.getLineIndexes(); List<ComAssessDTO> childrenDTOS = new ArrayList<>();
ComAssessVO assessVO = new ComAssessVO(); List<ComAssessVO> children=new ArrayList<>();
assessVO.setName(generalSubDTO.getName()); if (!CollectionUtils.isEmpty(dept.getSubIndexes())) {
assessVO.setMonitors(lines.size()); dept.getSubIndexes().forEach(sub -> {
if (!CollectionUtils.isEmpty(lines)) { //获取变电站信息
List<PQSComAssesPO> pqsComAssesPOS = getComAccessData(lines, comAccessParam.getSearchBeginTime(), comAccessParam.getSearchEndTime()); List<PollutionLineDTO> l1 = map.get(sub);
setResults(pqsComAssesPOS,childrenDTOS); ComAssessVO child = new ComAssessVO();
float allComAss = comAssesUtil.getAllComAss(childrenDTOS); child.setName(l1.get(0).getSubstation());
String lv = getLevel(allComAss); child.setMonitors(l1.size());
assessVO.setData(allComAss); //监测点id
assessVO.setLevel(lv); List<String> lineIds = l1.stream().map(PollutionLineDTO::getId).collect(Collectors.toList());
} List<PQSComAssesPO> collect = comAccessData.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
children.add(assessVO); setResults(collect,childrenDTOS);
comAssessVO.setChildren(children); float allComAss = comAssesUtil.getAllComAss(childrenDTOS);
} String lv = getLevel(allComAss);
child.setData(allComAss);
child.setLevel(lv);
children.add(child);
});
} }
List<String> lineIds = dept.getLineIndexes();
List<PQSComAssesPO> collect = comAccessData.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
List<ComAssessDTO> dtos = new ArrayList<>();
setResults(collect,dtos);
float allComAss = comAssesUtil.getAllComAss(dtos);
String lv = getLevel(allComAss);
comAssessVO.setData(allComAss);
comAssessVO.setLevel(lv);
comAssessVO.setChildren(children);
comAssessVOList.add(comAssessVO); comAssessVOList.add(comAssessVO);
} });
} }
List<ComAssessVO> list = comAssessVOList.stream().sorted(Comparator.comparing(ComAssessVO::getData).reversed()).collect(Collectors.toList()); List<ComAssessVO> list = comAssessVOList.stream().sorted(Comparator.comparing(ComAssessVO::getData).reversed()).collect(Collectors.toList());
return list; return list;