|
@@ -96,16 +96,18 @@ public class AccuracyPassRateCalculateService {
|
|
*/
|
|
*/
|
|
private String filterResult(Object result) {
|
|
private String filterResult(Object result) {
|
|
// 如果返回的不是数值类型,则不用过滤,直接返回
|
|
// 如果返回的不是数值类型,则不用过滤,直接返回
|
|
- if(!(result instanceof BigDecimal)){
|
|
|
|
|
|
+ if((result instanceof String) || (result instanceof Boolean)){
|
|
return String.valueOf(result);
|
|
return String.valueOf(result);
|
|
}
|
|
}
|
|
BigDecimal resultBig = new BigDecimal(String.valueOf(result));
|
|
BigDecimal resultBig = new BigDecimal(String.valueOf(result));
|
|
//当结果为负数时,说明偏差过大,准确率为0
|
|
//当结果为负数时,说明偏差过大,准确率为0
|
|
if (resultBig.compareTo(BigDecimal.ZERO) == -1 || resultBig.compareTo(BigDecimal.ZERO) == 0) {
|
|
if (resultBig.compareTo(BigDecimal.ZERO) == -1 || resultBig.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
+ log.warn("结果为负数:" + resultBig + "自动转换为0%");
|
|
resultBig = BigDecimal.ZERO;
|
|
resultBig = BigDecimal.ZERO;
|
|
}
|
|
}
|
|
// 如果结果大于1,则准确率设为100
|
|
// 如果结果大于1,则准确率设为100
|
|
if (resultBig.compareTo(BigDecimal.ONE) == 1) {
|
|
if (resultBig.compareTo(BigDecimal.ONE) == 1) {
|
|
|
|
+ log.warn("结果大于100%:" + resultBig + "自动转换为100%");
|
|
resultBig = BigDecimal.ONE;
|
|
resultBig = BigDecimal.ONE;
|
|
}
|
|
}
|
|
// 对数据*100
|
|
// 对数据*100
|
|
@@ -154,17 +156,18 @@ public class AccuracyPassRateCalculateService {
|
|
return CalculateResult.error(CalculateResult.MSG_CALCULATE_DATA_NULL);
|
|
return CalculateResult.error(CalculateResult.MSG_CALCULATE_DATA_NULL);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- // 如果固定功率为空
|
|
|
|
- if (calculateRequest.getElectricCapacity() == null) {
|
|
|
|
- // 循环判断实时功率是否为空
|
|
|
|
- for (CalculationInfo calculationInfo : calculationInfoList) {
|
|
|
|
- if (calculationInfo.getOpenCapacity() == null) {
|
|
|
|
- return CalculateResult.error(CalculateResult.MSG_CAP_NULL);
|
|
|
|
- }
|
|
|
|
|
|
+ // 容量校验
|
|
|
|
+ if (calculateRequest.getElectricCapacity() == null || calculateRequest.getElectricCapacity().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
+ return CalculateResult.error(CalculateResult.MSG_CAP_NULL);
|
|
|
|
+ }
|
|
|
|
+ // 循环判断开机容量是否为空
|
|
|
|
+ for (CalculationInfo calculationInfo : calculationInfoList) {
|
|
|
|
+ if (calculationInfo.getOpenCapacity() == null || calculationInfo.getOpenCapacity().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
+ return CalculateResult.error(CalculateResult.MSG_CAP_NULL);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 将数据转为List Map 格式
|
|
// 将数据转为List Map 格式
|
|
- List<Map<String, Object>> calculationInfoListMap = getCalculationInfoList(calculationInfoList);
|
|
|
|
|
|
+ List<Map<String, Object>> calculationInfoListMap = getCalculationInfoList(calculationInfoList,calculateRequest.getElectricCapacity());
|
|
// 获取细则公式
|
|
// 获取细则公式
|
|
CalculationFormula rulesCalculationFormula = calculationFormulaRepository.findByTypeAndProvince(CalculateResult.RULES, formulaType, province, electricType);
|
|
CalculationFormula rulesCalculationFormula = calculationFormulaRepository.findByTypeAndProvince(CalculateResult.RULES, formulaType, province, electricType);
|
|
if (rulesCalculationFormula == null || rulesCalculationFormula.getFormula() == null) {
|
|
if (rulesCalculationFormula == null || rulesCalculationFormula.getFormula() == null) {
|
|
@@ -209,7 +212,7 @@ public class AccuracyPassRateCalculateService {
|
|
*
|
|
*
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- private List<Map<String, Object>> getCalculationInfoList(List<CalculationInfo> calculationInfoList) {
|
|
|
|
|
|
+ private List<Map<String, Object>> getCalculationInfoList(List<CalculationInfo> calculationInfoList,BigDecimal electricCapacity) {
|
|
List<Map<String, Object>> resultList = new ArrayList<>();
|
|
List<Map<String, Object>> resultList = new ArrayList<>();
|
|
// 循环每条数据
|
|
// 循环每条数据
|
|
for (CalculationInfo calculationInfo : calculationInfoList) {
|
|
for (CalculationInfo calculationInfo : calculationInfoList) {
|
|
@@ -220,6 +223,7 @@ public class AccuracyPassRateCalculateService {
|
|
for (Object key : beanMap.keySet()) {
|
|
for (Object key : beanMap.keySet()) {
|
|
map.put(String.valueOf(key), beanMap.get(key));
|
|
map.put(String.valueOf(key), beanMap.get(key));
|
|
}
|
|
}
|
|
|
|
+ map.put("electricCapacity",electricCapacity);
|
|
resultList.add(map);
|
|
resultList.add(map);
|
|
}
|
|
}
|
|
return resultList;
|
|
return resultList;
|