新能源专项分析功能开发

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

View File

@@ -3,6 +3,7 @@ package com.njcn.harmonic.service.activepowerrange.impl;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
@@ -27,6 +28,7 @@ import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFSimpleShape;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Field;
@@ -38,6 +40,7 @@ import java.util.stream.Collectors;
/**
* 有功功率趋势统计 服务实现类
*
* @author guofeihu
* @since 2024-08-20
*/
@@ -46,20 +49,36 @@ import java.util.stream.Collectors;
public class PowerStatisticsServiceImpl implements PowerStatisticsService {
private final RActivePowerRangeFeignClient rActivePowerRangeFeignClient;
private final CommonService commonService;
private final DecimalFormat df = new DecimalFormat(Param.DECIMAL_FORMATSTR);
private final DecimalFormat dftwo = new DecimalFormat(Param.DECIMAL_FORMATTWOSTR);
private final EpdFeignClient epdFeignClient;
private List<String> METHODS = Arrays.asList(InfluxDBTableConstant.AVG,InfluxDBTableConstant.CP95,InfluxDBTableConstant.MIN,InfluxDBTableConstant.MAX);
private List<String> METHODS = Arrays.asList(InfluxDBTableConstant.AVG, InfluxDBTableConstant.CP95, InfluxDBTableConstant.MIN, InfluxDBTableConstant.MAX);
private List<String> PHASE = Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C);
private List<String> PHASE = Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A, InfluxDBTableConstant.PHASE_TYPE_B, InfluxDBTableConstant.PHASE_TYPE_C);
private List<String> times = Arrays.asList("0~10%","10~20%","20~30%","30~40%","40~50%","50~60%","60~70%","70~80%","80~90%","90~100%");
private List<String> times = Arrays.asList("0~10%", "10~20%", "20~30%", "30~40%", "40~50%", "50~60%", "60~70%", "70~80%", "80~90%", "90~100%");
Map<String, String> DATABSEMAP = new HashMap() {{
put("PPVDev", "电压偏差");
put("ImbNgV", "三相电压不平衡度");
put("PhFluc", "电压波动");
put("PhPlt", "长时闪变");
put("ImbNgA", "电流不平衡度");
}};
Map<String, String> UHARMMAP = new HashMap() {{
put("HRPhV", "谐波电压");
}};
Map<String, String> IHARMMAP = new HashMap() {{
put("HA", "谐波电流");
}};
Map<String, String> INTERHARMONICMAP = new HashMap() {{
put("IHRPhV", "间谐波电压含有率");
}};
@Override
public PowerStatisticsVO getDataByLineId(PowerStatisticsParam powerStatisticsParam) {
@@ -73,9 +92,9 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
rActivePowerRangeFeignClient.record(rActivePowerRangeParam);
//执行完就可以获取到区间数据了
RActivePowerRangePO rActivePowerRangePO = rActivePowerRangeFeignClient.getDataByLineId(powerStatisticsParam.getLineId(),
powerStatisticsParam.getSearchBeginTime(),powerStatisticsParam.getSearchEndTime()).getData();
powerStatisticsParam.getSearchBeginTime(), powerStatisticsParam.getSearchEndTime()).getData();
//如果的确没有统计到数据则默认
if(rActivePowerRangePO == null){
if (rActivePowerRangePO == null) {
rActivePowerRangePO = new RActivePowerRangePO();
}
PowerStatisticsVO powerStatisticsVO = new PowerStatisticsVO();
@@ -85,18 +104,18 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
+ powerStatisticsVO.getMinsNum3() + powerStatisticsVO.getMinsNum4() + powerStatisticsVO.getMinsNum5()
+ powerStatisticsVO.getMinsNum6() + powerStatisticsVO.getMinsNum7() + powerStatisticsVO.getMinsNum8()
+ powerStatisticsVO.getMinsNum9();
if(total != 0){
if (total != 0) {
BigDecimal totalData = BigDecimal.valueOf(total);
powerStatisticsVO.setProportion0(BigDecimal.valueOf(powerStatisticsVO.getMinsNum0()* 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion1(BigDecimal.valueOf(powerStatisticsVO.getMinsNum1()* 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion2(BigDecimal.valueOf(powerStatisticsVO.getMinsNum2()* 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion3(BigDecimal.valueOf(powerStatisticsVO.getMinsNum3()* 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion4(BigDecimal.valueOf(powerStatisticsVO.getMinsNum4()* 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion5(BigDecimal.valueOf(powerStatisticsVO.getMinsNum5()* 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion6(BigDecimal.valueOf(powerStatisticsVO.getMinsNum6()* 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion7(BigDecimal.valueOf(powerStatisticsVO.getMinsNum7()* 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion8(BigDecimal.valueOf(powerStatisticsVO.getMinsNum8()* 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion9(BigDecimal.valueOf(powerStatisticsVO.getMinsNum9()* 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion0(BigDecimal.valueOf(powerStatisticsVO.getMinsNum0() * 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion1(BigDecimal.valueOf(powerStatisticsVO.getMinsNum1() * 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion2(BigDecimal.valueOf(powerStatisticsVO.getMinsNum2() * 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion3(BigDecimal.valueOf(powerStatisticsVO.getMinsNum3() * 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion4(BigDecimal.valueOf(powerStatisticsVO.getMinsNum4() * 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion5(BigDecimal.valueOf(powerStatisticsVO.getMinsNum5() * 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion6(BigDecimal.valueOf(powerStatisticsVO.getMinsNum6() * 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion7(BigDecimal.valueOf(powerStatisticsVO.getMinsNum7() * 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion8(BigDecimal.valueOf(powerStatisticsVO.getMinsNum8() * 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
powerStatisticsVO.setProportion9(BigDecimal.valueOf(powerStatisticsVO.getMinsNum9() * 100.0).divide(totalData, 4, RoundingMode.HALF_UP).doubleValue());
}
return powerStatisticsVO;
}
@@ -108,11 +127,11 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
BeanUtil.copyProperties(powerStatisticsParam, rActivePowerRangeParam);
rActivePowerRangeParam.setSearch(true);
RActivePowerRangePO rActivePowerRangePO = rActivePowerRangeFeignClient.getDataByLineId(powerStatisticsParam.getLineId(),
powerStatisticsParam.getSearchBeginTime(),powerStatisticsParam.getSearchEndTime()).getData();
if(rActivePowerRangePO != null){
String times = reflexObjValue(rActivePowerRangePO,"minsTime"+powerStatisticsParam.getField()).toString().replace("null","");
powerStatisticsParam.getSearchBeginTime(), powerStatisticsParam.getSearchEndTime()).getData();
if (rActivePowerRangePO != null) {
String times = reflexObjValue(rActivePowerRangePO, "minsTime" + powerStatisticsParam.getField()).toString().replace("null", "");
rActivePowerRangeParam.setSearchTimeFort(false);
for(String se : times.split("&")){
for (String se : times.split("&")) {
String startTime = se.split(",")[0];
String endTime = se.split(",")[1];
rActivePowerRangeParam.setSearchBeginTime(startTime);
@@ -125,9 +144,9 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
}
/**
* @Description: 反射获取值
* @param obj
* @param fieldName
* @Description: 反射获取值
* @return: java.lang.Object
* @Author: wr
* @Date: 2025/3/26 19:24
@@ -148,80 +167,68 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
public List<ThdDataVO> getTargetByTime(PowerStatisticsParam powerStatisticsParam) {
List<ThdDataVO> result = new ArrayList();
List<EleEpdPqd> eleEpdPqds = new ArrayList<>();
//获取固定指标具体请看Param.DATABSEMAP
if("1".equals(powerStatisticsParam.getStatisticalId())){
com.njcn.device.pq.constant.Param.DATABSEMAP.forEach((key,value) ->{
List<EleEpdPqd> epdPqds = epdFeignClient.findListByShowName(key).getData();
for(EleEpdPqd epdPqd : epdPqds){
//获取固定指标具体请看
if ("1".equals(powerStatisticsParam.getStatisticalId())) {
DATABSEMAP.forEach((key, value) -> {
EleEpdPqd epdPqd = epdFeignClient.findByName(key).getData();
if(ObjectUtil.isNotEmpty(epdPqd)){
epdPqd.setShowName(value);
}
if(!epdPqds.isEmpty()){
//这边相别只需要获得一个即可
eleEpdPqds.add(epdPqds.get(0));
eleEpdPqds.add(epdPqd);
}
});
}
if("2".equals(powerStatisticsParam.getStatisticalId())){
com.njcn.device.pq.constant.Param.UHARMMAP.forEach((key,value) ->{
List<EleEpdPqd> epdPqds = epdFeignClient.findListByShowName(key).getData();
for(EleEpdPqd epdPqd : epdPqds){
if ("2".equals(powerStatisticsParam.getStatisticalId())) {
UHARMMAP.forEach((key, value) -> {
EleEpdPqd epdPqd = epdFeignClient.findByName(key).getData();
if(ObjectUtil.isNotEmpty(epdPqd)){
epdPqd.setShowName(value);
}
if(!epdPqds.isEmpty()){
//这边相别只需要获得一个即可
eleEpdPqds.add(epdPqds.get(0));
eleEpdPqds.add(epdPqd);
}
});
}
if("3".equals(powerStatisticsParam.getStatisticalId())){
com.njcn.device.pq.constant.Param.IHARMMAP.forEach((key,value) ->{
List<EleEpdPqd> epdPqds = epdFeignClient.findListByShowName(key).getData();
for(EleEpdPqd epdPqd : epdPqds){
if ("3".equals(powerStatisticsParam.getStatisticalId())) {
IHARMMAP.forEach((key, value) -> {
EleEpdPqd epdPqd = epdFeignClient.findByName(key).getData();
if(ObjectUtil.isNotEmpty(epdPqd)){
epdPqd.setShowName(value);
}
if(!epdPqds.isEmpty()){
//这边相别只需要获得一个即可
eleEpdPqds.add(epdPqds.get(0));
eleEpdPqds.add(epdPqd);
}
});
}
if("4".equals(powerStatisticsParam.getStatisticalId())){
com.njcn.device.pq.constant.Param.INTERHARMONICMAP.forEach((key,value) ->{
List<EleEpdPqd> epdPqds = epdFeignClient.findListByShowName(key).getData();
for(EleEpdPqd epdPqd : epdPqds){
if ("4".equals(powerStatisticsParam.getStatisticalId())) {
INTERHARMONICMAP.forEach((key, value) -> {
EleEpdPqd epdPqd = epdFeignClient.findByName(key).getData();
if(ObjectUtil.isNotEmpty(epdPqd)){
epdPqd.setShowName(value);
}
if(!epdPqds.isEmpty()){
//这边相别只需要获得一个即可
eleEpdPqds.add(epdPqds.get(0));
eleEpdPqds.add(epdPqd);
}
});
}
eleEpdPqds.forEach(epdPqd->{
eleEpdPqds.forEach(epdPqd -> {
List<CommonQueryParam> commonQueryParams = new ArrayList<>();
commonQueryParams.clear();
//带有谐波次数的指标
if(epdPqd.getHarmEnd()!=null && epdPqd.getHarmStart()!=null){
if (epdPqd.getHarmEnd() != null && epdPqd.getHarmStart() != null) {
for (int i = epdPqd.getHarmStart().intValue(); i <= epdPqd.getHarmEnd().intValue(); i++) {
ThdDataVO thdDataVO = new ThdDataVO();
thdDataVO.setUnit(epdPqd.getUnit());
thdDataVO.setTime(powerStatisticsParam.getSearchBeginTime());
String index = i+"";
if(epdPqd.getShowName().equals("间谐波电压含有率")){
String index = i + "";
if (epdPqd.getShowName().equals("间谐波电压含有率")) {
thdDataVO.setAnotherName(Integer.parseInt(index) - 0.5 + "");
}else{
} else {
thdDataVO.setAnotherName(index + "");
}
getThdDataVO(epdPqd.getOtherName()+"_"+index,thdDataVO,epdPqd,powerStatisticsParam);
getThdDataVO(epdPqd.getOtherName() + "_" + index, thdDataVO, epdPqd, powerStatisticsParam);
result.add(thdDataVO);
}
}else{
} else {
//无谐波次数的指标
ThdDataVO thdDataVO = new ThdDataVO();
thdDataVO.setAnotherName(epdPqd.getShowName());
thdDataVO.setUnit(epdPqd.getUnit());
thdDataVO.setTime(powerStatisticsParam.getSearchBeginTime());
getThdDataVO(null,thdDataVO,epdPqd,powerStatisticsParam);
getThdDataVO(null, thdDataVO, epdPqd, powerStatisticsParam);
result.add(thdDataVO);
}
});
@@ -229,12 +236,12 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
}
//将各个指标的所有的相别统计方式以表格的维度进行组装数据
private ThdDataVO getThdDataVO(String columnName, ThdDataVO thdDataVO, EleEpdPqd epdPqd, PowerStatisticsParam powerStatisticsParam){
private ThdDataVO getThdDataVO(String columnName, ThdDataVO thdDataVO, EleEpdPqd epdPqd, PowerStatisticsParam powerStatisticsParam) {
List<CommonQueryParam> commonQueryParams = new ArrayList<>();
CommonQueryParam commonQueryParam = new CommonQueryParam();
commonQueryParam.setLineId(powerStatisticsParam.getLineId());
commonQueryParam.setTableName(epdPqd.getClassId());
commonQueryParam.setColumnName(columnName == null ? epdPqd.getOtherName():columnName);
commonQueryParam.setColumnName(columnName == null ? epdPqd.getOtherName() : columnName);
commonQueryParam.setStartTime(powerStatisticsParam.getSearchBeginTime());
commonQueryParam.setEndTime(powerStatisticsParam.getSearchEndTime());
//唯一不同的条件时统计方式和相别,所以这边直接把所有的情况都考虑进去
@@ -243,87 +250,87 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
commonQueryParams.add(commonQueryParam);
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.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;
}
@@ -336,53 +343,53 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
ExportParams exportParams = new ExportParams(powerStatisticsParam.getSearchValue(), "区间数据");
//各区间数量
PowerStatisticsExcelRangVO num = new PowerStatisticsExcelRangVO();
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.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.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.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 = 0;
if(powerStatisticsVO.getLineId() != null){
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) + "%");
proportion.setMinsNum2(dftwo.format((double)powerStatisticsVO.getMinsNum2().intValue() / total * 100) + "%");
proportion.setMinsNum3(dftwo.format((double)powerStatisticsVO.getMinsNum3().intValue() / total * 100) + "%");
proportion.setMinsNum4(dftwo.format((double)powerStatisticsVO.getMinsNum4().intValue() / total * 100) + "%");
proportion.setMinsNum5(dftwo.format((double)powerStatisticsVO.getMinsNum5().intValue() / total * 100) + "%");
proportion.setMinsNum6(dftwo.format((double)powerStatisticsVO.getMinsNum6().intValue() / total * 100) + "%");
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{
if (total != 0) {
proportion.setMinsNum0(dftwo.format((double) powerStatisticsVO.getMinsNum0().intValue() / total * 100) + "%");
proportion.setMinsNum1(dftwo.format((double) powerStatisticsVO.getMinsNum1().intValue() / total * 100) + "%");
proportion.setMinsNum2(dftwo.format((double) powerStatisticsVO.getMinsNum2().intValue() / total * 100) + "%");
proportion.setMinsNum3(dftwo.format((double) powerStatisticsVO.getMinsNum3().intValue() / total * 100) + "%");
proportion.setMinsNum4(dftwo.format((double) powerStatisticsVO.getMinsNum4().intValue() / total * 100) + "%");
proportion.setMinsNum5(dftwo.format((double) powerStatisticsVO.getMinsNum5().intValue() / total * 100) + "%");
proportion.setMinsNum6(dftwo.format((double) powerStatisticsVO.getMinsNum6().intValue() / total * 100) + "%");
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("");
@@ -414,7 +421,7 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
style.setAlignment(HorizontalAlignment.CENTER);
style.setVerticalAlignment(VerticalAlignment.CENTER);
//如果当前表格为是(是否越限:是)则红色字体显示
if(cell.getStringCellValue().equals("")){
if (cell.getStringCellValue().equals("")) {
style.setFont(redFont);
}
cell.setCellStyle(style);
@@ -441,49 +448,49 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
//设置线的风格
simpleShape.setLineStyle(0);
//设置线的颜色
simpleShape.setLineStyleColor(0,0,0);
simpleShape.setLineStyleColor(0, 0, 0);
//删除第一行title
//sheet.removeRow(sheet.getRow(0));
//上移(因为删除一行只是将数据清空了留下空行)
//sheet.shiftRows(1, sheet.getLastRowNum(), -1);
PoiUtil.exportFileByWorkbook(workbook, powerStatisticsParam.getSearchValue()+".xlsx", response);
PoiUtil.exportFileByWorkbook(workbook, powerStatisticsParam.getSearchValue() + ".xlsx", response);
}
@Override
public void exportExcelListTemplate(PowerStatisticsParam powerStatisticsParam, HttpServletResponse response) {
//获取各个区间的详细数据(就是调用getTargetByTime方法在进行某些指标的名称的处理)
List<ThdDataVOExcel> time0 = getExcelListRecord(powerStatisticsParam.getTime0(),powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time1 = getExcelListRecord(powerStatisticsParam.getTime1(),powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time2 = getExcelListRecord(powerStatisticsParam.getTime2(),powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time3 = getExcelListRecord(powerStatisticsParam.getTime3(),powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time4 = getExcelListRecord(powerStatisticsParam.getTime4(),powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time5 = getExcelListRecord(powerStatisticsParam.getTime5(),powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time6 = getExcelListRecord(powerStatisticsParam.getTime6(),powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time7 = getExcelListRecord(powerStatisticsParam.getTime7(),powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time8 = getExcelListRecord(powerStatisticsParam.getTime8(),powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time9 = getExcelListRecord(powerStatisticsParam.getTime9(),powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time0 = getExcelListRecord(powerStatisticsParam.getTime0(), powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time1 = getExcelListRecord(powerStatisticsParam.getTime1(), powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time2 = getExcelListRecord(powerStatisticsParam.getTime2(), powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time3 = getExcelListRecord(powerStatisticsParam.getTime3(), powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time4 = getExcelListRecord(powerStatisticsParam.getTime4(), powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time5 = getExcelListRecord(powerStatisticsParam.getTime5(), powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time6 = getExcelListRecord(powerStatisticsParam.getTime6(), powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time7 = getExcelListRecord(powerStatisticsParam.getTime7(), powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time8 = getExcelListRecord(powerStatisticsParam.getTime8(), powerStatisticsParam.getLineId());
List<ThdDataVOExcel> time9 = getExcelListRecord(powerStatisticsParam.getTime9(), powerStatisticsParam.getLineId());
try {
//10个区间10个sheet10组数据
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), ThdDataVOExcel.class).build();
WriteSheet sheet0 = EasyExcel.writerSheet(0, times.get(0) ).head(ThdDataVOExcel.class).build();
WriteSheet sheet0 = EasyExcel.writerSheet(0, times.get(0)).head(ThdDataVOExcel.class).build();
excelWriter.write(time0, sheet0);
WriteSheet sheet1 = EasyExcel.writerSheet(1, times.get(1) ).head(ThdDataVOExcel.class).build();
WriteSheet sheet1 = EasyExcel.writerSheet(1, times.get(1)).head(ThdDataVOExcel.class).build();
excelWriter.write(time1, sheet1);
WriteSheet sheet2 = EasyExcel.writerSheet(2, times.get(2) ).head(ThdDataVOExcel.class).build();
WriteSheet sheet2 = EasyExcel.writerSheet(2, times.get(2)).head(ThdDataVOExcel.class).build();
excelWriter.write(time2, sheet2);
WriteSheet sheet3 = EasyExcel.writerSheet(3, times.get(3) ).head(ThdDataVOExcel.class).build();
WriteSheet sheet3 = EasyExcel.writerSheet(3, times.get(3)).head(ThdDataVOExcel.class).build();
excelWriter.write(time3, sheet3);
WriteSheet sheet4 = EasyExcel.writerSheet(4, times.get(4) ).head(ThdDataVOExcel.class).build();
WriteSheet sheet4 = EasyExcel.writerSheet(4, times.get(4)).head(ThdDataVOExcel.class).build();
excelWriter.write(time4, sheet4);
WriteSheet sheet5 = EasyExcel.writerSheet(5, times.get(5) ).head(ThdDataVOExcel.class).build();
WriteSheet sheet5 = EasyExcel.writerSheet(5, times.get(5)).head(ThdDataVOExcel.class).build();
excelWriter.write(time5, sheet5);
WriteSheet sheet6 = EasyExcel.writerSheet(6, times.get(6) ).head(ThdDataVOExcel.class).build();
WriteSheet sheet6 = EasyExcel.writerSheet(6, times.get(6)).head(ThdDataVOExcel.class).build();
excelWriter.write(time6, sheet6);
WriteSheet sheet7 = EasyExcel.writerSheet(7, times.get(7) ).head(ThdDataVOExcel.class).build();
WriteSheet sheet7 = EasyExcel.writerSheet(7, times.get(7)).head(ThdDataVOExcel.class).build();
excelWriter.write(time7, sheet7);
WriteSheet sheet8 = EasyExcel.writerSheet(8, times.get(8) ).head(ThdDataVOExcel.class).build();
WriteSheet sheet8 = EasyExcel.writerSheet(8, times.get(8)).head(ThdDataVOExcel.class).build();
excelWriter.write(time8, sheet8);
WriteSheet sheet9 = EasyExcel.writerSheet(9, times.get(9) ).head(ThdDataVOExcel.class).build();
WriteSheet sheet9 = EasyExcel.writerSheet(9, times.get(9)).head(ThdDataVOExcel.class).build();
excelWriter.write(time9, sheet9);
excelWriter.finish();
} catch (IOException e) {
@@ -491,28 +498,28 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
}
}
private List<ThdDataVOExcel> getExcelListRecord(List<String> times, String lineId){
private List<ThdDataVOExcel> getExcelListRecord(List<String> times, String lineId) {
List<ThdDataVO> thdDataVOS = new ArrayList<>();
List<ThdDataVOExcel> thdDataVOExcels = new ArrayList<>();
PowerStatisticsParam powerStatisticsParam = new PowerStatisticsParam();
powerStatisticsParam.setLineId(lineId);
for(String time : times){
for (String time : times) {
powerStatisticsParam.setSearchBeginTime(time);
powerStatisticsParam.setSearchEndTime(time);
for (int i = 1; i <= 4; i++) {
powerStatisticsParam.setStatisticalId(i+"");
powerStatisticsParam.setStatisticalId(i + "");
List<ThdDataVO> thdDataVOList = getTargetByTime(powerStatisticsParam);
if(i != 1){
for(ThdDataVO thdDataVO : thdDataVOList){
switch (i){
if (i != 1) {
for (ThdDataVO thdDataVO : thdDataVOList) {
switch (i) {
case 2:
thdDataVO.setAnotherName("谐波电压"+thdDataVO.getAnotherName());
thdDataVO.setAnotherName("谐波电压" + thdDataVO.getAnotherName());
break;
case 3:
thdDataVO.setAnotherName("谐波电流"+thdDataVO.getAnotherName());
thdDataVO.setAnotherName("谐波电流" + thdDataVO.getAnotherName());
break;
case 4:
thdDataVO.setAnotherName("间谐波电压"+thdDataVO.getAnotherName());
thdDataVO.setAnotherName("间谐波电压" + thdDataVO.getAnotherName());
break;
}
}
@@ -520,7 +527,7 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
thdDataVOS.addAll(thdDataVOList);
}
}
for(ThdDataVO thdDataVO : thdDataVOS){
for (ThdDataVO thdDataVO : thdDataVOS) {
ThdDataVOExcel thdDataVOExcel = new ThdDataVOExcel();
BeanUtils.copyProperties(thdDataVO, thdDataVOExcel);
thdDataVOExcels.add(thdDataVOExcel);