有功功率趋势定时任务算法完善
This commit is contained in:
@@ -45,6 +45,7 @@ public enum PvDeviceResponseEnum {
|
|||||||
TWO_SUB_VOLTAGE_EMPTY_MUST("A0368","II类监测点变电站母线必须为空"),
|
TWO_SUB_VOLTAGE_EMPTY_MUST("A0368","II类监测点变电站母线必须为空"),
|
||||||
LINE_DEVICE_NO_MATCH("A0369","监测点所属装置型号不匹配"),
|
LINE_DEVICE_NO_MATCH("A0369","监测点所属装置型号不匹配"),
|
||||||
NO_SUB("A0370","当前单位下不存在台区或变电站"),
|
NO_SUB("A0370","当前单位下不存在台区或变电站"),
|
||||||
|
NEWSTATION_REPEAT("A0371","新能源场站名称已存在"),
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
import com.njcn.device.biz.enums.DeviceResponseEnum;
|
import com.njcn.device.biz.enums.DeviceResponseEnum;
|
||||||
|
import com.njcn.device.pq.enums.PvDeviceResponseEnum;
|
||||||
import com.njcn.device.pq.mapper.LineDetailMapper;
|
import com.njcn.device.pq.mapper.LineDetailMapper;
|
||||||
import com.njcn.device.pq.mapper.NewStationMapper;
|
import com.njcn.device.pq.mapper.NewStationMapper;
|
||||||
import com.njcn.device.pq.pojo.param.NewStationQueryParam;
|
import com.njcn.device.pq.pojo.param.NewStationQueryParam;
|
||||||
@@ -45,10 +46,19 @@ public class NewStationServiceImpl extends ServiceImpl<NewStationMapper, NewStat
|
|||||||
NewStation newStation = new NewStation();
|
NewStation newStation = new NewStation();
|
||||||
BeanUtil.copyProperties(newStationEdit, newStation);
|
BeanUtil.copyProperties(newStationEdit, newStation);
|
||||||
newStation.setState(1);
|
newStation.setState(1);
|
||||||
|
LambdaQueryWrapper<NewStation> lambdaQueryWrapper = new LambdaQueryWrapper();
|
||||||
|
lambdaQueryWrapper.eq(NewStation::getName,newStation.getName()).eq(NewStation::getState,1);
|
||||||
boolean result ;
|
boolean result ;
|
||||||
if(newStation.getId() != null){
|
if(newStation.getId() != null){
|
||||||
|
lambdaQueryWrapper.ne(NewStation::getId,newStation.getId());
|
||||||
|
if(!this.baseMapper.selectList(lambdaQueryWrapper).isEmpty()){
|
||||||
|
throw new BusinessException(PvDeviceResponseEnum.NEWSTATION_REPEAT.getMessage());
|
||||||
|
}
|
||||||
result = this.updateById(newStation);
|
result = this.updateById(newStation);
|
||||||
}else{
|
}else{
|
||||||
|
if(!this.baseMapper.selectList(lambdaQueryWrapper).isEmpty()){
|
||||||
|
throw new BusinessException(PvDeviceResponseEnum.NEWSTATION_REPEAT.getMessage());
|
||||||
|
}
|
||||||
newStation.setId(IdUtil.simpleUUID());
|
newStation.setId(IdUtil.simpleUUID());
|
||||||
result = this.save(newStation);
|
result = this.save(newStation);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,5 +26,6 @@ public interface Param {
|
|||||||
*/
|
*/
|
||||||
String BEGIN =" 00:00:00";
|
String BEGIN =" 00:00:00";
|
||||||
String END =" 23:59:59";
|
String END =" 23:59:59";
|
||||||
|
String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,9 +26,9 @@ public class VoltageRideThroughVo implements Serializable {
|
|||||||
private BigDecimal lat;
|
private BigDecimal lat;
|
||||||
|
|
||||||
@ApiModelProperty("低压次数")
|
@ApiModelProperty("低压次数")
|
||||||
private String lowPressure;
|
private String lowPressure = "0";
|
||||||
|
|
||||||
@ApiModelProperty("高压次数")
|
@ApiModelProperty("高压次数")
|
||||||
private String highPressure;
|
private String highPressure = "0";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,44 +16,44 @@ import java.util.List;
|
|||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class PowerStatisticsParam extends BaseParam {
|
public class PowerStatisticsParam extends BaseParam {
|
||||||
|
|
||||||
@ApiModelProperty(name = "lineId", value = "监测点ID")
|
@ApiModelProperty("监测点ID")
|
||||||
@NotBlank(message = "监测点ID不能为空")
|
@NotBlank(message = "监测点ID不能为空")
|
||||||
private String lineId;
|
private String lineId;
|
||||||
|
|
||||||
@ApiModelProperty(name = "statisticalId", value = "指标分类ID(用于查询指标详细数据的指标分类ID)")
|
@ApiModelProperty("指标分类ID(用于查询指标详细数据的指标分类ID)")
|
||||||
private String statisticalId;
|
private String statisticalId;
|
||||||
|
|
||||||
@ApiModelProperty(name = "field", value = "区间字段(用于查询指标越限列表)")
|
@ApiModelProperty("区间字段(用于查询指标越限列表)")
|
||||||
private String field;
|
private String field;
|
||||||
|
|
||||||
@ApiModelProperty(name = "time0", value = "区间1时间集合")
|
@ApiModelProperty("区间1时间集合")
|
||||||
private List<String> time0;
|
private List<String> time0;
|
||||||
|
|
||||||
@ApiModelProperty(name = "time1", value = "区间2时间集合")
|
@ApiModelProperty("区间2时间集合")
|
||||||
private List<String> time1;
|
private List<String> time1;
|
||||||
|
|
||||||
@ApiModelProperty(name = "time2", value = "区间3时间集合")
|
@ApiModelProperty("区间3时间集合")
|
||||||
private List<String> time2;
|
private List<String> time2;
|
||||||
|
|
||||||
@ApiModelProperty(name = "time3", value = "区间4时间集合")
|
@ApiModelProperty("区间4时间集合")
|
||||||
private List<String> time3;
|
private List<String> time3;
|
||||||
|
|
||||||
@ApiModelProperty(name = "time4", value = "区间5时间集合")
|
@ApiModelProperty("区间5时间集合")
|
||||||
private List<String> time4;
|
private List<String> time4;
|
||||||
|
|
||||||
@ApiModelProperty(name = "time5", value = "区间6时间集合")
|
@ApiModelProperty("区间6时间集合")
|
||||||
private List<String> time5;
|
private List<String> time5;
|
||||||
|
|
||||||
@ApiModelProperty(name = "time6", value = "区间7时间集合")
|
@ApiModelProperty("区间7时间集合")
|
||||||
private List<String> time6;
|
private List<String> time6;
|
||||||
|
|
||||||
@ApiModelProperty(name = "time7", value = "区间8时间集合")
|
@ApiModelProperty("区间8时间集合")
|
||||||
private List<String> time7;
|
private List<String> time7;
|
||||||
|
|
||||||
@ApiModelProperty(name = "time8", value = "区间9时间集合")
|
@ApiModelProperty("区间9时间集合")
|
||||||
private List<String> time8;
|
private List<String> time8;
|
||||||
|
|
||||||
@ApiModelProperty(name = "time9", value = "区间10时间集合")
|
@ApiModelProperty("区间10时间集合")
|
||||||
private List<String> time9;
|
private List<String> time9;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package com.njcn.harmonic.pojo.vo;
|
|||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有功功率趋势指标 实体类
|
* 有功功率趋势指标 实体类
|
||||||
@@ -17,27 +19,84 @@ public class PowerStatisticsTargetVO {
|
|||||||
private String time;
|
private String time;
|
||||||
|
|
||||||
@ApiModelProperty("电压偏差")
|
@ApiModelProperty("电压偏差")
|
||||||
private Integer voltageOffset;
|
private Integer voltageOffset = 0;
|
||||||
|
|
||||||
@ApiModelProperty(value = "谐波电压")
|
@ApiModelProperty("谐波电压")
|
||||||
private Integer vTimes;
|
private Integer vTimes = 0;
|
||||||
|
|
||||||
@ApiModelProperty(value = "谐波电流")
|
@ApiModelProperty("谐波电流")
|
||||||
private Integer iTimes;
|
private Integer iTimes = 0;
|
||||||
|
|
||||||
@ApiModelProperty("三相电压不平衡度")
|
@ApiModelProperty("三相电压不平衡度")
|
||||||
private Integer ubalance;
|
private Integer ubalance = 0;
|
||||||
|
|
||||||
@ApiModelProperty(value="电压波动")
|
@ApiModelProperty("电压波动")
|
||||||
private Integer voltageFluctuation;
|
private Integer voltageFluctuation = 0;
|
||||||
|
|
||||||
@ApiModelProperty("闪变")
|
@ApiModelProperty("闪变")
|
||||||
private Integer flicker;
|
private Integer flicker = 0;
|
||||||
|
|
||||||
@ApiModelProperty("间谐波电压含有率")
|
@ApiModelProperty("间谐波电压含有率")
|
||||||
private Integer interHarmonic;
|
private Integer interHarmonic = 0;
|
||||||
|
|
||||||
@ApiModelProperty("电流不平衡度")
|
@ApiModelProperty("电流不平衡度")
|
||||||
private Integer sequenceCurrentUnbalance;
|
private Integer sequenceCurrentUnbalance = 0;
|
||||||
|
|
||||||
|
@ApiModelProperty("区间字段(标识是哪个区间:10%~20%、20%~30%....)用于后端辅助计算")
|
||||||
|
private String field;
|
||||||
|
|
||||||
|
@ApiModelProperty("电压偏差详情")
|
||||||
|
private List<ThdDataVO> voltageOffsetList = new ArrayList<>();
|
||||||
|
|
||||||
|
@ApiModelProperty("谐波电压详情")
|
||||||
|
private List<ThdDataVO> vTimesList = new ArrayList<>();
|
||||||
|
|
||||||
|
@ApiModelProperty("谐波电流详情")
|
||||||
|
private List<ThdDataVO> iTimestList = new ArrayList<>();
|
||||||
|
|
||||||
|
@ApiModelProperty("三相电压不平衡度详情")
|
||||||
|
private List<ThdDataVO> ubalanceList = new ArrayList<>();
|
||||||
|
|
||||||
|
@ApiModelProperty("电压波动")
|
||||||
|
private List<ThdDataVO> voltageFluctuationList = new ArrayList<>();
|
||||||
|
|
||||||
|
@ApiModelProperty("闪变详情")
|
||||||
|
private List<ThdDataVO> flickerList = new ArrayList<>();
|
||||||
|
|
||||||
|
@ApiModelProperty("间谐波电压含有率详情")
|
||||||
|
private List<ThdDataVO> interHarmonicList = new ArrayList<>();
|
||||||
|
|
||||||
|
@ApiModelProperty("电流不平衡度详情")
|
||||||
|
private List<ThdDataVO> sequenceCurrentUnbalanceList = new ArrayList<>();
|
||||||
|
|
||||||
|
@ApiModelProperty("越限相别(用于后端辅助计算)")
|
||||||
|
private String phasicType;
|
||||||
|
|
||||||
|
@ApiModelProperty("越限统计方式(用于后端辅助计算)")
|
||||||
|
private String valueType;;
|
||||||
|
|
||||||
|
@ApiModelProperty("电压偏差国标限制(用于后端辅助计算)")
|
||||||
|
private Float voltageOffsetLimit;
|
||||||
|
|
||||||
|
@ApiModelProperty("谐波电压国标限制(用于后端辅助计算)")
|
||||||
|
private Float vTimesLimit;
|
||||||
|
|
||||||
|
@ApiModelProperty("谐波电流国标限制(用于后端辅助计算)")
|
||||||
|
private Float iTimesLimit;
|
||||||
|
|
||||||
|
@ApiModelProperty("三相电压不平衡度国标限制(用于后端辅助计算)")
|
||||||
|
private Float ubalanceLimit;
|
||||||
|
|
||||||
|
@ApiModelProperty("电压波动国标限制(用于后端辅助计算)")
|
||||||
|
private Float voltageFluctuationLimit;
|
||||||
|
|
||||||
|
@ApiModelProperty("闪变国标限制(用于后端辅助计算)")
|
||||||
|
private Float flickerLimit;
|
||||||
|
|
||||||
|
@ApiModelProperty("间谐波电压含有率国标限制(用于后端辅助计算)")
|
||||||
|
private Float interHarmonicLimit;
|
||||||
|
|
||||||
|
@ApiModelProperty("电流不平衡度国标限制(用于后端辅助计算)")
|
||||||
|
private Float sequenceCurrentUnbalanceLimit;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.njcn.harmonic.pojo.vo;
|
package com.njcn.harmonic.pojo.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -10,22 +11,64 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class ThdDataVO {
|
public class ThdDataVO {
|
||||||
|
|
||||||
|
@ApiModelProperty("名称")
|
||||||
private String anotherName;
|
private String anotherName;
|
||||||
|
|
||||||
|
@ApiModelProperty("单位")
|
||||||
private String unit;
|
private String unit;
|
||||||
private Double AVGPhaseA;
|
|
||||||
private Double AVGPhaseB;
|
|
||||||
private Double AVGPhaseC;
|
|
||||||
|
|
||||||
private Double CP95PhaseA;
|
@ApiModelProperty("平均值A相")
|
||||||
private Double CP95PhaseB;
|
private String AVGPhaseA;
|
||||||
private Double CP95PhaseC;
|
|
||||||
|
|
||||||
private Double MINPhaseA;
|
@ApiModelProperty("平均值B相")
|
||||||
private Double MINPhaseB;
|
private String AVGPhaseB;
|
||||||
private Double MINPhaseC;
|
|
||||||
|
|
||||||
private Double MAXPhaseA;
|
@ApiModelProperty("平均值C相")
|
||||||
private Double MAXPhaseB;
|
private String AVGPhaseC;
|
||||||
private Double MAXPhaseC;
|
|
||||||
|
@ApiModelProperty("CP95A相")
|
||||||
|
private String CP95PhaseA;
|
||||||
|
|
||||||
|
@ApiModelProperty("CP95B相")
|
||||||
|
private String CP95PhaseB;
|
||||||
|
|
||||||
|
@ApiModelProperty("CP95C相")
|
||||||
|
private String CP95PhaseC;
|
||||||
|
|
||||||
|
@ApiModelProperty("最小值A相")
|
||||||
|
private String MINPhaseA;
|
||||||
|
|
||||||
|
@ApiModelProperty("最小值B相")
|
||||||
|
private String MINPhaseB;
|
||||||
|
|
||||||
|
@ApiModelProperty("最小值C相")
|
||||||
|
private String MINPhaseC;
|
||||||
|
|
||||||
|
@ApiModelProperty("最大值A相")
|
||||||
|
private String MAXPhaseA;
|
||||||
|
|
||||||
|
@ApiModelProperty("最大值B相")
|
||||||
|
private String MAXPhaseB;
|
||||||
|
|
||||||
|
@ApiModelProperty("最大值C相")
|
||||||
|
private String MAXPhaseC;
|
||||||
|
|
||||||
|
@ApiModelProperty("国标限值")
|
||||||
|
private Float limit;
|
||||||
|
|
||||||
|
public void init(){
|
||||||
|
this.AVGPhaseA = "0";
|
||||||
|
this.AVGPhaseB = "0";
|
||||||
|
this.AVGPhaseC = "0";
|
||||||
|
this.CP95PhaseA = "0";
|
||||||
|
this.CP95PhaseB = "0";
|
||||||
|
this.CP95PhaseC = "0";
|
||||||
|
this.MINPhaseA = "0";
|
||||||
|
this.MINPhaseB = "0";
|
||||||
|
this.MINPhaseC = "0";
|
||||||
|
this.MAXPhaseA = "0";
|
||||||
|
this.MAXPhaseB = "0";
|
||||||
|
this.MAXPhaseC = "0";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,8 @@ 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 com.njcn.common.pojo.exception.BusinessException;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import com.njcn.device.pq.pojo.bo.excel.TerminalBaseExcel;
|
|
||||||
import com.njcn.harmonic.constant.Param;
|
import com.njcn.harmonic.constant.Param;
|
||||||
import com.njcn.harmonic.enums.HarmonicResponseEnum;
|
|
||||||
import com.njcn.harmonic.pojo.param.PowerStatisticsParam;
|
import com.njcn.harmonic.pojo.param.PowerStatisticsParam;
|
||||||
import com.njcn.harmonic.pojo.vo.PowerStatisticsExcelRangVO;
|
import com.njcn.harmonic.pojo.vo.PowerStatisticsExcelRangVO;
|
||||||
import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO;
|
import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO;
|
||||||
@@ -13,10 +11,12 @@ import com.njcn.harmonic.pojo.vo.PowerStatisticsVO;
|
|||||||
import com.njcn.harmonic.pojo.vo.ThdDataVO;
|
import com.njcn.harmonic.pojo.vo.ThdDataVO;
|
||||||
import com.njcn.harmonic.service.activepowerrange.PowerStatisticsService;
|
import com.njcn.harmonic.service.activepowerrange.PowerStatisticsService;
|
||||||
import com.njcn.influx.pojo.bo.CommonQueryParam;
|
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.pojo.dto.StatisticalDataDTO;
|
||||||
import com.njcn.influx.service.CommonService;
|
import com.njcn.influx.service.CommonService;
|
||||||
import com.njcn.poi.util.PoiUtil;
|
import com.njcn.poi.util.PoiUtil;
|
||||||
import com.njcn.prepare.harmonic.api.event.RActivePowerRangeFeignClient;
|
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.prepare.harmonic.pojo.po.RActivePowerRangePO;
|
||||||
import com.njcn.system.api.EpdFeignClient;
|
import com.njcn.system.api.EpdFeignClient;
|
||||||
import com.njcn.system.pojo.po.EleEpdPqd;
|
import com.njcn.system.pojo.po.EleEpdPqd;
|
||||||
@@ -29,9 +29,8 @@ 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.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
import java.util.stream.Collectors;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有功功率趋势统计 服务实现类
|
* 有功功率趋势统计 服务实现类
|
||||||
@@ -61,7 +60,7 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
|
|||||||
RActivePowerRangePO rActivePowerRangePO = rActivePowerRangeFeignClient.getDataByLineId(powerStatisticsParam.getLineId(),
|
RActivePowerRangePO rActivePowerRangePO = rActivePowerRangeFeignClient.getDataByLineId(powerStatisticsParam.getLineId(),
|
||||||
powerStatisticsParam.getSearchBeginTime(),powerStatisticsParam.getSearchEndTime()).getData();
|
powerStatisticsParam.getSearchBeginTime(),powerStatisticsParam.getSearchEndTime()).getData();
|
||||||
if(rActivePowerRangePO == null){
|
if(rActivePowerRangePO == null){
|
||||||
throw new BusinessException(HarmonicResponseEnum.NO_LINE_DATA.getMessage());
|
rActivePowerRangePO = new RActivePowerRangePO();
|
||||||
}
|
}
|
||||||
PowerStatisticsVO powerStatisticsVO = new PowerStatisticsVO();
|
PowerStatisticsVO powerStatisticsVO = new PowerStatisticsVO();
|
||||||
BeanUtils.copyProperties(rActivePowerRangePO, powerStatisticsVO);
|
BeanUtils.copyProperties(rActivePowerRangePO, powerStatisticsVO);
|
||||||
@@ -87,21 +86,140 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PowerStatisticsTargetVO> getTargetLimitById(PowerStatisticsParam powerStatisticsParam) {
|
public List<PowerStatisticsTargetVO> getTargetLimitById(PowerStatisticsParam powerStatisticsParam) {
|
||||||
List<PowerStatisticsTargetVO> list = new ArrayList();
|
List<PowerStatisticsTargetVO> data = new ArrayList<>();
|
||||||
for (int i = 0; i < (int) (Math.random() * 10 + 1); i++) {
|
|
||||||
|
RActivePowerRangeParam rActivePowerRangeParam = new RActivePowerRangeParam();
|
||||||
|
BeanUtil.copyProperties(powerStatisticsParam, rActivePowerRangeParam);
|
||||||
|
rActivePowerRangeParam.setSearch(true);
|
||||||
|
//重点说明:powerStatisticsTargetVO结构(维度)为:time可能多组相同,取决于功率表data_harmpower_p中的相别及统计方式,标识每个指标是否越限,总之一句话:当前时间中八个指标是否越限及他们的相别和统计方式是什么
|
||||||
|
//基于record结构需要做维度的转换
|
||||||
|
List<PowerStatisticsTargetVO> record = rActivePowerRangeFeignClient.record(rActivePowerRangeParam).getData();
|
||||||
|
//根据时间分组:
|
||||||
|
Map<String,List<PowerStatisticsTargetVO>> map = record.stream().collect(Collectors.groupingBy(PowerStatisticsTargetVO::getTime));
|
||||||
|
map.forEach((key, value) ->{
|
||||||
PowerStatisticsTargetVO powerStatisticsTargetVO = new PowerStatisticsTargetVO();
|
PowerStatisticsTargetVO powerStatisticsTargetVO = new PowerStatisticsTargetVO();
|
||||||
powerStatisticsTargetVO.setTime("2023-02-10 09:00:0" + i);
|
powerStatisticsTargetVO.setTime(key);
|
||||||
powerStatisticsTargetVO.setVoltageOffset(1);
|
ThdDataVO thdDataVO = new ThdDataVO();
|
||||||
powerStatisticsTargetVO.setVTimes(0);
|
thdDataVO.init();
|
||||||
powerStatisticsTargetVO.setITimes(1);
|
Map<String,String> voltageOffsetPV = new HashMap<>();
|
||||||
powerStatisticsTargetVO.setUbalance(1);
|
Map<String,String> vTimesPV = new HashMap<>();
|
||||||
powerStatisticsTargetVO.setVoltageFluctuation(0);
|
Map<String,String> iTimesPV = new HashMap<>();
|
||||||
powerStatisticsTargetVO.setFlicker(0);
|
Map<String,String> ubalancePV = new HashMap<>();
|
||||||
powerStatisticsTargetVO.setInterHarmonic(1);
|
Map<String,String> voltageFluctuationPV = new HashMap<>();
|
||||||
powerStatisticsTargetVO.setSequenceCurrentUnbalance(1);
|
Map<String,String> flickerPV = new HashMap<>();
|
||||||
list.add(powerStatisticsTargetVO);
|
Map<String,String> interHarmonicPV = new HashMap<>();
|
||||||
}
|
Map<String,String> sequenceCurrentUnbalancePV = new HashMap<>();
|
||||||
return list;
|
for(PowerStatisticsTargetVO vo : value){
|
||||||
|
if(vo.getVoltageOffset() == 1){
|
||||||
|
powerStatisticsTargetVO.setVoltageOffset(1);
|
||||||
|
voltageOffsetPV.put(vo.getPhasicType(),vo.getValueType());
|
||||||
|
}
|
||||||
|
if(vo.getVTimes() == 1){
|
||||||
|
powerStatisticsTargetVO.setVTimes(1);
|
||||||
|
vTimesPV.put(vo.getPhasicType(),vo.getValueType());
|
||||||
|
}
|
||||||
|
if(vo.getITimes() == 1){
|
||||||
|
powerStatisticsTargetVO.setITimes(1);
|
||||||
|
iTimesPV.put(vo.getPhasicType(),vo.getValueType());
|
||||||
|
}
|
||||||
|
if(vo.getUbalance() == 1){
|
||||||
|
powerStatisticsTargetVO.setUbalance(1);
|
||||||
|
ubalancePV.put(vo.getPhasicType(),vo.getValueType());
|
||||||
|
}
|
||||||
|
if(vo.getVoltageFluctuation() == 1){
|
||||||
|
powerStatisticsTargetVO.setVoltageFluctuation(1);
|
||||||
|
voltageFluctuationPV.put(vo.getPhasicType(),vo.getValueType());
|
||||||
|
}
|
||||||
|
if(vo.getFlicker() == 1){
|
||||||
|
powerStatisticsTargetVO.setFlicker(1);
|
||||||
|
flickerPV.put(vo.getPhasicType(),vo.getValueType());
|
||||||
|
}
|
||||||
|
if(vo.getInterHarmonic() == 1){
|
||||||
|
powerStatisticsTargetVO.setInterHarmonic(1);
|
||||||
|
interHarmonicPV.put(vo.getPhasicType(),vo.getValueType());
|
||||||
|
}
|
||||||
|
if(vo.getSequenceCurrentUnbalance() == 1){
|
||||||
|
powerStatisticsTargetVO.setSequenceCurrentUnbalance(1);
|
||||||
|
sequenceCurrentUnbalancePV.put(vo.getPhasicType(),vo.getValueType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
powerStatisticsTargetVO.setVoltageOffsetList(initPV(voltageOffsetPV,"电压偏差",value.get(0).getVoltageOffsetLimit()));
|
||||||
|
powerStatisticsTargetVO.setVTimesList(initPV(vTimesPV,"谐波电压",value.get(0).getVTimesLimit()));
|
||||||
|
powerStatisticsTargetVO.setITimestList(initPV(iTimesPV,"谐波电流",value.get(0).getITimesLimit()));
|
||||||
|
powerStatisticsTargetVO.setUbalanceList(initPV(ubalancePV,"三相电压不平衡度",value.get(0).getUbalanceLimit()));
|
||||||
|
powerStatisticsTargetVO.setVoltageFluctuationList(initPV(voltageFluctuationPV,"电压波动",value.get(0).getVoltageFluctuationLimit()));
|
||||||
|
powerStatisticsTargetVO.setFlickerList(initPV(flickerPV,"闪变",value.get(0).getFlickerLimit()));
|
||||||
|
powerStatisticsTargetVO.setInterHarmonicList(initPV(interHarmonicPV,"间谐波电压含有率",value.get(0).getInterHarmonicLimit()));
|
||||||
|
powerStatisticsTargetVO.setSequenceCurrentUnbalanceList(initPV(sequenceCurrentUnbalancePV,"电流不平衡度",value.get(0).getSequenceCurrentUnbalanceLimit()));
|
||||||
|
data.add(powerStatisticsTargetVO);
|
||||||
|
});
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<ThdDataVO> initPV(Map<String,String> pv,String name,Float limit){
|
||||||
|
List<ThdDataVO> thdDataVOS = new ArrayList<>();
|
||||||
|
ThdDataVO tdv = new ThdDataVO();
|
||||||
|
tdv.setAnotherName(name);
|
||||||
|
tdv.setLimit(limit);
|
||||||
|
tdv.init();
|
||||||
|
pv.forEach((phasicType, valueType) ->{
|
||||||
|
switch (valueType){
|
||||||
|
case InfluxDBTableConstant.AVG:
|
||||||
|
switch (valueType){
|
||||||
|
case InfluxDBTableConstant.PHASE_TYPE_A:
|
||||||
|
tdv.setAVGPhaseA("1");
|
||||||
|
break;
|
||||||
|
case InfluxDBTableConstant.PHASE_TYPE_B:
|
||||||
|
tdv.setAVGPhaseB("1");
|
||||||
|
break;
|
||||||
|
case InfluxDBTableConstant.PHASE_TYPE_C:
|
||||||
|
tdv.setAVGPhaseC("1");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case InfluxDBTableConstant.CP95:
|
||||||
|
switch (valueType){
|
||||||
|
case InfluxDBTableConstant.PHASE_TYPE_A:
|
||||||
|
tdv.setCP95PhaseA("1");
|
||||||
|
break;
|
||||||
|
case InfluxDBTableConstant.PHASE_TYPE_B:
|
||||||
|
tdv.setCP95PhaseB("1");
|
||||||
|
break;
|
||||||
|
case InfluxDBTableConstant.PHASE_TYPE_C:
|
||||||
|
tdv.setCP95PhaseC("1");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case InfluxDBTableConstant.MIN:
|
||||||
|
switch (valueType){
|
||||||
|
case InfluxDBTableConstant.PHASE_TYPE_A:
|
||||||
|
tdv.setMINPhaseA("1");
|
||||||
|
break;
|
||||||
|
case InfluxDBTableConstant.PHASE_TYPE_B:
|
||||||
|
tdv.setMINPhaseB("1");
|
||||||
|
break;
|
||||||
|
case InfluxDBTableConstant.PHASE_TYPE_C:
|
||||||
|
tdv.setMINPhaseC("1");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case InfluxDBTableConstant.MAX:
|
||||||
|
switch (valueType){
|
||||||
|
case InfluxDBTableConstant.PHASE_TYPE_A:
|
||||||
|
tdv.setMAXPhaseA("1");
|
||||||
|
break;
|
||||||
|
case InfluxDBTableConstant.PHASE_TYPE_B:
|
||||||
|
tdv.setMAXPhaseB("1");
|
||||||
|
break;
|
||||||
|
case InfluxDBTableConstant.PHASE_TYPE_C:
|
||||||
|
tdv.setMAXPhaseC("1");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
thdDataVOS.add(tdv);
|
||||||
|
return thdDataVOS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -190,71 +308,71 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
|
|||||||
commonQueryParam.setLineId(powerStatisticsParam.getLineId());
|
commonQueryParam.setLineId(powerStatisticsParam.getLineId());
|
||||||
commonQueryParam.setTableName(epdPqd.getClassId());
|
commonQueryParam.setTableName(epdPqd.getClassId());
|
||||||
commonQueryParam.setColumnName(columnName == null ? epdPqd.getOtherName():columnName);
|
commonQueryParam.setColumnName(columnName == null ? epdPqd.getOtherName():columnName);
|
||||||
commonQueryParam.setStartTime(powerStatisticsParam.getSearchBeginTime());
|
commonQueryParam.setStartTime(powerStatisticsParam.getSearchBeginTime()+Param.START_TIME);
|
||||||
commonQueryParam.setEndTime(powerStatisticsParam.getSearchEndTime());
|
commonQueryParam.setEndTime(powerStatisticsParam.getSearchEndTime()+ Param.END_TIME);
|
||||||
commonQueryParam.setDataType(METHODS.get(0));
|
commonQueryParam.setDataType(METHODS.get(0));
|
||||||
commonQueryParam.setPhasic(PHASE.get(0));
|
commonQueryParam.setPhasic(PHASE.get(0));
|
||||||
commonQueryParams.add(commonQueryParam);
|
commonQueryParams.add(commonQueryParam);
|
||||||
|
|
||||||
List<StatisticalDataDTO> deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
List<StatisticalDataDTO> deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
if(!deviceRtData.isEmpty()) thdDataVO.setAVGPhaseA(Double.valueOf(df.format(deviceRtData.get(0).getValue())));
|
if(!deviceRtData.isEmpty()) thdDataVO.setAVGPhaseA(Double.valueOf(df.format(deviceRtData.get(0).getValue()))+"");
|
||||||
|
|
||||||
commonQueryParam.setDataType(METHODS.get(0));
|
commonQueryParam.setDataType(METHODS.get(0));
|
||||||
commonQueryParam.setPhasic(PHASE.get(1));
|
commonQueryParam.setPhasic(PHASE.get(1));
|
||||||
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
if(!deviceRtData.isEmpty()) thdDataVO.setAVGPhaseB(Double.valueOf(df.format(deviceRtData.get(0).getValue())));
|
if(!deviceRtData.isEmpty()) thdDataVO.setAVGPhaseB(Double.valueOf(df.format(deviceRtData.get(0).getValue()))+"");
|
||||||
|
|
||||||
commonQueryParam.setDataType(METHODS.get(0));
|
commonQueryParam.setDataType(METHODS.get(0));
|
||||||
commonQueryParam.setPhasic(PHASE.get(2));
|
commonQueryParam.setPhasic(PHASE.get(2));
|
||||||
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
if(!deviceRtData.isEmpty()) thdDataVO.setAVGPhaseC(Double.valueOf(df.format(deviceRtData.get(0).getValue())));
|
if(!deviceRtData.isEmpty()) thdDataVO.setAVGPhaseC(Double.valueOf(df.format(deviceRtData.get(0).getValue()))+"");
|
||||||
|
|
||||||
commonQueryParam.setDataType(METHODS.get(1));
|
commonQueryParam.setDataType(METHODS.get(1));
|
||||||
commonQueryParam.setPhasic(PHASE.get(0));
|
commonQueryParam.setPhasic(PHASE.get(0));
|
||||||
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
if(!deviceRtData.isEmpty()) thdDataVO.setCP95PhaseA(Double.valueOf(df.format(deviceRtData.get(0).getValue())));
|
if(!deviceRtData.isEmpty()) thdDataVO.setCP95PhaseA(Double.valueOf(df.format(deviceRtData.get(0).getValue()))+"");
|
||||||
|
|
||||||
commonQueryParam.setDataType(METHODS.get(1));
|
commonQueryParam.setDataType(METHODS.get(1));
|
||||||
commonQueryParam.setPhasic(PHASE.get(1));
|
commonQueryParam.setPhasic(PHASE.get(1));
|
||||||
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
if(!deviceRtData.isEmpty()) thdDataVO.setCP95PhaseB(Double.valueOf(df.format(deviceRtData.get(0).getValue())));
|
if(!deviceRtData.isEmpty()) thdDataVO.setCP95PhaseB(Double.valueOf(df.format(deviceRtData.get(0).getValue()))+"");
|
||||||
|
|
||||||
commonQueryParam.setDataType(METHODS.get(1));
|
commonQueryParam.setDataType(METHODS.get(1));
|
||||||
commonQueryParam.setPhasic(PHASE.get(2));
|
commonQueryParam.setPhasic(PHASE.get(2));
|
||||||
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
if(!deviceRtData.isEmpty()) thdDataVO.setCP95PhaseC(Double.valueOf(df.format(deviceRtData.get(0).getValue())));
|
if(!deviceRtData.isEmpty()) thdDataVO.setCP95PhaseC(Double.valueOf(df.format(deviceRtData.get(0).getValue()))+"");
|
||||||
|
|
||||||
|
|
||||||
commonQueryParam.setDataType(METHODS.get(2));
|
commonQueryParam.setDataType(METHODS.get(2));
|
||||||
commonQueryParam.setPhasic(PHASE.get(0));
|
commonQueryParam.setPhasic(PHASE.get(0));
|
||||||
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
if(!deviceRtData.isEmpty()) thdDataVO.setMINPhaseA(Double.valueOf(df.format(deviceRtData.get(0).getValue())));
|
if(!deviceRtData.isEmpty()) thdDataVO.setMINPhaseA(Double.valueOf(df.format(deviceRtData.get(0).getValue()))+"");
|
||||||
|
|
||||||
commonQueryParam.setDataType(METHODS.get(2));
|
commonQueryParam.setDataType(METHODS.get(2));
|
||||||
commonQueryParam.setPhasic(PHASE.get(1));
|
commonQueryParam.setPhasic(PHASE.get(1));
|
||||||
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
if(!deviceRtData.isEmpty()) thdDataVO.setMINPhaseB(Double.valueOf(df.format(deviceRtData.get(0).getValue())));
|
if(!deviceRtData.isEmpty()) thdDataVO.setMINPhaseB(Double.valueOf(df.format(deviceRtData.get(0).getValue()))+"");
|
||||||
|
|
||||||
commonQueryParam.setDataType(METHODS.get(2));
|
commonQueryParam.setDataType(METHODS.get(2));
|
||||||
commonQueryParam.setPhasic(PHASE.get(2));
|
commonQueryParam.setPhasic(PHASE.get(2));
|
||||||
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
if(!deviceRtData.isEmpty()) thdDataVO.setMINPhaseC(Double.valueOf(df.format(deviceRtData.get(0).getValue())));
|
if(!deviceRtData.isEmpty()) thdDataVO.setMINPhaseC(Double.valueOf(df.format(deviceRtData.get(0).getValue()))+"");
|
||||||
|
|
||||||
|
|
||||||
commonQueryParam.setDataType(METHODS.get(3));
|
commonQueryParam.setDataType(METHODS.get(3));
|
||||||
commonQueryParam.setPhasic(PHASE.get(0));
|
commonQueryParam.setPhasic(PHASE.get(0));
|
||||||
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
if(!deviceRtData.isEmpty()) thdDataVO.setMAXPhaseA(Double.valueOf(df.format(deviceRtData.get(0).getValue())));
|
if(!deviceRtData.isEmpty()) thdDataVO.setMAXPhaseA(Double.valueOf(df.format(deviceRtData.get(0).getValue()))+"");
|
||||||
|
|
||||||
commonQueryParam.setDataType(METHODS.get(3));
|
commonQueryParam.setDataType(METHODS.get(3));
|
||||||
commonQueryParam.setPhasic(PHASE.get(1));
|
commonQueryParam.setPhasic(PHASE.get(1));
|
||||||
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
if(!deviceRtData.isEmpty()) thdDataVO.setMAXPhaseB(Double.valueOf(df.format(deviceRtData.get(0).getValue())));
|
if(!deviceRtData.isEmpty()) thdDataVO.setMAXPhaseB(Double.valueOf(df.format(deviceRtData.get(0).getValue()))+"");
|
||||||
|
|
||||||
commonQueryParam.setDataType(METHODS.get(3));
|
commonQueryParam.setDataType(METHODS.get(3));
|
||||||
commonQueryParam.setPhasic(PHASE.get(2));
|
commonQueryParam.setPhasic(PHASE.get(2));
|
||||||
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
deviceRtData = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
if(!deviceRtData.isEmpty()) thdDataVO.setMAXPhaseC(Double.valueOf(df.format(deviceRtData.get(0).getValue())));
|
if(!deviceRtData.isEmpty()) thdDataVO.setMAXPhaseC(Double.valueOf(df.format(deviceRtData.get(0).getValue()))+"");
|
||||||
return thdDataVO;
|
return thdDataVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -263,40 +381,44 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
|
|||||||
PowerStatisticsVO powerStatisticsVO = getDataByLineId(powerStatisticsParam);
|
PowerStatisticsVO powerStatisticsVO = getDataByLineId(powerStatisticsParam);
|
||||||
//开始组装excel所需数据
|
//开始组装excel所需数据
|
||||||
List<PowerStatisticsExcelRangVO> powerStatisticsVOS = new ArrayList<>();
|
List<PowerStatisticsExcelRangVO> powerStatisticsVOS = new ArrayList<>();
|
||||||
|
ExportParams exportParams = new ExportParams(powerStatisticsParam.getSearchValue(), "区间数据");
|
||||||
//各区间数量
|
//各区间数量
|
||||||
PowerStatisticsExcelRangVO num = new PowerStatisticsExcelRangVO();
|
PowerStatisticsExcelRangVO num = new PowerStatisticsExcelRangVO();
|
||||||
num.setMinsNum0(powerStatisticsVO.getMinsNum0()+"");
|
num.setMinsNum0(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum0()+"");
|
||||||
num.setMinsNum1(powerStatisticsVO.getMinsNum1()+"");
|
num.setMinsNum1(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum1()+"");
|
||||||
num.setMinsNum2(powerStatisticsVO.getMinsNum2()+"");
|
num.setMinsNum2(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum2()+"");
|
||||||
num.setMinsNum3(powerStatisticsVO.getMinsNum3()+"");
|
num.setMinsNum3(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum3()+"");
|
||||||
num.setMinsNum4(powerStatisticsVO.getMinsNum4()+"");
|
num.setMinsNum4(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum4()+"");
|
||||||
num.setMinsNum5(powerStatisticsVO.getMinsNum5()+"");
|
num.setMinsNum5(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum5()+"");
|
||||||
num.setMinsNum6(powerStatisticsVO.getMinsNum6()+"");
|
num.setMinsNum6(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum6()+"");
|
||||||
num.setMinsNum7(powerStatisticsVO.getMinsNum7()+"");
|
num.setMinsNum7(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum7()+"");
|
||||||
num.setMinsNum8(powerStatisticsVO.getMinsNum8()+"");
|
num.setMinsNum8(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum8()+"");
|
||||||
num.setMinsNum9(powerStatisticsVO.getMinsNum9()+"");
|
num.setMinsNum9(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum9()+"");
|
||||||
num.setText("个数");
|
num.setText("个数");
|
||||||
powerStatisticsVOS.add(num);
|
powerStatisticsVOS.add(num);
|
||||||
//各区间是否越限
|
//各区间是否越限
|
||||||
PowerStatisticsExcelRangVO isOrNot = new PowerStatisticsExcelRangVO();
|
PowerStatisticsExcelRangVO isOrNot = new PowerStatisticsExcelRangVO();
|
||||||
isOrNot.setMinsNum0(powerStatisticsVO.getIsOrNot0()>0?"是":"否");
|
isOrNot.setMinsNum0(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot0()>0?"是":"否");
|
||||||
isOrNot.setMinsNum1(powerStatisticsVO.getIsOrNot1()>0?"是":"否");
|
isOrNot.setMinsNum1(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot1()>0?"是":"否");
|
||||||
isOrNot.setMinsNum2(powerStatisticsVO.getIsOrNot2()>0?"是":"否");
|
isOrNot.setMinsNum2(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot2()>0?"是":"否");
|
||||||
isOrNot.setMinsNum3(powerStatisticsVO.getIsOrNot3()>0?"是":"否");
|
isOrNot.setMinsNum3(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot3()>0?"是":"否");
|
||||||
isOrNot.setMinsNum4(powerStatisticsVO.getIsOrNot4()>0?"是":"否");
|
isOrNot.setMinsNum4(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot4()>0?"是":"否");
|
||||||
isOrNot.setMinsNum5(powerStatisticsVO.getIsOrNot5()>0?"是":"否");
|
isOrNot.setMinsNum5(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot5()>0?"是":"否");
|
||||||
isOrNot.setMinsNum6(powerStatisticsVO.getIsOrNot6()>0?"是":"否");
|
isOrNot.setMinsNum6(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot6()>0?"是":"否");
|
||||||
isOrNot.setMinsNum7(powerStatisticsVO.getIsOrNot7()>0?"是":"否");
|
isOrNot.setMinsNum7(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot7()>0?"是":"否");
|
||||||
isOrNot.setMinsNum8(powerStatisticsVO.getIsOrNot8()>0?"是":"否");
|
isOrNot.setMinsNum8(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot8()>0?"是":"否");
|
||||||
isOrNot.setMinsNum9(powerStatisticsVO.getIsOrNot9()>0?"是":"否");
|
isOrNot.setMinsNum9(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot9()>0?"是":"否");
|
||||||
isOrNot.setText("是否越限");
|
isOrNot.setText("是否越限");
|
||||||
powerStatisticsVOS.add(isOrNot);
|
powerStatisticsVOS.add(isOrNot);
|
||||||
//各区间占比
|
//各区间占比
|
||||||
PowerStatisticsExcelRangVO proportion = new PowerStatisticsExcelRangVO();
|
PowerStatisticsExcelRangVO proportion = new PowerStatisticsExcelRangVO();
|
||||||
int total = powerStatisticsVO.getMinsNum0() + powerStatisticsVO.getMinsNum1() + powerStatisticsVO.getMinsNum2()
|
int total = 0;
|
||||||
+ powerStatisticsVO.getMinsNum3() + powerStatisticsVO.getMinsNum4() + powerStatisticsVO.getMinsNum5()
|
if(powerStatisticsVO.getLineId() != null){
|
||||||
+ powerStatisticsVO.getMinsNum6() + powerStatisticsVO.getMinsNum7() + powerStatisticsVO.getMinsNum8()
|
total = powerStatisticsVO.getMinsNum0() + powerStatisticsVO.getMinsNum1() + powerStatisticsVO.getMinsNum2()
|
||||||
+ powerStatisticsVO.getMinsNum9();
|
+ powerStatisticsVO.getMinsNum3() + powerStatisticsVO.getMinsNum4() + powerStatisticsVO.getMinsNum5()
|
||||||
|
+ powerStatisticsVO.getMinsNum6() + powerStatisticsVO.getMinsNum7() + powerStatisticsVO.getMinsNum8()
|
||||||
|
+ powerStatisticsVO.getMinsNum9();
|
||||||
|
}
|
||||||
if(total != 0){
|
if(total != 0){
|
||||||
proportion.setMinsNum0(dftwo.format((double)powerStatisticsVO.getMinsNum0().intValue() / total * 100) + "%");
|
proportion.setMinsNum0(dftwo.format((double)powerStatisticsVO.getMinsNum0().intValue() / total * 100) + "%");
|
||||||
proportion.setMinsNum1(dftwo.format((double)powerStatisticsVO.getMinsNum1().intValue() / total * 100) + "%");
|
proportion.setMinsNum1(dftwo.format((double)powerStatisticsVO.getMinsNum1().intValue() / total * 100) + "%");
|
||||||
@@ -308,11 +430,21 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
|
|||||||
proportion.setMinsNum7(dftwo.format((double)powerStatisticsVO.getMinsNum7().intValue() / total * 100) + "%");
|
proportion.setMinsNum7(dftwo.format((double)powerStatisticsVO.getMinsNum7().intValue() / total * 100) + "%");
|
||||||
proportion.setMinsNum8(dftwo.format((double)powerStatisticsVO.getMinsNum8().intValue() / total * 100) + "%");
|
proportion.setMinsNum8(dftwo.format((double)powerStatisticsVO.getMinsNum8().intValue() / total * 100) + "%");
|
||||||
proportion.setMinsNum9(dftwo.format((double)powerStatisticsVO.getMinsNum9().intValue() / total * 100) + "%");
|
proportion.setMinsNum9(dftwo.format((double)powerStatisticsVO.getMinsNum9().intValue() / total * 100) + "%");
|
||||||
|
}else{
|
||||||
|
proportion.setMinsNum0("");
|
||||||
|
proportion.setMinsNum1("");
|
||||||
|
proportion.setMinsNum2("");
|
||||||
|
proportion.setMinsNum3("");
|
||||||
|
proportion.setMinsNum4("");
|
||||||
|
proportion.setMinsNum5("");
|
||||||
|
proportion.setMinsNum6("");
|
||||||
|
proportion.setMinsNum7("");
|
||||||
|
proportion.setMinsNum8("");
|
||||||
|
proportion.setMinsNum9("");
|
||||||
}
|
}
|
||||||
proportion.setText("占比");
|
proportion.setText("占比");
|
||||||
powerStatisticsVOS.add(proportion);
|
powerStatisticsVOS.add(proportion);
|
||||||
//数据准备完毕开始渲染excel
|
//数据准备完毕开始渲染excel
|
||||||
ExportParams exportParams = new ExportParams("", "区间数据");
|
|
||||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, PowerStatisticsExcelRangVO.class, powerStatisticsVOS);
|
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, PowerStatisticsExcelRangVO.class, powerStatisticsVOS);
|
||||||
Sheet sheet = workbook.getSheet("区间数据");
|
Sheet sheet = workbook.getSheet("区间数据");
|
||||||
Font redFont = workbook.createFont();
|
Font redFont = workbook.createFont();
|
||||||
@@ -347,8 +479,8 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
|
|||||||
//设置斜线的开始位置,我这里是从第0行到第1行,从第0列到第1列
|
//设置斜线的开始位置,我这里是从第0行到第1行,从第0列到第1列
|
||||||
anchor.setCol1(0);
|
anchor.setCol1(0);
|
||||||
anchor.setCol2(1);
|
anchor.setCol2(1);
|
||||||
anchor.setRow1(0);
|
anchor.setRow1(1);
|
||||||
anchor.setRow2(1);
|
anchor.setRow2(2);
|
||||||
XSSFSimpleShape simpleShape = xssfDrawing.createSimpleShape((XSSFClientAnchor) anchor);
|
XSSFSimpleShape simpleShape = xssfDrawing.createSimpleShape((XSSFClientAnchor) anchor);
|
||||||
//设置形状类型未线型
|
//设置形状类型未线型
|
||||||
simpleShape.setShapeType(ShapeTypes.LINE);
|
simpleShape.setShapeType(ShapeTypes.LINE);
|
||||||
@@ -359,18 +491,18 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
|
|||||||
//设置线的颜色
|
//设置线的颜色
|
||||||
simpleShape.setLineStyleColor(0,0,0);
|
simpleShape.setLineStyleColor(0,0,0);
|
||||||
//删除第一行title
|
//删除第一行title
|
||||||
sheet.removeRow(sheet.getRow(0));
|
//sheet.removeRow(sheet.getRow(0));
|
||||||
//上移(因为删除一行只是将数据清空了留下空行)
|
//上移(因为删除一行只是将数据清空了留下空行)
|
||||||
sheet.shiftRows(1, sheet.getLastRowNum(), -1);
|
//sheet.shiftRows(1, sheet.getLastRowNum(), -1);
|
||||||
PoiUtil.exportFileByWorkbook(workbook, "区间数据.xlsx", response);
|
PoiUtil.exportFileByWorkbook(workbook, powerStatisticsParam.getSearchValue()+".xlsx", response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exportExcelListTemplate(PowerStatisticsParam powerStatisticsParam, HttpServletResponse response) {
|
public void exportExcelListTemplate(PowerStatisticsParam powerStatisticsParam, HttpServletResponse response) {
|
||||||
ExportParams exportParams = new ExportParams("指标越限列表数据", "指标越限列表数据");
|
ExportParams exportParams = new ExportParams(powerStatisticsParam.getSearchValue(), "指标越限列表数据");
|
||||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, TerminalBaseExcel.class, new ArrayList<TerminalBaseExcel>());
|
List<PowerStatisticsTargetVO> powerStatisticsTargetVOS = getTargetLimitById(powerStatisticsParam);
|
||||||
String fileName = "指标越限列表数据.xlsx";
|
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, PowerStatisticsTargetVO.class, powerStatisticsTargetVOS);
|
||||||
PoiUtil.exportFileByWorkbook(workbook, fileName, response);
|
PoiUtil.exportFileByWorkbook(workbook, powerStatisticsParam.getSearchValue()+".xlsx", response);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,12 @@
|
|||||||
<artifactId>common-web</artifactId>
|
<artifactId>common-web</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.njcn</groupId>
|
||||||
|
<artifactId>harmonic-api</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -2,12 +2,16 @@ package com.njcn.prepare.harmonic.api.event;
|
|||||||
|
|
||||||
import com.njcn.common.pojo.constant.ServerInfo;
|
import com.njcn.common.pojo.constant.ServerInfo;
|
||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
|
import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO;
|
||||||
import com.njcn.prepare.harmonic.api.event.fallback.RActivePowerRangeFeignClientFallbackFactory;
|
import com.njcn.prepare.harmonic.api.event.fallback.RActivePowerRangeFeignClientFallbackFactory;
|
||||||
|
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 org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有功功率趋势Feign客户端
|
* 有功功率趋势Feign客户端
|
||||||
@@ -22,7 +26,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|||||||
public interface RActivePowerRangeFeignClient {
|
public interface RActivePowerRangeFeignClient {
|
||||||
|
|
||||||
@PostMapping("/record")
|
@PostMapping("/record")
|
||||||
HttpResult<Boolean> record();
|
HttpResult<List<PowerStatisticsTargetVO>> record(@RequestBody(required = false) RActivePowerRangeParam rActivePowerRangeParam);
|
||||||
|
|
||||||
@GetMapping("/getDataByLineId")
|
@GetMapping("/getDataByLineId")
|
||||||
HttpResult<RActivePowerRangePO> getDataByLineId(@RequestParam("lineId") String lineId,@RequestParam("startTime") String startTime,@RequestParam("endTime") String endTime);
|
HttpResult<RActivePowerRangePO> getDataByLineId(@RequestParam("lineId") String lineId,@RequestParam("startTime") String startTime,@RequestParam("endTime") String endTime);
|
||||||
|
|||||||
@@ -3,12 +3,15 @@ package com.njcn.prepare.harmonic.api.event.fallback;
|
|||||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
|
import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO;
|
||||||
import com.njcn.prepare.harmonic.api.event.RActivePowerRangeFeignClient;
|
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.prepare.harmonic.pojo.po.RActivePowerRangePO;
|
||||||
import com.njcn.prepare.harmonic.utils.PrepareEnumUtil;
|
import com.njcn.prepare.harmonic.utils.PrepareEnumUtil;
|
||||||
import feign.hystrix.FallbackFactory;
|
import feign.hystrix.FallbackFactory;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有功功率趋势熔断降级
|
* 有功功率趋势熔断降级
|
||||||
@@ -30,7 +33,7 @@ public class RActivePowerRangeFeignClientFallbackFactory implements FallbackFact
|
|||||||
Enum<?> finalExceptionEnum = exceptionEnum;
|
Enum<?> finalExceptionEnum = exceptionEnum;
|
||||||
return new RActivePowerRangeFeignClient() {
|
return new RActivePowerRangeFeignClient() {
|
||||||
@Override
|
@Override
|
||||||
public HttpResult<Boolean> record() {
|
public HttpResult<List<PowerStatisticsTargetVO>> record(RActivePowerRangeParam rActivePowerRangeParam) {
|
||||||
log.error("{}异常,降级处理,异常为:{}", "有功功率趋势记录: ", throwable.toString());
|
log.error("{}异常,降级处理,异常为:{}", "有功功率趋势记录: ", throwable.toString());
|
||||||
throw new BusinessException(finalExceptionEnum);
|
throw new BusinessException(finalExceptionEnum);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package com.njcn.prepare.harmonic.pojo.param;
|
||||||
|
|
||||||
|
import com.njcn.web.pojo.param.BaseParam;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 有功功率趋势 定时任务算法控制参数
|
||||||
|
* @author guofeihu
|
||||||
|
* @since 2024-08-22
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class RActivePowerRangeParam extends BaseParam {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 决定统计的开始和结束时间
|
||||||
|
* startTime = 昨天 - interval 00:00:00
|
||||||
|
* endTime = 昨天的23:59:59
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("统计的时间间隔(默认1天)")
|
||||||
|
private long interval = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 控制执行定时任务算法统计重复执行是否允许强制刷新(lineId,timeId)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("统计时是否强制刷新(默认不刷新:也即重复执行后对于当前日期已统计的监测点不会再次统计)")
|
||||||
|
private boolean refresh = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 控制执行定时任务算法是否是查询,注意:当开启该参数后统计的interval获取的startTime和endTime会被BaseParam中的searchBeginTime和searchEndTime替代
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("是否查询(默认不查询)")
|
||||||
|
private boolean search = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* search = true 该参数才有效
|
||||||
|
* 监测点ID用于执行定时任务算法查询时所携带的参数
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("监测点ID")
|
||||||
|
private String lineId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* search = true 该参数才有效
|
||||||
|
* 区间字段用于执行定时任务算法查询时所携带的参数
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("区间字段(标识是哪个区间:10%~20%、20%~30%....)")
|
||||||
|
private String field;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* search = true 该参数才有效
|
||||||
|
* 控制执行定时任务算法查询时是否统计数据
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("查询时是否统计数据(默认不统计)")
|
||||||
|
private boolean searchForAdd = false;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -34,7 +34,7 @@ public class RActivePowerRangePO extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 0%~10%区间时间Json
|
* 0%~10%区间时间Json
|
||||||
*/
|
*/
|
||||||
private String minsTime0;
|
private String minsTime0 = "{}";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 0%~10%区间个数
|
* 0%~10%区间个数
|
||||||
@@ -49,7 +49,7 @@ public class RActivePowerRangePO extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 10%~20%区间时间Json
|
* 10%~20%区间时间Json
|
||||||
*/
|
*/
|
||||||
private String minsTime1;
|
private String minsTime1 = "{}";;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 10%~20%区间个数
|
* 10%~20%区间个数
|
||||||
@@ -64,7 +64,7 @@ public class RActivePowerRangePO extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 20%~30%区间时间Json
|
* 20%~30%区间时间Json
|
||||||
*/
|
*/
|
||||||
private String minsTime2;
|
private String minsTime2 = "{}";;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 20%~30%区间个数
|
* 20%~30%区间个数
|
||||||
@@ -79,7 +79,7 @@ public class RActivePowerRangePO extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 30%~40%区间时间Json
|
* 30%~40%区间时间Json
|
||||||
*/
|
*/
|
||||||
private String minsTime3;
|
private String minsTime3 = "{}";;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 30%~40%区间个数
|
* 30%~40%区间个数
|
||||||
@@ -94,7 +94,7 @@ public class RActivePowerRangePO extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 40%~50%区间时间Json
|
* 40%~50%区间时间Json
|
||||||
*/
|
*/
|
||||||
private String minsTime4;
|
private String minsTime4 = "{}";;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 40%~50%区间个数
|
* 40%~50%区间个数
|
||||||
@@ -109,7 +109,7 @@ public class RActivePowerRangePO extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 50%~60%区间时间Json
|
* 50%~60%区间时间Json
|
||||||
*/
|
*/
|
||||||
private String minsTime5;
|
private String minsTime5 = "{}";;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 50%~60%区间个数
|
* 50%~60%区间个数
|
||||||
@@ -124,7 +124,7 @@ public class RActivePowerRangePO extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 60%~70%区间时间Json
|
* 60%~70%区间时间Json
|
||||||
*/
|
*/
|
||||||
private String minsTime6;
|
private String minsTime6 = "{}";;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 60%~70%区间个数
|
* 60%~70%区间个数
|
||||||
@@ -139,7 +139,7 @@ public class RActivePowerRangePO extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 70%~80%区间时间Json
|
* 70%~80%区间时间Json
|
||||||
*/
|
*/
|
||||||
private String minsTime7;
|
private String minsTime7 = "{}";;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 70%~80%区间个数
|
* 70%~80%区间个数
|
||||||
@@ -154,7 +154,7 @@ public class RActivePowerRangePO extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 80%~90%区间时间Json
|
* 80%~90%区间时间Json
|
||||||
*/
|
*/
|
||||||
private String minsTime8;
|
private String minsTime8 = "{}";;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 80%~90%区间个数
|
* 80%~90%区间个数
|
||||||
@@ -169,7 +169,7 @@ public class RActivePowerRangePO extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 90%~100%区间时间Json
|
* 90%~100%区间时间Json
|
||||||
*/
|
*/
|
||||||
private String minsTime9;
|
private String minsTime9 = "{}";;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 90%~100%区间个数
|
* 90%~100%区间个数
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import com.njcn.common.pojo.enums.common.LogEnum;
|
|||||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
import com.njcn.common.utils.HttpResultUtil;
|
import com.njcn.common.utils.HttpResultUtil;
|
||||||
|
import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO;
|
||||||
|
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.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
@@ -15,6 +17,7 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有功功率趋势 前端控制器
|
* 有功功率趋势 前端控制器
|
||||||
@@ -34,10 +37,10 @@ public class RActivePowerRangeController extends BaseController {
|
|||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
|
||||||
@PostMapping("/record")
|
@PostMapping("/record")
|
||||||
@ApiOperation("有功功率趋势记录(用于定时任务)")
|
@ApiOperation("有功功率趋势记录(用于定时任务)")
|
||||||
public HttpResult<Boolean> record() {
|
public HttpResult<List<PowerStatisticsTargetVO>> record(@RequestBody(required = false) RActivePowerRangeParam rActivePowerRangeParam) {
|
||||||
String methodDescribe = getMethodDescribe("record");
|
String methodDescribe = getMethodDescribe("record");
|
||||||
rActivePowerRangeService.record();
|
List<PowerStatisticsTargetVO> powerStatisticsTargetVOS = rActivePowerRangeService.record(rActivePowerRangeParam);
|
||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, powerStatisticsTargetVOS, methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY)
|
||||||
|
|||||||
@@ -11,17 +11,20 @@ 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.device.pq.pojo.po.NewStation;
|
||||||
import com.njcn.event.pojo.constant.Param;
|
import com.njcn.event.pojo.constant.Param;
|
||||||
import com.njcn.influx.pojo.po.DataHarmPowerP;
|
import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO;
|
||||||
import com.njcn.influx.pojo.po.DataV;
|
import com.njcn.influx.pojo.bo.CommonQueryParam;
|
||||||
import com.njcn.influx.service.CommonService;
|
import com.njcn.influx.pojo.constant.InfluxDBTableConstant;
|
||||||
import com.njcn.influx.service.DataHarmPowerPService;
|
import com.njcn.influx.pojo.dto.StatisticalDataDTO;
|
||||||
import com.njcn.influx.service.IDataVService;
|
import com.njcn.influx.service.*;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.event.RActivePowerRangeMapper;
|
import com.njcn.prepare.harmonic.mapper.mysql.event.RActivePowerRangeMapper;
|
||||||
|
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 lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -35,7 +38,7 @@ import java.util.stream.Collectors;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class RActivePowerRangeServiceImpl extends MppServiceImpl<RActivePowerRangeMapper, RActivePowerRangePO> implements RActivePowerRangeService {
|
public class RActivePowerRangeServiceImpl extends MppServiceImpl<RActivePowerRangeMapper, RActivePowerRangePO> implements RActivePowerRangeService {
|
||||||
|
|
||||||
private final DataHarmPowerPService dataHarmPowerPService;
|
private final CommonService commonService;
|
||||||
|
|
||||||
private final CommLineClient commLineClient;
|
private final CommLineClient commLineClient;
|
||||||
|
|
||||||
@@ -43,79 +46,343 @@ public class RActivePowerRangeServiceImpl extends MppServiceImpl<RActivePowerRan
|
|||||||
|
|
||||||
private final OverLimitClient overLimitClient;
|
private final OverLimitClient overLimitClient;
|
||||||
|
|
||||||
private final IDataVService iDataVService;
|
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern(Param.DATE_FORMAT);
|
||||||
|
|
||||||
CommonService commonService;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void record() {
|
public List<PowerStatisticsTargetVO> record(RActivePowerRangeParam rActivePowerRangeParam) {
|
||||||
|
if(rActivePowerRangeParam == null){
|
||||||
|
rActivePowerRangeParam = new RActivePowerRangeParam();
|
||||||
|
}
|
||||||
//根据事件间隔查询 SELECT * FROM "data_harmpower_p" limit 1 得到P
|
//根据事件间隔查询 SELECT * FROM "data_harmpower_p" limit 1 得到P
|
||||||
// 便利 用p / 风电场额定有功功率 * 100% 看落在那个占比
|
// 便利 用p / 风电场额定有功功率 * 100% 看落在那个占比
|
||||||
List<RActivePowerRangePO> rActivePowerRangePOS = new ArrayList<>();
|
List<PowerStatisticsTargetVO> powerStatisticsTargetVOS = new ArrayList<>();
|
||||||
//定义开始和结束时间
|
//定义开始和结束时间
|
||||||
String startTime = getTime(1,0);
|
String startTime = getTime(rActivePowerRangeParam.getInterval(),0);
|
||||||
String endTime = getTime(1,1);
|
String endTime = getTime(rActivePowerRangeParam.getInterval(),1);
|
||||||
//获取时间段内的有功功率集合
|
//获取时间段内的有功功率集合
|
||||||
List<DataHarmPowerP> dataHarmPowerPS = dataHarmPowerPService.getHarmonicPowerP("",startTime,endTime);
|
List<CommonQueryParam> commonQueryParams = new ArrayList<>();
|
||||||
|
CommonQueryParam commonQueryParam = new CommonQueryParam();
|
||||||
|
if(rActivePowerRangeParam.isSearch()){
|
||||||
|
startTime = rActivePowerRangeParam.getSearchBeginTime()+Param.BEGIN;
|
||||||
|
endTime = rActivePowerRangeParam.getSearchEndTime()+Param.END;
|
||||||
|
commonQueryParam.setLineId(rActivePowerRangeParam.getLineId());
|
||||||
|
}
|
||||||
|
//时间段
|
||||||
|
commonQueryParam.setStartTime(startTime);
|
||||||
|
commonQueryParam.setEndTime(endTime);
|
||||||
|
//不传统计方式及相别
|
||||||
|
//功率表data_harmpower_p及字段p
|
||||||
|
commonQueryParam.setTableName(InfluxDBTableConstant.DATA_HARM_POWER_P);
|
||||||
|
commonQueryParam.setColumnName("p");
|
||||||
|
commonQueryParams.add(commonQueryParam);
|
||||||
|
List<StatisticalDataDTO> dataHarmPowerPS = commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
//有功功率趋势表是按照监测点来划分的 所以这边需要根据监测点来分组
|
//有功功率趋势表是按照监测点来划分的 所以这边需要根据监测点来分组
|
||||||
Map<String,List<DataHarmPowerP>> map = dataHarmPowerPS.stream().collect(Collectors.groupingBy(DataHarmPowerP::getLineId));
|
Map<String,List<StatisticalDataDTO>> map = dataHarmPowerPS.stream().collect(Collectors.groupingBy(StatisticalDataDTO::getLineId));
|
||||||
map.forEach((key,value) ->{
|
RActivePowerRangeParam finalRActivePowerRangeParam = rActivePowerRangeParam;
|
||||||
RActivePowerRangePO rActivePowerRangePO = new RActivePowerRangePO();
|
map.forEach((key, value) ->{
|
||||||
rActivePowerRangePO.setId(IdUtil.simpleUUID());
|
|
||||||
rActivePowerRangePO.setLineId(key);
|
|
||||||
rActivePowerRangePO.setTimeId(LocalDate.now());
|
|
||||||
//获取监测点的国标限值
|
//获取监测点的国标限值
|
||||||
List<Overlimit> overlimits = overLimitClient.getOverLimitByLineIds(Arrays.asList(key)).getData();
|
List<Overlimit> overlimits = overLimitClient.getOverLimitByLineIds(Arrays.asList(key)).getData();
|
||||||
//获取监测点
|
if(overlimits != null && !overlimits.isEmpty()){
|
||||||
LineDTO lineDTO = commLineClient.getLineDetail(key).getData();
|
Overlimit overlimit = overlimits.get(0);
|
||||||
if(lineDTO != null && lineDTO.getNewStationId() != null){
|
//获取监测点
|
||||||
NewStation newStation = newStationClient.selectById(lineDTO.getNewStationId()).getData();
|
LineDTO lineDTO = commLineClient.getLineDetail(key).getData();
|
||||||
//风电场
|
if(lineDTO != null && lineDTO.getNewStationId() != null){
|
||||||
if(newStation != null && com.njcn.device.pq.constant.Param.WINDFARM.equals(newStation.getStationType())){
|
NewStation newStation = newStationClient.selectById(lineDTO.getNewStationId()).getData();
|
||||||
//计算各个区间个数
|
//风电场
|
||||||
for(DataHarmPowerP dataHarmPowerP : value){
|
if(newStation != null && com.njcn.device.pq.constant.Param.WINDFARM.equals(newStation.getStationType())){
|
||||||
double temp = dataHarmPowerP.getP() / Double.parseDouble(newStation.getRatedPower());
|
RActivePowerRangePO rActivePowerRangePO = new RActivePowerRangePO();
|
||||||
if(temp <= 0.1){
|
rActivePowerRangePO.setLineId(key);
|
||||||
rActivePowerRangePO.setMinsNum0(rActivePowerRangePO.getMinsNum0() + 1);
|
rActivePowerRangePO.setTimeId(LocalDate.now());
|
||||||
}else if(0.1 < temp && temp <= 0.2){
|
rActivePowerRangePO.setId(IdUtil.simpleUUID());
|
||||||
rActivePowerRangePO.setMinsNum1(rActivePowerRangePO.getMinsNum1() + 1);
|
LambdaQueryWrapper<RActivePowerRangePO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
}else if(0.2 < temp && temp <= 0.3){
|
lambdaQueryWrapper.eq(RActivePowerRangePO::getLineId,key).eq(RActivePowerRangePO::getTimeId,LocalDate.now());
|
||||||
rActivePowerRangePO.setMinsNum2(rActivePowerRangePO.getMinsNum2() + 1);
|
//强制刷新
|
||||||
}else if(0.3 < temp && temp <= 0.4){
|
if(finalRActivePowerRangeParam.isRefresh()){
|
||||||
rActivePowerRangePO.setMinsNum3(rActivePowerRangePO.getMinsNum3() + 1);
|
this.baseMapper.delete(lambdaQueryWrapper);
|
||||||
}else if(0.4 < temp && temp <= 0.5){
|
|
||||||
rActivePowerRangePO.setMinsNum4(rActivePowerRangePO.getMinsNum4() + 1);
|
|
||||||
}else if(0.5 < temp && temp <= 0.6){
|
|
||||||
rActivePowerRangePO.setMinsNum5(rActivePowerRangePO.getMinsNum5() + 1);
|
|
||||||
}else if(0.6 < temp && temp <= 0.7){
|
|
||||||
rActivePowerRangePO.setMinsNum6(rActivePowerRangePO.getMinsNum6() + 1);
|
|
||||||
}else if(0.7 < temp && temp <= 0.8){
|
|
||||||
rActivePowerRangePO.setMinsNum7(rActivePowerRangePO.getMinsNum7() + 1);
|
|
||||||
}else if(0.8 < temp && temp <= 0.9){
|
|
||||||
rActivePowerRangePO.setMinsNum8(rActivePowerRangePO.getMinsNum8() + 1);
|
|
||||||
}else if(temp > 0.9){
|
|
||||||
rActivePowerRangePO.setMinsNum9(rActivePowerRangePO.getMinsNum9() + 1);
|
|
||||||
}
|
}
|
||||||
}
|
//计算各个区间个数
|
||||||
//计算各个区间是否越限
|
for(StatisticalDataDTO statisticalDataDTO : value){
|
||||||
//电压偏差
|
PowerStatisticsTargetVO powerStatisticsTargetVO = new PowerStatisticsTargetVO();
|
||||||
List<DataV> dataVS = iDataVService.getHarmonicDataV(key,startTime,endTime);
|
powerStatisticsTargetVO.setTime(statisticalDataDTO.getTime().atZone(ZoneId.systemDefault()).format(formatter));
|
||||||
for(DataV dataV : dataVS){
|
double temp = statisticalDataDTO.getValue() / Double.parseDouble(newStation.getRatedPower());
|
||||||
if(dataV.getVuDev() > 0 && dataV.getVuDev() > overlimits.get(0).getVoltageDev()){
|
if(temp <= 0.1){
|
||||||
|
//占有率区间个数+1
|
||||||
|
rActivePowerRangePO.setMinsNum0(rActivePowerRangePO.getMinsNum0() + 1);
|
||||||
|
//指标越限列表区间区分字段
|
||||||
|
powerStatisticsTargetVO.setField("0");
|
||||||
|
//判断每个指标是否越限(根据type来区分设置到哪个区间对应的是否越限字段)
|
||||||
|
installLimit(rActivePowerRangePO,statisticalDataDTO,overlimit,0,powerStatisticsTargetVO);
|
||||||
|
}else if(0.1 < temp && temp <= 0.2){
|
||||||
|
rActivePowerRangePO.setMinsNum1(rActivePowerRangePO.getMinsNum1() + 1);
|
||||||
|
powerStatisticsTargetVO.setField("1");
|
||||||
|
installLimit(rActivePowerRangePO,statisticalDataDTO,overlimit,1,powerStatisticsTargetVO);
|
||||||
|
}else if(0.2 < temp && temp <= 0.3){
|
||||||
|
rActivePowerRangePO.setMinsNum2(rActivePowerRangePO.getMinsNum2() + 1);
|
||||||
|
powerStatisticsTargetVO.setField("2");
|
||||||
|
installLimit(rActivePowerRangePO,statisticalDataDTO,overlimit,2,powerStatisticsTargetVO);
|
||||||
|
}else if(0.3 < temp && temp <= 0.4){
|
||||||
|
rActivePowerRangePO.setMinsNum3(rActivePowerRangePO.getMinsNum3() + 1);
|
||||||
|
powerStatisticsTargetVO.setField("3");
|
||||||
|
installLimit(rActivePowerRangePO,statisticalDataDTO,overlimit,3,powerStatisticsTargetVO);
|
||||||
|
}else if(0.4 < temp && temp <= 0.5){
|
||||||
|
rActivePowerRangePO.setMinsNum4(rActivePowerRangePO.getMinsNum4() + 1);
|
||||||
|
powerStatisticsTargetVO.setField("4");
|
||||||
|
installLimit(rActivePowerRangePO,statisticalDataDTO,overlimit,4,powerStatisticsTargetVO);
|
||||||
|
}else if(0.5 < temp && temp <= 0.6){
|
||||||
|
rActivePowerRangePO.setMinsNum5(rActivePowerRangePO.getMinsNum5() + 1);
|
||||||
|
powerStatisticsTargetVO.setField("5");
|
||||||
|
installLimit(rActivePowerRangePO,statisticalDataDTO,overlimit,5,powerStatisticsTargetVO);
|
||||||
|
}else if(0.6 < temp && temp <= 0.7){
|
||||||
|
rActivePowerRangePO.setMinsNum6(rActivePowerRangePO.getMinsNum6() + 1);
|
||||||
|
powerStatisticsTargetVO.setField("6");
|
||||||
|
installLimit(rActivePowerRangePO,statisticalDataDTO,overlimit,6,powerStatisticsTargetVO);
|
||||||
|
}else if(0.7 < temp && temp <= 0.8){
|
||||||
|
rActivePowerRangePO.setMinsNum7(rActivePowerRangePO.getMinsNum7() + 1);
|
||||||
|
powerStatisticsTargetVO.setField("7");
|
||||||
|
installLimit(rActivePowerRangePO,statisticalDataDTO,overlimit,7,powerStatisticsTargetVO);
|
||||||
|
}else if(0.8 < temp && temp <= 0.9){
|
||||||
|
rActivePowerRangePO.setMinsNum8(rActivePowerRangePO.getMinsNum8() + 1);
|
||||||
|
powerStatisticsTargetVO.setField("8");
|
||||||
|
installLimit(rActivePowerRangePO,statisticalDataDTO,overlimit,8,powerStatisticsTargetVO);
|
||||||
|
}else if(temp > 0.9){
|
||||||
|
rActivePowerRangePO.setMinsNum9(rActivePowerRangePO.getMinsNum9() + 1);
|
||||||
|
powerStatisticsTargetVO.setField("9");
|
||||||
|
installLimit(rActivePowerRangePO,statisticalDataDTO,overlimit,9,powerStatisticsTargetVO);
|
||||||
|
}
|
||||||
|
//重点说明:powerStatisticsTargetVO结构(维度)为:time可能多组相同,取决于功率表data_harmpower_p中的相别及统计方式,标识每个指标是否越限,总之一句话:当前时间中八个指标是否越限及他们的相别和统计方式是什么
|
||||||
|
powerStatisticsTargetVOS.add(powerStatisticsTargetVO);
|
||||||
|
}
|
||||||
|
//根据日期及lineId当天不能重复执行
|
||||||
|
if(this.baseMapper.selectList(lambdaQueryWrapper).isEmpty() && (finalRActivePowerRangeParam.isSearch() && finalRActivePowerRangeParam.isSearchForAdd() || !finalRActivePowerRangeParam.isSearch())){
|
||||||
|
this.baseMapper.insert(rActivePowerRangePO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
//区间过滤下
|
||||||
|
if(rActivePowerRangeParam.isSearch()){
|
||||||
|
return powerStatisticsTargetVOS.stream().filter(param->param.getField().equals(finalRActivePowerRangeParam.getField())).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void installLimit(RActivePowerRangePO rActivePowerRangePO,StatisticalDataDTO statisticalDataDTO,Overlimit overlimit,int type,PowerStatisticsTargetVO powerStatisticsTargetVO){
|
||||||
|
//以下的结果集按道理最多只有一条(因为确定的相别统计方式及开始和结束时间都一致)
|
||||||
|
//电压偏差
|
||||||
|
List<StatisticalDataDTO> vu_dev = commonQuery(InfluxDBTableConstant.DATA_V,"vu_dev",statisticalDataDTO,null,null);
|
||||||
|
//谐波电压
|
||||||
|
List<StatisticalDataDTO> v_thd = commonQuery(InfluxDBTableConstant.DATA_V,"v_thd",statisticalDataDTO,null,null);
|
||||||
|
List<StatisticalDataDTO> v = commonQuery(InfluxDBTableConstant.DATA_HARM_RATE_V,"v",statisticalDataDTO,2,25);
|
||||||
|
//谐波电流
|
||||||
|
List<StatisticalDataDTO> i = commonQuery(InfluxDBTableConstant.DATA_I,"i",statisticalDataDTO,2,25);
|
||||||
|
//三相电压不平衡度
|
||||||
|
List<StatisticalDataDTO> v_unbalance = commonQuery(InfluxDBTableConstant.DATA_V,"v_unbalance",statisticalDataDTO,null,null);
|
||||||
|
//电压波动
|
||||||
|
List<StatisticalDataDTO> fluc = commonQuery(InfluxDBTableConstant.DATA_FLUC,"fluc",statisticalDataDTO,null,null);
|
||||||
|
//长时闪变
|
||||||
|
List<StatisticalDataDTO> plt = commonQuery(InfluxDBTableConstant.DATA_PLT,"plt",statisticalDataDTO,null,null);
|
||||||
|
//间谐波电压含有率
|
||||||
|
List<StatisticalDataDTO> v1 = commonQuery(InfluxDBTableConstant.DATA_IN_HARM_V,"v",statisticalDataDTO,1,16);
|
||||||
|
//电流不平衡度
|
||||||
|
List<StatisticalDataDTO> i_unbalance = commonQuery(InfluxDBTableConstant.DATA_I,"i_unbalance",statisticalDataDTO,null,null);
|
||||||
|
//此标识用来记录当前区间下指标是否越限(0%~10%是否越限,10%~20%是否越限.....)
|
||||||
|
boolean isLimit = false;
|
||||||
|
//电压偏差是否越限比较
|
||||||
|
//电压偏差国标限制
|
||||||
|
powerStatisticsTargetVO.setVoltageOffsetLimit(overlimit.getVoltageDev());
|
||||||
|
for(StatisticalDataDTO dto : vu_dev){
|
||||||
|
//如果vu_dev>0,使用上偏差限值对比;如果vu_dev<0,使用下偏差限值对比
|
||||||
|
if((dto.getValue()>0 && Double.compare(dto.getValue(),overlimit.getVoltageDev())>0)
|
||||||
|
|| (dto.getValue()<0 && Double.compare(dto.getValue(),overlimit.getUvoltageDev())>0)){
|
||||||
|
isLimit = true;
|
||||||
|
//标志电压偏差越限
|
||||||
|
powerStatisticsTargetVO.setVoltageOffset(1);
|
||||||
|
//记录电压偏差越限的相别
|
||||||
|
powerStatisticsTargetVO.setPhasicType(dto.getPhaseType());
|
||||||
|
//记录电压偏差越限的统计方式
|
||||||
|
powerStatisticsTargetVO.setValueType(dto.getValueType());
|
||||||
|
}
|
||||||
|
//电压偏差国标限制有判断
|
||||||
|
if(dto.getValue()>0){
|
||||||
|
powerStatisticsTargetVO.setVoltageOffsetLimit(overlimit.getVoltageDev());
|
||||||
|
}else{
|
||||||
|
powerStatisticsTargetVO.setVoltageOffsetLimit(overlimit.getUvoltageDev());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//谐波电压是否越限比较
|
||||||
|
//谐波电压国标限制
|
||||||
|
powerStatisticsTargetVO.setVTimesLimit(overlimit.getUaberrance());
|
||||||
|
for(StatisticalDataDTO dto : v_thd){
|
||||||
|
if(Double.compare(dto.getValue(),overlimit.getUaberrance())>0){
|
||||||
|
isLimit = true;
|
||||||
|
powerStatisticsTargetVO.setVTimes(1);
|
||||||
|
powerStatisticsTargetVO.setPhasicType(dto.getPhaseType());
|
||||||
|
powerStatisticsTargetVO.setValueType(dto.getValueType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(StatisticalDataDTO dto : v){
|
||||||
|
if(frequencyCompare(overlimit,2,50,dto.getValue(),"uharm")){
|
||||||
|
isLimit = true;
|
||||||
|
powerStatisticsTargetVO.setVTimes(1);
|
||||||
|
powerStatisticsTargetVO.setPhasicType(dto.getPhaseType());
|
||||||
|
powerStatisticsTargetVO.setValueType(dto.getValueType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//谐波电流是否越限比较
|
||||||
|
//谐波电流国标限制(由于有谐波次数所以这边直接默认取第一个)
|
||||||
|
powerStatisticsTargetVO.setVTimesLimit(overlimit.getIharm2());
|
||||||
|
for(StatisticalDataDTO dto : i){
|
||||||
|
if(frequencyCompare(overlimit,2,25,dto.getValue(),"iharm")){
|
||||||
|
isLimit = true;
|
||||||
|
powerStatisticsTargetVO.setITimes(1);
|
||||||
|
powerStatisticsTargetVO.setPhasicType(dto.getPhaseType());
|
||||||
|
powerStatisticsTargetVO.setValueType(dto.getValueType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//三相电压不平衡度是否越限比较
|
||||||
|
//三相电压不平衡度国标限制
|
||||||
|
powerStatisticsTargetVO.setUbalanceLimit(overlimit.getUbalance());
|
||||||
|
for(StatisticalDataDTO dto : v_unbalance){
|
||||||
|
if(Double.compare(dto.getValue(),overlimit.getUbalance())>0){
|
||||||
|
isLimit = true;
|
||||||
|
powerStatisticsTargetVO.setUbalance(1);
|
||||||
|
powerStatisticsTargetVO.setPhasicType(dto.getPhaseType());
|
||||||
|
powerStatisticsTargetVO.setValueType(dto.getValueType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//电压波动是否越限比较
|
||||||
|
//电压波动国标限制
|
||||||
|
powerStatisticsTargetVO.setVoltageFluctuationLimit(overlimit.getVoltageFluctuation());
|
||||||
|
for(StatisticalDataDTO dto : fluc){
|
||||||
|
if(Double.compare(dto.getValue(),overlimit.getVoltageFluctuation())>0){
|
||||||
|
isLimit = true;
|
||||||
|
powerStatisticsTargetVO.setVoltageFluctuation(1);
|
||||||
|
powerStatisticsTargetVO.setPhasicType(dto.getPhaseType());
|
||||||
|
powerStatisticsTargetVO.setValueType(dto.getValueType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//长时闪变是否越限比较
|
||||||
|
//长时闪变国标限制
|
||||||
|
powerStatisticsTargetVO.setFlickerLimit(overlimit.getFlicker());
|
||||||
|
for(StatisticalDataDTO dto : plt){
|
||||||
|
if(Double.compare(dto.getValue(),overlimit.getFlicker())>0){
|
||||||
|
isLimit = true;
|
||||||
|
powerStatisticsTargetVO.setFlicker(1);
|
||||||
|
powerStatisticsTargetVO.setPhasicType(dto.getPhaseType());
|
||||||
|
powerStatisticsTargetVO.setValueType(dto.getValueType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//间谐波电压含有率是否越限比较
|
||||||
|
//间谐波电压含有率国标限制(由于有谐波次数所以这边直接默认取第一个)
|
||||||
|
powerStatisticsTargetVO.setInterHarmonicLimit(overlimit.getInuharm1());
|
||||||
|
for(StatisticalDataDTO dto : v1){
|
||||||
|
if(frequencyCompare(overlimit,1,16,dto.getValue(),"inuharm")){
|
||||||
|
isLimit = true;
|
||||||
|
powerStatisticsTargetVO.setInterHarmonic(1);
|
||||||
|
powerStatisticsTargetVO.setPhasicType(dto.getPhaseType());
|
||||||
|
powerStatisticsTargetVO.setValueType(dto.getValueType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//电流不平衡度是否越限比较
|
||||||
|
//间谐波电压含有率国标限制
|
||||||
|
powerStatisticsTargetVO.setSequenceCurrentUnbalanceLimit(overlimit.getINeg());
|
||||||
|
for(StatisticalDataDTO dto : i_unbalance){
|
||||||
|
if(Double.compare(dto.getValue(),overlimit.getINeg())>0){
|
||||||
|
isLimit = true;
|
||||||
|
powerStatisticsTargetVO.setSequenceCurrentUnbalance(1);
|
||||||
|
powerStatisticsTargetVO.setPhasicType(dto.getPhaseType());
|
||||||
|
powerStatisticsTargetVO.setValueType(dto.getValueType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch (type){
|
||||||
|
case 0:
|
||||||
|
if(isLimit) rActivePowerRangePO.setIsOrNot0(1);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if(isLimit) rActivePowerRangePO.setIsOrNot1(1);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if(isLimit) rActivePowerRangePO.setIsOrNot2(1);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if(isLimit) rActivePowerRangePO.setIsOrNot3(1);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
if(isLimit) rActivePowerRangePO.setIsOrNot4(1);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
if(isLimit) rActivePowerRangePO.setIsOrNot5(1);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
if(isLimit) rActivePowerRangePO.setIsOrNot6(1);
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
if(isLimit) rActivePowerRangePO.setIsOrNot7(1);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
if(isLimit) rActivePowerRangePO.setIsOrNot8(1);
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
if(isLimit) rActivePowerRangePO.setIsOrNot9(1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//组装公共查询
|
||||||
|
private List<StatisticalDataDTO> commonQuery(String tableName,String columnName,StatisticalDataDTO statisticalDataDTO,Integer start,Integer end){
|
||||||
|
List<CommonQueryParam> commonQueryParams = new ArrayList<>();
|
||||||
|
String time = statisticalDataDTO.getTime().atZone(ZoneId.systemDefault()).format(formatter);
|
||||||
|
CommonQueryParam commonQueryParam = new CommonQueryParam();
|
||||||
|
if(start == null){
|
||||||
|
commonQueryParam.setStartTime(time);
|
||||||
|
commonQueryParam.setEndTime(time);
|
||||||
|
commonQueryParam.setLineId(statisticalDataDTO.getLineId());
|
||||||
|
commonQueryParam.setPhasic(statisticalDataDTO.getPhaseType());
|
||||||
|
commonQueryParam.setDataType(statisticalDataDTO.getValueType());
|
||||||
|
commonQueryParam.setTableName(tableName);
|
||||||
|
commonQueryParam.setColumnName(columnName);
|
||||||
|
commonQueryParams.add(commonQueryParam);
|
||||||
|
}else{
|
||||||
|
for (int i = start; i <= end; i++) {
|
||||||
|
commonQueryParam = new CommonQueryParam();
|
||||||
|
commonQueryParam.setStartTime(time);
|
||||||
|
commonQueryParam.setEndTime(time);
|
||||||
|
commonQueryParam.setLineId(statisticalDataDTO.getLineId());
|
||||||
|
commonQueryParam.setPhasic(statisticalDataDTO.getPhaseType());
|
||||||
|
commonQueryParam.setDataType(statisticalDataDTO.getValueType());
|
||||||
|
commonQueryParam.setTableName(tableName);
|
||||||
|
commonQueryParam.setColumnName(columnName+"_"+i);
|
||||||
|
commonQueryParams.add(commonQueryParam);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return commonService.getNewDeviceRtDataByTime(commonQueryParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean frequencyCompare(Overlimit overlimit,int start,int end,Double value,String flag){
|
||||||
|
Class clazz = overlimit.getClass();
|
||||||
|
try {
|
||||||
|
for (int i = start; i <= end; i++) {
|
||||||
|
Field field = clazz.getDeclaredField(flag+i);
|
||||||
|
field.setAccessible(true);
|
||||||
|
if(Double.compare(value,Float.parseFloat(field.get(overlimit).toString()))>0){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getTime(long interval,int type){
|
private String getTime(long interval,int type){
|
||||||
DateTimeFormatter sdf = DateTimeFormatter.ofPattern(DateUtils.DATE_FORMAT_10);
|
DateTimeFormatter sdf = DateTimeFormatter.ofPattern(DateUtils.DATE_FORMAT_10);
|
||||||
LocalDate yesterday = LocalDate.now().minusDays(interval);
|
LocalDate yesterday;
|
||||||
if(type == 0){
|
if(type == 0){
|
||||||
|
yesterday = LocalDate.now().minusDays(interval);
|
||||||
return yesterday.format(sdf)+Param.BEGIN;
|
return yesterday.format(sdf)+Param.BEGIN;
|
||||||
}else{
|
}else{
|
||||||
|
yesterday = LocalDate.now().minusDays(1);
|
||||||
return yesterday.format(sdf)+Param.END;
|
return yesterday.format(sdf)+Param.END;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -128,6 +395,7 @@ public class RActivePowerRangeServiceImpl extends MppServiceImpl<RActivePowerRan
|
|||||||
List<RActivePowerRangePO> rActivePowerRangePOS = this.baseMapper.selectList(lambdaQueryWrapper);
|
List<RActivePowerRangePO> rActivePowerRangePOS = this.baseMapper.selectList(lambdaQueryWrapper);
|
||||||
if(!rActivePowerRangePOS.isEmpty()){
|
if(!rActivePowerRangePOS.isEmpty()){
|
||||||
RActivePowerRangePO rActivePowerRangePO = new RActivePowerRangePO();
|
RActivePowerRangePO rActivePowerRangePO = new RActivePowerRangePO();
|
||||||
|
rActivePowerRangePO.setLineId(lineId);
|
||||||
for(RActivePowerRangePO rangePO : rActivePowerRangePOS){
|
for(RActivePowerRangePO rangePO : rActivePowerRangePOS){
|
||||||
rActivePowerRangePO.setMinsNum0(rangePO.getMinsNum0()+rActivePowerRangePO.getMinsNum0());
|
rActivePowerRangePO.setMinsNum0(rangePO.getMinsNum0()+rActivePowerRangePO.getMinsNum0());
|
||||||
rActivePowerRangePO.setMinsNum1(rangePO.getMinsNum1()+rActivePowerRangePO.getMinsNum1());
|
rActivePowerRangePO.setMinsNum1(rangePO.getMinsNum1()+rActivePowerRangePO.getMinsNum1());
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ public class SpThroughServiceImpl extends MppServiceImpl<SpThroughMapper, SpThro
|
|||||||
.eq(SpThroughPO::getState,1)
|
.eq(SpThroughPO::getState,1)
|
||||||
.eq(SpThroughPO::getEventType,Param.UPPEREVENT);
|
.eq(SpThroughPO::getEventType,Param.UPPEREVENT);
|
||||||
Integer upperCount = this.baseMapper.selectCount(upperLambdaQueryWrapper);
|
Integer upperCount = this.baseMapper.selectCount(upperLambdaQueryWrapper);
|
||||||
spThroughVO.setHighPressure(upperCount == 0?null:upperCount.toString());
|
spThroughVO.setHighPressure(upperCount == 0?"0":upperCount.toString());
|
||||||
|
|
||||||
LambdaQueryWrapper<SpThroughPO> lowLambdaQueryWrapper = new LambdaQueryWrapper();
|
LambdaQueryWrapper<SpThroughPO> lowLambdaQueryWrapper = new LambdaQueryWrapper();
|
||||||
lowLambdaQueryWrapper.in(SpThroughPO::getEventId,spThroughParam.getEventIds())
|
lowLambdaQueryWrapper.in(SpThroughPO::getEventId,spThroughParam.getEventIds())
|
||||||
@@ -110,7 +110,7 @@ public class SpThroughServiceImpl extends MppServiceImpl<SpThroughMapper, SpThro
|
|||||||
.eq(SpThroughPO::getState,1)
|
.eq(SpThroughPO::getState,1)
|
||||||
.eq(SpThroughPO::getEventType,Param.LOWEREVENT);
|
.eq(SpThroughPO::getEventType,Param.LOWEREVENT);
|
||||||
Integer lowCount = this.baseMapper.selectCount(lowLambdaQueryWrapper);
|
Integer lowCount = this.baseMapper.selectCount(lowLambdaQueryWrapper);
|
||||||
spThroughVO.setLowPressure(lowCount == 0?null:lowCount.toString());
|
spThroughVO.setLowPressure(lowCount == 0?"0":lowCount.toString());
|
||||||
return spThroughVO;
|
return spThroughVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
package com.njcn.prepare.harmonic.service.mysql.event;
|
package com.njcn.prepare.harmonic.service.mysql.event;
|
||||||
|
|
||||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||||
|
import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO;
|
||||||
|
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 java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有功功率趋势 服务类
|
* 有功功率趋势 服务类
|
||||||
@@ -13,7 +16,7 @@ public interface RActivePowerRangeService extends IMppService<RActivePowerRangeP
|
|||||||
/**
|
/**
|
||||||
* 有功功率趋势记录(用于定时任务)
|
* 有功功率趋势记录(用于定时任务)
|
||||||
*/
|
*/
|
||||||
void record();
|
List<PowerStatisticsTargetVO> record(RActivePowerRangeParam rActivePowerRangeParam);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据监测点ID及时间获取有功功率趋势
|
* 根据监测点ID及时间获取有功功率趋势
|
||||||
|
|||||||
@@ -18,6 +18,6 @@ public class RActivePowerRangeTaskRunner implements TimerTaskRunner {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void action(String date) {
|
public void action(String date) {
|
||||||
rActivePowerRangeFeignClient.record();
|
rActivePowerRangeFeignClient.record(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user