合并代码

This commit is contained in:
2022-12-08 18:58:51 +08:00
parent 0615189afe
commit 9b8af7945a
94 changed files with 4917 additions and 103 deletions

View File

@@ -0,0 +1,17 @@
package com.njcn.harmonic.service.specialanalysis;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.harmonic.pojo.param.StreamReverseParam;
import com.njcn.harmonic.pojo.vo.PermeabilityVO;
/**
* @Title PermeabilityService
* @Package com.njcn.harmonic.service.specialanalysis
* @Author jianghaifei
* @Date 2022-11-28 11:27
* @Version V1.0
*/
public interface PermeabilityService {
Page<PermeabilityVO> getPermeabilityList(StreamReverseParam streamReverseParam);
}

View File

@@ -0,0 +1,13 @@
package com.njcn.harmonic.service.specialanalysis;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.harmonic.pojo.po.RMpEmissionIExcessRateM;
/**
* @author jianghf
* @description 针对表【r_mp__emission_i_excess_rate_m(风电场发射特性-月表/各次谐波电流超标占比)】的数据库操作Service
* @createDate 2022-11-30 18:55:11
*/
public interface RMpEmissionIExcessRateMService extends IService<RMpEmissionIExcessRateM> {
}

View File

@@ -0,0 +1,13 @@
package com.njcn.harmonic.service.specialanalysis;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.harmonic.pojo.po.RMpEmissionIM;
/**
* @author jianghf
* @description 针对表【r_mp__emission_i_m(风电场发射特性-月表/各次谐波电流含有率)】的数据库操作Service
* @createDate 2022-11-30 18:55:11
*/
public interface RMpEmissionIMService extends IService<RMpEmissionIM> {
}

View File

@@ -0,0 +1,21 @@
package com.njcn.harmonic.service.specialanalysis;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.harmonic.pojo.param.RMpEmissionParam;
import com.njcn.harmonic.pojo.po.RMpEmissionM;
import com.njcn.harmonic.pojo.vo.RMpEmissionChartVO;
import com.njcn.harmonic.pojo.vo.RMpEmissionVO;
import java.util.List;
/**
* @author jianghf
* @description 针对表【r_mp__emission_m(风电场发射特性-月表)】的数据库操作Service
* @createDate 2022-11-30 18:55:11
*/
public interface RMpEmissionMService extends IService<RMpEmissionM> {
List<RMpEmissionVO> getRMpEmissionList(RMpEmissionParam rMpEmissionParam);
RMpEmissionChartVO getRMpEmissionChart(RMpEmissionParam rMpEmissionParam);
}

View File

@@ -0,0 +1,21 @@
package com.njcn.harmonic.service.specialanalysis;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.harmonic.pojo.param.RMpInfluenceParam;
import com.njcn.harmonic.pojo.po.RMpInfluenceM;
import com.njcn.harmonic.pojo.vo.RMpInfluenceChartVO;
import com.njcn.harmonic.pojo.vo.RMpInfluenceVO;
import java.util.List;
/**
* @author jianghf
* @description 针对表【r_mp__influence_m(风电场影响特性-月表)】的数据库操作Service
* @createDate 2022-12-01 19:28:15
*/
public interface RMpInfluenceMService extends IService<RMpInfluenceM> {
List<RMpInfluenceVO> getRMpInfluenceList(RMpInfluenceParam rMpInfluenceParam);
RMpInfluenceChartVO getRMpInfluenceChart(RMpInfluenceParam rMpInfluenceParam);
}

View File

@@ -0,0 +1,13 @@
package com.njcn.harmonic.service.specialanalysis;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.harmonic.pojo.po.RMpInfluenceVExcessRateM;
/**
* @author jianghf
* @description 针对表【r_mp__influence_v_excess_rate_m(风电场影响特性-月表/各次谐波电压超标占比)】的数据库操作Service
* @createDate 2022-12-01 19:28:15
*/
public interface RMpInfluenceVExcessRateMService extends IService<RMpInfluenceVExcessRateM> {
}

View File

@@ -0,0 +1,13 @@
package com.njcn.harmonic.service.specialanalysis;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.harmonic.pojo.po.RMpInfluenceVM;
/**
* @author jianghf
* @description 针对表【r_mp__influence_v_m(风电场影响特性-月表/各次谐波电压含有率)】的数据库操作Service
* @createDate 2022-12-01 19:28:15
*/
public interface RMpInfluenceVMService extends IService<RMpInfluenceVM> {
}

View File

@@ -0,0 +1,13 @@
package com.njcn.harmonic.service.specialanalysis;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.harmonic.pojo.po.RStatOrgPvPermeabilityM;
/**
* @author jianghf
* @description 针对表【r_stat_org_pv_permeability_m(分布式光伏-台区渗透率统计月表)】的数据库操作Service
* @createDate 2022-11-28 16:14:21
*/
public interface RStatOrgPvPermeabilityMService extends IService<RStatOrgPvPermeabilityM> {
}

View File

@@ -0,0 +1,24 @@
package com.njcn.harmonic.service.specialanalysis;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.harmonic.pojo.param.StreamReverseParam;
import com.njcn.harmonic.pojo.vo.StreamReverseCountyVO;
import com.njcn.harmonic.pojo.vo.StreamReverseOrgVO;
/**
* @Title StreamReverseService
* @Package com.njcn.harmonic.service.specialanalysis
* @Author jianghaifei
* @Date 2022-11-25 11:26
* @Version V1.0
*/
public interface StreamReverseService {
/**
* 潮流倒送分析-单位
* @param streamReverseParam
* @return
*/
Page<StreamReverseOrgVO> streamReverseByOrg(StreamReverseParam streamReverseParam);
Page<StreamReverseCountyVO> streamReverseByCounty(StreamReverseParam streamReverseParam);
}

View File

@@ -0,0 +1,13 @@
package com.njcn.harmonic.service.specialanalysis;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.harmonic.pojo.po.WfOfOverviewPO;
/**
* @author yzh
* @description 针对表【wf_of_overview(风电场概况)】的数据库操作Service
* @createDate 2022-12-05 14:17:26
*/
public interface WfOfOverviewService extends IService<WfOfOverviewPO> {
}

View File

@@ -0,0 +1,13 @@
package com.njcn.harmonic.service.specialanalysis;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.harmonic.pojo.po.WfOfOverviewVoltagePO;
/**
* @author yzh
* @description 针对表【wf_of_overview_voltage(风电场概况-按电压等级)】的数据库操作Service
* @createDate 2022-12-05 14:22:44
*/
public interface WfOfOverviewVoltageService extends IService<WfOfOverviewVoltagePO> {
}

View File

@@ -0,0 +1,56 @@
package com.njcn.harmonic.service.specialanalysis;
import com.njcn.harmonic.pojo.param.RMpInfluenceParam;
import com.njcn.harmonic.pojo.vo.RStatOrgWfIndexOverviewVO;
import java.util.List;
/**
* 专项分析-风电场-指标总览
*
* @author yzh
* @date 2022/11/30
*/
public interface WindFarmIndexOverview {
/**
* 获取风电场指标总览-电流指标
*
* @param param 条件参数
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
* @author yzh
* @date 2022/11/30
*/
List<RStatOrgWfIndexOverviewVO> getHarmonicCurrent(RMpInfluenceParam param);
/**
* 获取风电场指标总览-电压指标
*
* @param param 条件参数
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
* @author yzh
* @date 2022/11/30
*/
List<RStatOrgWfIndexOverviewVO> getHarmonicVoltage(RMpInfluenceParam param);
/**
* 获取风电场指标总览-各单位指标
*
* @param param 条件参数
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RStatOrgWfIndexOverviewVO>>
* @author yzh
* @date 2022/11/30
*/
List<RStatOrgWfIndexOverviewVO> getUnitCurrent(RMpInfluenceParam param);
/**
* 获取风电场指标总览-各单位电压
*
* @param param 条件参数
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RStatOrgWfIndexOverviewVO>>
* @author yzh
* @date 2022/12/1
*/
List<RStatOrgWfIndexOverviewVO> getUnitVoltage(RMpInfluenceParam param);
}

View File

@@ -0,0 +1,47 @@
package com.njcn.harmonic.service.specialanalysis;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.harmonic.pojo.vo.WfOfOverviewVO;
import com.njcn.harmonic.pojo.vo.WfOfOverviewVoltageVO;
import java.util.List;
/**
* 专项分析-风电场-概述
*
* @author yzh
* @date 2022/11/30
*/
public interface WindFarmOverviewService {
/**
* 获取风电场概述地图
*
* @param param 条件参数
* @return java.util.List<com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>
* @author yzh
* @date 2022/12/5
*/
List<?> getWindFarmOverviewMap(StatisticsBizBaseParam param);
/**
* 获取风电场概述数值
*
* @param param 条件参数
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
* @author yzh
* @date 2022/11/30
*/
WfOfOverviewVO getWindFarmOverviewValues(StatisticsBizBaseParam param);
/**
* 获取风电场概述环形图
*
* @param param 条件参数
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
* @author yzh
* @date 2022/12/5
*/
List<WfOfOverviewVoltageVO> getWindFarmOverviewCircularGraph(StatisticsBizBaseParam param);
}

View File

@@ -0,0 +1,71 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.harmonic.mapper.specialanalysis.RStatOrgPvPermeabilityMMapper;
import com.njcn.harmonic.pojo.param.StreamReverseParam;
import com.njcn.harmonic.pojo.vo.PermeabilityVO;
import com.njcn.harmonic.service.specialanalysis.PermeabilityService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Title PermeabilityServiceImpl
* @Package com.njcn.harmonic.service.specialanalysis.impl
* @Author jianghaifei
* @Date 2022-11-28 11:29
* @Version V1.0
*/
@Service
@RequiredArgsConstructor
public class PermeabilityServiceImpl implements PermeabilityService {
private final RStatOrgPvPermeabilityMMapper rStatOrgPvPermeabilityMMapper;
private final DeptFeignClient deptFeignClient;
private final DicDataFeignClient dicDataFeignClient;
/***
* 渗透率分析
* @author jianghaifei
* @date 2022-11-28 16:22
* @param streamReverseParam
* @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.njcn.harmonic.pojo.vo.PermeabilityVO>
*/
@Override
public Page<PermeabilityVO> getPermeabilityList(StreamReverseParam streamReverseParam) {
//提取参数
String id = streamReverseParam.getId(); //单位
String startTime = streamReverseParam.getStartTime(); //开始时间
String endTime = streamReverseParam.getEndTime(); //结束时间
Integer pageNum = streamReverseParam.getPageNum() != null && streamReverseParam.getPageNum() != 0 ? streamReverseParam.getPageNum() : 1; //页码
Integer pageSize = streamReverseParam.getPageSize() != null && streamReverseParam.getPageSize() != 0 ? streamReverseParam.getPageSize() : 10; //页面尺寸
//获取部门信息
// List<DeptDTO> data = deptFeignClient.getDeptDescendantIndexes(id, WebUtil.filterDeptType()).getData();
List<Dept> data = deptFeignClient.getDirectSonSelf(id).getData(); //获取当前部门和子部门信息
Map<String, Dept> deptMap = data.stream().collect(Collectors.toMap(Dept::getCode, dept -> dept));
List<String> deptCodes = data.stream().map(Dept::getCode).collect(Collectors.toList());
//获取各渗透率字典
List<DictData> rateList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.PERMEABILITY_TYPE.getCode()).getData();
//将渗透率字典转换为查询条件
Map<String, Object> condMap = rateList.stream().collect(Collectors.toMap(DictData::getCode, DictData::getId));
condMap.put("orgIdList", deptCodes);
condMap.put("startTime", startTime);
condMap.put("endTime", endTime);
Page<PermeabilityVO> permeabilityList = rStatOrgPvPermeabilityMMapper.getPermeabilityList(new Page<>(pageNum, pageSize), condMap);
List<PermeabilityVO> records = permeabilityList.getRecords();
records.forEach(item -> {
item.setOrgName(deptMap.get(item.getOrgId()).getName());
});
return permeabilityList;
}
}

View File

@@ -0,0 +1,22 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.mapper.specialanalysis.RMpEmissionIExcessRateMMapper;
import com.njcn.harmonic.pojo.po.RMpEmissionIExcessRateM;
import com.njcn.harmonic.service.specialanalysis.RMpEmissionIExcessRateMService;
import org.springframework.stereotype.Service;
/**
* @author jianghf
* @description 针对表【r_mp__emission_i_excess_rate_m(风电场发射特性-月表/各次谐波电流超标占比)】的数据库操作Service实现
* @createDate 2022-11-30 18:55:11
*/
@Service
public class RMpEmissionIExcessRateMServiceImpl extends ServiceImpl<RMpEmissionIExcessRateMMapper, RMpEmissionIExcessRateM>
implements RMpEmissionIExcessRateMService{
}

View File

@@ -0,0 +1,22 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.mapper.specialanalysis.RMpEmissionIMMapper;
import com.njcn.harmonic.pojo.po.RMpEmissionIM;
import com.njcn.harmonic.service.specialanalysis.RMpEmissionIMService;
import org.springframework.stereotype.Service;
/**
* @author jianghf
* @description 针对表【r_mp__emission_i_m(风电场发射特性-月表/各次谐波电流含有率)】的数据库操作Service实现
* @createDate 2022-11-30 18:55:11
*/
@Service
public class RMpEmissionIMServiceImpl extends ServiceImpl<RMpEmissionIMMapper, RMpEmissionIM>
implements RMpEmissionIMService{
}

View File

@@ -0,0 +1,162 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.harmonic.mapper.specialanalysis.RMpEmissionMMapper;
import com.njcn.harmonic.pojo.param.RMpEmissionParam;
import com.njcn.harmonic.pojo.po.RMpEmissionIExcessRateM;
import com.njcn.harmonic.pojo.po.RMpEmissionIM;
import com.njcn.harmonic.pojo.po.RMpEmissionM;
import com.njcn.harmonic.pojo.vo.RMpEmissionChartVO;
import com.njcn.harmonic.pojo.vo.RMpEmissionIExcessRateMVO;
import com.njcn.harmonic.pojo.vo.RMpEmissionIMVO;
import com.njcn.harmonic.pojo.vo.RMpEmissionVO;
import com.njcn.harmonic.service.specialanalysis.RMpEmissionIExcessRateMService;
import com.njcn.harmonic.service.specialanalysis.RMpEmissionIMService;
import com.njcn.harmonic.service.specialanalysis.RMpEmissionMService;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author jianghf
* @description 针对表【r_mp__emission_m(风电场发射特性-月表)】的数据库操作Service实现
* @createDate 2022-11-30 18:55:11
*/
@Service
@RequiredArgsConstructor
public class RMpEmissionMServiceImpl extends ServiceImpl<RMpEmissionMMapper, RMpEmissionM>
implements RMpEmissionMService{
private final DeptFeignClient deptFeignClient;
private final RMpEmissionIMService rMpEmissionIMService;
private final RMpEmissionIExcessRateMService rMpEmissionIExcessRateMService;
private final MonitorClient monitorClient;
/***
* 风电场发射特性
* @author jianghaifei
* @date 2022-11-30 20:05
* @param rMpEmissionParam
* @return java.util.List<com.njcn.harmonic.pojo.vo.RMpEmissionVO>
*/
@Override
public List<RMpEmissionVO> getRMpEmissionList(RMpEmissionParam rMpEmissionParam) {
//提取参数
String id = rMpEmissionParam.getId(); //单位id
String startTime = rMpEmissionParam.getStartTime(); //开始时间
String endTime = rMpEmissionParam.getEndTime(); //结束时间
String monitorTag = rMpEmissionParam.getMonitorTag(); //监测点标签
if (StringUtils.isBlank(id)) {
throw new BusinessException(CommonResponseEnum.NO_DATA, "单位id不可为空");
}
//获取当前部门和子部门信息
List<Dept> data = deptFeignClient.getDirectSonSelf(id).getData();
Map<String, Dept> deptMap = data.stream().collect(Collectors.toMap(Dept::getCode, dept -> dept));
List<String> deptCodes = data.stream().map(Dept::getCode).collect(Collectors.toList());
//查询风电场信息
// PmsMonitorParam pmsMonitorParam = new PmsMonitorParam();
// pmsMonitorParam.setMonitorTag("风电场");
// pmsMonitorParam.setOrgIds(deptCodes);
// List<PmsMonitorDTO> monitorList = monitorClient.getMonitorInfoListByCond(pmsMonitorParam).getData();
// if (CollUtil.isEmpty(monitorList)) {
// new ArrayList<>();
// }
//查询风电场发射特性信息
LambdaQueryWrapper<RMpEmissionM> emissionWrapper = new LambdaQueryWrapper<>();
emissionWrapper.in(RMpEmissionM::getOrgNo, deptCodes)
.eq(StringUtils.isNotBlank(monitorTag), RMpEmissionM::getMonitorTag, monitorTag)
// .in(RMpEmissionM::getMeasurementPointId, monitorList)
.ge(StringUtils.isNotBlank(startTime), RMpEmissionM::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpEmissionM::getDataDate, endTime);
List<RMpEmissionM> emissionList = this.list(emissionWrapper);
if (CollUtil.isEmpty(emissionList)) {
return new ArrayList<>();
}
//封装返回数据
List<RMpEmissionVO> resultList = emissionList.stream().map(item -> {
RMpEmissionVO rMpEmissionVO = new RMpEmissionVO();
//单位ID、单位名称、负序电流不平衡度、负序电流不平衡度平均超标天数、负序电流不平衡度超标占比、各次谐波电流平均超标天数
BeanUtils.copyProperties(item, rMpEmissionVO);
rMpEmissionVO.setOrgName(deptMap.get(item.getOrgNo()).getName()); //单位名称
return rMpEmissionVO;
}).collect(Collectors.toList());
return resultList;
}
/**
* 发射特性-折线图
* @param rMpEmissionParam
* @return
*/
@Override
public RMpEmissionChartVO getRMpEmissionChart(RMpEmissionParam rMpEmissionParam) {
//提取参数
String id = rMpEmissionParam.getId(); //单位id
String monitorTag = rMpEmissionParam.getMonitorTag(); //监测点标签
String startTime = rMpEmissionParam.getStartTime(); //开始时间
String endTime = rMpEmissionParam.getEndTime(); //结束时间
if (StringUtils.isBlank(id)) {
throw new BusinessException(CommonResponseEnum.NO_DATA, "单位id不可为空");
}
//获取当前部门
Dept data = deptFeignClient.getDeptById(id).getData();
//查询风电场发射特性/各次谐波电流含有率信息
LambdaQueryWrapper<RMpEmissionIM> emissionIWrapper = new LambdaQueryWrapper<>();
emissionIWrapper.eq(RMpEmissionIM::getOrgNo, data.getCode())
// .in(RMpEmissionIM::getMeasurementPointId, monitorList)
.eq(StringUtils.isNotBlank(monitorTag), RMpEmissionIM::getMonitorTag, monitorTag)
.ge(StringUtils.isNotBlank(startTime), RMpEmissionIM::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpEmissionIM::getDataDate, endTime);
RMpEmissionIM emissionI = rMpEmissionIMService.list(emissionIWrapper).get(0);
//查询风电场发射特性/各次谐波电流超标占比
LambdaQueryWrapper<RMpEmissionIExcessRateM> emissionIExcessRateWrapper = new LambdaQueryWrapper<>();
emissionIExcessRateWrapper.eq(RMpEmissionIExcessRateM::getOrgNo, data.getCode())
// .in(RMpEmissionIExcessRateM::getMeasurementPointId, monitorList)
.eq(StringUtils.isNotBlank(monitorTag), RMpEmissionIExcessRateM::getMonitorTag, monitorTag)
.ge(StringUtils.isNotBlank(startTime), RMpEmissionIExcessRateM::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpEmissionIExcessRateM::getDataDate, endTime);
RMpEmissionIExcessRateM rate = rMpEmissionIExcessRateMService.list(emissionIExcessRateWrapper).get(0);
RMpEmissionChartVO rMpEmissionChartVO = new RMpEmissionChartVO();
RMpEmissionIMVO rMpEmissionIMVO = new RMpEmissionIMVO();
BeanUtils.copyProperties(emissionI, rMpEmissionIMVO);
rMpEmissionChartVO.setRMpEmissionIMVO(rMpEmissionIMVO);
RMpEmissionIExcessRateMVO rMpEmissionIExcessRateMVO = new RMpEmissionIExcessRateMVO();
BeanUtils.copyProperties(rate, rMpEmissionIExcessRateMVO);
rMpEmissionChartVO.setRMpEmissionIExcessRateMVO(rMpEmissionIExcessRateMVO);
return rMpEmissionChartVO;
}
}

View File

@@ -0,0 +1,155 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.harmonic.mapper.specialanalysis.RMpInfluenceMMapper;
import com.njcn.harmonic.pojo.param.RMpInfluenceParam;
import com.njcn.harmonic.pojo.po.RMpInfluenceM;
import com.njcn.harmonic.pojo.po.RMpInfluenceVExcessRateM;
import com.njcn.harmonic.pojo.po.RMpInfluenceVM;
import com.njcn.harmonic.pojo.vo.RMpInfluenceChartVO;
import com.njcn.harmonic.pojo.vo.RMpInfluenceVExcessRateMVO;
import com.njcn.harmonic.pojo.vo.RMpInfluenceVMVO;
import com.njcn.harmonic.pojo.vo.RMpInfluenceVO;
import com.njcn.harmonic.service.specialanalysis.RMpInfluenceMService;
import com.njcn.harmonic.service.specialanalysis.RMpInfluenceVExcessRateMService;
import com.njcn.harmonic.service.specialanalysis.RMpInfluenceVMService;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author jianghf
* @description 针对表【r_mp__influence_m(风电场影响特性-月表)】的数据库操作Service实现
* @createDate 2022-12-01 19:28:15
*/
@Service
@RequiredArgsConstructor
public class RMpInfluenceMServiceImpl extends ServiceImpl<RMpInfluenceMMapper, RMpInfluenceM>
implements RMpInfluenceMService{
private final DeptFeignClient deptFeignClient;
private final RMpInfluenceVMService rMpInfluenceVMService;
private final RMpInfluenceVExcessRateMService rMpInfluenceVExcessRateMService;
private final MonitorClient monitorClient;
@Override
public List<RMpInfluenceVO> getRMpInfluenceList(RMpInfluenceParam rMpInfluenceParam) {
//提取参数
String id = rMpInfluenceParam.getId(); //单位id
String startTime = rMpInfluenceParam.getStartTime(); //开始时间
String endTime = rMpInfluenceParam.getEndTime(); //结束时间
String monitorTag = rMpInfluenceParam.getMonitorTag(); //监测点标签
if (StringUtils.isBlank(id)) {
throw new BusinessException(CommonResponseEnum.NO_DATA, "单位id不可为空");
}
//获取当前部门和子部门信息
List<Dept> data = deptFeignClient.getDirectSonSelf(id).getData();
Map<String, Dept> deptMap = data.stream().collect(Collectors.toMap(Dept::getCode, dept -> dept));
List<String> deptCodes = data.stream().map(Dept::getCode).collect(Collectors.toList());
//查询风电场信息
// PmsMonitorParam pmsMonitorParam = new PmsMonitorParam();
// pmsMonitorParam.setMonitorTag("风电场");
// pmsMonitorParam.setOrgIds(deptCodes);
// List<PmsMonitorDTO> monitorList = monitorClient.getMonitorInfoListByCond(pmsMonitorParam).getData();
// if (CollUtil.isEmpty(monitorList)) {
// new ArrayList<>();
// }
//查询风电场发射特性信息
LambdaQueryWrapper<RMpInfluenceM> emissionWrapper = new LambdaQueryWrapper<>();
emissionWrapper.in(RMpInfluenceM::getOrgNo, deptCodes)
.eq(StringUtils.isNotBlank(monitorTag), RMpInfluenceM::getMonitorTag, monitorTag)
// .in(RMpInfluenceM::getMeasurementPointId, monitorList)
.ge(StringUtils.isNotBlank(startTime), RMpInfluenceM::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpInfluenceM::getDataDate, endTime);
List<RMpInfluenceM> emissionList = this.list(emissionWrapper);
if (CollUtil.isEmpty(emissionList)) {
return new ArrayList<>();
}
//封装返回数
List<RMpInfluenceVO> resultList = emissionList.stream().map(item -> {
RMpInfluenceVO rMpInfluenceVO = new RMpInfluenceVO();
//单位ID、单位名称、负序电压不平衡度、负序电压不平衡度平均超标天数、负序电压不平衡度超标占比、各次谐波电压平均超标天数
BeanUtils.copyProperties(item, rMpInfluenceVO);
rMpInfluenceVO.setOrgName(deptMap.get(item.getOrgNo()).getName()); //单位名称
return rMpInfluenceVO;
}).collect(Collectors.toList());
return resultList;
}
/**
* 影响特性-图表
* @param rMpInfluenceParam
* @return
*/
@Override
public RMpInfluenceChartVO getRMpInfluenceChart(RMpInfluenceParam rMpInfluenceParam) {
//提取参数
String id = rMpInfluenceParam.getId(); //单位id
String monitorTag = rMpInfluenceParam.getMonitorTag(); //监测点标签
String startTime = rMpInfluenceParam.getStartTime(); //开始时间
String endTime = rMpInfluenceParam.getEndTime(); //结束时间
if (StringUtils.isBlank(id)) {
throw new BusinessException(CommonResponseEnum.NO_DATA, "单位id不可为空");
}
//获取当前部门
Dept data = deptFeignClient.getDeptById(id).getData();
//查询风电场发射特性/各次谐波电压含有率信息
LambdaQueryWrapper<RMpInfluenceVM> emissionIWrapper = new LambdaQueryWrapper<>();
emissionIWrapper.eq(RMpInfluenceVM::getOrgNo, data.getCode())
// .in(RMpInfluenceVM::getMeasurementPointId, monitorList)
.eq(StringUtils.isNotBlank(monitorTag), RMpInfluenceVM::getMonitorTag, monitorTag)
.ge(StringUtils.isNotBlank(startTime), RMpInfluenceVM::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpInfluenceVM::getDataDate, endTime);
RMpInfluenceVM emissionI = rMpInfluenceVMService.list(emissionIWrapper).get(0);
//查询风电场发射特性/各次谐波电压超标占比
LambdaQueryWrapper<RMpInfluenceVExcessRateM> emissionIExcessRateWrapper = new LambdaQueryWrapper<>();
emissionIExcessRateWrapper.eq(RMpInfluenceVExcessRateM::getOrgNo, data.getCode())
// .in(RMpInfluenceVExcessRateM::getMeasurementPointId, monitorList)
.eq(StringUtils.isNotBlank(monitorTag), RMpInfluenceVExcessRateM::getMonitorTag, monitorTag)
.ge(StringUtils.isNotBlank(startTime), RMpInfluenceVExcessRateM::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpInfluenceVExcessRateM::getDataDate, endTime);
RMpInfluenceVExcessRateM rate = rMpInfluenceVExcessRateMService.list(emissionIExcessRateWrapper).get(0);
RMpInfluenceChartVO rMpInfluenceChartVO = new RMpInfluenceChartVO();
RMpInfluenceVMVO rMpInfluenceVMVO = new RMpInfluenceVMVO();
BeanUtils.copyProperties(emissionI, rMpInfluenceVMVO);
rMpInfluenceChartVO.setRMpInfluenceVMVO(rMpInfluenceVMVO);
RMpInfluenceVExcessRateMVO rMpInfluenceVExcessRateMVO = new RMpInfluenceVExcessRateMVO();
BeanUtils.copyProperties(rate, rMpInfluenceVExcessRateMVO);
rMpInfluenceChartVO.setRMpInfluenceVExcessRateMVO(rMpInfluenceVExcessRateMVO);
return rMpInfluenceChartVO;
}
}

View File

@@ -0,0 +1,22 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.mapper.specialanalysis.RMpInfluenceVExcessRateMMapper;
import com.njcn.harmonic.pojo.po.RMpInfluenceVExcessRateM;
import com.njcn.harmonic.service.specialanalysis.RMpInfluenceVExcessRateMService;
import org.springframework.stereotype.Service;
/**
* @author jianghf
* @description 针对表【r_mp__influence_v_excess_rate_m(风电场影响特性-月表/各次谐波电压超标占比)】的数据库操作Service实现
* @createDate 2022-12-01 19:28:15
*/
@Service
public class RMpInfluenceVExcessRateMServiceImpl extends ServiceImpl<RMpInfluenceVExcessRateMMapper, RMpInfluenceVExcessRateM>
implements RMpInfluenceVExcessRateMService{
}

View File

@@ -0,0 +1,22 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.mapper.specialanalysis.RMpInfluenceVMMapper;
import com.njcn.harmonic.pojo.po.RMpInfluenceVM;
import com.njcn.harmonic.service.specialanalysis.RMpInfluenceVMService;
import org.springframework.stereotype.Service;
/**
* @author jianghf
* @description 针对表【r_mp__influence_v_m(风电场影响特性-月表/各次谐波电压含有率)】的数据库操作Service实现
* @createDate 2022-12-01 19:28:15
*/
@Service
public class RMpInfluenceVMServiceImpl extends ServiceImpl<RMpInfluenceVMMapper, RMpInfluenceVM>
implements RMpInfluenceVMService{
}

View File

@@ -0,0 +1,22 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.mapper.specialanalysis.RStatOrgPvPermeabilityMMapper;
import com.njcn.harmonic.pojo.po.RStatOrgPvPermeabilityM;
import com.njcn.harmonic.service.specialanalysis.RStatOrgPvPermeabilityMService;
import org.springframework.stereotype.Service;
/**
* @author jianghf
* @description 针对表【r_stat_org_pv_permeability_m(分布式光伏-台区渗透率统计月表)】的数据库操作Service实现
* @createDate 2022-11-28 16:14:21
*/
@Service
public class RStatOrgPvPermeabilityMServiceImpl extends ServiceImpl<RStatOrgPvPermeabilityMMapper, RStatOrgPvPermeabilityM>
implements RStatOrgPvPermeabilityMService{
}

View File

@@ -0,0 +1,136 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.device.pms.api.PwMonitorClient;
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
import com.njcn.device.pms.pojo.param.PwPmsMonitorParam;
import com.njcn.harmonic.mapper.specialanalysis.RStatOrgPvPowerQualityMMapper;
import com.njcn.harmonic.pojo.param.StreamReverseParam;
import com.njcn.harmonic.pojo.vo.StreamReverseCountyVO;
import com.njcn.harmonic.pojo.vo.StreamReverseOrgVO;
import com.njcn.harmonic.service.specialanalysis.StreamReverseService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Title StreamReverseServiceImpl
* @Package com.njcn.harmonic.service.specialanalysis.impl
* @Author jianghaifei
* @Date 2022-11-25 11:27
* @Version V1.0
*/
@Service
@RequiredArgsConstructor
public class StreamReverseServiceImpl implements StreamReverseService {
private final DeptFeignClient deptFeignClient;
private final DicDataFeignClient dicDataFeignClient;
private final RStatOrgPvPowerQualityMMapper rStatOrgPvPowerQualityMMapper;
private final PwMonitorClient pwMonitorClient;
/***
* 潮流倒送分析-单位
* @author jianghaifei
* @date 2022-11-25 14:02
* @param streamReverseParam
* @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.njcn.harmonic.pojo.vo.StreamReverseOrgVO>
*/
@Override
public Page<StreamReverseOrgVO> streamReverseByOrg(StreamReverseParam streamReverseParam) {
//提取参数
String id = streamReverseParam.getId(); //单位
String startTime = streamReverseParam.getStartTime(); //开始时间
String endTime = streamReverseParam.getEndTime(); //结束时间
Integer pageNum = streamReverseParam.getPageNum() != null && streamReverseParam.getPageNum() != 0 ? streamReverseParam.getPageNum() : 1; //页码
Integer pageSize = streamReverseParam.getPageSize() != null && streamReverseParam.getPageSize() != 0 ? streamReverseParam.getPageSize() : 10; //页面尺寸
//获取台区电能质量事件类型字典
List<DictData> eventTypeDictList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.AREA_PQ_EVENT_TYPE.getCode()).getData();
//将台区电能质量事件类型信息转成mapkeycode valueid
Map<String, String> eventTypeDictMap = eventTypeDictList.stream().collect(Collectors.toMap(DictData::getCode, DictData::getId));
// List<DeptDTO> data = deptFeignClient.getDeptDescendantIndexes(id, WebUtil.filterDeptType()).getData();
//获取当前部门和子部门信息
List<Dept> data = deptFeignClient.getDirectSonSelf(id).getData();
Map<String, Dept> deptMap = data.stream().collect(Collectors.toMap(Dept::getCode, dept -> dept));
List<String> deptCodes = data.stream().map(Dept::getCode).collect(Collectors.toList());
// if (!id.equals(orgIdList.get(0))) {
// orgIdList.add(id); //把父单位的id传进去
// }
HashMap<String, Object> condMap = new HashMap<>();
condMap.put("startTime", startTime);
condMap.put("endTime", endTime);
condMap.put("orgIdList", deptCodes);
condMap.put(DicDataEnum.EVENT_TYPE_U.getCode(), eventTypeDictMap.get(DicDataEnum.EVENT_TYPE_U.getCode())); //潮流倒送
condMap.put(DicDataEnum.EVENT_TYPE_A.getCode(), eventTypeDictMap.get(DicDataEnum.EVENT_TYPE_A.getCode())); //潮流倒送导致设备重载
condMap.put(DicDataEnum.EVENT_TYPE_S.getCode(), eventTypeDictMap.get(DicDataEnum.EVENT_TYPE_S.getCode())); //潮流倒送导致设备过载
Page<StreamReverseOrgVO> page = rStatOrgPvPowerQualityMMapper.getStreamReverseByOrg(new Page<>(pageNum, pageSize), condMap);
List<StreamReverseOrgVO> records = page.getRecords();
DecimalFormat df = new DecimalFormat("###.00");
List<StreamReverseOrgVO> resultList = records.stream().peek(item -> {
item.setOrgName(deptMap.get(item.getOrgId()).getName()); //单位名称
int streamOverloadNum = item.getStreamOverloadNum(); //过载数
int streamReloadNum = item.getStreamReloadNum(); //重载数
int streamNum = item.getStreamNum(); //潮流倒送数
if (streamNum != 0) {
item.setStreamLoadRate(Double.parseDouble(df.format((streamOverloadNum + streamReloadNum) * 1.0 / (streamNum * 1.0))));
} else {
item.setStreamLoadRate(0.0);
}
}).collect(Collectors.toList());
page.setRecords(resultList);
return page;
}
/***
* 潮流倒送分析-整县
* @author jianghaifei
* @date 2022-11-28 15:00
* @param streamReverseParam
* @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.njcn.harmonic.pojo.vo.StreamReverseCountyVO>
*/
@Override
public Page<StreamReverseCountyVO> streamReverseByCounty(StreamReverseParam streamReverseParam) {
//提取参数
String id = streamReverseParam.getId(); //单位
String startTime = streamReverseParam.getStartTime(); //开始时间
String endTime = streamReverseParam.getEndTime(); //结束时间
Integer pageNum = streamReverseParam.getPageNum() != null && streamReverseParam.getPageNum() != 0 ? streamReverseParam.getPageNum() : 1; //页码
Integer pageSize = streamReverseParam.getPageSize() != null && streamReverseParam.getPageSize() != 0 ? streamReverseParam.getPageSize() : 10; //页面尺寸
//根据条件查询单位下面的所有配网监测点
PwPmsMonitorParam pwPmsMonitorParam = new PwPmsMonitorParam();
pwPmsMonitorParam.setOrgId(id); //单位id
List<PwPmsMonitorDTO> pwMonitorList = pwMonitorClient.getPwMonitorList(pwPmsMonitorParam).getData();
if (CollUtil.isEmpty(pwMonitorList)) {
return new Page<>();
}
//监测点id集合
List<String> monitorIdList = pwMonitorList.stream().map(PwPmsMonitorDTO::getMonitorId).collect(Collectors.toList());
//监测点map key:监测点id value:监测点实体
Map<String, PwPmsMonitorDTO> monitorMap = pwMonitorList.stream().collect(Collectors.toMap(PwPmsMonitorDTO::getMonitorId, monitor -> monitor));
// todo 潮流倒送时设备负载率只有月表,没法展示曲线
return null;
}
}

View File

@@ -0,0 +1,22 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.mapper.specialanalysis.WfOfOverviewMapper;
import com.njcn.harmonic.pojo.po.WfOfOverviewPO;
import com.njcn.harmonic.service.specialanalysis.WfOfOverviewService;
import org.springframework.stereotype.Service;
/**
* @author yzh
* @description 针对表【wf_of_overview(风电场概况)】的数据库操作Service实现
* @createDate 2022-12-05 14:17:26
*/
@Service
public class WfOfOverviewServiceImpl extends ServiceImpl<WfOfOverviewMapper, WfOfOverviewPO>
implements WfOfOverviewService {
}

View File

@@ -0,0 +1,22 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.mapper.specialanalysis.WfOfOverviewVoltageMapper;
import com.njcn.harmonic.pojo.po.WfOfOverviewVoltagePO;
import com.njcn.harmonic.service.specialanalysis.WfOfOverviewVoltageService;
import org.springframework.stereotype.Service;
/**
* @author yzh
* @description 针对表【wf_of_overview_voltage(风电场概况-按电压等级)】的数据库操作Service实现
* @createDate 2022-12-05 14:22:44
*/
@Service
public class WfOfOverviewVoltageServiceImpl extends ServiceImpl<WfOfOverviewVoltageMapper, WfOfOverviewVoltagePO>
implements WfOfOverviewVoltageService {
}

View File

@@ -0,0 +1,152 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.harmonic.mapper.specialanalysis.WindFarmIndexOverviewMapper;
import com.njcn.harmonic.pojo.param.RMpInfluenceParam;
import com.njcn.harmonic.pojo.po.WindFarmIndexOverviewPO;
import com.njcn.harmonic.pojo.vo.RStatOrgWfIndexOverviewVO;
import com.njcn.harmonic.service.specialanalysis.WindFarmIndexOverview;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 专项分析-风电场-指标总览
*
* @author yzh
* @date 2022/11/30
*/
@Service
@RequiredArgsConstructor
public class WindFarmIndexOverviewServiceImpl implements WindFarmIndexOverview {
private final WindFarmIndexOverviewMapper windFarmIndexOverviewMapper;
private final DeptFeignClient deptFeignClient;
/**
* 获取风电场指标总览-电流指标
*
* @param param 条件参数
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
* @author yzh
* @date 2022/11/30
*/
@Override
public List<RStatOrgWfIndexOverviewVO> getHarmonicCurrent(RMpInfluenceParam param) {
return getResult(param, "1");
}
/**
* 获取风电场指标总览-电压指标
*
* @param param 条件参数
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
* @author yzh
* @date 2022/11/30
*/
@Override
public List<RStatOrgWfIndexOverviewVO> getHarmonicVoltage(RMpInfluenceParam param) {
return getResult(param, "2");
}
/**
* 获取风电场指标总览-各单位指标
*
* @param param 条件参数
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RStatOrgWfIndexOverviewVO>>
* @author yzh
* @date 2022/11/30
*/
@Override
public List<RStatOrgWfIndexOverviewVO> getUnitCurrent(RMpInfluenceParam param) {
return getResult(param, "3");
}
/**
* 获取风电场指标总览-各单位电压
*
* @param param 条件参数
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RStatOrgWfIndexOverviewVO>>
* @author yzh
* @date 2022/12/1
*/
@Override
public List<RStatOrgWfIndexOverviewVO> getUnitVoltage(RMpInfluenceParam param) {
return getResult(param, "4");
}
/**
* 业务逻辑
*
* @param param 条件参数
* @param tag 标记
* @return RStatOrgWfIndexOverviewVO
*/
private List<RStatOrgWfIndexOverviewVO> getResult(RMpInfluenceParam param, String tag) {
// 获取单位信息
List<Dept> data = deptFeignClient.getDirectSonSelf(param.getId()).getData();
if (CollUtil.isEmpty(data)) {
return Collections.emptyList();
}
// 获取单位code
List<String> deptCode = data.stream().map(Dept::getCode).collect(Collectors.toList());
if (CollUtil.isEmpty(deptCode)) {
return Collections.emptyList();
}
// 获取风电场指标总览-电流指标
List<WindFarmIndexOverviewPO> pos = getDataInfo(deptCode, param, tag);
if (CollUtil.isEmpty(pos)) {
return Collections.emptyList();
}
// 将单位信息转换成map集合
Map<String, String> dataMap = data.stream().collect(Collectors.toMap(Dept::getCode, Dept::getName));
return pos.stream().map(po -> {
RStatOrgWfIndexOverviewVO vo = new RStatOrgWfIndexOverviewVO();
vo.setMonitorNum(po.getMonitorNum());
vo.setType(dataMap.get(po.getOrgNo()));
vo.setHistograms(po.getAvgExcessiveDays().toString());
vo.setLineCharts(po.getMonitorNum().toString());
vo.setMonitorTag(po.getMonitorTag());
return vo;
}).collect(Collectors.toList());
}
/**
* 查询数据库
*
* @param deptCode 单位code
* @param param 条件参数
* @param tag 标记
* @return 数据库信息
*/
private List<WindFarmIndexOverviewPO> getDataInfo(List<String> deptCode, RMpInfluenceParam param, String tag) {
List<WindFarmIndexOverviewPO> info = new ArrayList<>();
switch (tag) {
case "1":
info = windFarmIndexOverviewMapper.getWindFarmIndexOverviewHarmonicCurrent(deptCode, param);
break;
case "2":
info = windFarmIndexOverviewMapper.getWindFarmIndexOverviewHarmonicVoltage(deptCode, param);
break;
case "3":
info = windFarmIndexOverviewMapper.getWindFarmIndexOverviewUnitCurrent(deptCode, param);
break;
case "4":
info = windFarmIndexOverviewMapper.getWindFarmIndexOverviewUnitVoltage(deptCode, param);
break;
default:
break;
}
return info;
}
}

View File

@@ -0,0 +1,151 @@
package com.njcn.harmonic.service.specialanalysis.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.harmonic.pojo.po.WfOfOverviewPO;
import com.njcn.harmonic.pojo.po.WfOfOverviewVoltagePO;
import com.njcn.harmonic.pojo.vo.WfOfOverviewVO;
import com.njcn.harmonic.pojo.vo.WfOfOverviewVoltageVO;
import com.njcn.harmonic.service.specialanalysis.WfOfOverviewService;
import com.njcn.harmonic.service.specialanalysis.WfOfOverviewVoltageService;
import com.njcn.harmonic.service.specialanalysis.WindFarmOverviewService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 专项分析-风电场-概述
*
* @author yzh
* @date 2022/11/30
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class WindFarmOverviewServiceImpl implements WindFarmOverviewService {
private final DeptFeignClient deptFeignClient;
private final WfOfOverviewService wfOfOverviewService;
private final WfOfOverviewVoltageService wfOfOverviewVoltageService;
private final DicDataFeignClient dicDataFeignClient;
/**
* 获取风电场概述地图
*
* @param param 条件参数
* @return java.util.List<com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>
* @author yzh
* @date 2022/12/5
*/
@Override
public List<?> getWindFarmOverviewMap(StatisticsBizBaseParam param) {
return null;
}
/**
* 获取风电场概述数值
*
* @param param 条件参数
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
* @author yzh
* @date 2022/11/30
*/
@Override
public WfOfOverviewVO getWindFarmOverviewValues(StatisticsBizBaseParam param) {
// 获取单位信息
Dept data = deptFeignClient.getDeptById(param.getId()).getData();
if (StringUtils.isEmpty(data)) {
return new WfOfOverviewVO();
}
// 获取单位code
String code = data.getCode();
// 获取风电场概述数值
LambdaQueryWrapper<WfOfOverviewPO> lqw = new LambdaQueryWrapper<>();
lqw.eq(WfOfOverviewPO::getOrgNo, code);
WfOfOverviewPO po = wfOfOverviewService.getOne(lqw);
if (StringUtils.isEmpty(po)) {
return new WfOfOverviewVO();
}
WfOfOverviewVO vo = new WfOfOverviewVO();
BeanUtils.copyProperties(po, vo);
return vo;
}
/**
* 获取风电场概述环形图
*
* @param param 条件参数
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
* @author yzh
* @date 2022/12/5
*/
@Override
public List<WfOfOverviewVoltageVO> getWindFarmOverviewCircularGraph(StatisticsBizBaseParam param) {
// 获取单位信息
Dept data = deptFeignClient.getDeptById(param.getId()).getData();
if (StringUtils.isEmpty(data)) {
return Collections.emptyList();
}
// 获取单位code
String code = data.getCode();
// 获取风电场概述数值
LambdaQueryWrapper<WfOfOverviewVoltagePO> lqw = new LambdaQueryWrapper<>();
lqw.eq(WfOfOverviewVoltagePO::getOrgNo, code);
List<WfOfOverviewVoltagePO> pos = wfOfOverviewVoltageService.list(lqw);
if (CollUtil.isEmpty(pos)) {
return Collections.emptyList();
}
// 获取电压等级字典
DictData tenKv
= dicDataFeignClient.getDicDataByCode(DicDataEnum.DY_10KV.getCode()).getData();
DictData thirtyFiveKv
= dicDataFeignClient.getDicDataByCode(DicDataEnum.DY_35KV.getCode()).getData();
DictData oneHundredAndTenKv
= dicDataFeignClient.getDicDataByCode(DicDataEnum.DY_110KV.getCode()).getData();
// 属性赋值
List<WfOfOverviewVoltageVO> result = new ArrayList<>();
int count = 0;
for (WfOfOverviewVoltagePO po : pos) {
WfOfOverviewVoltageVO vo = new WfOfOverviewVoltageVO();
BeanUtils.copyProperties(po,vo);
if (po.getVoltageLevel().equals(tenKv.getId())){
vo.setVoltageLevel(po.getVoltageLevel());
vo.setWfSum(po.getWfSum());
result.add(vo);
}else if (po.getVoltageLevel().equals(thirtyFiveKv.getId())){
vo.setVoltageLevel(po.getVoltageLevel());
vo.setWfSum(po.getWfSum());
result.add(vo);
}else if (po.getVoltageLevel().equals(oneHundredAndTenKv.getId())){
vo.setVoltageLevel(po.getVoltageLevel());
vo.setWfSum(po.getWfSum());
result.add(vo);
}else {
count=count+po.getWfSum();
}
}
WfOfOverviewVoltageVO vo = new WfOfOverviewVoltageVO();
vo.setVoltageLevel("22OKV以上");
vo.setWfSum(count);
result.add(vo);
return result;
}
}