1.污区图

2.过程监督-终端 代码提交
This commit is contained in:
wurui
2023-03-03 16:39:13 +08:00
parent 7bf9322d3d
commit d522f2afe9
16 changed files with 1551 additions and 208 deletions

View File

@@ -93,4 +93,14 @@ public class PollutionSubstationController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getLineRank")
@ApiOperation("污区图-获取前十监测点排名")
@ApiImplicitParam(name = "param", value = "实体参数", required = true)
public HttpResult<List<PollutionLineDTO>> getLineRank(@RequestBody HarmonicPublicParam param) {
String methodDescribe = getMethodDescribe("getLineRank");
LogUtil.njcnDebug(log, "{},实体参数:{}", methodDescribe, param);
List<PollutionLineDTO> list = pollutionSubstationService.getLineRank(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
}

View File

@@ -55,4 +55,14 @@ public interface PollutionSubstationService extends IService<RStatPollutionSubst
* @Date: 2022/11/3
*/
List<PollutionLineDTO> getLineInfoById(HarmonicPublicParam param);
}
/***
* 获取前十监测点排名
* @author wr
* @date 2023-03-03 16:21
* @param param
* @return List<PollutionLineDTO>
*/
List<PollutionLineDTO> getLineRank(HarmonicPublicParam param);
}

View File

@@ -1,6 +1,18 @@
package com.njcn.harmonic.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.njcn.common.config.GeneralInfo;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.device.pms.api.MonitorClient;
import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient;
import com.njcn.device.pms.api.PmsGeneratrixClient;
import com.njcn.device.pms.api.StatationStatClient;
import com.njcn.device.pms.pojo.dto.PmsGeneralDeviceDTO;
import com.njcn.device.pms.pojo.dto.PmsStatationStatInfoDTO;
import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam;
import com.njcn.device.pms.pojo.param.PmsStatationStatInfoParam;
import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
@@ -10,6 +22,7 @@ import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO;
import com.njcn.harmonic.constant.Param;
import com.njcn.harmonic.pojo.dto.PublicDTO;
import com.njcn.harmonic.pojo.param.HarmonicPublicParam;
import com.njcn.harmonic.pojo.vo.PollMonitorVO;
import com.njcn.harmonic.pojo.vo.PollutionVO;
import com.njcn.harmonic.service.IPollutionService;
import com.njcn.influxdb.utils.InfluxDbUtils;
@@ -38,7 +51,13 @@ public class PollutionServiceImpl implements IPollutionService {
private final GeneralDeviceInfoClient generalDeviceInfoClient;
private final InfluxDbUtils influxDbUtils;
private final PmsGeneralDeviceInfoClient pmsGeneralDeviceInfoClient;
private final StatationStatClient statationStatClient;
private final MonitorClient monitorClient;
private final InfluxDbUtils influxDbUtils = new InfluxDbUtils("admin", "njcnpqs", "http://192.168.1.18:8086", "pqsbase", ""); ;
private final GeneralInfo generalInfo;
@@ -46,37 +65,41 @@ public class PollutionServiceImpl implements IPollutionService {
@Override
public List<PollutionVO> getDeptSubstationRelations(HarmonicPublicParam harmonicPublicParam) {
harmonicPublicParam.setServerName(generalInfo.getMicroServiceName());
//用于区分是pms 还是 pq
List<PollutionVO> list = new ArrayList<>();
List<String> lineList = new ArrayList<>();
List<PollutionLineDTO> lineInfo = new ArrayList<>();
PollutionParamDTO paramDTO = new PollutionParamDTO();
if (StringUtils.isBlank(RequestUtil.getDeptIndex())){
harmonicPublicParam.setServerName(generalInfo.getMicroServiceName());
if (StringUtils.isBlank(RequestUtil.getDeptIndex())) {
return list;
}
List<GeneralDeviceDTO> deviceList = generalDeviceInfoClient.getPracticalRunDeviceInfo(harmonicPublicParam).getData();
deviceList.forEach(dept->{
deviceList.forEach(dept -> {
lineList.addAll(dept.getLineIndexes());
});
if (!CollectionUtils.isEmpty(lineList)){
if (!CollectionUtils.isEmpty(lineList)) {
paramDTO.setLineList(lineList);
lineInfo = lineFeignClient.getLineInfo(paramDTO).getData();
List<PublicDTO> lineData = getLineDate(lineList,harmonicPublicParam.getSearchBeginTime(),harmonicPublicParam.getSearchEndTime(),harmonicPublicParam.getStatisticalType().getCode());
if (!CollectionUtils.isEmpty(lineData)){
lineInfo.stream().map(list1->lineData.stream().filter(list2-> Objects.equals(list1.getId(),list2.getId())).findAny().map(m->{
List<PublicDTO> lineData = getLineDate(lineList, harmonicPublicParam.getSearchBeginTime(), harmonicPublicParam.getSearchEndTime(), harmonicPublicParam.getStatisticalType().getCode());
if (!CollectionUtils.isEmpty(lineData)) {
lineInfo.stream().map(list1 -> lineData.stream().filter(list2 -> Objects.equals(list1.getId(), list2.getId())).findAny().map(m -> {
list1.setData(m.getData());
return list1;
})).collect(Collectors.toList());
}
}
Map<String,List<PollutionLineDTO>> map = lineInfo.stream().collect(Collectors.groupingBy(PollutionLineDTO::getSubstationId));
deviceList.forEach(dept->{
Map<String, List<PollutionLineDTO>> map = lineInfo.stream().collect(Collectors.groupingBy(PollutionLineDTO::getSubstationId));
deviceList.forEach(dept -> {
List<PollutionVO> childrenList = new ArrayList<>();
PollutionVO pollutionVO = new PollutionVO();
pollutionVO.setId(dept.getIndex());
pollutionVO.setName(dept.getName());
if (!CollectionUtils.isEmpty(dept.getSubIndexes())){
dept.getSubIndexes().forEach(sub->{
if (!CollectionUtils.isEmpty(dept.getSubIndexes())) {
dept.getSubIndexes().forEach(sub -> {
List<PollutionLineDTO> l1 = map.get(sub);
PollutionVO children = new PollutionVO();
children.setId(sub);
@@ -86,13 +109,13 @@ public class PollutionServiceImpl implements IPollutionService {
childrenList.add(children);
});
}
if (!CollectionUtils.isEmpty(childrenList)){
if (!CollectionUtils.isEmpty(childrenList)) {
pollutionVO.setChildren(childrenList.stream().sorted(Comparator.comparing(PollutionVO::getData).reversed()).collect(Collectors.toList()));
pollutionVO.setData(childrenList.stream().max(Comparator.comparing(PollutionVO::getData)).get().getData());
}
list.add(pollutionVO);
});
if (!CollectionUtils.isEmpty(list)){
if (!CollectionUtils.isEmpty(list)) {
return list.stream().sorted(Comparator.comparing(PollutionVO::getData).reversed().thenComparing(PollutionVO::getName)).collect(Collectors.toList());
}
return list;
@@ -100,20 +123,20 @@ public class PollutionServiceImpl implements IPollutionService {
@Override
public List<PollutionSubstationDTO> getSubstationInfoById(HarmonicPublicParam deptParam) {
deptParam.setServerName(generalInfo.getMicroServiceName());
List<PollutionSubstationDTO> list = new ArrayList<>();
deptParam.setServerName(generalInfo.getMicroServiceName());
List<GeneralDeviceDTO> sub = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(deptParam).getData();
sub.forEach(item->{
sub.forEach(item -> {
PollutionSubstationDTO pollutionSubstationDTO = lineFeignClient.getSubstationInfo(item.getIndex()).getData();
if (!CollectionUtils.isEmpty(item.getLineIndexes())){
List<PublicDTO> lineData = getLineDate(item.getLineIndexes(),deptParam.getSearchBeginTime(),deptParam.getSearchEndTime(),deptParam.getStatisticalType().getCode());
if (!CollectionUtils.isEmpty(lineData)){
if (!CollectionUtils.isEmpty(item.getLineIndexes())) {
List<PublicDTO> lineData = getLineDate(item.getLineIndexes(), deptParam.getSearchBeginTime(), deptParam.getSearchEndTime(), deptParam.getStatisticalType().getCode());
if (!CollectionUtils.isEmpty(lineData)) {
pollutionSubstationDTO.setData(lineData.stream().max(Comparator.comparing(PublicDTO::getData)).get().getData());
}
}
list.add(pollutionSubstationDTO);
});
if (!CollectionUtils.isEmpty(list)){
if (!CollectionUtils.isEmpty(list)) {
return list.stream().sorted(Comparator.comparing(PollutionSubstationDTO::getData).reversed().thenComparing(PollutionSubstationDTO::getName)).collect(Collectors.toList());
}
return list;
@@ -125,23 +148,23 @@ public class PollutionServiceImpl implements IPollutionService {
List<PollutionLineDTO> list = new ArrayList<>();
List<String> line = new ArrayList<>();
PollutionParamDTO paramDTO = new PollutionParamDTO();
if (StringUtils.isBlank(RequestUtil.getDeptIndex())){
if (StringUtils.isBlank(RequestUtil.getDeptIndex())) {
return list;
}
List<GeneralDeviceDTO> sub = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(harmonicPublicParam).getData();
sub.forEach(item->{
if (Objects.equals(harmonicPublicParam.getId(),item.getIndex())){
if (!CollectionUtils.isEmpty(item.getLineIndexes())){
sub.forEach(item -> {
if (Objects.equals(harmonicPublicParam.getId(), item.getIndex())) {
if (!CollectionUtils.isEmpty(item.getLineIndexes())) {
line.addAll(item.getLineIndexes());
}
}
});
if (!CollectionUtils.isEmpty(line)){
if (!CollectionUtils.isEmpty(line)) {
paramDTO.setLineList(line);
list = lineFeignClient.getLineInfo(paramDTO).getData();
List<PublicDTO> lineData = getLineDate(line, harmonicPublicParam.getSearchBeginTime(), harmonicPublicParam.getSearchEndTime(), harmonicPublicParam.getStatisticalType().getCode());
if (!CollectionUtils.isEmpty(lineData)){
list.stream().map(list1->lineData.stream().filter(list2-> Objects.equals(list1.getId(),list2.getId())).findAny().map(m->{
if (!CollectionUtils.isEmpty(lineData)) {
list.stream().map(list1 -> lineData.stream().filter(list2 -> Objects.equals(list1.getId(), list2.getId())).findAny().map(m -> {
list1.setData(m.getData());
return list1;
})).collect(Collectors.toList());
@@ -158,29 +181,29 @@ public class PollutionServiceImpl implements IPollutionService {
List<PollutionLineDTO> list = new ArrayList<>();
List<String> lineList = new ArrayList<>();
PollutionParamDTO paramDTO = new PollutionParamDTO();
if (StringUtils.isBlank(RequestUtil.getDeptIndex())){
if (StringUtils.isBlank(RequestUtil.getDeptIndex())) {
return list;
}
List<GeneralDeviceDTO> deviceList = generalDeviceInfoClient.getPracticalRunDeviceInfo(harmonicPublicParam).getData();
deviceList.forEach(item->{
if (!CollectionUtils.isEmpty(item.getLineIndexes())){
deviceList.forEach(item -> {
if (!CollectionUtils.isEmpty(item.getLineIndexes())) {
lineList.addAll(item.getLineIndexes());
}
});
if (!CollectionUtils.isEmpty(lineList)){
if (!CollectionUtils.isEmpty(lineList)) {
paramDTO.setLineList(lineList);
list = lineFeignClient.getLineInfo(paramDTO).getData();
List<PublicDTO> result = getLineDate(lineList, harmonicPublicParam.getSearchBeginTime(), harmonicPublicParam.getSearchEndTime(), harmonicPublicParam.getStatisticalType().getCode());
if (!CollectionUtils.isEmpty(result)){
list.stream().map(list1->result.stream().filter(list2-> Objects.equals(list1.getId(),list2.getId())).findAny().map(m->{
if (!CollectionUtils.isEmpty(result)) {
list.stream().map(list1 -> result.stream().filter(list2 -> Objects.equals(list1.getId(), list2.getId())).findAny().map(m -> {
list1.setData(m.getData());
return list1;
})).collect(Collectors.toList());
}
}
list.sort((item1,item2)->item2.getData().compareTo(item1.getData()));
if (list.size() > Param.UP_LIMIT){
return list.subList(Param.DOWN_LIMIT,Param.UP_LIMIT);
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;
}
@@ -188,40 +211,41 @@ public class PollutionServiceImpl implements IPollutionService {
/**
* 功能描述:根据监测点id查询influxDB污染指数
* @param line 监测点集合
* startTime 开始时间
* endTime 结束时间
* type 指标参数
*
* @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){
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())){
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())) {
quota = "harmonic_v";
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){
} 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){
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;
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->{
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)){
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();

View File

@@ -1,15 +1,26 @@
package com.njcn.harmonic.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.config.GeneralInfo;
import com.njcn.common.pojo.constant.BizParamConstant;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pms.api.MonitorClient;
import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient;
import com.njcn.device.pms.api.StatationStatClient;
import com.njcn.device.pms.pojo.dto.PmsGeneralDeviceDTO;
import com.njcn.device.pms.pojo.dto.PmsStatationStatInfoDTO;
import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam;
import com.njcn.device.pms.pojo.param.PmsStatationStatInfoParam;
import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.api.SubstationFeignClient;
import com.njcn.device.pq.pojo.dto.*;
import com.njcn.harmonic.constant.Param;
import com.njcn.harmonic.mapper.*;
import com.njcn.harmonic.pojo.param.HarmonicPublicParam;
import com.njcn.harmonic.pojo.param.PollutionSubstationQuryParam;
@@ -45,7 +56,9 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
private final SubstationFeignClient substationFeignClient;
private final PmsGeneralDeviceInfoClient pmsGeneralDeviceInfoClient;
private final StatationStatClient statationStatClient;
private final MonitorClient monitorClient;
private final RStatPollutionSubstationMMapper pollutionSubstationMMapper;
private final RStatPollutionSubstationYPOMapper pollutionSubstationYPOMapper;
@@ -150,117 +163,90 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
*/
@Override
public List<PollutionVO> getDeptSubstationRelations(HarmonicPublicParam harmonicPublicParam) {
harmonicPublicParam.setServerName(generalInfo.getMicroServiceName());
List<PollutionVO> list = new ArrayList<>();
List<String> lineList = new ArrayList<>();
List<PollutionLineDTO> lineInfo = new ArrayList<>();
PollutionParamDTO paramDTO = new PollutionParamDTO();
String pollutionType = harmonicPublicParam.getStatisticalType ( ).getId ();
String searchBeginTime = harmonicPublicParam.getSearchBeginTime ( ).substring (0,10);
if (StringUtils.isBlank(RequestUtil.getDeptIndex())){
return list;
}
List<GeneralDeviceDTO> sub = generalDeviceInfoClient.getPracticalRunDeviceInfo(harmonicPublicParam).getData();
sub.forEach (temp ->{
PollutionVO pollutionVO = new PollutionVO ();
String detpid = temp.getIndex ();
String name =temp.getName ();
List<String> subIndexes = temp.getSubIndexes ( );
pollutionVO.setId (detpid);
pollutionVO.setName (name);
pollutionVO.setData (-1.0);
if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_YEAR) ){
QueryWrapper<RStatPollutionOrgYPO> rStatPollutionOrgYPOQueryWrapper = new QueryWrapper<> ();
rStatPollutionOrgYPOQueryWrapper.eq ("org_id", detpid).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionOrgYPO rStatPollutionOrgYPO = rStatPollutionOrgYPOMapper.selectOne (rStatPollutionOrgYPOQueryWrapper);
;
Optional.ofNullable (rStatPollutionOrgYPO).ifPresent (a->pollutionVO.setData (a.getValue ()));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_QUARTER)){
QueryWrapper<RStatPollutionOrgQPO> rStatPollutionOrgQPOQueryWrapper = new QueryWrapper<> ();
rStatPollutionOrgQPOQueryWrapper.eq ("org_id", detpid).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionOrgQPO rStatPollutionOrgQPO = rStatPollutionOrgQPOMapper.selectOne (rStatPollutionOrgQPOQueryWrapper);
;
Optional.ofNullable (rStatPollutionOrgQPO).ifPresent (a->pollutionVO.setData (a.getValue ()));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_MONTH)){
if (harmonicPublicParam.getType() == 0) {
PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam();
pmsDeviceInfoParam.setDeptIndex(harmonicPublicParam.getDeptIndex());
//获取统计类型
pmsDeviceInfoParam.setStatisticalType(harmonicPublicParam.getStatisticalType());
//获取主网台账信息
List<PmsGeneralDeviceDTO> deviceList = pmsGeneralDeviceInfoClient.getPmsDeviceInfoWithInOrg(pmsDeviceInfoParam).getData();
deviceList.forEach(temp->{
PollutionVO pollutionVO = new PollutionVO ();
String detpid = temp.getIndex ();
String name =temp.getName ();
List<String> powers = temp.getPowerrIdList ( );
pollutionVO.setId (detpid);
pollutionVO.setName (name);
pollutionVO.setData (-1.0);
setData(harmonicPublicParam, pollutionType, searchBeginTime, pollutionVO, detpid);
QueryWrapper<RStatPollutionOrgMPO> rStatPollutionOrgMPOQueryWrapper = new QueryWrapper<> ();
rStatPollutionOrgMPOQueryWrapper.eq ("org_id", detpid).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionOrgMPO rStatPollutionOrgMPO = rStatPollutionOrgMPOMapper.selectOne (rStatPollutionOrgMPOQueryWrapper);
;
Optional.ofNullable (rStatPollutionOrgMPO).ifPresent (a->pollutionVO.setData (a.getValue ()));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_DAY)){
QueryWrapper<RStatPollutionOrgDPO> rStatPollutionOrgDPOQueryWrapper = new QueryWrapper<> ();
rStatPollutionOrgDPOQueryWrapper.eq ("org_id", detpid).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionOrgDPO rStatPollutionOrgDPO = rStatPollutionOrgDPOMapper.selectOne (rStatPollutionOrgDPOQueryWrapper);
;
Optional.ofNullable (rStatPollutionOrgDPO).ifPresent (a->pollutionVO.setData (a.getValue ()));
}
List<PollutionVO> subPollutionVO = new ArrayList<>();
subIndexes.forEach (subIndex->{
PollutionVO pollutionsubVO = new PollutionVO ();
PollutionSubstationDTO pollutionSubstationDTO = lineFeignClient.getSubstationInfo(subIndex).getData();
String id = pollutionSubstationDTO.getId ( );
pollutionsubVO.setId (id);
pollutionsubVO.setName ( pollutionSubstationDTO.getName ());
pollutionsubVO.setPid (temp.getIndex ());
pollutionsubVO.setData (-1.0);
if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_YEAR) ){
QueryWrapper<RStatPollutionSubstationYPO> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationYPO rStatPollutionSubstationYPO = pollutionSubstationYPOMapper.selectOne (wrapper);
Optional.ofNullable (rStatPollutionSubstationYPO).ifPresent (t->pollutionsubVO.setData (t.getValue ()));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_QUARTER)){
QueryWrapper<RStatPollutionSubstationQPO> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationQPO rStatPollutionSubstationQPO = pollutionSubstationQPOMapper.selectOne (wrapper);
Optional.ofNullable (rStatPollutionSubstationQPO).ifPresent (t->pollutionsubVO.setData (t.getValue ()));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_MONTH)){
QueryWrapper<RStatPollutionSubstationM> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationM rStatPollutionSubstationM = pollutionSubstationMMapper.selectOne (wrapper);
Optional.ofNullable (rStatPollutionSubstationM).ifPresent (t->pollutionsubVO.setData (t.getValue ()));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_DAY)){
QueryWrapper<RStatPollutionSubstationDPO> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationDPO rStatPollutionSubstationDPO = pollutionSubstationDPOMapper.selectOne (wrapper);
Optional.ofNullable (rStatPollutionSubstationDPO).ifPresent (t->pollutionsubVO.setData (t.getValue ()));
//子集变电站
List<PollutionVO> powersVO = new ArrayList<>();
PmsStatationStatInfoParam param=new PmsStatationStatInfoParam();
param.setPowerIds(powers);
List<PmsStatationStatInfoDTO> data = statationStatClient.getStatationStatInfo(param).getData();
//去重解决重复数据
ArrayList<PmsStatationStatInfoDTO> dsData = data.stream().collect(Collectors.collectingAndThen
(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(o -> o.getPowerId()))), ArrayList::new));
Map<String, Double> stringDoubleMap = setPmsSubData(harmonicPublicParam, pollutionType, searchBeginTime, powers);
if(CollectionUtil.isNotEmpty(data)){
dsData.forEach(power->{
PollutionVO pollutionsubVO = new PollutionVO ();
pollutionsubVO.setId (power.getPowerId());
pollutionsubVO.setName ( power.getPowerName ());
pollutionsubVO.setPid (temp.getIndex ());
if(stringDoubleMap.containsKey(power.getPowerId())){
pollutionsubVO.setData(stringDoubleMap.get(power.getPowerId()));
}
powersVO.add (pollutionsubVO) ;
});
}
subPollutionVO.add (pollutionsubVO) ;
pollutionVO.setChildren (powersVO);
list.add (pollutionVO);
});
pollutionVO.setChildren (subPollutionVO);
list.add (pollutionVO);
});
}else{
harmonicPublicParam.setServerName(generalInfo.getMicroServiceName());
List<GeneralDeviceDTO> sub = generalDeviceInfoClient.getPracticalRunDeviceInfo(harmonicPublicParam).getData();
sub.forEach (temp ->{
PollutionVO pollutionVO = new PollutionVO ();
String detpid = temp.getIndex ();
String name =temp.getName ();
List<String> subIndexes = temp.getSubIndexes ( );
pollutionVO.setId (detpid);
pollutionVO.setName (name);
pollutionVO.setData (-1.0);
setData(harmonicPublicParam, pollutionType, searchBeginTime, pollutionVO, detpid);
List<PollutionVO> subPollutionVO = new ArrayList<>();
subIndexes.forEach (subIndex->{
PollutionVO pollutionsubVO = new PollutionVO ();
PollutionSubstationDTO pollutionSubstationDTO = lineFeignClient.getSubstationInfo(subIndex).getData();
String id = pollutionSubstationDTO.getId ( );
pollutionsubVO.setId (id);
pollutionsubVO.setName ( pollutionSubstationDTO.getName ());
pollutionsubVO.setPid (temp.getIndex ());
pollutionsubVO.setData (-1.0);
setSubData(harmonicPublicParam, pollutionType, searchBeginTime, pollutionsubVO, id);
subPollutionVO.add (pollutionsubVO) ;
});
pollutionVO.setChildren (subPollutionVO);
list.add (pollutionVO);
});
}
if (!CollectionUtils.isEmpty(list)){
return list.stream().sorted(Comparator.comparing(PollutionVO::getData).reversed().thenComparing(PollutionVO::getName)).collect(Collectors.toList());
@@ -268,6 +254,117 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
return list;
}
private Map<String,Double> setPmsSubData(HarmonicPublicParam harmonicPublicParam, String pollutionType, String searchBeginTime, List<String> id) {
if(Objects.equals (harmonicPublicParam.getReportFlag (), BizParamConstant.STAT_BIZ_YEAR) ){
QueryWrapper<RStatPollutionSubstationYPO> wrapper = new QueryWrapper<> ();
wrapper.in ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
List<RStatPollutionSubstationYPO> s = pollutionSubstationYPOMapper.selectList(wrapper);
return s.stream().collect(Collectors.toMap(RStatPollutionSubstationYPO::getSubstationId, RStatPollutionSubstationYPO::getValue));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_QUARTER)){
QueryWrapper<RStatPollutionSubstationQPO> wrapper = new QueryWrapper<> ();
wrapper.in ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
List<RStatPollutionSubstationQPO> s = pollutionSubstationQPOMapper.selectList(wrapper);
return s.stream().collect(Collectors.toMap(RStatPollutionSubstationQPO::getSubstationId, RStatPollutionSubstationQPO::getValue));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_MONTH)){
QueryWrapper<RStatPollutionSubstationM> wrapper = new QueryWrapper<> ();
wrapper.in ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
List<RStatPollutionSubstationM> s = pollutionSubstationMMapper.selectList(wrapper);
return s.stream().collect(Collectors.toMap(RStatPollutionSubstationM::getSubstationId, RStatPollutionSubstationM::getValue));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_DAY)){
QueryWrapper<RStatPollutionSubstationDPO> wrapper = new QueryWrapper<> ();
wrapper.in ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
List<RStatPollutionSubstationDPO> s = pollutionSubstationDPOMapper.selectList(wrapper);
return s.stream().collect(Collectors.toMap(RStatPollutionSubstationDPO::getSubstationId, RStatPollutionSubstationDPO::getValue));
}
return null;
}
private void setSubData(HarmonicPublicParam harmonicPublicParam, String pollutionType, String searchBeginTime, PollutionVO pollutionsubVO, String id) {
if(Objects.equals (harmonicPublicParam.getReportFlag (), BizParamConstant.STAT_BIZ_YEAR) ){
QueryWrapper<RStatPollutionSubstationYPO> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationYPO rStatPollutionSubstationYPO = pollutionSubstationYPOMapper.selectOne (wrapper);
Optional.ofNullable (rStatPollutionSubstationYPO).ifPresent (t->pollutionsubVO.setData (t.getValue ()));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_QUARTER)){
QueryWrapper<RStatPollutionSubstationQPO> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationQPO rStatPollutionSubstationQPO = pollutionSubstationQPOMapper.selectOne (wrapper);
Optional.ofNullable (rStatPollutionSubstationQPO).ifPresent (t->pollutionsubVO.setData (t.getValue ()));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_MONTH)){
QueryWrapper<RStatPollutionSubstationM> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationM rStatPollutionSubstationM = pollutionSubstationMMapper.selectOne (wrapper);
Optional.ofNullable (rStatPollutionSubstationM).ifPresent (t->pollutionsubVO.setData (t.getValue ()));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_DAY)){
QueryWrapper<RStatPollutionSubstationDPO> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationDPO rStatPollutionSubstationDPO = pollutionSubstationDPOMapper.selectOne (wrapper);
Optional.ofNullable (rStatPollutionSubstationDPO).ifPresent (t->pollutionsubVO.setData (t.getValue ()));
}
}
private void setData(HarmonicPublicParam harmonicPublicParam, String pollutionType, String searchBeginTime, PollutionVO pollutionVO, String detpid) {
if(Objects.equals (harmonicPublicParam.getReportFlag (), BizParamConstant.STAT_BIZ_YEAR) ){
QueryWrapper<RStatPollutionOrgYPO> rStatPollutionOrgYPOQueryWrapper = new QueryWrapper<> ();
rStatPollutionOrgYPOQueryWrapper.eq ("org_id", detpid).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionOrgYPO rStatPollutionOrgYPO = rStatPollutionOrgYPOMapper.selectOne (rStatPollutionOrgYPOQueryWrapper);
;
Optional.ofNullable (rStatPollutionOrgYPO).ifPresent (a->pollutionVO.setData (a.getValue ()));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_QUARTER)){
QueryWrapper<RStatPollutionOrgQPO> rStatPollutionOrgQPOQueryWrapper = new QueryWrapper<> ();
rStatPollutionOrgQPOQueryWrapper.eq ("org_id", detpid).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionOrgQPO rStatPollutionOrgQPO = rStatPollutionOrgQPOMapper.selectOne (rStatPollutionOrgQPOQueryWrapper);
;
Optional.ofNullable (rStatPollutionOrgQPO).ifPresent (a->pollutionVO.setData (a.getValue ()));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_MONTH)){
QueryWrapper<RStatPollutionOrgMPO> rStatPollutionOrgMPOQueryWrapper = new QueryWrapper<> ();
rStatPollutionOrgMPOQueryWrapper.eq ("org_id", detpid).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionOrgMPO rStatPollutionOrgMPO = rStatPollutionOrgMPOMapper.selectOne (rStatPollutionOrgMPOQueryWrapper);
;
Optional.ofNullable (rStatPollutionOrgMPO).ifPresent (a->pollutionVO.setData (a.getValue ()));
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_DAY)){
QueryWrapper<RStatPollutionOrgDPO> rStatPollutionOrgDPOQueryWrapper = new QueryWrapper<> ();
rStatPollutionOrgDPOQueryWrapper.eq ("org_id", detpid).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionOrgDPO rStatPollutionOrgDPO = rStatPollutionOrgDPOMapper.selectOne (rStatPollutionOrgDPOQueryWrapper);
;
Optional.ofNullable (rStatPollutionOrgDPO).ifPresent (a->pollutionVO.setData (a.getValue ()));
}
}
/**
* @Description: getSubstationInfoById
* @Param: [param]
@@ -277,52 +374,84 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
*/
@Override
public List<PollutionSubstationDTO> getSubstationInfoById(HarmonicPublicParam deptParam) {
deptParam.setServerName(generalInfo.getMicroServiceName());
List<PollutionSubstationDTO> list = new ArrayList<>();
List<GeneralDeviceDTO> sub = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(deptParam).getData();
String pollutionType = deptParam.getStatisticalType ( ).getId ();
String searchBeginTime = deptParam.getSearchBeginTime ( ).substring (0,10);
sub.forEach(item->{
PollutionSubstationDTO pollutionSubstationDTO = lineFeignClient.getSubstationInfo(item.getIndex()).getData();
String id = pollutionSubstationDTO.getId ();
if(Objects.equals (deptParam.getReportFlag (),BizParamConstant.STAT_BIZ_YEAR) ){
QueryWrapper<RStatPollutionSubstationYPO> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationYPO rStatPollutionSubstationYPO = pollutionSubstationYPOMapper.selectOne (wrapper);
List<PollutionSubstationDTO> list = new ArrayList<>();
Optional.ofNullable (rStatPollutionSubstationYPO).ifPresent (t->pollutionSubstationDTO.setData (t.getValue ()));
}else if(Objects.equals (deptParam.getReportFlag (),BizParamConstant.STAT_BIZ_QUARTER)){
QueryWrapper<RStatPollutionSubstationQPO> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationQPO rStatPollutionSubstationQPO = pollutionSubstationQPOMapper.selectOne (wrapper);
if (deptParam.getType() == 0) {
PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam();
pmsDeviceInfoParam.setDeptIndex(deptParam.getDeptIndex());
//获取统计类型
pmsDeviceInfoParam.setStatisticalType(deptParam.getStatisticalType());
//获取主网台账信息
List<PmsGeneralDeviceDTO> deviceList = pmsGeneralDeviceInfoClient.getPmsDeviceInfoWithInOrg(pmsDeviceInfoParam).getData();
deviceList.forEach(temp->{
List<String> powers = temp.getPowerrIdList ( );
PmsStatationStatInfoParam param=new PmsStatationStatInfoParam();
param.setPowerIds(powers);
List<PmsStatationStatInfoDTO> data = statationStatClient.getStatationStatInfo(param).getData();
//去重解决重复数据
ArrayList<PmsStatationStatInfoDTO> dsData = data.stream().collect(Collectors.collectingAndThen
(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(o -> o.getPowerId()))), ArrayList::new));
Map<String, Double> stringDoubleMap = setPmsSubData(deptParam, pollutionType, searchBeginTime, powers);
if(CollectionUtil.isNotEmpty(data)){
dsData.forEach(power->{
PollutionSubstationDTO dto=new PollutionSubstationDTO();
dto.setId(power.getPowerId());
dto.setName(power.getPowerName());
dto.setVoltageLevel(power.getPowerVoltageLevel());
if(stringDoubleMap.containsKey(power.getPowerId())){
dto.setData(stringDoubleMap.get(power.getPowerId()));
}
list.add (dto) ;
});
}
});
}else{
deptParam.setServerName(generalInfo.getMicroServiceName());
List<GeneralDeviceDTO> sub = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(deptParam).getData();
sub.forEach(item->{
PollutionSubstationDTO pollutionSubstationDTO = lineFeignClient.getSubstationInfo(item.getIndex()).getData();
String id = pollutionSubstationDTO.getId ();
if(Objects.equals (deptParam.getReportFlag (),BizParamConstant.STAT_BIZ_YEAR) ){
QueryWrapper<RStatPollutionSubstationYPO> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationYPO rStatPollutionSubstationYPO = pollutionSubstationYPOMapper.selectOne (wrapper);
Optional.ofNullable (rStatPollutionSubstationQPO).ifPresent (t->pollutionSubstationDTO.setData (t.getValue ()));
}else if(Objects.equals (deptParam.getReportFlag (),BizParamConstant.STAT_BIZ_MONTH)){
QueryWrapper<RStatPollutionSubstationM> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationM rStatPollutionSubstationM = pollutionSubstationMMapper.selectOne (wrapper);
Optional.ofNullable (rStatPollutionSubstationYPO).ifPresent (t->pollutionSubstationDTO.setData (t.getValue ()));
}else if(Objects.equals (deptParam.getReportFlag (),BizParamConstant.STAT_BIZ_QUARTER)){
QueryWrapper<RStatPollutionSubstationQPO> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationQPO rStatPollutionSubstationQPO = pollutionSubstationQPOMapper.selectOne (wrapper);
Optional.ofNullable (rStatPollutionSubstationM).ifPresent (t->pollutionSubstationDTO.setData (t.getValue ()));
Optional.ofNullable (rStatPollutionSubstationQPO).ifPresent (t->pollutionSubstationDTO.setData (t.getValue ()));
}else if(Objects.equals (deptParam.getReportFlag (),BizParamConstant.STAT_BIZ_MONTH)){
QueryWrapper<RStatPollutionSubstationM> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationM rStatPollutionSubstationM = pollutionSubstationMMapper.selectOne (wrapper);
}else if(Objects.equals (deptParam.getReportFlag (),BizParamConstant.STAT_BIZ_DAY)){
QueryWrapper<RStatPollutionSubstationDPO> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationDPO rStatPollutionSubstationDPO = pollutionSubstationDPOMapper.selectOne (wrapper);
Optional.ofNullable (rStatPollutionSubstationM).ifPresent (t->pollutionSubstationDTO.setData (t.getValue ()));
Optional.ofNullable (rStatPollutionSubstationDPO).ifPresent (t->pollutionSubstationDTO.setData (t.getValue ()));
}
}else if(Objects.equals (deptParam.getReportFlag (),BizParamConstant.STAT_BIZ_DAY)){
QueryWrapper<RStatPollutionSubstationDPO> wrapper = new QueryWrapper<> ();
wrapper.eq ("substation_id",id).
eq ("pollution_type", pollutionType).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
RStatPollutionSubstationDPO rStatPollutionSubstationDPO = pollutionSubstationDPOMapper.selectOne (wrapper);
list.add(pollutionSubstationDTO);
});
Optional.ofNullable (rStatPollutionSubstationDPO).ifPresent (t->pollutionSubstationDTO.setData (t.getValue ()));
}
list.add(pollutionSubstationDTO);
});
}
if (!CollectionUtils.isEmpty(list)){
return list.stream().sorted(Comparator.comparing(PollutionSubstationDTO::getData).reversed().thenComparing(PollutionSubstationDTO::getName)).collect(Collectors.toList());
}
@@ -340,8 +469,6 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
public List<PollutionLineDTO> getLineInfoById(HarmonicPublicParam harmonicPublicParam) {
harmonicPublicParam.setServerName(generalInfo.getMicroServiceName());
List<PollutionLineDTO> list = new ArrayList<>();
List<String> line = new ArrayList<>();
String pollutionType = harmonicPublicParam.getStatisticalType ( ).getId ();
String code = harmonicPublicParam.getStatisticalType ( ).getCode ();
@@ -360,29 +487,100 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
if (StringUtils.isBlank(RequestUtil.getDeptIndex())){
return list;
}
List<GeneralDeviceDTO> sub = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(harmonicPublicParam).getData();
sub.forEach(item->{
if (Objects.equals(harmonicPublicParam.getId(),item.getIndex())){
if (!CollectionUtils.isEmpty(item.getLineIndexes())){
line.addAll(item.getLineIndexes());
if (harmonicPublicParam.getType() == 0) {
PmsStatationStatInfoParam param=new PmsStatationStatInfoParam();
param.setPowerIds(Arrays.asList(harmonicPublicParam.getId()));
List<PmsStatationStatInfoDTO> data = statationStatClient.getStatationStatInfo(param).getData();
if(CollectionUtil.isNotEmpty(data)){
List<String> monitorId = data.stream().map(PmsStatationStatInfoDTO::getMonitorId).collect(Collectors.toList());
List<RMpPollutionDPO> lineData = rMpPollutionDPOMapper.selectMaxList ( monitorId,pollutionType,searchBeginTime);
Map<String, Double> lineMap = lineData.stream().collect(Collectors.toMap(RMpPollutionDPO::getLineId, RMpPollutionDPO::getValue));
PollutionLineDTO dto;
for (PmsStatationStatInfoDTO power : data) {
dto=new PollutionLineDTO();
dto.setId(power.getMonitorId());
dto.setName(power.getMonitorName());
dto.setPowerCompany(power.getOrgName());
dto.setSubstation(power.getPowerName());
dto.setSubstationId(power.getPowerId());
dto.setBusBar(power.getGeneratrixName());
if(lineMap.containsKey(power.getMonitorId())){
dto.setData(lineMap.get(power.getMonitorId()));
}
list.add (dto) ;
}
}
});
if (!CollectionUtils.isEmpty(line)){
paramDTO.setLineList(line);
list = lineFeignClient.getLineInfo(paramDTO).getData();
List<RMpPollutionDPO> lineData = rMpPollutionDPOMapper.selectMaxList ( line,pollutionType,searchBeginTime);
if (!CollectionUtils.isEmpty(lineData)){
list.stream().map(list1->lineData.stream().filter(list2-> Objects.equals(list1.getId(),list2.getLineId ())).findAny().map(m->{
list1.setData (m.getValue ());
return list1;
})).collect(Collectors.toList());
}else{
List<String> line = new ArrayList<>();
List<GeneralDeviceDTO> sub = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(harmonicPublicParam).getData();
sub.forEach(item->{
if (Objects.equals(harmonicPublicParam.getId(),item.getIndex())){
if (!CollectionUtils.isEmpty(item.getLineIndexes())){
line.addAll(item.getLineIndexes());
}
}
});
if (!CollectionUtils.isEmpty(line)){
paramDTO.setLineList(line);
list = lineFeignClient.getLineInfo(paramDTO).getData();
List<RMpPollutionDPO> lineData = rMpPollutionDPOMapper.selectMaxList ( line,pollutionType,searchBeginTime);
if (!CollectionUtils.isEmpty(lineData)){
list.stream().map(list1->lineData.stream().filter(list2-> Objects.equals(list1.getId(),list2.getLineId ())).findAny().map(m->{
list1.setData (m.getValue ());
return list1;
})).collect(Collectors.toList());
}
} else {
return list;
}
} else {
return list;
}
return list.stream().sorted(Comparator.comparing(PollutionLineDTO::getData).reversed().thenComparing(PollutionLineDTO::getName)).collect(Collectors.toList());
}
@Override
public List<PollutionLineDTO> getLineRank(HarmonicPublicParam param) {
String pollutionType = param.getStatisticalType ( ).getId ();
String searchBeginTime = "";
if(Objects.equals (param.getReportFlag (),BizParamConstant.STAT_BIZ_YEAR) ){
searchBeginTime = param.getSearchBeginTime ( ).substring (0, 4)+"%";
}else if(Objects.equals (param.getReportFlag (),BizParamConstant.STAT_BIZ_MONTH)){
searchBeginTime = param.getSearchBeginTime ( ).substring (0, 7)+"%";
}else if(Objects.equals (param.getReportFlag (),BizParamConstant.STAT_BIZ_DAY)) {
searchBeginTime = param.getSearchBeginTime ( ).substring (0, 10)+"%";
}
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);
lineData.sort((item1, item2) -> item2.getValue().compareTo(item1.getValue()));
if (lineData.size() > Param.UP_LIMIT) {
lineData = lineData.subList(Param.DOWN_LIMIT, Param.UP_LIMIT);
}
List<Monitor> data = monitorClient.getMonitorList(monitorIdList).getData();
}
deviceList.forEach(temp->{
});
return null;
}
}