有功功率趋势
This commit is contained in:
@@ -67,4 +67,6 @@ public interface Param {
|
||||
*/
|
||||
String VALUE_TYPEAVG = "AVG";
|
||||
|
||||
//DecimalFormat格式化
|
||||
String DECIMAL_FORMATSTR = "#0.0000";
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ public enum HarmonicResponseEnum {
|
||||
REPORT_TEMPLATE_DOWNLOAD_ERROR("A00560","报表模板下载异常"),
|
||||
NO_DATA("A00561","时间范围内暂无谐波数据"),
|
||||
INSUFFICIENCY_OF_INTEGRITY("A00561","时间范围内谐波数据完整性不足"),
|
||||
NO_LINE_DATA("A00562","监测点无有功功率数据"),
|
||||
;
|
||||
|
||||
private final String code;
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.njcn.harmonic.pojo.param;
|
||||
|
||||
import com.njcn.web.pojo.param.BaseParam;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 有功功率趋势统计 查询实体类
|
||||
* @author guofeihu
|
||||
* @since 2024-08-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class PowerStatisticsParam extends BaseParam {
|
||||
|
||||
@ApiModelProperty(name = "lineId", value = "监测点ID")
|
||||
@NotBlank(message = "监测点ID不能为空")
|
||||
private String lineId;
|
||||
|
||||
@ApiModelProperty(name = "statisticalId", value = "指标分类ID(用于查询指标详细数据的指标分类ID)")
|
||||
private String statisticalId;
|
||||
|
||||
@ApiModelProperty(name = "field", value = "区间字段(用于查询指标越限列表)")
|
||||
private String field;
|
||||
|
||||
@ApiModelProperty(name = "ids", value = "ids")
|
||||
private List<String> ids;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.njcn.harmonic.pojo.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 有功功率趋势指标 实体类
|
||||
* @author guofeihu
|
||||
* @since 2024-08-20
|
||||
*/
|
||||
@Data
|
||||
public class PowerStatisticsTargetVO {
|
||||
|
||||
@ApiModelProperty("时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private String time;
|
||||
|
||||
@ApiModelProperty("电压偏差")
|
||||
private Integer voltageOffset;
|
||||
|
||||
@ApiModelProperty(value = "谐波电压")
|
||||
private Integer vTimes;
|
||||
|
||||
@ApiModelProperty(value = "谐波电流")
|
||||
private Integer iTimes;
|
||||
|
||||
@ApiModelProperty("三相电压不平衡度")
|
||||
private Integer ubalance;
|
||||
|
||||
@ApiModelProperty(value="电压波动")
|
||||
private Integer voltageFluctuation;
|
||||
|
||||
@ApiModelProperty("闪变")
|
||||
private Integer flicker;
|
||||
|
||||
@ApiModelProperty("间谐波电压含有率")
|
||||
private Integer interHarmonic;
|
||||
|
||||
@ApiModelProperty("电流不平衡度")
|
||||
private Integer sequenceCurrentUnbalance;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
package com.njcn.harmonic.pojo.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 有功功率趋势 实体类
|
||||
* @author guofeihu
|
||||
* @since 2024-08-20
|
||||
*/
|
||||
@Data
|
||||
public class PowerStatisticsVO {
|
||||
|
||||
@ApiModelProperty("ID")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("监测点ID")
|
||||
private String lineId;
|
||||
|
||||
@ApiModelProperty("日期(天)")
|
||||
private LocalDate timeId;
|
||||
|
||||
@ApiModelProperty("0%~10%区间时间Json")
|
||||
private String minsTime0;
|
||||
|
||||
@ApiModelProperty("0%~10%区间个数")
|
||||
private Integer minsNum0;
|
||||
|
||||
@ApiModelProperty("0%~10%区间是否越限")
|
||||
private Integer isOrNot0;
|
||||
|
||||
@ApiModelProperty("10%~20%区间时间Json")
|
||||
private String minsTime1;
|
||||
|
||||
@ApiModelProperty("10%~20%区间个数")
|
||||
private Integer minsNum1;
|
||||
|
||||
@ApiModelProperty("10%~20%区间是否越限")
|
||||
private Integer isOrNot1;
|
||||
|
||||
@ApiModelProperty("20%~30%区间时间Json")
|
||||
private String minsTime2;
|
||||
|
||||
@ApiModelProperty("20%~30%区间个数")
|
||||
private Integer minsNum2;
|
||||
|
||||
@ApiModelProperty("20%~30%区间是否越限")
|
||||
private Integer isOrNot2;
|
||||
|
||||
@ApiModelProperty("30%~40%区间时间Json")
|
||||
private String minsTime3;
|
||||
|
||||
@ApiModelProperty("30%~40%区间个数")
|
||||
private Integer minsNum3;
|
||||
|
||||
@ApiModelProperty("30%~40%区间是否越限")
|
||||
private Integer isOrNot3;
|
||||
|
||||
@ApiModelProperty("40%~50%区间时间Json")
|
||||
private String minsTime4;
|
||||
|
||||
@ApiModelProperty("40%~50%区间个数")
|
||||
private Integer minsNum4;
|
||||
|
||||
@ApiModelProperty("40%~50%区间是否越限")
|
||||
private Integer isOrNot4;
|
||||
|
||||
@ApiModelProperty("50%~60%区间时间Json")
|
||||
private String minsTime5;
|
||||
|
||||
@ApiModelProperty("50%~60%区间个数")
|
||||
private Integer minsNum5;
|
||||
|
||||
@ApiModelProperty("50%~60%区间是否越限")
|
||||
private Integer isOrNot5;
|
||||
|
||||
@ApiModelProperty("60%~70%区间时间Json")
|
||||
private String minsTime6;
|
||||
|
||||
@ApiModelProperty("60%~70%区间个数")
|
||||
private Integer minsNum6;
|
||||
|
||||
@ApiModelProperty("60%~70%区间是否越限")
|
||||
private Integer isOrNot6;
|
||||
|
||||
@ApiModelProperty("70%~80%区间时间Json")
|
||||
private String minsTime7;
|
||||
|
||||
@ApiModelProperty("70%~80%区间个数")
|
||||
private Integer minsNum7;
|
||||
|
||||
@ApiModelProperty("70%~80%区间是否越限")
|
||||
private Integer isOrNot7;
|
||||
|
||||
@ApiModelProperty("80%~90%区间时间Json")
|
||||
private String minsTime8;
|
||||
|
||||
@ApiModelProperty("80%~90%区间个数")
|
||||
private Integer minsNum8;
|
||||
|
||||
@ApiModelProperty("80%~90%区间是否越限")
|
||||
private Integer isOrNot8;
|
||||
|
||||
@ApiModelProperty("90%~100%区间时间Json")
|
||||
private String minsTime9;
|
||||
|
||||
@ApiModelProperty("90%~100%区间个数")
|
||||
private Integer minsNum9;
|
||||
|
||||
@ApiModelProperty("90%~100%区间是否越限")
|
||||
private Integer isOrNot9;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.harmonic.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 指标详情数据实体类
|
||||
* @author guofeihu
|
||||
* @since 2024-08-20
|
||||
*/
|
||||
@Data
|
||||
public class ThdDataVO {
|
||||
private String phase;
|
||||
private String statMethod;
|
||||
private String anotherName;
|
||||
private String frequency;
|
||||
private Double statisticalData;
|
||||
}
|
||||
@@ -94,6 +94,18 @@
|
||||
<artifactId>joda-time</artifactId>
|
||||
<version>2.9.9</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.njcn</groupId>
|
||||
<artifactId>prepare-api</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.njcn</groupId>
|
||||
<artifactId>pq-device-boot</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -1,11 +1,31 @@
|
||||
package com.njcn.harmonic.controller.powerstatistics;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
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.device.pq.pojo.bo.excel.TerminalBaseExcel;
|
||||
import com.njcn.device.pq.utils.ExcelStyleUtil;
|
||||
import com.njcn.harmonic.pojo.param.PowerStatisticsParam;
|
||||
import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO;
|
||||
import com.njcn.harmonic.pojo.vo.PowerStatisticsVO;
|
||||
import com.njcn.harmonic.pojo.vo.ThdDataVO;
|
||||
import com.njcn.harmonic.service.activepowerrange.PowerStatisticsService;
|
||||
import com.njcn.poi.util.PoiUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 有功功率趋势统计 前端控制器
|
||||
@@ -21,5 +41,50 @@ public class PowerStatisticsController extends BaseController {
|
||||
|
||||
private final PowerStatisticsService powerStatisticsService;
|
||||
|
||||
/**
|
||||
* 根据监测点ID及时间获取有功功率趋势
|
||||
*/
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@GetMapping("/getDataByLineId")
|
||||
@ApiOperation("根据监测点ID及时间获取有功功率趋势")
|
||||
public HttpResult<PowerStatisticsVO> getDataByLineId(@RequestBody @Validated PowerStatisticsParam powerStatisticsParam) {
|
||||
String methodDescribe = getMethodDescribe("getDataByLineId");
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, powerStatisticsService.getDataByLine(powerStatisticsParam), methodDescribe);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据监测点ID、有功功率趋势区间字段、时间获取该有功功率趋势下指标越限列表
|
||||
*/
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@GetMapping("/getTargetLimitById")
|
||||
@ApiOperation("根据监测点ID、有功功率趋势区间字段、时间获取该有功功率趋势下指标越限列表")
|
||||
public HttpResult<List<PowerStatisticsTargetVO>> getTargetLimitById(@RequestBody @Validated PowerStatisticsParam powerStatisticsParam) {
|
||||
String methodDescribe = getMethodDescribe("getTargetLimitById");
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, powerStatisticsService.getTargetLimitById(powerStatisticsParam), methodDescribe);
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击越限列表时间查询指标的详细数据
|
||||
*/
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@GetMapping("/getTargetByTime")
|
||||
@ApiOperation("点击越限列表时间查询指标的详细数据")
|
||||
public HttpResult<List<ThdDataVO>> getTargetByTime(@RequestBody @Validated PowerStatisticsParam powerStatisticsParam) {
|
||||
String methodDescribe = getMethodDescribe("getTargetByTime");
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, powerStatisticsService.getTargetByTime(powerStatisticsParam), methodDescribe);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@ApiOperation("导出设备基础数据模板")
|
||||
@GetMapping(value = "getExcelTemplate")
|
||||
public HttpResult<String> getExcelTemplate(@RequestBody @Validated PowerStatisticsParam powerStatisticsParam,HttpServletResponse response) {
|
||||
ExportParams exportParams = new ExportParams("数据", "数据");
|
||||
exportParams.setStyle(ExcelStyleUtil.class);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, TerminalBaseExcel.class, new ArrayList<TerminalBaseExcel>());
|
||||
String fileName = "数据.xlsx";
|
||||
PoiUtil.exportFileByWorkbook(workbook, fileName, response);
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
package com.njcn.harmonic.service.activepowerrange;
|
||||
|
||||
import com.njcn.harmonic.pojo.param.PowerStatisticsParam;
|
||||
import com.njcn.harmonic.pojo.vo.PowerStatisticsTargetVO;
|
||||
import com.njcn.harmonic.pojo.vo.PowerStatisticsVO;
|
||||
import com.njcn.harmonic.pojo.vo.ThdDataVO;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 有功功率趋势统计 服务类
|
||||
* @author guofeihu
|
||||
@@ -7,4 +13,25 @@ package com.njcn.harmonic.service.activepowerrange;
|
||||
*/
|
||||
public interface PowerStatisticsService {
|
||||
|
||||
/**
|
||||
* 根据监测点ID及时间获取有功功率趋势
|
||||
* @param powerStatisticsParam
|
||||
* @return
|
||||
*/
|
||||
PowerStatisticsVO getDataByLine(PowerStatisticsParam powerStatisticsParam);
|
||||
|
||||
/**
|
||||
* 根据监测点ID、有功功率趋势区间字段、时间获取该有功功率趋势下指标越限列表
|
||||
* @param powerStatisticsParam
|
||||
* @return
|
||||
*/
|
||||
List<PowerStatisticsTargetVO> getTargetLimitById(PowerStatisticsParam powerStatisticsParam);
|
||||
|
||||
/**
|
||||
* 点击越限列表时间查询指标的详细数据
|
||||
* @param powerStatisticsParam
|
||||
* @return
|
||||
*/
|
||||
List<ThdDataVO> getTargetByTime(PowerStatisticsParam powerStatisticsParam);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,27 @@
|
||||
package com.njcn.harmonic.service.activepowerrange.impl;
|
||||
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
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.PowerStatisticsTargetVO;
|
||||
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.dto.StatisticalDataDTO;
|
||||
import com.njcn.influx.service.CommonService;
|
||||
import com.njcn.prepare.harmonic.api.event.RActivePowerRangeFeignClient;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RActivePowerRangePO;
|
||||
import com.njcn.system.api.CsStatisticalSetFeignClient;
|
||||
import com.njcn.system.pojo.po.EleEpdPqd;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 有功功率趋势统计 服务实现类
|
||||
@@ -9,6 +29,73 @@ import org.springframework.stereotype.Service;
|
||||
* @since 2024-08-20
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class PowerStatisticsServiceImpl implements PowerStatisticsService {
|
||||
|
||||
private final RActivePowerRangeFeignClient rActivePowerRangeFeignClient;
|
||||
|
||||
private final CsStatisticalSetFeignClient csStatisticalSetFeignClient;
|
||||
|
||||
private final CommonService commonService;
|
||||
|
||||
private final DecimalFormat df = new DecimalFormat(Param.DECIMAL_FORMATSTR);
|
||||
|
||||
@Override
|
||||
public PowerStatisticsVO getDataByLine(PowerStatisticsParam powerStatisticsParam) {
|
||||
RActivePowerRangePO rActivePowerRangePO = rActivePowerRangeFeignClient.getDataByLineId(powerStatisticsParam.getLineId()).getData();
|
||||
if(rActivePowerRangePO == null){
|
||||
throw new BusinessException(HarmonicResponseEnum.NO_LINE_DATA.getMessage());
|
||||
}
|
||||
PowerStatisticsVO powerStatisticsVO = new PowerStatisticsVO();
|
||||
BeanUtils.copyProperties(rActivePowerRangePO, powerStatisticsVO);
|
||||
return powerStatisticsVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PowerStatisticsTargetVO> getTargetLimitById(PowerStatisticsParam powerStatisticsParam) {
|
||||
List<PowerStatisticsTargetVO> list = new ArrayList();
|
||||
for (int i = 0; i < (int) (Math.random() * 10 + 1); i++) {
|
||||
PowerStatisticsTargetVO powerStatisticsTargetVO = new PowerStatisticsTargetVO();
|
||||
powerStatisticsTargetVO.setTime("2024-06-01 18:00:00");
|
||||
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;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ThdDataVO> getTargetByTime(PowerStatisticsParam powerStatisticsParam) {
|
||||
List<ThdDataVO> result = new ArrayList();
|
||||
List<EleEpdPqd> eleEpdPqds = csStatisticalSetFeignClient.queryStatisticalSelect(powerStatisticsParam.getStatisticalId()).getData();
|
||||
eleEpdPqds.forEach(epdPqd->{
|
||||
List<CommonQueryParam> commonQueryParams = new ArrayList<>();
|
||||
commonQueryParams.clear();
|
||||
CommonQueryParam commonQueryParam = new CommonQueryParam();
|
||||
commonQueryParam.setLineId(powerStatisticsParam.getLineId());
|
||||
commonQueryParam.setTableName(epdPqd.getClassId());
|
||||
commonQueryParam.setColumnName(epdPqd.getName());
|
||||
commonQueryParam.setStartTime(powerStatisticsParam.getSearchBeginTime());
|
||||
commonQueryParam.setEndTime(powerStatisticsParam.getSearchEndTime());
|
||||
commonQueryParams.add(commonQueryParam);
|
||||
List<StatisticalDataDTO> deviceRtData = commonService.getDeviceRtDataByTime(commonQueryParams);
|
||||
List<ThdDataVO> collect1 = deviceRtData.stream().map(temp -> {
|
||||
ThdDataVO vo = new ThdDataVO();
|
||||
vo.setPhase(temp.getPhaseType());
|
||||
vo.setStatMethod(temp.getValueType());
|
||||
vo.setStatisticalData(Double.valueOf(df.format(temp.getValue())));
|
||||
vo.setAnotherName(epdPqd.getShowName());
|
||||
return vo;
|
||||
}).collect(Collectors.toList());
|
||||
result.addAll(collect1);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user