|
@@ -1,14 +1,14 @@
|
|
|
package com.syjy.calculate.conotroller;
|
|
|
|
|
|
-import com.alibaba.fastjson.JSONArray;
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.googlecode.aviator.Expression;
|
|
|
+import com.syjy.calculate.entity.CalculateRequest;
|
|
|
+import com.syjy.calculate.entity.CalculationInfo;
|
|
|
import com.syjy.calculate.service.AccuracyPassRateCalculateService;
|
|
|
import com.syjy.calculate.util.CreateAndInsertSqlUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
-
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
@@ -20,42 +20,330 @@ public class Test {
|
|
|
private AccuracyPassRateCalculateService accuracyPassRateCalculateService;
|
|
|
@Resource
|
|
|
private CreateAndInsertSqlUtil createAndInsertSqlUtil;
|
|
|
-
|
|
|
@RequestMapping(value = "/test")
|
|
|
@ResponseBody
|
|
|
public void saveElectricField() {
|
|
|
- // 测试数据组装
|
|
|
- JSONArray powerData = new JSONArray();
|
|
|
- JSONObject dataText = new JSONObject();
|
|
|
- dataText.put("sj", new BigDecimal(8));
|
|
|
- dataText.put("yc", new BigDecimal(7));
|
|
|
- powerData.add(dataText);
|
|
|
- dataText = new JSONObject();
|
|
|
- dataText.put("sj", new BigDecimal(9));
|
|
|
- dataText.put("yc", new BigDecimal(7));
|
|
|
- powerData.add(dataText);
|
|
|
-
|
|
|
- dataText = new JSONObject();
|
|
|
- dataText.put("sj", new BigDecimal(5));
|
|
|
- dataText.put("yc", new BigDecimal(6));
|
|
|
- powerData.add(dataText);
|
|
|
-
|
|
|
- dataText = new JSONObject();
|
|
|
- dataText.put("sj", new BigDecimal(8));
|
|
|
- dataText.put("yc", new BigDecimal(10));
|
|
|
- powerData.add(dataText);
|
|
|
-
|
|
|
- BigDecimal rl = new BigDecimal("10");
|
|
|
- String provinceEnum = "E51";
|
|
|
- String type = "MAE";
|
|
|
- // 计算
|
|
|
- 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");
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
+ List<CalculationInfo> calculationInfoList = new ArrayList<>();
|
|
|
+ CalculationInfo calculationInfo = new CalculationInfo();
|
|
|
+ calculationInfo.setSj(new BigDecimal("5"));
|
|
|
+ calculationInfo.setYc(new BigDecimal("4"));
|
|
|
+ calculationInfo.setRl(new BigDecimal("4"));
|
|
|
+ calculationInfo.setTime(1663084800000L);
|
|
|
+ calculationInfoList.add(calculationInfo);
|
|
|
+
|
|
|
+ calculationInfo = new CalculationInfo();
|
|
|
+ calculationInfo.setSj(new BigDecimal("8"));
|
|
|
+ calculationInfo.setYc(new BigDecimal("6"));
|
|
|
+ calculationInfo.setRl(new BigDecimal("9"));
|
|
|
+ calculationInfo.setTime(1663084800000L);
|
|
|
+ calculationInfoList.add(calculationInfo);
|
|
|
+
|
|
|
+ calculationInfo = new CalculationInfo();
|
|
|
+ calculationInfo.setSj(new BigDecimal("6"));
|
|
|
+ calculationInfo.setYc(new BigDecimal("4"));
|
|
|
+ calculationInfo.setRl(new BigDecimal("7"));
|
|
|
+
|
|
|
+ calculationInfo.setTime(1663085700000L);
|
|
|
+ calculationInfoList.add(calculationInfo);
|
|
|
+
|
|
|
+ calculationInfo = new CalculationInfo();
|
|
|
+ calculationInfo.setSj(new BigDecimal("7"));
|
|
|
+ calculationInfo.setYc(new BigDecimal("6"));
|
|
|
+ calculationInfo.setRl(new BigDecimal("8"));
|
|
|
+ calculationInfo.setTime(1663086600000L);
|
|
|
+ calculationInfoList.add(calculationInfo);
|
|
|
+
|
|
|
+ calculationInfo = new CalculationInfo();
|
|
|
+ calculationInfo.setSj(new BigDecimal("9"));
|
|
|
+ calculationInfo.setYc(new BigDecimal("6"));
|
|
|
+ calculationInfo.setRl(new BigDecimal("9"));
|
|
|
+ calculationInfo.setTime(1663086600000L);
|
|
|
+ calculationInfoList.add(calculationInfo);
|
|
|
+
|
|
|
+ CalculateRequest calculateRequest = new CalculateRequest();
|
|
|
+ calculateRequest.setCalculationInfoList(calculationInfoList);
|
|
|
+
|
|
|
+ calculateRequest.setCap(new BigDecimal("12"));
|
|
|
+ calculateRequest.setFormulaType("DAY_SHORT_PASS");
|
|
|
+ calculateRequest.setProvince("E64");
|
|
|
+ calculateRequest.setElectricType("E2");
|
|
|
+
|
|
|
+ Map<String,Object> resultMap = accuracyPassRateCalculateService.calculate(calculateRequest);
|
|
|
+
|
|
|
+ System.out.println("666666");
|
|
|
+
|
|
|
+ Expression exp = null;
|
|
|
+ // exp = AviatorEvaluator.getInstance().compileScript("examples/aaa.av",true);
|
|
|
+// Expression script = AviatorEvaluator.getInstance().compile("0M+one-(math.sqrt(sum)/rl)");
|
|
|
+// Object aad = exp.execute();
|
|
|
+
|
|
|
+// Map<String , Object> rty = new HashMap<>();
|
|
|
+// rty.put("sj",new BigDecimal("10"));
|
|
|
+// rty.put("yc",new BigDecimal("8"));
|
|
|
+// rty.put("rl",new BigDecimal("3"));
|
|
|
+// String aacc = "sj-yc/math.sqrt(rl)";
|
|
|
+// Expression script = AviatorEvaluator.getInstance().compile(aacc);
|
|
|
+// Object erew = script.execute(rty);
|
|
|
+// System.out.println(erew);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+// CalculationInfo calculationInfo = new CalculationInfo();
|
|
|
+// calculationInfo.setSj(new BigDecimal("9"));
|
|
|
+//
|
|
|
+// BigDecimal yc = calculationInfo.getYc();
|
|
|
+//
|
|
|
+// List<Map<String,Object>> lastList = new ArrayList<>();
|
|
|
+// Map<String,Object> m1 = new HashMap<>();
|
|
|
+// m1.put("sj",new BigDecimal("9"));
|
|
|
+// m1.put("yc",new BigDecimal("9"));
|
|
|
+// m1.put("rl",new BigDecimal("9"));
|
|
|
+// m1.put("time",1662998400000L);
|
|
|
+// lastList.add(m1);
|
|
|
+// Map<String,Object> m2 = new HashMap<>();
|
|
|
+// m2.put("sj",new BigDecimal("7"));
|
|
|
+// m2.put("yc",new BigDecimal("6"));
|
|
|
+// m2.put("rl",new BigDecimal("8"));
|
|
|
+// m2.put("time",1662998400000L);
|
|
|
+// lastList.add(m2);
|
|
|
+//
|
|
|
+// Map<String,Object> m3 = new HashMap<>();
|
|
|
+// m3.put("sj",new BigDecimal("9"));
|
|
|
+// m3.put("yc",new BigDecimal("6"));
|
|
|
+// m3.put("rl",new BigDecimal("10"));
|
|
|
+// m3.put("time",1662999300000L);
|
|
|
+// lastList.add(m3);
|
|
|
+//
|
|
|
+// Map<String,Object> m4 = new HashMap<>();
|
|
|
+// m4.put("sj",new BigDecimal("5"));
|
|
|
+// m4.put("yc",new BigDecimal("4"));
|
|
|
+// m4.put("rl",new BigDecimal("7"));
|
|
|
+// m4.put("time",1663000200000L);
|
|
|
+// lastList.add(m4);
|
|
|
+//
|
|
|
+// Map<String,Object> m5 = new HashMap<>();
|
|
|
+// m5.put("sj",new BigDecimal("7"));
|
|
|
+// m5.put("yc",new BigDecimal("6"));
|
|
|
+// m5.put("rl",new BigDecimal("7"));
|
|
|
+// m5.put("time",1663000200000L);
|
|
|
+// lastList.add(m5);
|
|
|
+//
|
|
|
+// Map<String,Object> m6 = new HashMap<>();
|
|
|
+// m6.put("sj",new BigDecimal("12"));
|
|
|
+// m6.put("yc",new BigDecimal("11"));
|
|
|
+// m6.put("rl",new BigDecimal("10"));
|
|
|
+// m6.put("time",1663000200000L);
|
|
|
+// lastList.add(m6);
|
|
|
+//
|
|
|
+// Map<String,Object> evv = new HashMap<>();
|
|
|
+// evv.put("list",lastList);
|
|
|
+// evv.put("rl",new BigDecimal("10"));
|
|
|
+//// Object rr24 = AviatorEvaluator.execute("listToListList(list)",evv);
|
|
|
+////
|
|
|
+//// System.out.println(rr24);
|
|
|
+//
|
|
|
+//
|
|
|
+// Expression exp = null;
|
|
|
+// try {
|
|
|
+// String aa = System.getProperty("user.dir");
|
|
|
+// exp = AviatorEvaluator.getInstance().compileScript("examples/aaa.av",true);
|
|
|
+// Object aad = exp.execute(evv);
|
|
|
+// System.out.println(aad);
|
|
|
+// } catch (IOException e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+// Date ddd = new Date();
|
|
|
+// ddd.getTime();
|
|
|
+//
|
|
|
+// long startTime = DateUtil.beginOfDay(DateTime.now()).getTime();
|
|
|
+// DateTime startTime2 = DateUtil.beginOfDay(DateTime.now());
|
|
|
+// long nowTime = DateTime.now().getTime();
|
|
|
+//
|
|
|
+//
|
|
|
+//
|
|
|
+//
|
|
|
+//
|
|
|
+//
|
|
|
+// List<CalculationInfo> calculationInfoList = new ArrayList<>();
|
|
|
+// CalculationInfo calculationInfo = new CalculationInfo();
|
|
|
+// calculationInfo.setSj(new BigDecimal("5"));
|
|
|
+// calculationInfo.setYc(new BigDecimal("4"));
|
|
|
+// calculationInfo.setRl(new BigDecimal("4"));
|
|
|
+// calculationInfoList.add(calculationInfo);
|
|
|
+//
|
|
|
+// CalculateRequest calculateRequest = new CalculateRequest();
|
|
|
+// calculateRequest.setCalculationInfoList(calculationInfoList);
|
|
|
+//
|
|
|
+// calculateRequest.setCap(new BigDecimal("12"));
|
|
|
+// calculateRequest.setFormulaType("DAY_SHORT_ACCURACY");
|
|
|
+// calculateRequest.setProvince("E99");
|
|
|
+// calculateRequest.setElectricType("E2");
|
|
|
+// Map<String,Object> result23 = new HashMap<>();
|
|
|
+// result23 = accuracyPassRateCalculateService.calculate(calculateRequest);
|
|
|
+//
|
|
|
+//
|
|
|
+// CalculateResult aa = CalculateResult.error();
|
|
|
+// String cc = CalculateResult.Type.SUCCESS.value();
|
|
|
+//
|
|
|
+//
|
|
|
+// Map<String,Object> q1 = new HashMap<>();
|
|
|
+//
|
|
|
+// Map<String,BigDecimal> q2 = new HashMap<>();
|
|
|
+// q2.put("aa",new BigDecimal("10"));
|
|
|
+// q2.put("bb",new BigDecimal("7"));
|
|
|
+//
|
|
|
+// q1.put("dd",q2);
|
|
|
+//
|
|
|
+// Map<String,Object> q3 = (Map<String,Object>)q1.get("dd");
|
|
|
+//
|
|
|
+// Object tr = AviatorEvaluator.execute("math.abs((aa-bb)/bb)",q3);
|
|
|
+//
|
|
|
+//
|
|
|
+// Map<String,Object> mqww = new HashMap<>();
|
|
|
+// mqww.put("sj",new BigDecimal("5"));
|
|
|
+// mqww.put("yc",new BigDecimal("8"));
|
|
|
+// Object rr24 = AviatorEvaluator.execute("differenceAbsolute(sj,yc)",mqww);
|
|
|
+//
|
|
|
+//
|
|
|
+// Expression exp = null;
|
|
|
+// try {
|
|
|
+// exp = AviatorEvaluator.getInstance().compileScript("examples/hello.av",true);
|
|
|
+// } catch (IOException e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+//
|
|
|
+// List<Map<String,BigDecimal>> listMap = new ArrayList<>();
|
|
|
+// Map<String,BigDecimal> mq = new HashMap<>();
|
|
|
+// mq.put("sj",new BigDecimal("8"));
|
|
|
+// mq.put("yc",new BigDecimal("6"));
|
|
|
+// mq.put("rl",new BigDecimal("11"));
|
|
|
+// listMap.add(mq);
|
|
|
+//
|
|
|
+// Map<String,BigDecimal> mq1 = new HashMap<>();
|
|
|
+// mq1.put("sj",new BigDecimal("9"));
|
|
|
+// mq1.put("yc",new BigDecimal("8"));
|
|
|
+// mq1.put("rl",new BigDecimal("11"));
|
|
|
+// listMap.add(mq1);
|
|
|
+//
|
|
|
+// Map<String,Object> tM = new HashMap<>();
|
|
|
+//
|
|
|
+// tM.put("list",listMap);
|
|
|
+// tM.put("rl",new BigDecimal("10"));
|
|
|
+//
|
|
|
+//
|
|
|
+// Object result = null;
|
|
|
+// try {
|
|
|
+// result = exp.execute(tM);
|
|
|
+// } catch (Exception e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+//
|
|
|
+// System.out.println(result);
|
|
|
+// //注册函数
|
|
|
+// AviatorEvaluator.addFunction(new SumFunction());
|
|
|
+// Map<String, Object> m66 = new HashMap<>();
|
|
|
+// m66.put("a",new BigDecimal("12"));
|
|
|
+// m66.put("b",new BigDecimal("13"));
|
|
|
+// System.out.println(AviatorEvaluator.execute("sum(a, b)",m66)); // 3.0
|
|
|
+//
|
|
|
+// // Compile the script into a Expression instance.
|
|
|
+// exp = null;
|
|
|
+// try {
|
|
|
+// exp = AviatorEvaluator.getInstance().compileScript("examples/hello.av",true);
|
|
|
+//
|
|
|
+// } catch (IOException e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+//
|
|
|
+//// // 文本存在数据库中的时候
|
|
|
+//// Expression script = AviatorEvaluator.getInstance().compile("name","println('Hello, AviatorScript!');",true);
|
|
|
+// Map<String, Object> testMap = new HashMap<>();
|
|
|
+// List<Map<String,BigDecimal>> list = new ArrayList<>();
|
|
|
+// Map<String,BigDecimal> m1 = new HashMap<String,BigDecimal>();
|
|
|
+// m1.put("sj",new BigDecimal("8"));
|
|
|
+// m1.put("yc",new BigDecimal("7"));
|
|
|
+// m1.put("rl",new BigDecimal("10"));
|
|
|
+// list.add(m1);
|
|
|
+// Map<String,BigDecimal> m2 = new HashMap<String,BigDecimal>();
|
|
|
+// m2.put("sj",new BigDecimal("5"));
|
|
|
+// m2.put("yc",new BigDecimal("6"));
|
|
|
+// m2.put("rl",new BigDecimal("10"));
|
|
|
+// list.add(m2);
|
|
|
+// Map<String,BigDecimal> m3 = new HashMap<String,BigDecimal>();
|
|
|
+// m3.put("sj",new BigDecimal("6"));
|
|
|
+// m3.put("yc",new BigDecimal("9"));
|
|
|
+// m3.put("rl",new BigDecimal("10"));
|
|
|
+// list.add(m3);
|
|
|
+//
|
|
|
+// testMap.put("list",list);
|
|
|
+//
|
|
|
+// result = exp.execute(testMap);
|
|
|
+//
|
|
|
+// // 测试数据组装
|
|
|
+// JSONArray powerData = new JSONArray();
|
|
|
+// JSONObject dataText = new JSONObject();
|
|
|
+//
|
|
|
+// String aa = dataText.getString(null);
|
|
|
+//
|
|
|
+// if(aa == null){
|
|
|
+// System.out.println("1111111");
|
|
|
+// }
|
|
|
+//
|
|
|
+// dataText.put("sj", new BigDecimal(8));
|
|
|
+// dataText.put("yc", new BigDecimal(7));
|
|
|
+// powerData.add(dataText);
|
|
|
+// dataText = new JSONObject();
|
|
|
+// dataText.put("sj", new BigDecimal(9));
|
|
|
+// dataText.put("yc", new BigDecimal(7));
|
|
|
+// powerData.add(dataText);
|
|
|
+//
|
|
|
+// dataText = new JSONObject();
|
|
|
+// dataText.put("sj", new BigDecimal(5));
|
|
|
+// dataText.put("yc", new BigDecimal(6));
|
|
|
+// powerData.add(dataText);
|
|
|
+//
|
|
|
+// dataText = new JSONObject();
|
|
|
+// dataText.put("sj", new BigDecimal(8));
|
|
|
+// dataText.put("yc", new BigDecimal(10));
|
|
|
+// powerData.add(dataText);
|
|
|
+//
|
|
|
+// Map<String, Object> env = new HashMap<String, Object>();
|
|
|
+// env.put("powerData",powerData);
|
|
|
+//
|
|
|
+// Map<String, Object> map1 = new HashMap<>();
|
|
|
+// List<Map<String,Object>> list1 = new ArrayList<>();
|
|
|
+// Map<String, Object> map2 = new HashMap<>();
|
|
|
+// map2.put("sj",new BigDecimal(8));
|
|
|
+// map2.put("yc",new BigDecimal(7));
|
|
|
+// list1.add(map2);
|
|
|
+// Map<String, Object> map3 = new HashMap<>();
|
|
|
+// map3.put("sj",new BigDecimal(8));
|
|
|
+// map3.put("yc",new BigDecimal(6));
|
|
|
+// list1.add(map3);
|
|
|
+// map1.put("list1",list1);
|
|
|
+//
|
|
|
+//
|
|
|
+// BigDecimal rl = new BigDecimal("10");
|
|
|
+// String provinceEnum = "E51";
|
|
|
+// String type = "MAE";
|
|
|
+// String electricType = "E1";
|
|
|
+// // 计算
|
|
|
+// JSONObject jsonResult = accuracyPassRateCalculateService.calculate(powerData, rl, provinceEnum, type,electricType);
|
|
|
+// // 计算结果
|
|
|
+// String reslut = jsonResult.getString("reslut");
|
|
|
+// String accuracy = "";
|
|
|
+// if ("success".equals(reslut)) {
|
|
|
+// accuracy = jsonResult.getString("value");
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
@RequestMapping("testExportSql")
|