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