污区图前10,接口区分(pq pms)修改
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user