Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

yuzijian 2 gadi atpakaļ
vecāks
revīzija
873e87fe3e

+ 25 - 24
src/main/java/com/syjy/calculate/conotroller/test.java

@@ -17,36 +17,37 @@ public class test {
 
     @RequestMapping(value = "/test")
     public void saveElectricField() {
-
+        // 测试数据组装
         List<Map<String, Object>> powerData = new ArrayList<>();
-        Map<String, Object> dataText0 = new HashMap<>();
-        dataText0.put("sj", new BigDecimal(8));
-        dataText0.put("yc", new BigDecimal(7));
-        powerData.add(dataText0);
-        Map<String, Object> dataText1 = new HashMap<>();
-        dataText1.put("sj", new BigDecimal(9));
-        dataText1.put("yc", new BigDecimal(7));
-        powerData.add(dataText1);
-
-        Map<String, Object> dataText2 = new HashMap<>();
-        dataText2.put("sj", new BigDecimal(5));
-        dataText2.put("yc", new BigDecimal(6));
-        powerData.add(dataText2);
-
-        Map<String, Object> dataText3 = new HashMap<>();
-        dataText3.put("sj", new BigDecimal(8));
-        dataText3.put("yc", new BigDecimal(8));
-        powerData.add(dataText3);
+        Map<String, Object> dataText = new HashMap<>();
+        dataText.put("sj", new BigDecimal(8));
+        dataText.put("yc", new BigDecimal(7));
+        powerData.add(dataText);
+        dataText = new HashMap<>();
+        dataText.put("sj", new BigDecimal(9));
+        dataText.put("yc", new BigDecimal(7));
+        powerData.add(dataText);
+
+        dataText = new HashMap<>();
+        dataText.put("sj", new BigDecimal(5));
+        dataText.put("yc", new BigDecimal(6));
+        powerData.add(dataText);
+
+        dataText = new HashMap<>();
+        dataText.put("sj", new BigDecimal(8));
+        dataText.put("yc", new BigDecimal(8));
+        powerData.add(dataText);
 
         BigDecimal rl = new BigDecimal("10");
-        String provinceEnum = "E62";
-        String type = "POINT_S";
-        JSONObject jsonResult = accuracyPassRateCalculateService.calculate(powerData, rl, provinceEnum, type, BigDecimal.ZERO);
-        String reslut = jsonResult.getString("value");
+        String provinceEnum = "E61";
+        String type = "PASS";
+        // 计算
+        JSONObject jsonResult = accuracyPassRateCalculateService.calculate(powerData, rl, provinceEnum, type, new BigDecimal("80"));
+        // 计算结果
+        String reslut = jsonResult.getString("reslut");
         String accuracy = "";
         if ("success".equals(reslut)) {
             accuracy = jsonResult.getString("value");
         }
     }
-
 }

+ 2 - 1
src/main/java/com/syjy/calculate/service/AccuracyPassRateCalculateService.java

@@ -7,7 +7,6 @@ import com.syjy.calculate.repository.CalculationFormulaRepository;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -139,6 +138,8 @@ public class AccuracyPassRateCalculateService {
      * 获取当前省调的公式列表
      *
      * @param type 类型
+     * @param provinceEnum 省调(在数据库中省调存储必须带分号,例如:E12;)
+     *
      * @return
      */
     public List<CalculationFormula> getCalculationFormulaData(String type, String provinceEnum) {

+ 12 - 12
src/main/resources/sql/t_calculation_formula.sql

@@ -11,7 +11,7 @@
  Target Server Version : 80029
  File Encoding         : 65001
 
- Date: 18/08/2022 14:44:31
+ Date: 19/08/2022 15:19:31
 */
 
 SET NAMES utf8mb4;
@@ -33,28 +33,28 @@ CREATE TABLE `t_calculation_formula`  (
   `LAST_MODIFIER` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改时间',
   `LAST_MODIFY_TIME` datetime(0) NULL DEFAULT NULL COMMENT '修改人',
   PRIMARY KEY (`ID`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
 
 -- ----------------------------
 -- Records of t_calculation_formula
 -- ----------------------------
 INSERT INTO `t_calculation_formula` VALUES (1, 'POINT_S', 1, '(1-math.abs((sj-yc)/yc))*100', 'E21Old;E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
 INSERT INTO `t_calculation_formula` VALUES (2, 'POINT_U', 1, 'sum:math.abs(sj-yc)', 'E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `t_calculation_formula` VALUES (3, 'POINT_U', 2, 'math.abs((sj/(sj+yc))-0.5)*(math.abs(sj-yc)/result1)', 'E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (3, 'POINT_U', 2, 'sum:math.abs((sj/(sj+yc))-0.5)*(math.abs(sj-yc)/result1)', 'E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
 INSERT INTO `t_calculation_formula` VALUES (4, 'POINT_U', 3, '(1-(2*result2))*100', 'E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `t_calculation_formula` VALUES (5, 'MAE', 1, 'sum:math.abs((sj-yc)', 'E14;E36;E42;E43;E51;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (5, 'MAE', 1, 'sum:math.abs(sj-yc)', 'E14;E36;E42;E43;E51;', NULL, NULL, NULL, NULL, NULL);
 INSERT INTO `t_calculation_formula` VALUES (6, 'MAE', 2, '(1-(result1/(rl*count)))*100', 'E14;E36;E42;E43;E51;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `t_calculation_formula` VALUES (7, 'MAE_R', 1, 'sum:math.abs((sj-yc)/yc)', 'E21Old', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `t_calculation_formula` VALUES (8, 'MAE_R', 2, '(1-(result1/count))*100', 'E21Old', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `t_calculation_formula` VALUES (9, 'RMSE_A', 1, 'sum:math.abs(sj-yc)', 'E12;E13;E17;E99', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `t_calculation_formula` VALUES (10, 'RMSE_A', 2, 'sum:math.pow((sj-yc),2)*math.abs(VariateA-VariateB)/result1', 'E12;E13;E17;E99', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `t_calculation_formula` VALUES (11, 'RMSE_A', 3, '(1-(math.sqrt(result2)/rl))*100', 'E12;E13;E17;E99', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (7, 'MAE_R', 1, 'sum:math.abs((sj-yc)/yc)', 'E21Old;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (8, 'MAE_R', 2, '(1-(result1/count))*100', 'E21Old;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (9, 'RMSE_A', 1, 'sum:math.abs(sj-yc)', 'E12;E13;E17;E99;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (10, 'RMSE_A', 2, 'sum:math.pow((sj-yc),2)*math.abs(sj-yc)/result1', 'E12;E13;E17;E99;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (11, 'RMSE_A', 3, '(1-(math.sqrt(result2)/rl))*100', 'E12;E13;E17;E99;', NULL, NULL, NULL, NULL, NULL);
 INSERT INTO `t_calculation_formula` VALUES (12, 'RMSE_C', 1, 'sum:math.pow((sj-yc)/rl,2)', 'E15;E21;E22;E23;E23Old;E41;', NULL, NULL, NULL, NULL, NULL);
 INSERT INTO `t_calculation_formula` VALUES (13, 'RMSE_C', 2, '(1-math.sqrt((result1/count)))*100', 'E15;E21;E22;E23;E23Old;E41;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `t_calculation_formula` VALUES (14, 'RMSE_R', 1, 'sum:math.pow((sj-yc)/sj,2)', 'E32;E33;E34', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `t_calculation_formula` VALUES (15, 'RMSE_R', 2, '(1-math.sqrt((result1/count)))*100', 'E32;E33;E34', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (14, 'RMSE_R', 1, 'sum:math.pow((sj-yc)/sj,2)', 'E32;E33;E34;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (15, 'RMSE_R', 2, '(1-math.sqrt((result1/count)))*100', 'E32;E33;E34;', NULL, NULL, NULL, NULL, NULL);
 INSERT INTO `t_calculation_formula` VALUES (16, 'RMSE_S', 1, 'sum:math.pow((sj-yc),2)', 'E22;E23;E36;E37;E42;E43;E44;E45;E51;E62;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `t_calculation_formula` VALUES (17, 'RMSE_S', 2, '(1-(result1/rl*math.sqrt(count)))*100', 'E22;E23;E36;E37;E42;E43;E44;E45;E51;E62;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (17, 'RMSE_S', 2, '(1-(math.sqrt(result1)/rl*math.sqrt(count)))*100', 'E22;E23;E36;E37;E42;E43;E44;E45;E51;E62;', NULL, NULL, NULL, NULL, NULL);
 INSERT INTO `t_calculation_formula` VALUES (18, 'PASS', 1, 'sum:(1-math.abs((sj-yc)/rl))*100', 'E14;E15;E21;E22;E23;E23Old;E61;', NULL, NULL, NULL, NULL, NULL);
 INSERT INTO `t_calculation_formula` VALUES (19, 'PASS', 2, 'result1/count', 'E14;E15;E21;E22;E23;E23Old;E61;', NULL, NULL, NULL, NULL, NULL);
 

BIN
src/main/resources/各省准确率.xlsx