Explorar el Código

1.计算入参 增加场站编码
2.公式结算结果保留4位
3.sql修改

zhangchenglong hace 2 años
padre
commit
433093b83c

+ 5 - 0
src/main/java/com/syjy/calculate/entity/CalculateRequest.java

@@ -51,4 +51,9 @@ public class CalculateRequest implements Serializable {
      */
     private String stationStatus;
 
+    /**
+     * 场站编码
+     */
+    private String stationCode;
+
 }

+ 1 - 1
src/main/java/com/syjy/calculate/entity/CalculateResult.java

@@ -63,7 +63,7 @@ public class CalculateResult extends HashMap<String, Object> {
     public static final String MSG_ELECTRIC_TYPE_NULL = "场站类型为空";
     public static final String MSG_CALCULATE_DATA_NULL = "计算数据为空";
     public static final String MSG_USEFUL_CALCULATE_DATA_NULL = "可用的计算数据为空";
-    public static final String MSG_CAP_NULL = "实时容量有空值";
+    public static final String MSG_CAP_NULL = "容量为空/0,不予考核";
     public static final String MSG_DATA_CHECK_ERROR = "数据校验错误";
     public static final String MSG_NO_FORMULA = "未匹配到公式:";
     public static final String MSG_CALCULATE_SUCCESS = "计算成功";

+ 1 - 0
src/main/java/com/syjy/calculate/function/RootMeanSquaredErrorA.java

@@ -54,6 +54,7 @@ public class RootMeanSquaredErrorA extends AbstractFunction {
         map.put("sqrtValue",sqrtValue);
         map.put("electricCapacity",electricCapacity);
         BigDecimal result = new BigDecimal(String.valueOf(AviatorEvaluator.execute("1-(sqrtValue/electricCapacity)",map)));
+        result = result.setScale(4, BigDecimal.ROUND_HALF_UP);
         return new AviatorDecimal(result);
     }
     @Override

+ 14 - 10
src/main/java/com/syjy/calculate/service/AccuracyPassRateCalculateService.java

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

+ 2 - 1
src/main/resources/application.yml

@@ -7,5 +7,6 @@ spring:
       # 数据源配置
       username: root
       password: '123456'
-      url: jdbc:mysql://localhost:3306/ipfcst-v3?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&characterSetResults=UTF-8&autoReconnect=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
+      url: jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&characterSetResults=UTF-8&autoReconnect=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
       driver-class-name: com.mysql.cj.jdbc.Driver
+version: @project.version@

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 9 - 84
src/main/resources/sql/t_calculation_formula.sql


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio