diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/enums/PvDeviceResponseEnum.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/enums/PvDeviceResponseEnum.java index a934951c7..6b2a89abc 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/enums/PvDeviceResponseEnum.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/enums/PvDeviceResponseEnum.java @@ -45,6 +45,7 @@ public enum PvDeviceResponseEnum { TWO_SUB_VOLTAGE_EMPTY_MUST("A0368","II类监测点变电站母线必须为空"), LINE_DEVICE_NO_MATCH("A0369","监测点所属装置型号不匹配"), NO_SUB("A0370","当前单位下不存在台区或变电站"), + NEWSTATION_REPEAT("A0371","新能源场站名称已存在"), ; diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/NewStationServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/NewStationServiceImpl.java index 26acb686e..5ffb6f67b 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/NewStationServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/NewStationServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.exception.BusinessException; 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.NewStationMapper; import com.njcn.device.pq.pojo.param.NewStationQueryParam; @@ -45,10 +46,19 @@ public class NewStationServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper(); + lambdaQueryWrapper.eq(NewStation::getName,newStation.getName()).eq(NewStation::getState,1); boolean result ; 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); }else{ + if(!this.baseMapper.selectList(lambdaQueryWrapper).isEmpty()){ + throw new BusinessException(PvDeviceResponseEnum.NEWSTATION_REPEAT.getMessage()); + } newStation.setId(IdUtil.simpleUUID()); result = this.save(newStation); } diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/constant/Param.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/constant/Param.java index 32c1fbf21..de4958d52 100644 --- a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/constant/Param.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/constant/Param.java @@ -26,5 +26,6 @@ public interface Param { */ String BEGIN =" 00:00:00"; String END =" 23:59:59"; + String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; } diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/VoltageRideThroughVo.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/VoltageRideThroughVo.java index 2dd811258..5a32d341c 100644 --- a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/VoltageRideThroughVo.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/VoltageRideThroughVo.java @@ -26,9 +26,9 @@ public class VoltageRideThroughVo implements Serializable { private BigDecimal lat; @ApiModelProperty("低压次数") - private String lowPressure; + private String lowPressure = "0"; @ApiModelProperty("高压次数") - private String highPressure; + private String highPressure = "0"; } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/PowerStatisticsParam.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/PowerStatisticsParam.java index ed1f581d4..dee6a13b6 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/PowerStatisticsParam.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/PowerStatisticsParam.java @@ -16,44 +16,44 @@ import java.util.List; @EqualsAndHashCode(callSuper = true) public class PowerStatisticsParam extends BaseParam { - @ApiModelProperty(name = "lineId", value = "监测点ID") + @ApiModelProperty("监测点ID") @NotBlank(message = "监测点ID不能为空") private String lineId; - @ApiModelProperty(name = "statisticalId", value = "指标分类ID(用于查询指标详细数据的指标分类ID)") + @ApiModelProperty("指标分类ID(用于查询指标详细数据的指标分类ID)") private String statisticalId; - @ApiModelProperty(name = "field", value = "区间字段(用于查询指标越限列表)") + @ApiModelProperty("区间字段(用于查询指标越限列表)") private String field; - @ApiModelProperty(name = "time0", value = "区间1时间集合") + @ApiModelProperty("区间1时间集合") private List time0; - @ApiModelProperty(name = "time1", value = "区间2时间集合") + @ApiModelProperty("区间2时间集合") private List time1; - @ApiModelProperty(name = "time2", value = "区间3时间集合") + @ApiModelProperty("区间3时间集合") private List time2; - @ApiModelProperty(name = "time3", value = "区间4时间集合") + @ApiModelProperty("区间4时间集合") private List time3; - @ApiModelProperty(name = "time4", value = "区间5时间集合") + @ApiModelProperty("区间5时间集合") private List time4; - @ApiModelProperty(name = "time5", value = "区间6时间集合") + @ApiModelProperty("区间6时间集合") private List time5; - @ApiModelProperty(name = "time6", value = "区间7时间集合") + @ApiModelProperty("区间7时间集合") private List time6; - @ApiModelProperty(name = "time7", value = "区间8时间集合") + @ApiModelProperty("区间8时间集合") private List time7; - @ApiModelProperty(name = "time8", value = "区间9时间集合") + @ApiModelProperty("区间9时间集合") private List time8; - @ApiModelProperty(name = "time9", value = "区间10时间集合") + @ApiModelProperty("区间10时间集合") private List time9; } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/PowerStatisticsTargetVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/PowerStatisticsTargetVO.java index f46b2bde2..b2570d610 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/PowerStatisticsTargetVO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/PowerStatisticsTargetVO.java @@ -3,6 +3,8 @@ package com.njcn.harmonic.pojo.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.ArrayList; +import java.util.List; /** * 有功功率趋势指标 实体类 @@ -17,27 +19,84 @@ public class PowerStatisticsTargetVO { private String time; @ApiModelProperty("电压偏差") - private Integer voltageOffset; + private Integer voltageOffset = 0; - @ApiModelProperty(value = "谐波电压") - private Integer vTimes; + @ApiModelProperty("谐波电压") + private Integer vTimes = 0; - @ApiModelProperty(value = "谐波电流") - private Integer iTimes; + @ApiModelProperty("谐波电流") + private Integer iTimes = 0; @ApiModelProperty("三相电压不平衡度") - private Integer ubalance; + private Integer ubalance = 0; - @ApiModelProperty(value="电压波动") - private Integer voltageFluctuation; + @ApiModelProperty("电压波动") + private Integer voltageFluctuation = 0; @ApiModelProperty("闪变") - private Integer flicker; + private Integer flicker = 0; @ApiModelProperty("间谐波电压含有率") - private Integer interHarmonic; + private Integer interHarmonic = 0; @ApiModelProperty("电流不平衡度") - private Integer sequenceCurrentUnbalance; + private Integer sequenceCurrentUnbalance = 0; + + @ApiModelProperty("区间字段(标识是哪个区间:10%~20%、20%~30%....)用于后端辅助计算") + private String field; + + @ApiModelProperty("电压偏差详情") + private List voltageOffsetList = new ArrayList<>(); + + @ApiModelProperty("谐波电压详情") + private List vTimesList = new ArrayList<>(); + + @ApiModelProperty("谐波电流详情") + private List iTimestList = new ArrayList<>(); + + @ApiModelProperty("三相电压不平衡度详情") + private List ubalanceList = new ArrayList<>(); + + @ApiModelProperty("电压波动") + private List voltageFluctuationList = new ArrayList<>(); + + @ApiModelProperty("闪变详情") + private List flickerList = new ArrayList<>(); + + @ApiModelProperty("间谐波电压含有率详情") + private List interHarmonicList = new ArrayList<>(); + + @ApiModelProperty("电流不平衡度详情") + private List 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; } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/ThdDataVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/ThdDataVO.java index b59cea2fc..e57b96c88 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/ThdDataVO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/ThdDataVO.java @@ -1,5 +1,6 @@ package com.njcn.harmonic.pojo.vo; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -10,22 +11,64 @@ import lombok.Data; @Data public class ThdDataVO { + @ApiModelProperty("名称") private String anotherName; + + @ApiModelProperty("单位") private String unit; - private Double AVGPhaseA; - private Double AVGPhaseB; - private Double AVGPhaseC; - private Double CP95PhaseA; - private Double CP95PhaseB; - private Double CP95PhaseC; + @ApiModelProperty("平均值A相") + private String AVGPhaseA; - private Double MINPhaseA; - private Double MINPhaseB; - private Double MINPhaseC; + @ApiModelProperty("平均值B相") + private String AVGPhaseB; - private Double MAXPhaseA; - private Double MAXPhaseB; - private Double MAXPhaseC; + @ApiModelProperty("平均值C相") + private String AVGPhaseC; + + @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"; + } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/impl/PowerStatisticsServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/impl/PowerStatisticsServiceImpl.java index 6ae0cd58c..8b0b542b9 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/impl/PowerStatisticsServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/impl/PowerStatisticsServiceImpl.java @@ -2,10 +2,8 @@ package com.njcn.harmonic.service.activepowerrange.impl; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; -import com.njcn.common.pojo.exception.BusinessException; -import com.njcn.device.pq.pojo.bo.excel.TerminalBaseExcel; +import cn.hutool.core.bean.BeanUtil; import com.njcn.harmonic.constant.Param; -import com.njcn.harmonic.enums.HarmonicResponseEnum; import com.njcn.harmonic.pojo.param.PowerStatisticsParam; import com.njcn.harmonic.pojo.vo.PowerStatisticsExcelRangVO; 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.service.activepowerrange.PowerStatisticsService; 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; @@ -29,9 +29,8 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 有功功率趋势统计 服务实现类 @@ -61,7 +60,7 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService { RActivePowerRangePO rActivePowerRangePO = rActivePowerRangeFeignClient.getDataByLineId(powerStatisticsParam.getLineId(), powerStatisticsParam.getSearchBeginTime(),powerStatisticsParam.getSearchEndTime()).getData(); if(rActivePowerRangePO == null){ - throw new BusinessException(HarmonicResponseEnum.NO_LINE_DATA.getMessage()); + rActivePowerRangePO = new RActivePowerRangePO(); } PowerStatisticsVO powerStatisticsVO = new PowerStatisticsVO(); BeanUtils.copyProperties(rActivePowerRangePO, powerStatisticsVO); @@ -87,21 +86,140 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService { @Override public List getTargetLimitById(PowerStatisticsParam powerStatisticsParam) { - List list = new ArrayList(); - for (int i = 0; i < (int) (Math.random() * 10 + 1); i++) { + List data = new ArrayList<>(); + + RActivePowerRangeParam rActivePowerRangeParam = new RActivePowerRangeParam(); + BeanUtil.copyProperties(powerStatisticsParam, rActivePowerRangeParam); + rActivePowerRangeParam.setSearch(true); + //重点说明:powerStatisticsTargetVO结构(维度)为:time可能多组相同,取决于功率表data_harmpower_p中的相别及统计方式,标识每个指标是否越限,总之一句话:当前时间中八个指标是否越限及他们的相别和统计方式是什么 + //基于record结构需要做维度的转换 + List record = rActivePowerRangeFeignClient.record(rActivePowerRangeParam).getData(); + //根据时间分组: + Map> map = record.stream().collect(Collectors.groupingBy(PowerStatisticsTargetVO::getTime)); + map.forEach((key, value) ->{ PowerStatisticsTargetVO powerStatisticsTargetVO = new PowerStatisticsTargetVO(); - powerStatisticsTargetVO.setTime("2023-02-10 09:00:0" + i); - powerStatisticsTargetVO.setVoltageOffset(1); - powerStatisticsTargetVO.setVTimes(0); - powerStatisticsTargetVO.setITimes(1); - powerStatisticsTargetVO.setUbalance(1); - powerStatisticsTargetVO.setVoltageFluctuation(0); - powerStatisticsTargetVO.setFlicker(0); - powerStatisticsTargetVO.setInterHarmonic(1); - powerStatisticsTargetVO.setSequenceCurrentUnbalance(1); - list.add(powerStatisticsTargetVO); - } - return list; + powerStatisticsTargetVO.setTime(key); + ThdDataVO thdDataVO = new ThdDataVO(); + thdDataVO.init(); + Map voltageOffsetPV = new HashMap<>(); + Map vTimesPV = new HashMap<>(); + Map iTimesPV = new HashMap<>(); + Map ubalancePV = new HashMap<>(); + Map voltageFluctuationPV = new HashMap<>(); + Map flickerPV = new HashMap<>(); + Map interHarmonicPV = new HashMap<>(); + Map sequenceCurrentUnbalancePV = new HashMap<>(); + 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 initPV(Map pv,String name,Float limit){ + List 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 @@ -190,71 +308,71 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService { commonQueryParam.setLineId(powerStatisticsParam.getLineId()); commonQueryParam.setTableName(epdPqd.getClassId()); commonQueryParam.setColumnName(columnName == null ? epdPqd.getOtherName():columnName); - commonQueryParam.setStartTime(powerStatisticsParam.getSearchBeginTime()); - commonQueryParam.setEndTime(powerStatisticsParam.getSearchEndTime()); + commonQueryParam.setStartTime(powerStatisticsParam.getSearchBeginTime()+Param.START_TIME); + commonQueryParam.setEndTime(powerStatisticsParam.getSearchEndTime()+ Param.END_TIME); commonQueryParam.setDataType(METHODS.get(0)); commonQueryParam.setPhasic(PHASE.get(0)); commonQueryParams.add(commonQueryParam); List 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.setPhasic(PHASE.get(1)); 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.setPhasic(PHASE.get(2)); 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.setPhasic(PHASE.get(0)); 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.setPhasic(PHASE.get(1)); 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.setPhasic(PHASE.get(2)); 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.setPhasic(PHASE.get(0)); 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.setPhasic(PHASE.get(1)); 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.setPhasic(PHASE.get(2)); 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.setPhasic(PHASE.get(0)); 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.setPhasic(PHASE.get(1)); 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.setPhasic(PHASE.get(2)); 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; } @@ -263,40 +381,44 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService { PowerStatisticsVO powerStatisticsVO = getDataByLineId(powerStatisticsParam); //开始组装excel所需数据 List powerStatisticsVOS = new ArrayList<>(); + ExportParams exportParams = new ExportParams(powerStatisticsParam.getSearchValue(), "区间数据"); //各区间数量 PowerStatisticsExcelRangVO num = new PowerStatisticsExcelRangVO(); - num.setMinsNum0(powerStatisticsVO.getMinsNum0()+""); - num.setMinsNum1(powerStatisticsVO.getMinsNum1()+""); - num.setMinsNum2(powerStatisticsVO.getMinsNum2()+""); - num.setMinsNum3(powerStatisticsVO.getMinsNum3()+""); - num.setMinsNum4(powerStatisticsVO.getMinsNum4()+""); - num.setMinsNum5(powerStatisticsVO.getMinsNum5()+""); - num.setMinsNum6(powerStatisticsVO.getMinsNum6()+""); - num.setMinsNum7(powerStatisticsVO.getMinsNum7()+""); - num.setMinsNum8(powerStatisticsVO.getMinsNum8()+""); - num.setMinsNum9(powerStatisticsVO.getMinsNum9()+""); + num.setMinsNum0(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum0()+""); + num.setMinsNum1(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum1()+""); + num.setMinsNum2(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum2()+""); + num.setMinsNum3(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum3()+""); + num.setMinsNum4(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum4()+""); + num.setMinsNum5(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum5()+""); + num.setMinsNum6(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum6()+""); + num.setMinsNum7(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum7()+""); + num.setMinsNum8(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum8()+""); + num.setMinsNum9(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getMinsNum9()+""); num.setText("个数"); powerStatisticsVOS.add(num); //各区间是否越限 PowerStatisticsExcelRangVO isOrNot = new PowerStatisticsExcelRangVO(); - isOrNot.setMinsNum0(powerStatisticsVO.getIsOrNot0()>0?"是":"否"); - isOrNot.setMinsNum1(powerStatisticsVO.getIsOrNot1()>0?"是":"否"); - isOrNot.setMinsNum2(powerStatisticsVO.getIsOrNot2()>0?"是":"否"); - isOrNot.setMinsNum3(powerStatisticsVO.getIsOrNot3()>0?"是":"否"); - isOrNot.setMinsNum4(powerStatisticsVO.getIsOrNot4()>0?"是":"否"); - isOrNot.setMinsNum5(powerStatisticsVO.getIsOrNot5()>0?"是":"否"); - isOrNot.setMinsNum6(powerStatisticsVO.getIsOrNot6()>0?"是":"否"); - isOrNot.setMinsNum7(powerStatisticsVO.getIsOrNot7()>0?"是":"否"); - isOrNot.setMinsNum8(powerStatisticsVO.getIsOrNot8()>0?"是":"否"); - isOrNot.setMinsNum9(powerStatisticsVO.getIsOrNot9()>0?"是":"否"); + isOrNot.setMinsNum0(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot0()>0?"是":"否"); + isOrNot.setMinsNum1(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot1()>0?"是":"否"); + isOrNot.setMinsNum2(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot2()>0?"是":"否"); + isOrNot.setMinsNum3(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot3()>0?"是":"否"); + isOrNot.setMinsNum4(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot4()>0?"是":"否"); + isOrNot.setMinsNum5(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot5()>0?"是":"否"); + isOrNot.setMinsNum6(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot6()>0?"是":"否"); + isOrNot.setMinsNum7(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot7()>0?"是":"否"); + isOrNot.setMinsNum8(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot8()>0?"是":"否"); + isOrNot.setMinsNum9(powerStatisticsVO.getLineId() == null? "":powerStatisticsVO.getIsOrNot9()>0?"是":"否"); isOrNot.setText("是否越限"); powerStatisticsVOS.add(isOrNot); //各区间占比 PowerStatisticsExcelRangVO proportion = new PowerStatisticsExcelRangVO(); - int total = powerStatisticsVO.getMinsNum0() + powerStatisticsVO.getMinsNum1() + powerStatisticsVO.getMinsNum2() - + powerStatisticsVO.getMinsNum3() + powerStatisticsVO.getMinsNum4() + powerStatisticsVO.getMinsNum5() - + powerStatisticsVO.getMinsNum6() + powerStatisticsVO.getMinsNum7() + powerStatisticsVO.getMinsNum8() - + powerStatisticsVO.getMinsNum9(); + int total = 0; + if(powerStatisticsVO.getLineId() != null){ + total = powerStatisticsVO.getMinsNum0() + powerStatisticsVO.getMinsNum1() + powerStatisticsVO.getMinsNum2() + + powerStatisticsVO.getMinsNum3() + powerStatisticsVO.getMinsNum4() + powerStatisticsVO.getMinsNum5() + + powerStatisticsVO.getMinsNum6() + powerStatisticsVO.getMinsNum7() + powerStatisticsVO.getMinsNum8() + + powerStatisticsVO.getMinsNum9(); + } if(total != 0){ proportion.setMinsNum0(dftwo.format((double)powerStatisticsVO.getMinsNum0().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.setMinsNum8(dftwo.format((double)powerStatisticsVO.getMinsNum8().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("占比"); powerStatisticsVOS.add(proportion); //数据准备完毕开始渲染excel - ExportParams exportParams = new ExportParams("", "区间数据"); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, PowerStatisticsExcelRangVO.class, powerStatisticsVOS); Sheet sheet = workbook.getSheet("区间数据"); Font redFont = workbook.createFont(); @@ -347,8 +479,8 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService { //设置斜线的开始位置,我这里是从第0行到第1行,从第0列到第1列 anchor.setCol1(0); anchor.setCol2(1); - anchor.setRow1(0); - anchor.setRow2(1); + anchor.setRow1(1); + anchor.setRow2(2); XSSFSimpleShape simpleShape = xssfDrawing.createSimpleShape((XSSFClientAnchor) anchor); //设置形状类型未线型 simpleShape.setShapeType(ShapeTypes.LINE); @@ -359,18 +491,18 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService { //设置线的颜色 simpleShape.setLineStyleColor(0,0,0); //删除第一行title - sheet.removeRow(sheet.getRow(0)); + //sheet.removeRow(sheet.getRow(0)); //上移(因为删除一行只是将数据清空了留下空行) - sheet.shiftRows(1, sheet.getLastRowNum(), -1); - PoiUtil.exportFileByWorkbook(workbook, "区间数据.xlsx", response); + //sheet.shiftRows(1, sheet.getLastRowNum(), -1); + PoiUtil.exportFileByWorkbook(workbook, powerStatisticsParam.getSearchValue()+".xlsx", response); } @Override public void exportExcelListTemplate(PowerStatisticsParam powerStatisticsParam, HttpServletResponse response) { - ExportParams exportParams = new ExportParams("指标越限列表数据", "指标越限列表数据"); - Workbook workbook = ExcelExportUtil.exportExcel(exportParams, TerminalBaseExcel.class, new ArrayList()); - String fileName = "指标越限列表数据.xlsx"; - PoiUtil.exportFileByWorkbook(workbook, fileName, response); + ExportParams exportParams = new ExportParams(powerStatisticsParam.getSearchValue(), "指标越限列表数据"); + List powerStatisticsTargetVOS = getTargetLimitById(powerStatisticsParam); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, PowerStatisticsTargetVO.class, powerStatisticsTargetVOS); + PoiUtil.exportFileByWorkbook(workbook, powerStatisticsParam.getSearchValue()+".xlsx", response); } } diff --git a/pqs-prepare/prepare-api/pom.xml b/pqs-prepare/prepare-api/pom.xml index 986f3ec05..4089d906f 100644 --- a/pqs-prepare/prepare-api/pom.xml +++ b/pqs-prepare/prepare-api/pom.xml @@ -22,6 +22,12 @@ common-web ${project.version} + + com.njcn + harmonic-api + 1.0.0 + compile + diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/RActivePowerRangeFeignClient.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/RActivePowerRangeFeignClient.java index f93b51393..d5e347b7d 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/RActivePowerRangeFeignClient.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/RActivePowerRangeFeignClient.java @@ -2,12 +2,16 @@ package com.njcn.prepare.harmonic.api.event; import com.njcn.common.pojo.constant.ServerInfo; 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.pojo.param.RActivePowerRangeParam; import com.njcn.prepare.harmonic.pojo.po.RActivePowerRangePO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; +import java.util.List; /** * 有功功率趋势Feign客户端 @@ -22,7 +26,7 @@ import org.springframework.web.bind.annotation.RequestParam; public interface RActivePowerRangeFeignClient { @PostMapping("/record") - HttpResult record(); + HttpResult> record(@RequestBody(required = false) RActivePowerRangeParam rActivePowerRangeParam); @GetMapping("/getDataByLineId") HttpResult getDataByLineId(@RequestParam("lineId") String lineId,@RequestParam("startTime") String startTime,@RequestParam("endTime") String endTime); diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/fallback/RActivePowerRangeFeignClientFallbackFactory.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/fallback/RActivePowerRangeFeignClientFallbackFactory.java index 5aa421304..8b15f4270 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/fallback/RActivePowerRangeFeignClientFallbackFactory.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/fallback/RActivePowerRangeFeignClientFallbackFactory.java @@ -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.exception.BusinessException; 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.pojo.param.RActivePowerRangeParam; import com.njcn.prepare.harmonic.pojo.po.RActivePowerRangePO; import com.njcn.prepare.harmonic.utils.PrepareEnumUtil; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.util.List; /** * 有功功率趋势熔断降级 @@ -30,7 +33,7 @@ public class RActivePowerRangeFeignClientFallbackFactory implements FallbackFact Enum finalExceptionEnum = exceptionEnum; return new RActivePowerRangeFeignClient() { @Override - public HttpResult record() { + public HttpResult> record(RActivePowerRangeParam rActivePowerRangeParam) { log.error("{}异常,降级处理,异常为:{}", "有功功率趋势记录: ", throwable.toString()); throw new BusinessException(finalExceptionEnum); } diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/param/RActivePowerRangeParam.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/param/RActivePowerRangeParam.java new file mode 100644 index 000000000..1f8bf81df --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/param/RActivePowerRangeParam.java @@ -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; + +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RActivePowerRangePO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RActivePowerRangePO.java index 48ccd6ced..ef1b65e20 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RActivePowerRangePO.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RActivePowerRangePO.java @@ -34,7 +34,7 @@ public class RActivePowerRangePO extends BaseEntity { /** * 0%~10%区间时间Json */ - private String minsTime0; + private String minsTime0 = "{}"; /** * 0%~10%区间个数 @@ -49,7 +49,7 @@ public class RActivePowerRangePO extends BaseEntity { /** * 10%~20%区间时间Json */ - private String minsTime1; + private String minsTime1 = "{}";; /** * 10%~20%区间个数 @@ -64,7 +64,7 @@ public class RActivePowerRangePO extends BaseEntity { /** * 20%~30%区间时间Json */ - private String minsTime2; + private String minsTime2 = "{}";; /** * 20%~30%区间个数 @@ -79,7 +79,7 @@ public class RActivePowerRangePO extends BaseEntity { /** * 30%~40%区间时间Json */ - private String minsTime3; + private String minsTime3 = "{}";; /** * 30%~40%区间个数 @@ -94,7 +94,7 @@ public class RActivePowerRangePO extends BaseEntity { /** * 40%~50%区间时间Json */ - private String minsTime4; + private String minsTime4 = "{}";; /** * 40%~50%区间个数 @@ -109,7 +109,7 @@ public class RActivePowerRangePO extends BaseEntity { /** * 50%~60%区间时间Json */ - private String minsTime5; + private String minsTime5 = "{}";; /** * 50%~60%区间个数 @@ -124,7 +124,7 @@ public class RActivePowerRangePO extends BaseEntity { /** * 60%~70%区间时间Json */ - private String minsTime6; + private String minsTime6 = "{}";; /** * 60%~70%区间个数 @@ -139,7 +139,7 @@ public class RActivePowerRangePO extends BaseEntity { /** * 70%~80%区间时间Json */ - private String minsTime7; + private String minsTime7 = "{}";; /** * 70%~80%区间个数 @@ -154,7 +154,7 @@ public class RActivePowerRangePO extends BaseEntity { /** * 80%~90%区间时间Json */ - private String minsTime8; + private String minsTime8 = "{}";; /** * 80%~90%区间个数 @@ -169,7 +169,7 @@ public class RActivePowerRangePO extends BaseEntity { /** * 90%~100%区间时间Json */ - private String minsTime9; + private String minsTime9 = "{}";; /** * 90%~100%区间个数 diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/event/RActivePowerRangeController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/event/RActivePowerRangeController.java index 46401925f..769997baf 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/event/RActivePowerRangeController.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/event/RActivePowerRangeController.java @@ -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.response.HttpResult; 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.service.mysql.event.RActivePowerRangeService; import com.njcn.web.controller.BaseController; @@ -15,6 +17,7 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; 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) @PostMapping("/record") @ApiOperation("有功功率趋势记录(用于定时任务)") - public HttpResult record() { + public HttpResult> record(@RequestBody(required = false) RActivePowerRangeParam rActivePowerRangeParam) { String methodDescribe = getMethodDescribe("record"); - rActivePowerRangeService.record(); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + List powerStatisticsTargetVOS = rActivePowerRangeService.record(rActivePowerRangeParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, powerStatisticsTargetVOS, methodDescribe); } @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY) diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/event/RActivePowerRangeServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/event/RActivePowerRangeServiceImpl.java index ff31fd19e..c301ad23d 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/event/RActivePowerRangeServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/event/RActivePowerRangeServiceImpl.java @@ -11,17 +11,20 @@ import com.njcn.device.pq.api.NewStationClient; import com.njcn.device.pq.api.OverLimitClient; import com.njcn.device.pq.pojo.po.NewStation; import com.njcn.event.pojo.constant.Param; -import com.njcn.influx.pojo.po.DataHarmPowerP; -import com.njcn.influx.pojo.po.DataV; -import com.njcn.influx.service.CommonService; -import com.njcn.influx.service.DataHarmPowerPService; -import com.njcn.influx.service.IDataVService; +import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO; +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.*; 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.service.mysql.event.RActivePowerRangeService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.lang.reflect.Field; import java.time.LocalDate; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -35,7 +38,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class RActivePowerRangeServiceImpl extends MppServiceImpl implements RActivePowerRangeService { - private final DataHarmPowerPService dataHarmPowerPService; + private final CommonService commonService; private final CommLineClient commLineClient; @@ -43,79 +46,343 @@ public class RActivePowerRangeServiceImpl extends MppServiceImpl record(RActivePowerRangeParam rActivePowerRangeParam) { + if(rActivePowerRangeParam == null){ + rActivePowerRangeParam = new RActivePowerRangeParam(); + } //根据事件间隔查询 SELECT * FROM "data_harmpower_p" limit 1 得到P // 便利 用p / 风电场额定有功功率 * 100% 看落在那个占比 - List rActivePowerRangePOS = new ArrayList<>(); + List powerStatisticsTargetVOS = new ArrayList<>(); //定义开始和结束时间 - String startTime = getTime(1,0); - String endTime = getTime(1,1); + String startTime = getTime(rActivePowerRangeParam.getInterval(),0); + String endTime = getTime(rActivePowerRangeParam.getInterval(),1); //获取时间段内的有功功率集合 - List dataHarmPowerPS = dataHarmPowerPService.getHarmonicPowerP("",startTime,endTime); + List 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 dataHarmPowerPS = commonService.getNewDeviceRtDataByTime(commonQueryParams); //有功功率趋势表是按照监测点来划分的 所以这边需要根据监测点来分组 - Map> map = dataHarmPowerPS.stream().collect(Collectors.groupingBy(DataHarmPowerP::getLineId)); - map.forEach((key,value) ->{ - RActivePowerRangePO rActivePowerRangePO = new RActivePowerRangePO(); - rActivePowerRangePO.setId(IdUtil.simpleUUID()); - rActivePowerRangePO.setLineId(key); - rActivePowerRangePO.setTimeId(LocalDate.now()); + Map> map = dataHarmPowerPS.stream().collect(Collectors.groupingBy(StatisticalDataDTO::getLineId)); + RActivePowerRangeParam finalRActivePowerRangeParam = rActivePowerRangeParam; + map.forEach((key, value) ->{ //获取监测点的国标限值 List overlimits = overLimitClient.getOverLimitByLineIds(Arrays.asList(key)).getData(); - //获取监测点 - LineDTO lineDTO = commLineClient.getLineDetail(key).getData(); - if(lineDTO != null && lineDTO.getNewStationId() != null){ - NewStation newStation = newStationClient.selectById(lineDTO.getNewStationId()).getData(); - //风电场 - if(newStation != null && com.njcn.device.pq.constant.Param.WINDFARM.equals(newStation.getStationType())){ - //计算各个区间个数 - for(DataHarmPowerP dataHarmPowerP : value){ - double temp = dataHarmPowerP.getP() / Double.parseDouble(newStation.getRatedPower()); - if(temp <= 0.1){ - rActivePowerRangePO.setMinsNum0(rActivePowerRangePO.getMinsNum0() + 1); - }else if(0.1 < temp && temp <= 0.2){ - rActivePowerRangePO.setMinsNum1(rActivePowerRangePO.getMinsNum1() + 1); - }else if(0.2 < temp && temp <= 0.3){ - rActivePowerRangePO.setMinsNum2(rActivePowerRangePO.getMinsNum2() + 1); - }else if(0.3 < temp && temp <= 0.4){ - rActivePowerRangePO.setMinsNum3(rActivePowerRangePO.getMinsNum3() + 1); - }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); + if(overlimits != null && !overlimits.isEmpty()){ + Overlimit overlimit = overlimits.get(0); + //获取监测点 + LineDTO lineDTO = commLineClient.getLineDetail(key).getData(); + if(lineDTO != null && lineDTO.getNewStationId() != null){ + NewStation newStation = newStationClient.selectById(lineDTO.getNewStationId()).getData(); + //风电场 + if(newStation != null && com.njcn.device.pq.constant.Param.WINDFARM.equals(newStation.getStationType())){ + RActivePowerRangePO rActivePowerRangePO = new RActivePowerRangePO(); + rActivePowerRangePO.setLineId(key); + rActivePowerRangePO.setTimeId(LocalDate.now()); + rActivePowerRangePO.setId(IdUtil.simpleUUID()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(RActivePowerRangePO::getLineId,key).eq(RActivePowerRangePO::getTimeId,LocalDate.now()); + //强制刷新 + if(finalRActivePowerRangeParam.isRefresh()){ + this.baseMapper.delete(lambdaQueryWrapper); } - } - //计算各个区间是否越限 - //电压偏差 - List dataVS = iDataVService.getHarmonicDataV(key,startTime,endTime); - for(DataV dataV : dataVS){ - if(dataV.getVuDev() > 0 && dataV.getVuDev() > overlimits.get(0).getVoltageDev()){ - + //计算各个区间个数 + for(StatisticalDataDTO statisticalDataDTO : value){ + PowerStatisticsTargetVO powerStatisticsTargetVO = new PowerStatisticsTargetVO(); + powerStatisticsTargetVO.setTime(statisticalDataDTO.getTime().atZone(ZoneId.systemDefault()).format(formatter)); + double temp = statisticalDataDTO.getValue() / Double.parseDouble(newStation.getRatedPower()); + 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 vu_dev = commonQuery(InfluxDBTableConstant.DATA_V,"vu_dev",statisticalDataDTO,null,null); + //谐波电压 + List v_thd = commonQuery(InfluxDBTableConstant.DATA_V,"v_thd",statisticalDataDTO,null,null); + List v = commonQuery(InfluxDBTableConstant.DATA_HARM_RATE_V,"v",statisticalDataDTO,2,25); + //谐波电流 + List i = commonQuery(InfluxDBTableConstant.DATA_I,"i",statisticalDataDTO,2,25); + //三相电压不平衡度 + List v_unbalance = commonQuery(InfluxDBTableConstant.DATA_V,"v_unbalance",statisticalDataDTO,null,null); + //电压波动 + List fluc = commonQuery(InfluxDBTableConstant.DATA_FLUC,"fluc",statisticalDataDTO,null,null); + //长时闪变 + List plt = commonQuery(InfluxDBTableConstant.DATA_PLT,"plt",statisticalDataDTO,null,null); + //间谐波电压含有率 + List v1 = commonQuery(InfluxDBTableConstant.DATA_IN_HARM_V,"v",statisticalDataDTO,1,16); + //电流不平衡度 + List 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 commonQuery(String tableName,String columnName,StatisticalDataDTO statisticalDataDTO,Integer start,Integer end){ + List 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){ DateTimeFormatter sdf = DateTimeFormatter.ofPattern(DateUtils.DATE_FORMAT_10); - LocalDate yesterday = LocalDate.now().minusDays(interval); + LocalDate yesterday; if(type == 0){ + yesterday = LocalDate.now().minusDays(interval); return yesterday.format(sdf)+Param.BEGIN; }else{ + yesterday = LocalDate.now().minusDays(1); return yesterday.format(sdf)+Param.END; } } @@ -128,6 +395,7 @@ public class RActivePowerRangeServiceImpl extends MppServiceImpl 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()); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/event/SpThroughServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/event/SpThroughServiceImpl.java index 2c43a2c93..bf5618207 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/event/SpThroughServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/event/SpThroughServiceImpl.java @@ -101,7 +101,7 @@ public class SpThroughServiceImpl extends MppServiceImpl lowLambdaQueryWrapper = new LambdaQueryWrapper(); lowLambdaQueryWrapper.in(SpThroughPO::getEventId,spThroughParam.getEventIds()) @@ -110,7 +110,7 @@ public class SpThroughServiceImpl extends MppServiceImpl record(RActivePowerRangeParam rActivePowerRangeParam); /** * 根据监测点ID及时间获取有功功率趋势 diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/RActivePowerRangeTaskRunner.java b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/RActivePowerRangeTaskRunner.java index a440b296d..c82ec4583 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/RActivePowerRangeTaskRunner.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/RActivePowerRangeTaskRunner.java @@ -18,6 +18,6 @@ public class RActivePowerRangeTaskRunner implements TimerTaskRunner { @Override public void action(String date) { - rActivePowerRangeFeignClient.record(); + rActivePowerRangeFeignClient.record(null); } }