二级评估算法开发

This commit is contained in:
hzj
2025-06-11 13:59:36 +08:00
parent 45e0f355cc
commit 314ece3ddd
24 changed files with 1505 additions and 34 deletions

View File

@@ -0,0 +1,14 @@
package com.njcn.advance.service.assess;
import org.springframework.web.multipart.MultipartFile;
/**
* Description:
* Date: 2025/06/06 下午 3:22【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface SecondaryEvaluationService {
void evaluation(String assessId, MultipartFile file);
}

View File

@@ -0,0 +1,777 @@
package com.njcn.advance.service.assess.impl;
import com.njcn.advance.pojo.dto.assess.HarmonicsIAndZDTO;
import com.njcn.advance.pojo.po.assess.*;
import com.njcn.advance.service.assess.*;
import com.njcn.advance.utils.EasyExcelUtil;
import com.njcn.advance.utils.assess.*;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.biz.utils.COverlimitUtil;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import org.apache.commons.math3.complex.Complex;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* Description:
* Date: 2025/06/06 下午 3:23【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class SecondaryEvaluationServiceImpl implements SecondaryEvaluationService {
private final IAssessLoadParamService iAssessLoadParamService;
private final IAssessDicHarmonicCharacterService iAssessDicHarmonicCharacterService;
private final DicDataFeignClient dicDataFeignClient;
private final IAssessDicTransformerService iAssessDicTransformerService;
private final IAssessTransformerParamService iAssessTransformerParamService;
private final IAssessCapacitorParamService iAssessCapacitorParamService;
private final IAssessUserService iAssessUserService;
private final IAssessDicCableTypeService iAssessDicCableTypeService;
private final IAssessResultService iAssessResultService;
private final IAssessResultAdditionService iAssessResultAdditionService;
private final IAssessOverlimitService iAssessOverlimitService;
private final IAssessShockLoadParamService iAssessShockLoadParamService;
private final IAssessDicShockLoadService iAssessDicShockLoadService;
private final IAssessWindLoadParamService iAssessWindLoadParamService;
@Override
@Transactional(rollbackFor = Exception.class)
public void evaluation(String assessId, MultipartFile file) {
//解析文件取CP95值 2-50次谐波电流含有率电压含有率负序电流三项不平衡度A,B,C三项最大
List<Double> iMax ;
Double unbalance;
List<Double> uMax;
Double iNeg;
try {
List<Map<Integer, String>> maps = EasyExcelUtil.syncRead(file.getInputStream(), 0, 0);
//电流含有率
List<Map<Integer, String>> maps1 = maps.subList(3, 52);
//负序电流
List<Map<Integer, String>> maps2 = maps.subList(52, 53);
//电压含有率
List<Map<Integer, String>> maps3 = maps.subList(56, 105);
//三项不平衡度
List<Map<Integer, String>> maps4 = maps.subList(105, 106);
iMax = maps1.stream().map(temp -> {
double a = Double.valueOf(temp.get(5));
double b = Double.valueOf(temp.get(10));
double c = Double.valueOf(temp.get(15));
double v = a > b ? a : b;
double max = v > c ? v : c;
return max;
}).collect(Collectors.toList());
iNeg = maps2.stream().map(temp -> {
double a = Double.valueOf(temp.get(5));
double b = Double.valueOf(temp.get(10));
double c = Double.valueOf(temp.get(15));
double v = a > b ? a : b;
double max = v > c ? v : c;
return max;
}).findFirst().get();
uMax = maps3.stream().map(temp -> {
double a = Double.valueOf(temp.get(5));
double b = Double.valueOf(temp.get(10));
double c = Double.valueOf(temp.get(15));
double v = a > b ? a : b;
double max = v > c ? v : c;
return max;
}).collect(Collectors.toList());
unbalance = maps4.stream().map(temp -> {
double a = Double.valueOf(temp.get(5));
double b = Double.valueOf(temp.get(10));
double c = Double.valueOf(temp.get(15));
double v = a > b ? a : b;
double max = v > c ? v : c;
return max;
}).findFirst().get();
} catch (Exception e) {
throw new BusinessException("解析文件失败,请按模版上传文件");
}
AssessResult assessResult = new AssessResult();
AssessResultAddition assessResultAddition = new AssessResultAddition();
AssessOverlimit assessOverlimit = new AssessOverlimit();
//取出电压字典
List<DictData> dictDataList = dicDataFeignClient.getDicDataByTypeName (DicDataTypeEnum.DEV_VOLTAGE_STAND.getName ( )).getData ( );
/*************************************谐波评估算法**********************************/
// 1. 计算单个负荷谐波阻抗和谐波电流
//2. 计算配变谐波阻抗 并叠加
List<HarmonicsIAndZDTO> loadList = new ArrayList<>();
List<AssessLoadParam> assessLoadParamLista = iAssessLoadParamService.lambdaQuery().eq(AssessLoadParam::getAssessId, assessId).list();
if(CollectionUtils.isEmpty(assessLoadParamLista)){
throw new BusinessException("评估用户负荷参数缺失");
}else {
assessLoadParamLista.forEach(temp->{
HarmonicsIAndZDTO zuphAndi =new HarmonicsIAndZDTO();
String harmId = temp.getHarmId();
AssessDicHarmonicCharacter byId = iAssessDicHarmonicCharacterService.getById(harmId);
Double[] harmDict = changeAssessDicHarmonicCharacter(byId);
Double uln = getVoltage(temp.getLinevoltageScale(), dictDataList);
Double pln = getVoltage(temp.getTranslowScale(), dictDataList);
Double uKr = temp.getTransImpedance().doubleValue();
double sRt = temp.getTranshighCapacity().doubleValue();
double pl = temp.getNonlinearloadPower().doubleValue();
Double pf = temp.getPowerFactor().doubleValue();
//1. 计算单个负荷谐波阻抗和谐波电流
HarmonicsIAndZDTO zln = PowerQualityAlgorithmUtil.loadharmonicsCal(uln, pln, pl, pf, harmDict);
//2. 计算配变谐波阻抗 并叠加
HarmonicsIAndZDTO zph = PowerQualityAlgorithmUtil.transZCal(sRt, pln, uKr, 0.0);
Complex[] zuph = new Complex[49];
for (int i = 0; i < 49; i++) {
Complex complex = zln.getZ()[i];
Complex complex2 = zph.getZ()[i];
zuph[i] = complex.add(complex2).multiply(uln*uln/(pln*pln));
}
zuphAndi.setI(zln.getI());
zuphAndi.setZ(zuph);
loadList.add(zuphAndi);
});
}
// 3. 各负荷并联叠加
HarmonicsIAndZDTO loadIAndZDTO = PowerQualityAlgorithmUtil.loadShunt(loadList);
// 4. 变压器谐波阻抗串联叠加
HarmonicsIAndZDTO transIAndZDTO = null;
Double transUl = null;
Double transUh = null;
AssessDicTransformer assessDicTransformer = new AssessDicTransformer();
AssessTransformerParam assessTransformerParam = iAssessTransformerParamService.lambdaQuery().eq(AssessTransformerParam::getAssessId, assessId).one();
if(Objects.nonNull(assessTransformerParam)){
assessDicTransformer = iAssessDicTransformerService.lambdaQuery().eq(AssessDicTransformer::getTranstypeId, assessTransformerParam.getTranstypeId()).one();
transUl = getVoltage(assessDicTransformer.getTranslowScale(), dictDataList);
transUh = getVoltage(assessDicTransformer.getTranshighScale(), dictDataList);
Double sRt = assessDicTransformer.getTransCapa().doubleValue();
Double uKr = assessDicTransformer.getShortCircuitImpedance().doubleValue();
Double pKrt = assessDicTransformer.getLoadLoss().doubleValue();
transIAndZDTO = PowerQualityAlgorithmUtil.transZCal(sRt, transUl, uKr, pKrt);
}
// 5. 电容器组阻抗串联叠加
AssessCapacitorParam assessCapacitorParam = iAssessCapacitorParamService.lambdaQuery().eq(AssessCapacitorParam::getAssessId, assessId).one();
HarmonicsIAndZDTO capIAndZDTO ;
if(Objects.isNull(assessTransformerParam)){
throw new BusinessException("评估用户电容器参数缺失");
}else {
Integer capacitorNum = assessCapacitorParam.getCapacitorNum();
double capacitorCapacity = assessCapacitorParam.getCapacitorCapacity().doubleValue();
double capacitorReactance = assessCapacitorParam.getCapacitorReactance().doubleValue();
double capacitorScale = getVoltage(assessCapacitorParam.getCapacitorScale(), dictDataList);
capIAndZDTO = PowerQualityAlgorithmUtil.capacitorZCal(capacitorScale, capacitorCapacity, capacitorReactance, capacitorNum);
}
// 6. 输电线路阻抗串联叠加
AssessUser assessUser = iAssessUserService.lambdaQuery().eq(AssessUser::getAssessId, assessId).one();
Double userScale = getVoltage(assessUser.getUserScale(), dictDataList);
AssessDicCableType assessDicCableType = iAssessDicCableTypeService.lambdaQuery().eq(AssessDicCableType::getLinetypeId, assessUser.getLinetypeId()).one();
Double r1=assessDicCableType.getPosR1().doubleValue();
Double x1=assessDicCableType.getPosX1().doubleValue();
Double lineLen=assessUser.getLineLen().doubleValue();
HarmonicsIAndZDTO lineIAndZDTO = PowerQualityAlgorithmUtil.lineZCal(r1, x1, lineLen);
// 7. 背景谐波阻抗串联叠加
Double un = getVoltage(assessUser.getBusScale(), dictDataList);
Double scc = assessUser.getMinshortcircuitCapacity().doubleValue();
HarmonicsIAndZDTO bHarmIAndZDTO = PowerQualityAlgorithmUtil.bHarmonicCal(un, scc);
// 8. 谐波电压计算
//叠加主变压器,电容器, 输电线路,背景谐波阻
//有电容器
Complex[] zcph = new Complex[49];
Double[] ipch = new Double[49];
Double[] upch = new Double[49];
//无电容器
Complex[] zph = new Complex[49];
Double[] iph = new Double[49];
Double[] uph = new Double[49];
if(Objects.nonNull(assessTransformerParam)){
Double m = transUh/transUl;
for (int h = 0; h < 49; h++) {
zcph[h] = loadIAndZDTO.getZ()[h].add(transIAndZDTO.getZ()[h]).multiply(m*m)
.add(capIAndZDTO.getZ()[h])
.add(lineIAndZDTO.getZ()[h])
.add(bHarmIAndZDTO.getZ()[h]);
zph[h] = loadIAndZDTO.getZ()[h].add(transIAndZDTO.getZ()[h]).multiply(m*m)
.add(lineIAndZDTO.getZ()[h])
.add(bHarmIAndZDTO.getZ()[h]);
ipch[h] = (loadIAndZDTO.getI()[h]/m)*(dMod(loadIAndZDTO.getZ()[h].divide(zcph[h])));
iph[h] =(loadIAndZDTO.getI()[h]/m)*(dMod(loadIAndZDTO.getZ()[h].divide(zph[h])));
upch[h] = ipch[h] * dMod(zcph[h])/1000;
uph[h] = iph[h] * dMod(zph[h])/1000;
}
}else {
for (int h = 0; h < 49; h++) {
zcph[h] = loadIAndZDTO.getZ()[h].add(capIAndZDTO.getZ()[h])
.add(lineIAndZDTO.getZ()[h])
.add(bHarmIAndZDTO.getZ()[h]);
zph[h] = loadIAndZDTO.getZ()[h]
.add(lineIAndZDTO.getZ()[h])
.add(bHarmIAndZDTO.getZ()[h]);
ipch[h] = loadIAndZDTO.getI()[h]*(dMod(loadIAndZDTO.getZ()[h].divide(zcph[h])));
iph[h] =loadIAndZDTO.getI()[h]*(dMod(loadIAndZDTO.getZ()[h].divide(zph[h])));
upch[h] = ipch[h] * dMod(zcph[h])/1000;
uph[h] = iph[h] * dMod(zph[h])/1000;
}
}
// 9. 谐波电流叠加(背景谐波) // 10. 谐波电压叠加(背景谐波)
Double[] ich = new Double[49];
Double[] ih = new Double[49];
Double[] urch = new Double[49];
Double[] urh = new Double[49];
for (int h = 0; h < 49; h++) {
ich[h] = Math.sqrt(ipch[h]*ipch[h] +iMax.get(h)*iMax.get(h) +PowerQualityAlgorithmUtil.getK(h)*ipch[h]*iMax.get(h));
ih[h] = Math.sqrt(iph[h]*iph[h] +iMax.get(h)*iMax.get(h) +PowerQualityAlgorithmUtil.getK(h)*iph[h]*iMax.get(h));
urch[h] = Math.sqrt(upch[h]*upch[h] +uMax.get(h)*uMax.get(h) +PowerQualityAlgorithmUtil.getK(h)*upch[h]*uMax.get(h))*100*1.732/userScale;
urh[h] = Math.sqrt(uph[h]*uph[h] +uMax.get(h)*uMax.get(h) +PowerQualityAlgorithmUtil.getK(h)*uph[h]*uMax.get(h))*100*1.732/userScale;
}
//限值计算
Overlimit overlimit = COverlimitUtil.globalAssemble(un.floatValue(),
assessUser.getAgreedCapacity().floatValue(),
assessUser.getPowersupplyCapacity().floatValue(),
assessUser.getMinshortcircuitCapacity().floatValue(), 1, 0);
/************************************电压波动算法**********************************/
//非风电场取冲击负荷最大的哪个
List<AssessShockLoadParam> assessShockLoadParams = iAssessShockLoadParamService.lambdaQuery().eq(AssessShockLoadParam::getAssessId, assessId).list();
assessShockLoadParams.forEach(temp->{
AssessDicShockLoad byId = iAssessDicShockLoadService.getById(temp.getInpactloadtypeId());
if(Objects.isNull(byId)){
throw new BusinessException("冲击负荷字典缺失");
}
temp.setInpactloadMultiple(byId.getInpactloadMultiple());
});
AssessShockLoadParam assessShockLoadParam = assessShockLoadParams.stream().max(Comparator.comparing(e -> e.getInpactloadMultiple().multiply(e.getInpactloadPower()).doubleValue())).get();
String isWindfarm = assessUser.getIsWindfarm();
Double dMax;
if(Objects.equals(isWindfarm,"01")){
//风电场
dMax = VoltageFluctuationUtil.calculateWindFarmVoltageFluctuation(0.95,
assessUser.getWindfarmCapacity().doubleValue(),
assessUser.getLineGridresistance().doubleValue(),
assessUser.getLineGridreactance().doubleValue(),
un.doubleValue(),
true);
}else if(Objects.equals(isWindfarm,"02")){
//光伏
dMax = VoltageFluctuationUtil.calculateWindFarmVoltageFluctuation(0.95,
assessUser.getWindfarmCapacity().doubleValue(),
assessUser.getLineGridresistance().doubleValue(),
assessUser.getLineGridreactance().doubleValue(),
un.doubleValue(),
false);
}else if(Objects.equals(isWindfarm,"03")){
dMax = VoltageFluctuationUtil.calculateImpactLoadVoltageFluctuation(assessShockLoadParam.getInpactloadPower().doubleValue(),
assessShockLoadParam.getInpactloadMultiple().doubleValue(), scc);
}else{
throw new BusinessException("用户负荷类型不正确");
}
double dmaxLimit = VoltageFluctuationUtil.getVoltageFluctuationLimit(un.doubleValue(), assessShockLoadParam.getInpactloadFreq());
/************************************电压闪变算法**********************************/
Double plt;
if(Objects.equals(isWindfarm,"01")){
List<AssessWindLoadParam> assessWindLoadParams = iAssessWindLoadParamService.lambdaQuery().eq(AssessWindLoadParam::getAssessId, assessId).list();
List<VoltageFlickerUtil.WindFarmLoads> windFarmLoadsList = assessWindLoadParams.stream().map(temp -> {
VoltageFlickerUtil.WindFarmLoads windFarmLoads = new VoltageFlickerUtil.WindFarmLoads();
windFarmLoads.setFlickerCoefficient(temp.getFlickerCoeff().doubleValue());
return windFarmLoads;
}).collect(Collectors.toList());
plt = VoltageFlickerUtil.calculateWindFarmFlicker(scc,windFarmLoadsList);
}else {
plt = VoltageFlickerUtil.calculateNonWindFarmFlicker(0.30, dMax);
}
double flickerLimit = VoltageFlickerUtil.getFlickerLimit(un);
/************************************电压偏差算法**********************************/
Double transformerNoLoadCurrent,transformerShortCircuitVoltage,transformerRatedCapacity;
if(Objects.nonNull(assessTransformerParam)){
transformerNoLoadCurrent = assessDicTransformer.getNoloadCur().doubleValue();
transformerShortCircuitVoltage = assessDicTransformer.getShortCircuitImpedance().doubleValue();
transformerRatedCapacity = assessDicTransformer.getTransCapa().doubleValue();
} else {
transformerNoLoadCurrent = 0.0;
transformerShortCircuitVoltage = 0.0;
transformerRatedCapacity = 1.0;
}
//用户投入100% ,电网高峰
double capOnH100Deltav = VoltageDeviationUtil.calculateVoltageDeviation(0.95, scc
, assessCapacitorParam.getCapacitorCapacity().doubleValue(), assessUser.getPowersupplyCapacity().doubleValue(),
assessUser.getWindfarmCapacity().doubleValue(), transformerNoLoadCurrent,
transformerShortCircuitVoltage, transformerRatedCapacity, 0.65, true, 1.0);
//用户投入60%,,电网高峰
double capOnH60Deltav = VoltageDeviationUtil.calculateVoltageDeviation(0.95, scc
, assessCapacitorParam.getCapacitorCapacity().doubleValue(), assessUser.getPowersupplyCapacity().doubleValue(),
assessUser.getWindfarmCapacity().doubleValue(), transformerNoLoadCurrent,
transformerShortCircuitVoltage, transformerRatedCapacity, 0.65, true, 0.6);
//用户投入0% ,电网高峰
double capOnH0Deltav = VoltageDeviationUtil.calculateVoltageDeviation(0.95, scc
, assessCapacitorParam.getCapacitorCapacity().doubleValue(), assessUser.getPowersupplyCapacity().doubleValue(),
assessUser.getWindfarmCapacity().doubleValue(), transformerNoLoadCurrent,
transformerShortCircuitVoltage, transformerRatedCapacity, 0.65, true, 0);
//用户未投入100% ,电网高峰
double capOffH100Deltav = VoltageDeviationUtil.calculateVoltageDeviation(0.95, scc
, assessCapacitorParam.getCapacitorCapacity().doubleValue(), assessUser.getPowersupplyCapacity().doubleValue(),
assessUser.getWindfarmCapacity().doubleValue(), transformerNoLoadCurrent,
transformerShortCircuitVoltage, transformerRatedCapacity, 0.65, false, 1.0);
//用户未投入60%,,电网高峰
double capOffH60Deltav = VoltageDeviationUtil.calculateVoltageDeviation(0.95, scc
, assessCapacitorParam.getCapacitorCapacity().doubleValue(), assessUser.getPowersupplyCapacity().doubleValue(),
assessUser.getWindfarmCapacity().doubleValue(), transformerNoLoadCurrent,
transformerShortCircuitVoltage, transformerRatedCapacity, 0.65, false, 0.6);
//用户未投入0%三个档估算 ,电网高峰
double capOffH0Deltav = VoltageDeviationUtil.calculateVoltageDeviation(0.95, scc
, assessCapacitorParam.getCapacitorCapacity().doubleValue(), assessUser.getPowersupplyCapacity().doubleValue(),
assessUser.getWindfarmCapacity().doubleValue(), transformerNoLoadCurrent,
transformerShortCircuitVoltage, transformerRatedCapacity, 0.65, false, 0);
//用户投入100% ,电网低谷
double capOnL100Deltav = VoltageDeviationUtil.calculateVoltageDeviation(0.95, scc
, assessCapacitorParam.getCapacitorCapacity().doubleValue(), assessUser.getPowersupplyCapacity().doubleValue(),
assessUser.getWindfarmCapacity().doubleValue(), transformerNoLoadCurrent,
transformerShortCircuitVoltage, transformerRatedCapacity, 0.15, true, 1.0);
//用户投入60%,电网低谷
double capOnL60Deltav = VoltageDeviationUtil.calculateVoltageDeviation(0.95, scc
, assessCapacitorParam.getCapacitorCapacity().doubleValue(), assessUser.getPowersupplyCapacity().doubleValue(),
assessUser.getWindfarmCapacity().doubleValue(), transformerNoLoadCurrent,
transformerShortCircuitVoltage, transformerRatedCapacity, 0.15, true, 0.6);
//用户投入0%电网低谷
double capOnL0Deltav = VoltageDeviationUtil.calculateVoltageDeviation(0.95, scc
, assessCapacitorParam.getCapacitorCapacity().doubleValue(), assessUser.getPowersupplyCapacity().doubleValue(),
assessUser.getWindfarmCapacity().doubleValue(), transformerNoLoadCurrent,
transformerShortCircuitVoltage, transformerRatedCapacity, 0.15, true, 0);
//用户未投入100% ,电网低谷
double capOffL100Deltav = VoltageDeviationUtil.calculateVoltageDeviation(0.95, scc
, assessCapacitorParam.getCapacitorCapacity().doubleValue(), assessUser.getPowersupplyCapacity().doubleValue(),
assessUser.getWindfarmCapacity().doubleValue(), transformerNoLoadCurrent,
transformerShortCircuitVoltage, transformerRatedCapacity, 0.15, false, 1.0);
//用户未投入60% ,电网低谷
double capOffL65Deltav = VoltageDeviationUtil.calculateVoltageDeviation(0.95, scc
, assessCapacitorParam.getCapacitorCapacity().doubleValue(), assessUser.getPowersupplyCapacity().doubleValue(),
assessUser.getWindfarmCapacity().doubleValue(), transformerNoLoadCurrent,
transformerShortCircuitVoltage, transformerRatedCapacity, 0.15, false, 0.6);
//用户未投入0% ,电网低谷
double capOffL0Deltav = VoltageDeviationUtil.calculateVoltageDeviation(0.95, scc
, assessCapacitorParam.getCapacitorCapacity().doubleValue(), assessUser.getPowersupplyCapacity().doubleValue(),
assessUser.getWindfarmCapacity().doubleValue(), transformerNoLoadCurrent,
transformerShortCircuitVoltage, transformerRatedCapacity, 0.15, false, 0);
//限值
VoltageDeviationUtil.VoltageDeviationLimits voltageDeviationLimits = VoltageDeviationUtil.getVoltageDeviationLimits(un);
/************************************三相电压不平衡算法**********************************/
//严格估算
double accurUnblance = ThreePhaseUnbalanceUtil.calculateVoltageUnbalance(scc, assessUser.getPowersupplyCapacity().floatValue(),
un, Objects.equals(assessUser.getSingleLoad(), "00"), iNeg, unbalance, true);
//一般估算
double approUnblance = ThreePhaseUnbalanceUtil.calculateVoltageUnbalance(scc, assessUser.getPowersupplyCapacity().floatValue(),
un, Objects.equals(assessUser.getSingleLoad(), "00"), iNeg, unbalance, true);
//限值
double voltageUnbalanceLimit = ThreePhaseUnbalanceUtil.getVoltageUnbalanceLimit();
//组装结果
assessResult = assembleRsult(assessResult,assessId,
ih,
urh,
dMax,
plt,
capOnH100Deltav,
capOnH60Deltav,
capOnH0Deltav,
capOffH100Deltav,
capOffH60Deltav,
capOffH0Deltav,
capOnL100Deltav,
capOnL60Deltav,
capOnL0Deltav,
capOffL100Deltav,
capOffL65Deltav,
capOffL0Deltav,
accurUnblance,
approUnblance);
assessResultAddition = assembleRsultAddition(assessResultAddition,assessId,ich,urch,plt);
assessOverlimit = assembleOverlimit(assessOverlimit,assessId,overlimit,dmaxLimit,flickerLimit,voltageDeviationLimits,voltageUnbalanceLimit);
iAssessResultService.saveOrUpdate(assessResult);
iAssessResultAdditionService.saveOrUpdate(assessResultAddition);
iAssessOverlimitService.saveOrUpdate(assessOverlimit);
}
private AssessOverlimit assembleOverlimit(AssessOverlimit assessOverlimit, String assessId, Overlimit overlimit, double dmaxLimit, double flickerLimit, VoltageDeviationUtil.VoltageDeviationLimits voltageDeviationLimits, double voltageUnbalanceLimit) {
assessOverlimit.setAssessId(assessId);
assessOverlimit.setVodd(BigDecimal.valueOf(overlimit.getUharm3()).setScale(3, RoundingMode.HALF_UP));
assessOverlimit.setVevent(BigDecimal.valueOf(overlimit.getUharm2()).setScale(3, RoundingMode.HALF_UP));
assessOverlimit.setI2((BigDecimal.valueOf(overlimit.getIharm2()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI3((BigDecimal.valueOf(overlimit.getIharm3()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI4((BigDecimal.valueOf(overlimit.getIharm4()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI5((BigDecimal.valueOf(overlimit.getIharm5()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI6((BigDecimal.valueOf(overlimit.getIharm6()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI7((BigDecimal.valueOf(overlimit.getIharm7()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI8((BigDecimal.valueOf(overlimit.getIharm8()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI9((BigDecimal.valueOf(overlimit.getIharm9()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI10((BigDecimal.valueOf(overlimit.getIharm10()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI11((BigDecimal.valueOf(overlimit.getIharm11()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI12((BigDecimal.valueOf(overlimit.getIharm12()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI13((BigDecimal.valueOf(overlimit.getIharm13()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI14((BigDecimal.valueOf(overlimit.getIharm14()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI15((BigDecimal.valueOf(overlimit.getIharm15()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI16((BigDecimal.valueOf(overlimit.getIharm16()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI17((BigDecimal.valueOf(overlimit.getIharm17()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI18((BigDecimal.valueOf(overlimit.getIharm18()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI19((BigDecimal.valueOf(overlimit.getIharm19()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI20((BigDecimal.valueOf(overlimit.getIharm20()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI21((BigDecimal.valueOf(overlimit.getIharm21()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI22((BigDecimal.valueOf(overlimit.getIharm22()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI23((BigDecimal.valueOf(overlimit.getIharm23()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI24((BigDecimal.valueOf(overlimit.getIharm24()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI25((BigDecimal.valueOf(overlimit.getIharm25()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI26((BigDecimal.valueOf(overlimit.getIharm26()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI27((BigDecimal.valueOf(overlimit.getIharm27()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI28((BigDecimal.valueOf(overlimit.getIharm28()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI29((BigDecimal.valueOf(overlimit.getIharm29()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI30((BigDecimal.valueOf(overlimit.getIharm30()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI31((BigDecimal.valueOf(overlimit.getIharm31()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI32((BigDecimal.valueOf(overlimit.getIharm32()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI33((BigDecimal.valueOf(overlimit.getIharm33()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI34((BigDecimal.valueOf(overlimit.getIharm34()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI35((BigDecimal.valueOf(overlimit.getIharm35()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI36((BigDecimal.valueOf(overlimit.getIharm36()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI37((BigDecimal.valueOf(overlimit.getIharm37()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI38((BigDecimal.valueOf(overlimit.getIharm38()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI39((BigDecimal.valueOf(overlimit.getIharm39()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI40((BigDecimal.valueOf(overlimit.getIharm40()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI41((BigDecimal.valueOf(overlimit.getIharm41()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI42((BigDecimal.valueOf(overlimit.getIharm42()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI43((BigDecimal.valueOf(overlimit.getIharm43()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI44((BigDecimal.valueOf(overlimit.getIharm44()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI45((BigDecimal.valueOf(overlimit.getIharm45()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI46((BigDecimal.valueOf(overlimit.getIharm46()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI47((BigDecimal.valueOf(overlimit.getIharm47()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI48((BigDecimal.valueOf(overlimit.getIharm48()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI49((BigDecimal.valueOf(overlimit.getIharm49()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setI50((BigDecimal.valueOf(overlimit.getIharm50()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setPlt((BigDecimal.valueOf(flickerLimit).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setFluc((BigDecimal.valueOf(dmaxLimit).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setDltavUp((BigDecimal.valueOf(voltageDeviationLimits.getUpperLimit()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setDltavDown((BigDecimal.valueOf(voltageDeviationLimits.getLowerLimit()).setScale(3, RoundingMode.HALF_UP)));
assessOverlimit.setUnblance((BigDecimal.valueOf(voltageUnbalanceLimit).setScale(3, RoundingMode.HALF_UP)));
return assessOverlimit;
}
private AssessResultAddition assembleRsultAddition(AssessResultAddition assessResultAddition,String assessId, Double[] ich, Double[] urch, Double plt) {
assessResultAddition.setAssessId(assessId);
assessResultAddition.setDateTime(LocalDateTime.now());
assessResultAddition.setV2(BigDecimal.valueOf(urch[0]).setScale(3, RoundingMode.HALF_UP));
assessResultAddition.setV3(BigDecimal.valueOf(urch[1]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV4(BigDecimal.valueOf(urch[2]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV5(BigDecimal.valueOf(urch[3]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV6(BigDecimal.valueOf(urch[4]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV7(BigDecimal.valueOf(urch[5]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV8(BigDecimal.valueOf(urch[6]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV9(BigDecimal.valueOf(urch[7]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV10(BigDecimal.valueOf(urch[8]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV11(BigDecimal.valueOf(urch[9]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV12(BigDecimal.valueOf(urch[10]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV13(BigDecimal.valueOf(urch[11]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV14(BigDecimal.valueOf(urch[12]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV15(BigDecimal.valueOf(urch[13]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV16(BigDecimal.valueOf(urch[14]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV17(BigDecimal.valueOf(urch[15]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV18(BigDecimal.valueOf(urch[16]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV19(BigDecimal.valueOf(urch[17]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV20(BigDecimal.valueOf(urch[18]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV21(BigDecimal.valueOf(urch[19]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV22(BigDecimal.valueOf(urch[20]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV23(BigDecimal.valueOf(urch[21]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV24(BigDecimal.valueOf(urch[22]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV25(BigDecimal.valueOf(urch[23]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV26(BigDecimal.valueOf(urch[24]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV27(BigDecimal.valueOf(urch[25]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV28(BigDecimal.valueOf(urch[26]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV29(BigDecimal.valueOf(urch[27]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV30(BigDecimal.valueOf(urch[28]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV31(BigDecimal.valueOf(urch[29]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV32(BigDecimal.valueOf(urch[30]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV33(BigDecimal.valueOf(urch[31]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV34(BigDecimal.valueOf(urch[32]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV35(BigDecimal.valueOf(urch[33]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV36(BigDecimal.valueOf(urch[34]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV37(BigDecimal.valueOf(urch[35]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV38(BigDecimal.valueOf(urch[36]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV39(BigDecimal.valueOf(urch[37]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV40(BigDecimal.valueOf(urch[38]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV41(BigDecimal.valueOf(urch[39]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV42(BigDecimal.valueOf(urch[40]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV43(BigDecimal.valueOf(urch[41]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV44(BigDecimal.valueOf(urch[42]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV45(BigDecimal.valueOf(urch[43]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV46(BigDecimal.valueOf(urch[44]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV47(BigDecimal.valueOf(urch[45]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV48(BigDecimal.valueOf(urch[46]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV49(BigDecimal.valueOf(urch[47]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setV50(BigDecimal.valueOf(urch[48]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI2(BigDecimal.valueOf(ich[0]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI3(BigDecimal.valueOf(ich[1]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI4(BigDecimal.valueOf(ich[2]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI5(BigDecimal.valueOf(ich[3]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI6(BigDecimal.valueOf(ich[4]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI7(BigDecimal.valueOf(ich[5]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI8(BigDecimal.valueOf(ich[6]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI9(BigDecimal.valueOf(ich[7]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI10(BigDecimal.valueOf(ich[8]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI11(BigDecimal.valueOf(ich[9]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI12(BigDecimal.valueOf(ich[10]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI13(BigDecimal.valueOf(ich[11]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI14(BigDecimal.valueOf(ich[12]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI15(BigDecimal.valueOf(ich[13]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI16(BigDecimal.valueOf(ich[14]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI17(BigDecimal.valueOf(ich[15]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI18(BigDecimal.valueOf(ich[16]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI19(BigDecimal.valueOf(ich[17]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI20(BigDecimal.valueOf(ich[18]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI21(BigDecimal.valueOf(ich[19]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI22(BigDecimal.valueOf(ich[20]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI23(BigDecimal.valueOf(ich[21]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI24(BigDecimal.valueOf(ich[22]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI25(BigDecimal.valueOf(ich[23]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI26(BigDecimal.valueOf(ich[24]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI27(BigDecimal.valueOf(ich[25]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI28(BigDecimal.valueOf(ich[26]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI29(BigDecimal.valueOf(ich[27]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI30(BigDecimal.valueOf(ich[28]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI31(BigDecimal.valueOf(ich[29]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI32(BigDecimal.valueOf(ich[30]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI33(BigDecimal.valueOf(ich[31]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI34(BigDecimal.valueOf(ich[32]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI35(BigDecimal.valueOf(ich[33]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI36(BigDecimal.valueOf(ich[34]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI37(BigDecimal.valueOf(ich[35]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI38(BigDecimal.valueOf(ich[36]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI39(BigDecimal.valueOf(ich[37]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI40(BigDecimal.valueOf(ich[38]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI41(BigDecimal.valueOf(ich[39]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI42(BigDecimal.valueOf(ich[40]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI43(BigDecimal.valueOf(ich[41]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI44(BigDecimal.valueOf(ich[42]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI45(BigDecimal.valueOf(ich[43]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI46(BigDecimal.valueOf(ich[44]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI47(BigDecimal.valueOf(ich[45]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI48(BigDecimal.valueOf(ich[46]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI49(BigDecimal.valueOf(ich[47]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setI50(BigDecimal.valueOf(ich[48]).setScale(3,RoundingMode.HALF_UP));
assessResultAddition.setPlt(BigDecimal.valueOf(plt).setScale(3,RoundingMode.HALF_UP));
return assessResultAddition;
}
private AssessResult assembleRsult(AssessResult assessResult,String assessId, Double[] ih, Double[] urh, Double dMax, Double plt, double capOnH100Deltav, double capOnH60Deltav, double capOnH0Deltav, double capOffH100Deltav, double capOffH60Deltav, double capOffH0Deltav, double capOnL100Deltav, double capOnL60Deltav, double capOnL0Deltav, double capOffL100Deltav, double capOffL65Deltav, double capOffL0Deltav, double accurUnblance, double approUnblance) {
assessResult.setAssessId(assessId);
assessResult.setDateTime(LocalDateTime.now());
assessResult.setV2(BigDecimal.valueOf(urh[0]).setScale(3, RoundingMode.HALF_UP));
assessResult.setV3(BigDecimal.valueOf(urh[1]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV4(BigDecimal.valueOf(urh[2]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV5(BigDecimal.valueOf(urh[3]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV6(BigDecimal.valueOf(urh[4]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV7(BigDecimal.valueOf(urh[5]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV8(BigDecimal.valueOf(urh[6]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV9(BigDecimal.valueOf(urh[7]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV10(BigDecimal.valueOf(urh[8]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV11(BigDecimal.valueOf(urh[9]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV12(BigDecimal.valueOf(urh[10]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV13(BigDecimal.valueOf(urh[11]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV14(BigDecimal.valueOf(urh[12]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV15(BigDecimal.valueOf(urh[13]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV16(BigDecimal.valueOf(urh[14]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV17(BigDecimal.valueOf(urh[15]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV18(BigDecimal.valueOf(urh[16]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV19(BigDecimal.valueOf(urh[17]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV20(BigDecimal.valueOf(urh[18]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV21(BigDecimal.valueOf(urh[19]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV22(BigDecimal.valueOf(urh[20]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV23(BigDecimal.valueOf(urh[21]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV24(BigDecimal.valueOf(urh[22]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV25(BigDecimal.valueOf(urh[23]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV26(BigDecimal.valueOf(urh[24]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV27(BigDecimal.valueOf(urh[25]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV28(BigDecimal.valueOf(urh[26]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV29(BigDecimal.valueOf(urh[27]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV30(BigDecimal.valueOf(urh[28]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV31(BigDecimal.valueOf(urh[29]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV32(BigDecimal.valueOf(urh[30]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV33(BigDecimal.valueOf(urh[31]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV34(BigDecimal.valueOf(urh[32]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV35(BigDecimal.valueOf(urh[33]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV36(BigDecimal.valueOf(urh[34]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV37(BigDecimal.valueOf(urh[35]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV38(BigDecimal.valueOf(urh[36]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV39(BigDecimal.valueOf(urh[37]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV40(BigDecimal.valueOf(urh[38]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV41(BigDecimal.valueOf(urh[39]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV42(BigDecimal.valueOf(urh[40]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV43(BigDecimal.valueOf(urh[41]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV44(BigDecimal.valueOf(urh[42]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV45(BigDecimal.valueOf(urh[43]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV46(BigDecimal.valueOf(urh[44]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV47(BigDecimal.valueOf(urh[45]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV48(BigDecimal.valueOf(urh[46]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV49(BigDecimal.valueOf(urh[47]).setScale(3,RoundingMode.HALF_UP));
assessResult.setV50(BigDecimal.valueOf(urh[48]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI2(BigDecimal.valueOf(ih[0]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI3(BigDecimal.valueOf(ih[1]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI4(BigDecimal.valueOf(ih[2]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI5(BigDecimal.valueOf(ih[3]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI6(BigDecimal.valueOf(ih[4]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI7(BigDecimal.valueOf(ih[5]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI8(BigDecimal.valueOf(ih[6]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI9(BigDecimal.valueOf(ih[7]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI10(BigDecimal.valueOf(ih[8]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI11(BigDecimal.valueOf(ih[9]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI12(BigDecimal.valueOf(ih[10]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI13(BigDecimal.valueOf(ih[11]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI14(BigDecimal.valueOf(ih[12]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI15(BigDecimal.valueOf(ih[13]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI16(BigDecimal.valueOf(ih[14]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI17(BigDecimal.valueOf(ih[15]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI18(BigDecimal.valueOf(ih[16]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI19(BigDecimal.valueOf(ih[17]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI20(BigDecimal.valueOf(ih[18]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI21(BigDecimal.valueOf(ih[19]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI22(BigDecimal.valueOf(ih[20]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI23(BigDecimal.valueOf(ih[21]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI24(BigDecimal.valueOf(ih[22]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI25(BigDecimal.valueOf(ih[23]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI26(BigDecimal.valueOf(ih[24]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI27(BigDecimal.valueOf(ih[25]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI28(BigDecimal.valueOf(ih[26]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI29(BigDecimal.valueOf(ih[27]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI30(BigDecimal.valueOf(ih[28]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI31(BigDecimal.valueOf(ih[29]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI32(BigDecimal.valueOf(ih[30]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI33(BigDecimal.valueOf(ih[31]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI34(BigDecimal.valueOf(ih[32]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI35(BigDecimal.valueOf(ih[33]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI36(BigDecimal.valueOf(ih[34]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI37(BigDecimal.valueOf(ih[35]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI38(BigDecimal.valueOf(ih[36]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI39(BigDecimal.valueOf(ih[37]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI40(BigDecimal.valueOf(ih[38]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI41(BigDecimal.valueOf(ih[39]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI42(BigDecimal.valueOf(ih[40]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI43(BigDecimal.valueOf(ih[41]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI44(BigDecimal.valueOf(ih[42]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI45(BigDecimal.valueOf(ih[43]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI46(BigDecimal.valueOf(ih[44]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI47(BigDecimal.valueOf(ih[45]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI48(BigDecimal.valueOf(ih[46]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI49(BigDecimal.valueOf(ih[47]).setScale(3,RoundingMode.HALF_UP));
assessResult.setI50(BigDecimal.valueOf(ih[48]).setScale(3,RoundingMode.HALF_UP));
assessResult.setPlt(BigDecimal.valueOf(plt).setScale(3,RoundingMode.HALF_UP));
assessResult.setApproFluc(BigDecimal.valueOf(dMax).setScale(3,RoundingMode.HALF_UP));
assessResult.setCapOnH100Deltav(BigDecimal.valueOf(capOnH100Deltav).setScale(3,RoundingMode.HALF_UP));
assessResult.setCapOnH60Deltav(BigDecimal.valueOf(capOnH60Deltav).setScale(3,RoundingMode.HALF_UP));
assessResult.setCapOnH0Deltav(BigDecimal.valueOf(capOnH0Deltav).setScale(3,RoundingMode.HALF_UP));
assessResult.setCapOffH100Deltav(BigDecimal.valueOf(capOffH100Deltav).setScale(3,RoundingMode.HALF_UP));
assessResult.setCapOffH60Deltav(BigDecimal.valueOf(capOffH60Deltav).setScale(3,RoundingMode.HALF_UP));
assessResult.setCapOffH0Deltav(BigDecimal.valueOf(capOffH0Deltav).setScale(3,RoundingMode.HALF_UP));
assessResult.setCapOnL100Deltav(BigDecimal.valueOf(capOnL100Deltav).setScale(3,RoundingMode.HALF_UP));
assessResult.setCapOnL60Deltav(BigDecimal.valueOf(capOnL60Deltav).setScale(3,RoundingMode.HALF_UP));
assessResult.setCapOnL0Deltav(BigDecimal.valueOf(capOnL0Deltav).setScale(3,RoundingMode.HALF_UP));
assessResult.setCapOffL100Deltav(BigDecimal.valueOf(capOffL100Deltav).setScale(3,RoundingMode.HALF_UP));
assessResult.setCapOffL60Deltav(BigDecimal.valueOf(capOffL65Deltav).setScale(3,RoundingMode.HALF_UP));
assessResult.setCapOffL0Deltav(BigDecimal.valueOf(capOffL0Deltav).setScale(3,RoundingMode.HALF_UP));
assessResult.setApproUnblance(BigDecimal.valueOf(approUnblance).setScale(3,RoundingMode.HALF_UP));
assessResult.setAccurUnblance(BigDecimal.valueOf(accurUnblance).setScale(3,RoundingMode.HALF_UP));
return assessResult;
}
private Double[] changeAssessDicHarmonicCharacter(AssessDicHarmonicCharacter byId) {
Double[] doubles = new Double[49];
for (int h = 0; h < 49; h++) {
doubles[h] =((BigDecimal) ReflectUtils.getValue(byId,"i"+(h+2))).doubleValue();
}
return doubles;
}
/**
* @Description: 根据电压字典获取电压等级
* @Param: [id, dictDataList]
* @return: java.lang.Double
* @Author: clam
* @Date: 2023/2/23
*/
private Double getVoltage(String id, List<DictData> dictDataList) {
for (DictData dictData : dictDataList) {
if (dictData.getId ( ).equals (id)) {
Double result = Double.valueOf (dictData.getValue ( ));
return result;
}
}
throw new BusinessException("电压等级有误");
}
private double dMod(Complex complex){
return Math.sqrt(complex.getReal()*complex.getReal()+complex.getImaginary()*complex.getImaginary());
}
}