新能源专项分析功能开发

This commit is contained in:
wr
2025-03-31 20:56:05 +08:00
parent 82d616a99c
commit f3679cf868
7 changed files with 252 additions and 286 deletions

View File

@@ -37,4 +37,7 @@ public class LineDTO {
@ApiModelProperty(name = "用户非网侧") @ApiModelProperty(name = "用户非网侧")
private String objId; private String objId;
@ApiModelProperty(name = "对象类型大类")
private String bigObjType;
} }

View File

@@ -71,38 +71,4 @@ public interface Param {
Integer WEEK = 4; Integer WEEK = 4;
Integer DAY = 5; Integer DAY = 5;
//以下四个固定ID用于某些业务判断
// //字典(sys_dict_data):电压暂升的ID
// String UPPEREVENT = "c5ce588cb76fba90c4519ab250c962d0";
// //字典(sys_dict_data):电压暂降的ID
// String LOWEREVENT = "c37861896dafab0883321e1d508caa51";
// //字典(sys_dict_data):光伏电站的ID
// String PHOTOVOLTAICPOWER = "45615057cb88650ffc4779b0629bac7e";
// //字典(sys_dict_data):风电场的ID
// String WINDFARM = "f9145acb79cbf136b9ee89fd38d72583";
/**
* 以下的四个Map为有功功率页面查看指标详情的四个指标分组下的具体指标(指标对应的可能不对 到时候直接改map里的key即可)
* put(name:表ele_epd_pqd中的名称,value:页面展示的指标名称)
*/
Map<String,String> DATABSEMAP = new HashMap(){{
put("线电压偏差","电压偏差");
put("电压负序不平衡度","三相电压不平衡度");
put("相电压电压变动幅度","电压波动");
put("相电压长时闪变","长时闪变");
put("电流负序不平衡度","电流不平衡度");
}};
Map<String,String> UHARMMAP = new HashMap(){{
put("相电压谐波含有率序列","谐波电压");
}};
Map<String,String> IHARMMAP = new HashMap(){{
put("谐波电流有效值","谐波电流");
}};
Map<String,String> INTERHARMONICMAP = new HashMap(){{
put("间谐波电压有效值序列","间谐波电压含有率");
}};
} }

View File

@@ -1435,7 +1435,8 @@
pqd.Run_Flag as runFlag, pqd.Run_Flag as runFlag,
detail.PT_Type AS ptType, detail.PT_Type AS ptType,
detail.PT_Phase_Type AS ptPhaseType, detail.PT_Phase_Type AS ptPhaseType,
detail.Obj_Id AS objId detail.Obj_Id AS objId,
detail.Big_Obj_Type AS bigObjType
FROM FROM
pq_line line, pq_line line,
pq_line_detail detail, pq_line_detail detail,

View File

@@ -3,6 +3,7 @@ package com.njcn.harmonic.service.activepowerrange.impl;
import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
@@ -27,6 +28,7 @@ import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFSimpleShape; import org.apache.poi.xssf.usermodel.XSSFSimpleShape;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@@ -38,6 +40,7 @@ import java.util.stream.Collectors;
/** /**
* 有功功率趋势统计 服务实现类 * 有功功率趋势统计 服务实现类
*
* @author guofeihu * @author guofeihu
* @since 2024-08-20 * @since 2024-08-20
*/ */
@@ -46,13 +49,9 @@ import java.util.stream.Collectors;
public class PowerStatisticsServiceImpl implements PowerStatisticsService { public class PowerStatisticsServiceImpl implements PowerStatisticsService {
private final RActivePowerRangeFeignClient rActivePowerRangeFeignClient; private final RActivePowerRangeFeignClient rActivePowerRangeFeignClient;
private final CommonService commonService; private final CommonService commonService;
private final DecimalFormat df = new DecimalFormat(Param.DECIMAL_FORMATSTR); private final DecimalFormat df = new DecimalFormat(Param.DECIMAL_FORMATSTR);
private final DecimalFormat dftwo = new DecimalFormat(Param.DECIMAL_FORMATTWOSTR); private final DecimalFormat dftwo = new DecimalFormat(Param.DECIMAL_FORMATTWOSTR);
private final EpdFeignClient epdFeignClient; private final EpdFeignClient epdFeignClient;
private List<String> METHODS = Arrays.asList(InfluxDBTableConstant.AVG, InfluxDBTableConstant.CP95, InfluxDBTableConstant.MIN, InfluxDBTableConstant.MAX); private List<String> METHODS = Arrays.asList(InfluxDBTableConstant.AVG, InfluxDBTableConstant.CP95, InfluxDBTableConstant.MIN, InfluxDBTableConstant.MAX);
@@ -61,6 +60,26 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
private List<String> times = Arrays.asList("0~10%", "10~20%", "20~30%", "30~40%", "40~50%", "50~60%", "60~70%", "70~80%", "80~90%", "90~100%"); private List<String> times = Arrays.asList("0~10%", "10~20%", "20~30%", "30~40%", "40~50%", "50~60%", "60~70%", "70~80%", "80~90%", "90~100%");
Map<String, String> DATABSEMAP = new HashMap() {{
put("PPVDev", "电压偏差");
put("ImbNgV", "三相电压不平衡度");
put("PhFluc", "电压波动");
put("PhPlt", "长时闪变");
put("ImbNgA", "电流不平衡度");
}};
Map<String, String> UHARMMAP = new HashMap() {{
put("HRPhV", "谐波电压");
}};
Map<String, String> IHARMMAP = new HashMap() {{
put("HA", "谐波电流");
}};
Map<String, String> INTERHARMONICMAP = new HashMap() {{
put("IHRPhV", "间谐波电压含有率");
}};
@Override @Override
public PowerStatisticsVO getDataByLineId(PowerStatisticsParam powerStatisticsParam) { public PowerStatisticsVO getDataByLineId(PowerStatisticsParam powerStatisticsParam) {
//每次执行区间查询前都走一遍定时任务算法(防止当天没有区间相关数据) //每次执行区间查询前都走一遍定时任务算法(防止当天没有区间相关数据)
@@ -125,9 +144,9 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
} }
/** /**
* @Description: 反射获取值
* @param obj * @param obj
* @param fieldName * @param fieldName
* @Description: 反射获取值
* @return: java.lang.Object * @return: java.lang.Object
* @Author: wr * @Author: wr
* @Date: 2025/3/26 19:24 * @Date: 2025/3/26 19:24
@@ -148,52 +167,40 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
public List<ThdDataVO> getTargetByTime(PowerStatisticsParam powerStatisticsParam) { public List<ThdDataVO> getTargetByTime(PowerStatisticsParam powerStatisticsParam) {
List<ThdDataVO> result = new ArrayList(); List<ThdDataVO> result = new ArrayList();
List<EleEpdPqd> eleEpdPqds = new ArrayList<>(); List<EleEpdPqd> eleEpdPqds = new ArrayList<>();
//获取固定指标具体请看Param.DATABSEMAP //获取固定指标具体请看
if ("1".equals(powerStatisticsParam.getStatisticalId())) { if ("1".equals(powerStatisticsParam.getStatisticalId())) {
com.njcn.device.pq.constant.Param.DATABSEMAP.forEach((key,value) ->{ DATABSEMAP.forEach((key, value) -> {
List<EleEpdPqd> epdPqds = epdFeignClient.findListByShowName(key).getData(); EleEpdPqd epdPqd = epdFeignClient.findByName(key).getData();
for(EleEpdPqd epdPqd : epdPqds){ if(ObjectUtil.isNotEmpty(epdPqd)){
epdPqd.setShowName(value); epdPqd.setShowName(value);
} eleEpdPqds.add(epdPqd);
if(!epdPqds.isEmpty()){
//这边相别只需要获得一个即可
eleEpdPqds.add(epdPqds.get(0));
} }
}); });
} }
if ("2".equals(powerStatisticsParam.getStatisticalId())) { if ("2".equals(powerStatisticsParam.getStatisticalId())) {
com.njcn.device.pq.constant.Param.UHARMMAP.forEach((key,value) ->{ UHARMMAP.forEach((key, value) -> {
List<EleEpdPqd> epdPqds = epdFeignClient.findListByShowName(key).getData(); EleEpdPqd epdPqd = epdFeignClient.findByName(key).getData();
for(EleEpdPqd epdPqd : epdPqds){ if(ObjectUtil.isNotEmpty(epdPqd)){
epdPqd.setShowName(value); epdPqd.setShowName(value);
} eleEpdPqds.add(epdPqd);
if(!epdPqds.isEmpty()){
//这边相别只需要获得一个即可
eleEpdPqds.add(epdPqds.get(0));
} }
}); });
} }
if ("3".equals(powerStatisticsParam.getStatisticalId())) { if ("3".equals(powerStatisticsParam.getStatisticalId())) {
com.njcn.device.pq.constant.Param.IHARMMAP.forEach((key,value) ->{ IHARMMAP.forEach((key, value) -> {
List<EleEpdPqd> epdPqds = epdFeignClient.findListByShowName(key).getData(); EleEpdPqd epdPqd = epdFeignClient.findByName(key).getData();
for(EleEpdPqd epdPqd : epdPqds){ if(ObjectUtil.isNotEmpty(epdPqd)){
epdPqd.setShowName(value); epdPqd.setShowName(value);
} eleEpdPqds.add(epdPqd);
if(!epdPqds.isEmpty()){
//这边相别只需要获得一个即可
eleEpdPqds.add(epdPqds.get(0));
} }
}); });
} }
if ("4".equals(powerStatisticsParam.getStatisticalId())) { if ("4".equals(powerStatisticsParam.getStatisticalId())) {
com.njcn.device.pq.constant.Param.INTERHARMONICMAP.forEach((key,value) ->{ INTERHARMONICMAP.forEach((key, value) -> {
List<EleEpdPqd> epdPqds = epdFeignClient.findListByShowName(key).getData(); EleEpdPqd epdPqd = epdFeignClient.findByName(key).getData();
for(EleEpdPqd epdPqd : epdPqds){ if(ObjectUtil.isNotEmpty(epdPqd)){
epdPqd.setShowName(value); epdPqd.setShowName(value);
} eleEpdPqds.add(epdPqd);
if(!epdPqds.isEmpty()){
//这边相别只需要获得一个即可
eleEpdPqds.add(epdPqds.get(0));
} }
}); });
} }

View File

@@ -1,5 +1,6 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.event; package com.njcn.prepare.harmonic.service.mysql.Impl.event;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.alibaba.excel.util.DateUtils; import com.alibaba.excel.util.DateUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -7,9 +8,7 @@ import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.device.biz.commApi.CommLineClient; import com.njcn.device.biz.commApi.CommLineClient;
import com.njcn.device.biz.pojo.dto.LineDTO; import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.biz.pojo.po.Overlimit; import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.pq.api.NewStationClient;
import com.njcn.device.pq.api.OverLimitClient; import com.njcn.device.pq.api.OverLimitClient;
import com.njcn.device.pq.pojo.po.NewStation;
import com.njcn.event.pojo.constant.Param; import com.njcn.event.pojo.constant.Param;
import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO; import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO;
import com.njcn.harmonic.pojo.vo.ThdDataVO; import com.njcn.harmonic.pojo.vo.ThdDataVO;
@@ -21,10 +20,16 @@ import com.njcn.prepare.harmonic.mapper.mysql.event.RActivePowerRangeMapper;
import com.njcn.prepare.harmonic.pojo.param.RActivePowerRangeParam; import com.njcn.prepare.harmonic.pojo.param.RActivePowerRangeParam;
import com.njcn.prepare.harmonic.pojo.po.RActivePowerRangePO; import com.njcn.prepare.harmonic.pojo.po.RActivePowerRangePO;
import com.njcn.prepare.harmonic.service.mysql.event.RActivePowerRangeService; import com.njcn.prepare.harmonic.service.mysql.event.RActivePowerRangeService;
import com.njcn.supervision.api.UserLedgerFeignClient;
import com.njcn.supervision.pojo.vo.user.NewUserReportVO;
import com.njcn.system.api.DictTreeFeignClient;
import com.njcn.system.enums.DicTreeEnum;
import com.njcn.system.pojo.vo.DictTreeVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@@ -48,31 +53,20 @@ import java.util.stream.Collectors;
public class RActivePowerRangeServiceImpl extends MppServiceImpl<RActivePowerRangeMapper, RActivePowerRangePO> implements RActivePowerRangeService { public class RActivePowerRangeServiceImpl extends MppServiceImpl<RActivePowerRangeMapper, RActivePowerRangePO> implements RActivePowerRangeService {
private final CommonService commonService; private final CommonService commonService;
private final IDataVService iDataVService; private final IDataVService iDataVService;
private final IDataIService iDataIService; private final IDataIService iDataIService;
private final DataPltService dataPltService; private final DataPltService dataPltService;
private final DataInHarmVService dataInHarmVService; private final DataInHarmVService dataInHarmVService;
private final DataHarmRateVService dataHarmRateVService; private final DataHarmRateVService dataHarmRateVService;
private final DataFlucService dataFlucService; private final DataFlucService dataFlucService;
private final CommLineClient commLineClient; private final CommLineClient commLineClient;
private final DictTreeFeignClient dictTreeFeignClient;
private final NewStationClient newStationClient;
private final OverLimitClient overLimitClient; private final OverLimitClient overLimitClient;
private final UserLedgerFeignClient userLedgerFeignClient;
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern(Param.DATE_FORMAT); private DateTimeFormatter formatter = DateTimeFormatter.ofPattern(Param.DATE_FORMAT);
private final DecimalFormat df = new DecimalFormat(com.njcn.harmonic.constant.Param.DECIMAL_FORMATSTR); private final DecimalFormat df = new DecimalFormat(com.njcn.harmonic.constant.Param.DECIMAL_FORMATSTR);
private SimpleDateFormat sdf = new SimpleDateFormat(Param.DATE_FORMAT); private SimpleDateFormat sdf = new SimpleDateFormat(Param.DATE_FORMAT);
private List<String> PHASE = Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A, InfluxDBTableConstant.PHASE_TYPE_B, InfluxDBTableConstant.PHASE_TYPE_C); private List<String> PHASE = Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A, InfluxDBTableConstant.PHASE_TYPE_B, InfluxDBTableConstant.PHASE_TYPE_C);
/** /**
@@ -97,6 +91,7 @@ public class RActivePowerRangeServiceImpl extends MppServiceImpl<RActivePowerRan
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public List<PowerStatisticsTargetVO> record(RActivePowerRangeParam rActivePowerRangeParam) { public List<PowerStatisticsTargetVO> record(RActivePowerRangeParam rActivePowerRangeParam) {
DictTreeVO windFarms = dictTreeFeignClient.queryByCode(DicTreeEnum.Wind_Farms.getCode()).getData();
if (rActivePowerRangeParam == null) { if (rActivePowerRangeParam == null) {
rActivePowerRangeParam = new RActivePowerRangeParam(); rActivePowerRangeParam = new RActivePowerRangeParam();
} }
@@ -145,11 +140,10 @@ public class RActivePowerRangeServiceImpl extends MppServiceImpl<RActivePowerRan
//获取监测点 //获取监测点
LineDTO lineDTO = commLineClient.getLineDetail(lineId).getData(); LineDTO lineDTO = commLineClient.getLineDetail(lineId).getData();
//监测点必须绑定新能源站 //监测点必须绑定新能源站
if (lineDTO != null && lineDTO.getNewStationId() != null) { if (lineDTO != null && lineDTO.getObjId() != null && windFarms.getId().equals(lineDTO.getBigObjType())) {
//获取监测点的新能源站 List<NewUserReportVO> data = userLedgerFeignClient.getUserReportByIds(Collections.singletonList(lineDTO.getObjId())).getData();
NewStation newStation = newStationClient.selectById(lineDTO.getNewStationId()).getData(); if (CollUtil.isNotEmpty(data)) {
//新能源站有些必须是风电场 //新能源站有些必须是风电场
if (newStation != null && com.njcn.device.pq.constant.Param.WINDFARM.equals(newStation.getStationType())) {
RActivePowerRangePO rActivePowerRangePO = new RActivePowerRangePO(); RActivePowerRangePO rActivePowerRangePO = new RActivePowerRangePO();
rActivePowerRangePO.setLineId(lineId); rActivePowerRangePO.setLineId(lineId);
rActivePowerRangePO.setTimeId(LocalDate.now()); rActivePowerRangePO.setTimeId(LocalDate.now());
@@ -174,7 +168,7 @@ public class RActivePowerRangeServiceImpl extends MppServiceImpl<RActivePowerRan
//设置时间为当前功率的时间 //设置时间为当前功率的时间
powerStatisticsTargetVO.setTime(statisticalDataDTO.getTime().atZone(ZoneId.systemDefault()).format(formatter)); powerStatisticsTargetVO.setTime(statisticalDataDTO.getTime().atZone(ZoneId.systemDefault()).format(formatter));
//当前功率的p字段 / 风电场额定功率 //当前功率的p字段 / 风电场额定功率
double temp = statisticalDataDTO.getValue() / Double.parseDouble(newStation.getRatedPower()); double temp = statisticalDataDTO.getValue() / data.get(0).getRatePower();
//区间过滤下(如果进去此判断 那么只能是查询某个区间下的指标越限列表) //区间过滤下(如果进去此判断 那么只能是查询某个区间下的指标越限列表)
if (finalRActivePowerRangeParam.isSearch() && finalRActivePowerRangeParam.getField() != null) { if (finalRActivePowerRangeParam.isSearch() && finalRActivePowerRangeParam.getField() != null) {
if (Double.parseDouble(finalRActivePowerRangeParam.getField()) < temp * 10 && temp * 10 <= Double.parseDouble(finalRActivePowerRangeParam.getField()) + 1) { if (Double.parseDouble(finalRActivePowerRangeParam.getField()) < temp * 10 && temp * 10 <= Double.parseDouble(finalRActivePowerRangeParam.getField()) + 1) {
@@ -348,39 +342,41 @@ public class RActivePowerRangeServiceImpl extends MppServiceImpl<RActivePowerRan
} }
//区间是否越限标识 //区间是否越限标识
if (isLimit) {
switch (type) { switch (type) {
case 0: case 0:
if (isLimit) rActivePowerRangePO.setIsOrNot0(1); rActivePowerRangePO.setIsOrNot0(1);
break; break;
case 1: case 1:
if (isLimit) rActivePowerRangePO.setIsOrNot1(1); rActivePowerRangePO.setIsOrNot1(1);
break; break;
case 2: case 2:
if (isLimit) rActivePowerRangePO.setIsOrNot2(1); rActivePowerRangePO.setIsOrNot2(1);
break; break;
case 3: case 3:
if (isLimit) rActivePowerRangePO.setIsOrNot3(1); rActivePowerRangePO.setIsOrNot3(1);
break; break;
case 4: case 4:
if (isLimit) rActivePowerRangePO.setIsOrNot4(1); rActivePowerRangePO.setIsOrNot4(1);
break; break;
case 5: case 5:
if (isLimit) rActivePowerRangePO.setIsOrNot5(1); rActivePowerRangePO.setIsOrNot5(1);
break; break;
case 6: case 6:
if (isLimit) rActivePowerRangePO.setIsOrNot6(1); rActivePowerRangePO.setIsOrNot6(1);
break; break;
case 7: case 7:
if (isLimit) rActivePowerRangePO.setIsOrNot7(1); rActivePowerRangePO.setIsOrNot7(1);
break; break;
case 8: case 8:
if (isLimit) rActivePowerRangePO.setIsOrNot8(1); rActivePowerRangePO.setIsOrNot8(1);
break; break;
case 9: case 9:
if (isLimit) rActivePowerRangePO.setIsOrNot9(1); rActivePowerRangePO.setIsOrNot9(1);
break; break;
} }
} }
}
private Float isLimit(List<StatisticalDataDTO> list, Overlimit overlimit) { private Float isLimit(List<StatisticalDataDTO> list, Overlimit overlimit) {
List<StatisticalDataDTO> maxList = list.stream().filter(dto -> dto.equals(InfluxDBTableConstant.MAX)).collect(Collectors.toList()); List<StatisticalDataDTO> maxList = list.stream().filter(dto -> dto.equals(InfluxDBTableConstant.MAX)).collect(Collectors.toList());
@@ -388,12 +384,12 @@ public class RActivePowerRangeServiceImpl extends MppServiceImpl<RActivePowerRan
StatisticalDataDTO maxDto = maxList.stream().max(Comparator.comparingDouble(StatisticalDataDTO::getValue)).orElse(null); StatisticalDataDTO maxDto = maxList.stream().max(Comparator.comparingDouble(StatisticalDataDTO::getValue)).orElse(null);
StatisticalDataDTO minDto = minList.stream().min(Comparator.comparingDouble(StatisticalDataDTO::getValue)).orElse(null); StatisticalDataDTO minDto = minList.stream().min(Comparator.comparingDouble(StatisticalDataDTO::getValue)).orElse(null);
if (!maxList.isEmpty()) { if (!maxList.isEmpty()) {
if (Double.compare(maxDto.getValue(), 0) > 0 && Double.compare(maxDto.getValue(), overlimit.getVoltageDev()) > 0) { if (Double.compare(maxDto.getValue(), 0) > 0 && Double.compare(maxDto.getValue(), overlimit.getVoltageDev()) < 0) {
return overlimit.getVoltageDev(); return overlimit.getVoltageDev();
} }
} }
if (!minList.isEmpty()) { if (!minList.isEmpty()) {
if (Double.compare(minDto.getValue(), 0) < 0 && Double.compare(maxDto.getValue(), overlimit.getUvoltageDev()) > 0) { if (Double.compare(minDto.getValue(), 0) < 0 && Double.compare(minDto.getValue(), overlimit.getUvoltageDev()) > 0) {
return overlimit.getUvoltageDev(); return overlimit.getUvoltageDev();
} }
} }

View File

@@ -7,11 +7,9 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.device.biz.commApi.CommLineClient;
import com.njcn.device.pms.pojo.param.MonitorTerminalParam; import com.njcn.device.pms.pojo.param.MonitorTerminalParam;
import com.njcn.device.pq.api.DeptLineFeignClient; import com.njcn.device.pq.api.DeptLineFeignClient;
import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.api.NewStationClient;
import com.njcn.device.pq.pojo.vo.LineDetailDataVO; import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
import com.njcn.event.api.EventDetailFeignClient; import com.njcn.event.api.EventDetailFeignClient;
import com.njcn.event.api.TransientFeignClient; import com.njcn.event.api.TransientFeignClient;
@@ -54,8 +52,6 @@ import java.util.stream.Collectors;
public class SpThroughServiceImpl extends MppServiceImpl<SpThroughMapper, SpThroughPO> implements SpThroughService { public class SpThroughServiceImpl extends MppServiceImpl<SpThroughMapper, SpThroughPO> implements SpThroughService {
private final EventDetailFeignClient eventDetailFeignClient; private final EventDetailFeignClient eventDetailFeignClient;
private final CommLineClient commLineClient;
private final NewStationClient newStationClient;
private final TransientFeignClient transientFeignClient; private final TransientFeignClient transientFeignClient;
private final DeptLineFeignClient deptLineFeignClient; private final DeptLineFeignClient deptLineFeignClient;
private final UserLedgerFeignClient userLedgerFeignClient; private final UserLedgerFeignClient userLedgerFeignClient;
@@ -129,17 +125,17 @@ public class SpThroughServiceImpl extends MppServiceImpl<SpThroughMapper, SpThro
if (rmpEventDetailPO.getEventType().equals(rise.getId())) { if (rmpEventDetailPO.getEventType().equals(rise.getId())) {
//风电场 //风电场
if (line.getBigObjType().equals(windFarms.getId())) { if (line.getBigObjType().equals(windFarms.getId())) {
if (isThrough(waveDataDTO, 125, 130, 500, voltageLevel.floatValue(), newListRmsData) if (isThrough(125, 130, 500, voltageLevel.floatValue(), newListRmsData)
&& isThrough(waveDataDTO, 120, 125, 1000, voltageLevel.floatValue(), newListRmsData) && isThrough(120, 125, 1000, voltageLevel.floatValue(), newListRmsData)
&& isThrough(waveDataDTO, 110, 120, 10000, voltageLevel.floatValue(), newListRmsData)) { && isThrough(110, 120, 10000, voltageLevel.floatValue(), newListRmsData)) {
spThroughPO.setIsOrNot(1); spThroughPO.setIsOrNot(1);
} }
} }
//光伏电站 //光伏电站
if (line.getBigObjType().equals(powerStation.getId())) { if (line.getBigObjType().equals(powerStation.getId())) {
if (isThrough(waveDataDTO, 125, 130, 500, voltageLevel.floatValue(), newListRmsData) if (isThrough(125, 130, 500, voltageLevel.floatValue(), newListRmsData)
&& isThrough(waveDataDTO, 120, 125, 1000, voltageLevel.floatValue(), newListRmsData) && isThrough(120, 125, 1000, voltageLevel.floatValue(), newListRmsData)
&& isThrough(waveDataDTO, 110, 120, 10000, voltageLevel.floatValue(), newListRmsData)) { && isThrough(110, 120, 10000, voltageLevel.floatValue(), newListRmsData)) {
spThroughPO.setIsOrNot(1); spThroughPO.setIsOrNot(1);
} }
} }
@@ -148,15 +144,15 @@ public class SpThroughServiceImpl extends MppServiceImpl<SpThroughMapper, SpThro
if (rmpEventDetailPO.getEventType().equals(dip.getId())) { if (rmpEventDetailPO.getEventType().equals(dip.getId())) {
//风电场 //风电场
if (line.getBigObjType().equals(windFarms.getId())) { if (line.getBigObjType().equals(windFarms.getId())) {
if (isThrough(waveDataDTO, 20, -1, 625, voltageLevel.floatValue(), newListRmsData)) { if (isThrough(20, -1, 625, voltageLevel.floatValue(), newListRmsData)) {
spThroughPO.setIsOrNot(1); spThroughPO.setIsOrNot(1);
} }
} }
//光伏电站 //光伏电站
if (line.getBigObjType().equals(powerStation.getId())) { if (line.getBigObjType().equals(powerStation.getId())) {
if (isThrough(waveDataDTO, 0, -1, 150, voltageLevel.floatValue(), newListRmsData) if (isThrough(0, -1, 150, voltageLevel.floatValue(), newListRmsData)
&& isThrough(waveDataDTO, 20, -1, 625, voltageLevel.floatValue(), newListRmsData) && isThrough(20, -1, 625, voltageLevel.floatValue(), newListRmsData)
&& isThrough(waveDataDTO, 20, 90, -1, voltageLevel.floatValue(), newListRmsData)) { && isThrough(20, 90, -1, voltageLevel.floatValue(), newListRmsData)) {
spThroughPO.setIsOrNot(1); spThroughPO.setIsOrNot(1);
} }
} }
@@ -164,8 +160,6 @@ public class SpThroughServiceImpl extends MppServiceImpl<SpThroughMapper, SpThro
spThroughPO.setCreateTime(currentTime); spThroughPO.setCreateTime(currentTime);
this.baseMapper.insert(spThroughPO); this.baseMapper.insert(spThroughPO);
} }
;
} }
} }
@@ -174,7 +168,7 @@ public class SpThroughServiceImpl extends MppServiceImpl<SpThroughMapper, SpThro
} }
} }
private boolean isThrough(WaveDataDTO waveDataDTO, int start, int end, int ms, float voltageLevel, List<List<Float>> newListRmsData) { private boolean isThrough(int start, int end, int ms, float voltageLevel, List<List<Float>> newListRmsData) {
boolean isThrough = false; boolean isThrough = false;
//格式化RMS源数据 //格式化RMS源数据
float startVoltageLevel = voltageLevel * (start / 100F); float startVoltageLevel = voltageLevel * (start / 100F);
@@ -187,11 +181,9 @@ public class SpThroughServiceImpl extends MppServiceImpl<SpThroughMapper, SpThro
float curValue = newListRmsData.get(i).get(j); float curValue = newListRmsData.get(i).get(j);
//当电压达到目标值时 //当电压达到目标值时
if (endVoltageLevel != -1 && startVoltageLevel < curValue && curValue <= endVoltageLevel) { if (endVoltageLevel != -1 && startVoltageLevel < curValue && curValue <= endVoltageLevel) {
isContinuity(newListRmsData, i + 1, newListRmsData.get(i).get(0).intValue(), ms, j); isThrough = isContinuity(newListRmsData, i + 1, newListRmsData.get(i).get(0).intValue(), ms, j);
isThrough = true;
} else if (startVoltageLevel == curValue) { } else if (startVoltageLevel == curValue) {
isContinuity(newListRmsData, i + 1, newListRmsData.get(i).get(0).intValue(), ms, j); isThrough = isContinuity(newListRmsData, i + 1, newListRmsData.get(i).get(0).intValue(), ms, j);
isThrough = true;
} }
} }
} }
@@ -327,7 +319,7 @@ public class SpThroughServiceImpl extends MppServiceImpl<SpThroughMapper, SpThro
private String dicTreeId(SpThroughParam spThroughParam) { private String dicTreeId(SpThroughParam spThroughParam) {
String dictTreeId = ""; String dictTreeId = "";
if (spThroughParam.getStationType().equals("1")) { if ("1".equals(spThroughParam.getStationType())) {
DictTreeVO windFarms = dictTreeFeignClient.queryByCode(DicTreeEnum.Wind_Farms.getCode()).getData(); DictTreeVO windFarms = dictTreeFeignClient.queryByCode(DicTreeEnum.Wind_Farms.getCode()).getData();
if (ObjectUtil.isNotNull(windFarms)) { if (ObjectUtil.isNotNull(windFarms)) {
dictTreeId = windFarms.getId(); dictTreeId = windFarms.getId();

View File

@@ -58,6 +58,7 @@ public interface EpdFeignClient {
@PostMapping("/findListByShowName") @PostMapping("/findListByShowName")
HttpResult<List<EleEpdPqd>> findListByShowName(@RequestParam("name") String name); HttpResult<List<EleEpdPqd>> findListByShowName(@RequestParam("name") String name);
@PostMapping("/selectByClassId") @PostMapping("/selectByClassId")
HttpResult<List<EleEpdPqd>> selectByClassId(@RequestParam("classId") String classId); HttpResult<List<EleEpdPqd>> selectByClassId(@RequestParam("classId") String classId);