1.新能源专项分析代码优化
2.迁移相关代码算法
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
package com.njcn.harmonic.mapper;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.RActivePowerRangePO;
|
||||
|
||||
/**
|
||||
* 有功功率趋势 Mapper 接口
|
||||
* @author guofeihu
|
||||
* @since 2024-08-20
|
||||
*/
|
||||
public interface RActivePowerRangeMapper extends MppBaseMapper<RActivePowerRangePO> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.harmonic.mapper.RActivePowerRangeMapper">
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.njcn.harmonic.service.activepowerrange;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.harmonic.pojo.po.RActivePowerRangePO;
|
||||
import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO;
|
||||
import com.njcn.prepare.harmonic.pojo.param.RActivePowerRangeParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 有功功率趋势 服务类
|
||||
* @author guofeihu
|
||||
* @since 2024-08-22
|
||||
*/
|
||||
public interface RActivePowerRangeService extends IMppService<RActivePowerRangePO> {
|
||||
|
||||
/**
|
||||
* 有功功率趋势记录(用于定时任务)
|
||||
*/
|
||||
List<PowerStatisticsTargetVO> record(RActivePowerRangeParam rActivePowerRangeParam);
|
||||
|
||||
/**
|
||||
* 根据监测点ID及时间获取有功功率趋势
|
||||
*/
|
||||
RActivePowerRangePO getDataByLineId(String lineId, String startTime, String endTime);
|
||||
|
||||
}
|
||||
@@ -9,16 +9,16 @@ import com.alibaba.excel.ExcelWriter;
|
||||
import com.alibaba.excel.write.metadata.WriteSheet;
|
||||
import com.njcn.harmonic.constant.Param;
|
||||
import com.njcn.harmonic.pojo.param.PowerStatisticsParam;
|
||||
import com.njcn.harmonic.pojo.po.RActivePowerRangePO;
|
||||
import com.njcn.harmonic.pojo.vo.*;
|
||||
import com.njcn.harmonic.service.activepowerrange.PowerStatisticsService;
|
||||
import com.njcn.harmonic.service.activepowerrange.RActivePowerRangeService;
|
||||
import com.njcn.influx.pojo.bo.CommonQueryParam;
|
||||
import com.njcn.influx.pojo.constant.InfluxDBTableConstant;
|
||||
import com.njcn.influx.pojo.dto.StatisticalDataDTO;
|
||||
import com.njcn.influx.service.CommonService;
|
||||
import com.njcn.poi.util.PoiUtil;
|
||||
import com.njcn.prepare.harmonic.api.event.RActivePowerRangeFeignClient;
|
||||
import com.njcn.prepare.harmonic.pojo.param.RActivePowerRangeParam;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RActivePowerRangePO;
|
||||
import com.njcn.system.api.EpdFeignClient;
|
||||
import com.njcn.system.pojo.po.EleEpdPqd;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -48,7 +48,7 @@ import java.util.stream.Collectors;
|
||||
@RequiredArgsConstructor
|
||||
public class PowerStatisticsServiceImpl implements PowerStatisticsService {
|
||||
|
||||
private final RActivePowerRangeFeignClient rActivePowerRangeFeignClient;
|
||||
private final RActivePowerRangeService rActivePowerRangeService;
|
||||
private final CommonService commonService;
|
||||
private final DecimalFormat df = new DecimalFormat(Param.DECIMAL_FORMATSTR);
|
||||
private final DecimalFormat dftwo = new DecimalFormat(Param.DECIMAL_FORMATTWOSTR);
|
||||
@@ -82,17 +82,9 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
|
||||
|
||||
@Override
|
||||
public PowerStatisticsVO getDataByLineId(PowerStatisticsParam powerStatisticsParam) {
|
||||
//每次执行区间查询前都走一遍定时任务算法(防止当天没有区间相关数据)
|
||||
RActivePowerRangeParam rActivePowerRangeParam = new RActivePowerRangeParam();
|
||||
BeanUtil.copyProperties(powerStatisticsParam, rActivePowerRangeParam);
|
||||
//设置查询
|
||||
rActivePowerRangeParam.setSearch(true);
|
||||
rActivePowerRangeParam.setSearchForAdd(true);
|
||||
//执行定时任务根据前端点击的时间范围及监测点
|
||||
rActivePowerRangeFeignClient.record(rActivePowerRangeParam);
|
||||
//执行完就可以获取到区间数据了
|
||||
RActivePowerRangePO rActivePowerRangePO = rActivePowerRangeFeignClient.getDataByLineId(powerStatisticsParam.getLineId(),
|
||||
powerStatisticsParam.getSearchBeginTime(), powerStatisticsParam.getSearchEndTime()).getData();
|
||||
RActivePowerRangePO rActivePowerRangePO = rActivePowerRangeService.getDataByLineId(powerStatisticsParam.getLineId(),
|
||||
powerStatisticsParam.getSearchBeginTime(), powerStatisticsParam.getSearchEndTime());
|
||||
//如果的确没有统计到数据则默认
|
||||
if (rActivePowerRangePO == null) {
|
||||
rActivePowerRangePO = new RActivePowerRangePO();
|
||||
@@ -126,8 +118,8 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
|
||||
RActivePowerRangeParam rActivePowerRangeParam = new RActivePowerRangeParam();
|
||||
BeanUtil.copyProperties(powerStatisticsParam, rActivePowerRangeParam);
|
||||
rActivePowerRangeParam.setSearch(true);
|
||||
RActivePowerRangePO rActivePowerRangePO = rActivePowerRangeFeignClient.getDataByLineId(powerStatisticsParam.getLineId(),
|
||||
powerStatisticsParam.getSearchBeginTime(), powerStatisticsParam.getSearchEndTime()).getData();
|
||||
RActivePowerRangePO rActivePowerRangePO = rActivePowerRangeService.getDataByLineId(powerStatisticsParam.getLineId(),
|
||||
powerStatisticsParam.getSearchBeginTime(), powerStatisticsParam.getSearchEndTime());
|
||||
if (rActivePowerRangePO != null) {
|
||||
String times = reflexObjValue(rActivePowerRangePO, "minsTime" + powerStatisticsParam.getField()).toString().replace("null", "");
|
||||
rActivePowerRangeParam.setSearchTimeFort(false);
|
||||
@@ -136,7 +128,7 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
|
||||
String endTime = se.split(",")[1];
|
||||
rActivePowerRangeParam.setSearchBeginTime(startTime);
|
||||
rActivePowerRangeParam.setSearchEndTime(endTime);
|
||||
record.addAll(rActivePowerRangeFeignClient.record(rActivePowerRangeParam).getData());
|
||||
record.addAll(rActivePowerRangeService.record(rActivePowerRangeParam));
|
||||
}
|
||||
}
|
||||
return record.stream().sorted(Comparator.comparing(PowerStatisticsTargetVO::getTime)).collect(Collectors.toList());
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
package com.njcn.harmonic.service.activepowerrange.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.event.pojo.constant.Param;
|
||||
import com.njcn.harmonic.mapper.RActivePowerRangeMapper;
|
||||
import com.njcn.harmonic.pojo.po.RActivePowerRangePO;
|
||||
import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO;
|
||||
import com.njcn.harmonic.service.activepowerrange.RActivePowerRangeService;
|
||||
import com.njcn.influx.pojo.constant.InfluxDBTableConstant;
|
||||
import com.njcn.prepare.harmonic.pojo.param.RActivePowerRangeParam;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 有功功率趋势 服务实现类
|
||||
*
|
||||
* @author guofeihu
|
||||
* @since 2024-08-22
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RActivePowerRangeServiceImpl extends MppServiceImpl<RActivePowerRangeMapper, RActivePowerRangePO> implements RActivePowerRangeService {
|
||||
|
||||
|
||||
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern(Param.DATE_FORMAT);
|
||||
private final DecimalFormat df = new DecimalFormat(com.njcn.harmonic.constant.Param.DECIMAL_FORMATSTR);
|
||||
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);
|
||||
|
||||
/**
|
||||
* 整个算法的业务逻辑:
|
||||
* 1:查询InfluxDb的功率表:data_harmpower_p
|
||||
* 2:遍历功率集合将功率(p字段) / line_id监测点绑定的新能源场站中的风电场的额定功率,看落在哪个区间内
|
||||
* 3:遍历功率集合将每条功率对应的各个指标(指标的所有相别和统计方式都要一一比较)与国标限值比较看看是否越限(功率对应的各个指标详情请见下方)
|
||||
* --------------------------------指标---------------------------------
|
||||
* 电压偏差 data_v vu_dev 电压偏差 如果vu_dev>0,使用上偏差限值对比;如果vu_dev<0,使用下偏差限值对比
|
||||
* 谐波电压 data_v v_thd 电压总谐波总谐波畸变率 有一个指标超标,则谐波电压超标
|
||||
* data_harmrate_v v2-v25 2-25次谐波电压含有率
|
||||
* 谐波电流 data_i i2-i25 2-25次谐波电流幅值 有一个指标超标,则谐波电压超标
|
||||
* 三相电压不平衡度 data_v v_unbalance
|
||||
* 电压波动 data_fluc fluc
|
||||
* 长时闪变 data_plt plt
|
||||
* 间谐波电压含有率 data_inharm_v v1-v16 0.5-15.5次间谐波电压含有率 有一个指标超标,则谐波电压超标
|
||||
* 电流不平衡度 data_i i_unbalance 这个不确定,找宝哥确认下
|
||||
*
|
||||
* @param rActivePowerRangeParam
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public List<PowerStatisticsTargetVO> record(RActivePowerRangeParam rActivePowerRangeParam) {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public RActivePowerRangePO getDataByLineId(String lineId, String startTime, String endTime) {
|
||||
LambdaQueryWrapper<RActivePowerRangePO> lambdaQueryWrapper = new LambdaQueryWrapper();
|
||||
lambdaQueryWrapper.eq(RActivePowerRangePO::getLineId, lineId).eq(RActivePowerRangePO::getState, "1")
|
||||
.between(RActivePowerRangePO::getTimeId, startTime, endTime);
|
||||
List<RActivePowerRangePO> rActivePowerRangePOS = this.baseMapper.selectList(lambdaQueryWrapper);
|
||||
if (!rActivePowerRangePOS.isEmpty()) {
|
||||
RActivePowerRangePO rActivePowerRangePO = new RActivePowerRangePO();
|
||||
rActivePowerRangePO.setLineId(lineId);
|
||||
//多条记录则次数累加,是否越限只要有一个区间越限则统一视为该区间越限
|
||||
for (RActivePowerRangePO rangePO : rActivePowerRangePOS) {
|
||||
rActivePowerRangePO.setMinsNum0(rangePO.getMinsNum0() + rActivePowerRangePO.getMinsNum0());
|
||||
rActivePowerRangePO.setMinsNum1(rangePO.getMinsNum1() + rActivePowerRangePO.getMinsNum1());
|
||||
rActivePowerRangePO.setMinsNum2(rangePO.getMinsNum2() + rActivePowerRangePO.getMinsNum2());
|
||||
rActivePowerRangePO.setMinsNum3(rangePO.getMinsNum3() + rActivePowerRangePO.getMinsNum3());
|
||||
rActivePowerRangePO.setMinsNum4(rangePO.getMinsNum4() + rActivePowerRangePO.getMinsNum4());
|
||||
rActivePowerRangePO.setMinsNum5(rangePO.getMinsNum5() + rActivePowerRangePO.getMinsNum5());
|
||||
rActivePowerRangePO.setMinsNum6(rangePO.getMinsNum6() + rActivePowerRangePO.getMinsNum6());
|
||||
rActivePowerRangePO.setMinsNum7(rangePO.getMinsNum7() + rActivePowerRangePO.getMinsNum7());
|
||||
rActivePowerRangePO.setMinsNum8(rangePO.getMinsNum8() + rActivePowerRangePO.getMinsNum8());
|
||||
rActivePowerRangePO.setMinsNum9(rangePO.getMinsNum9() + rActivePowerRangePO.getMinsNum9());
|
||||
rActivePowerRangePO.setIsOrNot0(rangePO.getIsOrNot0() + rActivePowerRangePO.getIsOrNot0());
|
||||
rActivePowerRangePO.setIsOrNot1(rangePO.getIsOrNot1() + rActivePowerRangePO.getIsOrNot1());
|
||||
rActivePowerRangePO.setIsOrNot2(rangePO.getIsOrNot2() + rActivePowerRangePO.getIsOrNot2());
|
||||
rActivePowerRangePO.setIsOrNot3(rangePO.getIsOrNot3() + rActivePowerRangePO.getIsOrNot3());
|
||||
rActivePowerRangePO.setIsOrNot4(rangePO.getIsOrNot4() + rActivePowerRangePO.getIsOrNot4());
|
||||
rActivePowerRangePO.setIsOrNot5(rangePO.getIsOrNot5() + rActivePowerRangePO.getIsOrNot5());
|
||||
rActivePowerRangePO.setIsOrNot6(rangePO.getIsOrNot6() + rActivePowerRangePO.getIsOrNot6());
|
||||
rActivePowerRangePO.setIsOrNot7(rangePO.getIsOrNot7() + rActivePowerRangePO.getIsOrNot7());
|
||||
rActivePowerRangePO.setIsOrNot8(rangePO.getIsOrNot8() + rActivePowerRangePO.getIsOrNot8());
|
||||
rActivePowerRangePO.setIsOrNot9(rangePO.getIsOrNot9() + rActivePowerRangePO.getIsOrNot9());
|
||||
rActivePowerRangePO.setMinsTime0(rangePO.getMinsTime0() + "&" + rActivePowerRangePO.getMinsTime0());
|
||||
rActivePowerRangePO.setMinsTime1(rangePO.getMinsTime1() + "&" + rActivePowerRangePO.getMinsTime1());
|
||||
rActivePowerRangePO.setMinsTime2(rangePO.getMinsTime2() + "&" + rActivePowerRangePO.getMinsTime2());
|
||||
rActivePowerRangePO.setMinsTime3(rangePO.getMinsTime3() + "&" + rActivePowerRangePO.getMinsTime3());
|
||||
rActivePowerRangePO.setMinsTime4(rangePO.getMinsTime4() + "&" + rActivePowerRangePO.getMinsTime4());
|
||||
rActivePowerRangePO.setMinsTime5(rangePO.getMinsTime5() + "&" + rActivePowerRangePO.getMinsTime5());
|
||||
rActivePowerRangePO.setMinsTime6(rangePO.getMinsTime6() + "&" + rActivePowerRangePO.getMinsTime6());
|
||||
rActivePowerRangePO.setMinsTime7(rangePO.getMinsTime7() + "&" + rActivePowerRangePO.getMinsTime7());
|
||||
rActivePowerRangePO.setMinsTime8(rangePO.getMinsTime8() + "&" + rActivePowerRangePO.getMinsTime8());
|
||||
rActivePowerRangePO.setMinsTime9(rangePO.getMinsTime9() + "&" + rActivePowerRangePO.getMinsTime9());
|
||||
}
|
||||
return rActivePowerRangePO;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user