|
@@ -180,15 +180,29 @@ public class AccuracyPassRateCalculateService {
|
|
|
return CalculateResult.error(CalculateResult.MSG_CAP_NULL);
|
|
|
}
|
|
|
|
|
|
+ // 获取细则公式
|
|
|
+ CalculationFormula rulesCalculationFormula = calculationFormulaRepository.findByTypeAndProvince(CalculateResult.RULES, formulaType, province, electricType, stationCode);
|
|
|
+
|
|
|
+ // 将数据转为List Map 格式
|
|
|
+ List<Map<String, Object>> calculationInfoListMap = getCalculationInfoList(calculationInfoList, calculateRequest.getElectricCapacity());
|
|
|
+
|
|
|
+ if (rulesCalculationFormula == null || rulesCalculationFormula.getFormula() == null) {
|
|
|
+ // 未匹配到细则文件,则不进行细则校验,返回数据
|
|
|
+ return CalculateResult.success(calculationInfoListMap);
|
|
|
+ }
|
|
|
+
|
|
|
// 循环判断实际功率/预测功率、开机容量
|
|
|
for (int i = 0; i < calculationInfoList.size(); i++) {
|
|
|
// 如果 实际功率/可用功率/预测功率为null 则剔除此条
|
|
|
if (calculationInfoList.get(i).getAbleValue() == null || calculationInfoList.get(i).getForecastAbleValue() == null || calculationInfoList.get(i).getRealValue() == null) {
|
|
|
calculationInfoList.remove(i);
|
|
|
}
|
|
|
- // 如果开机容量 null 返回
|
|
|
- if (calculationInfoList.get(i).getOpenCapacity() == null || calculationInfoList.get(i).getOpenCapacity().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
- return CalculateResult.error(CalculateResult.MSG_CAP_NULL);
|
|
|
+ // 如果公式中包含
|
|
|
+ if(rulesCalculationFormula.getRuleFormula()!=null && !"".equals(rulesCalculationFormula.getRuleFormula()) && rulesCalculationFormula.getRuleFormula().indexOf("openCapacity")>0){
|
|
|
+ // 如果开机容量 null 返回
|
|
|
+ if (calculationInfoList.get(i).getOpenCapacity() == null || calculationInfoList.get(i).getOpenCapacity().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ return CalculateResult.error(CalculateResult.MSG_CAP_NULL);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 如果数据文件类型不为空,则判断数据的生成时间和文件类型不可以为空
|
|
@@ -203,15 +217,7 @@ public class AccuracyPassRateCalculateService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 将数据转为List Map 格式
|
|
|
- List<Map<String, Object>> calculationInfoListMap = getCalculationInfoList(calculationInfoList, calculateRequest.getElectricCapacity());
|
|
|
- // 获取细则公式
|
|
|
- CalculationFormula rulesCalculationFormula = calculationFormulaRepository.findByTypeAndProvince(CalculateResult.RULES, formulaType, province, electricType, stationCode);
|
|
|
- if (rulesCalculationFormula == null || rulesCalculationFormula.getFormula() == null) {
|
|
|
- // 未匹配到细则文件,则不进行细则校验,返回数据
|
|
|
- return CalculateResult.success(calculationInfoListMap);
|
|
|
- }
|
|
|
-
|
|
|
+ // 获取公式
|
|
|
String formula = rulesCalculationFormula.getFormula();
|
|
|
// 初始化公式并获取缓存的公式
|
|
|
String scriptName = common.initFormula(formula, calculateRequest.getProvince(), calculateRequest.getFormulaType(), calculateRequest.getElectricType(), CalculateResult.RULES);
|