污区图前10,接口区分(pq pms)修改

This commit is contained in:
wurui
2023-03-30 10:44:58 +08:00
parent d6489cc376
commit 22a374751f

View File

@@ -22,22 +22,27 @@ import com.njcn.device.pq.api.SubstationFeignClient;
import com.njcn.device.pq.pojo.dto.*; import com.njcn.device.pq.pojo.dto.*;
import com.njcn.harmonic.constant.Param; import com.njcn.harmonic.constant.Param;
import com.njcn.harmonic.mapper.*; import com.njcn.harmonic.mapper.*;
import com.njcn.harmonic.pojo.dto.PublicDTO;
import com.njcn.harmonic.pojo.param.HarmonicPublicParam; import com.njcn.harmonic.pojo.param.HarmonicPublicParam;
import com.njcn.harmonic.pojo.param.PollutionSubstationQuryParam; import com.njcn.harmonic.pojo.param.PollutionSubstationQuryParam;
import com.njcn.harmonic.pojo.po.*; import com.njcn.harmonic.pojo.po.*;
import com.njcn.harmonic.pojo.vo.PollutionSubstationVO; import com.njcn.harmonic.pojo.vo.PollutionSubstationVO;
import com.njcn.harmonic.pojo.vo.PollutionVO; import com.njcn.harmonic.pojo.vo.PollutionVO;
import com.njcn.harmonic.service.PollutionSubstationService; import com.njcn.harmonic.service.PollutionSubstationService;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.user.api.DeptFeignClient; import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept; import com.njcn.user.pojo.po.Dept;
import com.njcn.web.utils.RequestUtil; import com.njcn.web.utils.RequestUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.influxdb.dto.QueryResult;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -83,6 +88,8 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
private final RStatPollutionOrgDPOMapper rStatPollutionOrgDPOMapper; private final RStatPollutionOrgDPOMapper rStatPollutionOrgDPOMapper;
private final RMpPollutionDPOMapper rMpPollutionDPOMapper; private final RMpPollutionDPOMapper rMpPollutionDPOMapper;
private final InfluxDbUtils influxDbUtils = new InfluxDbUtils("admin", "njcnpqs", "http://192.168.1.18:8086", "pqsbase", ""); ;
/** /**
* @param pollutionSubstationQuryParam * @param pollutionSubstationQuryParam
* @Description: getPollutionSubstationData * @Description: getPollutionSubstationData
@@ -576,51 +583,129 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
searchBeginTime = param.getSearchBeginTime ( ).substring (0, 10)+"%"; searchBeginTime = param.getSearchBeginTime ( ).substring (0, 10)+"%";
} }
PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam(); if(param.getType()==0){
pmsDeviceInfoParam.setDeptIndex(param.getDeptIndex()); param.setServerName(generalInfo.getMicroServiceName());
//获取统计类型 List<String> lineList = new ArrayList<>();
pmsDeviceInfoParam.setStatisticalType(param.getStatisticalType()); PollutionParamDTO paramDTO = new PollutionParamDTO();
//获取主网台账信息 if (StringUtils.isBlank(RequestUtil.getDeptIndex())) {
List<PmsGeneralDeviceDTO> deviceList = pmsGeneralDeviceInfoClient.getPmsDeviceInfoWithInOrg(pmsDeviceInfoParam).getData();
List<String> monitorIdList=new ArrayList<>();
deviceList.forEach(dept -> {
monitorIdList.addAll(dept.getMonitorIdList());
});
if(CollectionUtil.isNotEmpty(monitorIdList)){
//获取监测点数据
List<RMpPollutionDPO> lineData = rMpPollutionDPOMapper.selectMaxList ( monitorIdList,pollutionType,searchBeginTime);
if(CollectionUtil.isEmpty(lineData)){
return list; return list;
} }
List<GeneralDeviceDTO> deviceList = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData();
//获取主网监测点信息 deviceList.forEach(item -> {
List<Monitor> data = monitorClient.getMonitorList(monitorIdList).getData(); if (!CollectionUtils.isEmpty(item.getLineIndexes())) {
Map<String, Monitor> monitorMap = data.stream().collect(Collectors.toMap(Monitor::getId, Function.identity(), (key1, kye2) -> key1)); lineList.addAll(item.getLineIndexes());
lineData.sort((item1, item2) -> item2.getValue().compareTo(item1.getValue())); }
if (lineData.size() > Param.UP_LIMIT) { });
lineData = lineData.subList(Param.DOWN_LIMIT, Param.UP_LIMIT); if (!CollectionUtils.isEmpty(lineList)) {
} paramDTO.setLineList(lineList);
list = lineFeignClient.getLineInfo(paramDTO).getData();
PollutionLineDTO dto; List<PublicDTO> result = getLineDate(lineList, param.getSearchBeginTime(), param.getSearchEndTime(), param.getStatisticalType().getCode());
for (RMpPollutionDPO lineDatum : lineData) { if (!CollectionUtils.isEmpty(result)) {
if(monitorMap.containsKey(lineDatum.getLineId())){ list.stream().map(list1 -> result.stream().filter(list2 -> Objects.equals(list1.getId(), list2.getId())).findAny().map(m -> {
Monitor monitor = monitorMap.get(lineDatum.getLineId()); list1.setData(m.getData());
dto=new PollutionLineDTO(); return list1;
dto.setId(monitor.getId()); })).collect(Collectors.toList());
dto.setName(monitor.getName());
dto.setPowerCompany(monitor.getOrgName());
dto.setSubstation(monitor.getPowerrId());
dto.setSubstationId(monitor.getPowerrName());
dto.setBusBar(monitor.getLineName());
dto.setData(lineDatum.getValue());
list.add(dto);
} }
} }
list.sort((item1, item2) -> item2.getData().compareTo(item1.getData()));
if (list.size() > Param.UP_LIMIT) {
return list.subList(Param.DOWN_LIMIT, Param.UP_LIMIT);
}
return list;
} }
return list; PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam();
pmsDeviceInfoParam.setDeptIndex(param.getDeptIndex());
//获取统计类型
pmsDeviceInfoParam.setStatisticalType(param.getStatisticalType());
//获取主网台账信息
List<PmsGeneralDeviceDTO> deviceList = pmsGeneralDeviceInfoClient.getPmsDeviceInfoWithInOrg(pmsDeviceInfoParam).getData();
List<String> monitorIdList=new ArrayList<>();
deviceList.forEach(dept -> {
monitorIdList.addAll(dept.getMonitorIdList());
});
if(CollectionUtil.isNotEmpty(monitorIdList)){
//获取监测点数据
List<RMpPollutionDPO> lineData = rMpPollutionDPOMapper.selectMaxList ( monitorIdList,pollutionType,searchBeginTime);
if(CollectionUtil.isEmpty(lineData)){
return list;
}
//获取主网监测点信息
List<Monitor> data = monitorClient.getMonitorList(monitorIdList).getData();
Map<String, Monitor> monitorMap = data.stream().collect(Collectors.toMap(Monitor::getId, Function.identity(), (key1, kye2) -> key1));
lineData.sort((item1, item2) -> item2.getValue().compareTo(item1.getValue()));
if (lineData.size() > Param.UP_LIMIT) {
lineData = lineData.subList(Param.DOWN_LIMIT, Param.UP_LIMIT);
}
PollutionLineDTO dto;
for (RMpPollutionDPO lineDatum : lineData) {
if(monitorMap.containsKey(lineDatum.getLineId())){
Monitor monitor = monitorMap.get(lineDatum.getLineId());
dto=new PollutionLineDTO();
dto.setId(monitor.getId());
dto.setName(monitor.getName());
dto.setPowerCompany(monitor.getOrgName());
dto.setSubstation(monitor.getPowerrId());
dto.setSubstationId(monitor.getPowerrName());
dto.setBusBar(monitor.getLineName());
dto.setData(lineDatum.getValue());
list.add(dto);
}
}
}
return list;
} }
/**
* 功能描述:根据监测点id查询influxDB污染指数
*
* @param line 监测点集合
* startTime 开始时间
* endTime 结束时间
* type 指标参数
* @return
* @author xy
* @date 2022/2/21 20:08
*/
private List<PublicDTO> getLineDate(List<String> line, String startTime, String endTime, String type) {
List<PublicDTO> result = new ArrayList<>();
String quota = "";
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())) {
quota = "harmonic_v";
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())) {
quota = "harmonic_i";
}
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(Param.TIME).append(" >= '").append(startTime).append(Param.START_TIME).append("' and ").append(Param.TIME).append(" <= '").append(endTime).append(Param.END_TIME).append("' and (");
for (int i = 0; i < line.size(); i++) {
if (line.size() - i != 1) {
stringBuilder.append(Param.LINE_ID).append("='").append(line.get(i)).append("' or ");
} else {
stringBuilder.append(Param.LINE_ID).append("='").append(line.get(i)).append("')");
}
}
stringBuilder.append(" group by line_id order by time desc limit 1 tz('Asia/Shanghai')");
String sql = "SELECT line_id," + quota + " FROM harmonic_pollution where " + stringBuilder;
QueryResult sqlResult = influxDbUtils.query(sql);
List<QueryResult.Series> list = sqlResult.getResults().get(0).getSeries();
if (!CollectionUtils.isEmpty(list)) {
list.forEach(po -> {
String index = po.getTags().get(Param.LINE_ID);
List<List<Object>> valueList = po.getValues();
if (!CollectionUtils.isEmpty(valueList)) {
for (List<Object> value : valueList) {
PublicDTO publicDTO = new PublicDTO();
Double data = value.get(2) == null ? 0.0 : BigDecimal.valueOf(Double.parseDouble(value.get(2).toString())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
publicDTO.setId(index);
publicDTO.setData(data);
result.add(publicDTO);
}
}
});
}
return result;
}
} }