|
@@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.ims.common.utils.StringUtils;
|
|
|
import com.ims.eval.dao.*;
|
|
|
import com.ims.eval.entity.*;
|
|
|
-import com.ims.eval.expression.AlarmExpression;
|
|
|
-import com.ims.eval.expression.Analyzer;
|
|
|
-import com.ims.eval.expression.ScriptShell;
|
|
|
-import com.ims.eval.expression.Token;
|
|
|
+import com.ims.eval.expression.*;
|
|
|
import com.ims.eval.service.IEvaluationScoreCountService;
|
|
|
import com.ims.eval.util.MathCalculatorUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -118,17 +115,19 @@ public class ScoreCalculationSchedule {
|
|
|
if (intervalScoringTables.size() == 1){
|
|
|
String regularExpression = intervalScoringTables.get(0).getRegularExpression();
|
|
|
//公式计算得分
|
|
|
- score = MathCalculatorUtil.calculator(regularExpression);
|
|
|
- }else {
|
|
|
+ score = MathCalculatorUtil.handle(regularExpression);
|
|
|
+ //score = MathCalculatorUtil.calculator(regularExpression);
|
|
|
+ }
|
|
|
+ /*else {
|
|
|
//针对多区间评分
|
|
|
for (IntervalScoringTable intervalScoringTable : intervalScoringTables){
|
|
|
String range = intervalScoringTable.getRange();
|
|
|
- if (handle(range)){
|
|
|
+ if (MathCalculatorUtil.handle(range)){
|
|
|
score = MathCalculatorUtil.calculator(intervalScoringTable.getRegularExpression());
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
}else {
|
|
|
throw new Exception("该指标是非量化指标!");
|
|
|
}
|
|
@@ -136,31 +135,55 @@ public class ScoreCalculationSchedule {
|
|
|
}
|
|
|
|
|
|
|
|
|
- /*
|
|
|
- * 判断是否在这个区间
|
|
|
- * */
|
|
|
- public Boolean handle(String range) {
|
|
|
|
|
|
- Boolean o = true;
|
|
|
- try {
|
|
|
- //将区间表达式拆分
|
|
|
- ArrayList<Token> tokens = Analyzer.getTokens(range);
|
|
|
- //使用不同编码代替函数
|
|
|
- AlarmExpression alarmExpression = Analyzer.createAlarmExpression(tokens);
|
|
|
- List<AlarmExpression> children = alarmExpression.getChildren();
|
|
|
- for (AlarmExpression alarmExpression1 : children){
|
|
|
- String calculator = MathCalculatorUtil.calculator(alarmExpression1.getExpression());
|
|
|
- alarmExpression.setExpression(alarmExpression.getExpression().replaceAll(alarmExpression1.getFunCode(), calculator));
|
|
|
- }
|
|
|
|
|
|
- //判断表达式返回结果
|
|
|
- Map<String,Object> map = new HashMap<>();
|
|
|
- o = (Boolean) ScriptShell.parseExpr(alarmExpression.getExpression(), map);
|
|
|
- }catch (Exception e){
|
|
|
- log.info(e.getMessage());
|
|
|
+
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ Object o = ScriptShell.parseExpr("0==1", map);
|
|
|
+ System.out.println(o);
|
|
|
+
|
|
|
+ String s2 = "if(if(2>0,max(1,2)+20,min(1,3)+10)>11,12,if(2<0,min(5,4)+1,max(1,3)+2))";
|
|
|
+
|
|
|
+ String s4 = "if(abs(99)<=10%,(5%-abs(99))/1%*0.2+5,4)";
|
|
|
+ String s3 = "if(abs(99)<=5%,if(abs(99)>=1%,(5%-abs(99))/1%*0.25+5,6),if(abs(99)<=10%,(5%-abs(99))/1%*0.2+5,4))+if(99==0,5,if(99>0,6,4))";
|
|
|
+ /*String sd = "max(1,min(1,2))";
|
|
|
+ String sc = MathCalculatorUtil.calculator(sd);*/
|
|
|
+ String ss = "if(max(1,3)<1,1,2)";
|
|
|
+ ArrayList<Token> tokens = Analyzer.getTokens(s3);
|
|
|
+
|
|
|
+ //使用不同编码代替函数
|
|
|
+ AlarmExpression alarmExpression = Analyzer.createAlarmExpression(tokens);
|
|
|
+ if (alarmExpression.getVarList() != null && alarmExpression.getVarList().size() > 0) {
|
|
|
+ List<AlarmExpression> alarmExpressions = alarmExpression.getChildren();
|
|
|
+ for (AlarmExpression alarmExpression1 : alarmExpressions){
|
|
|
+ if (alarmExpression1.getChildren().size() > 0 && alarmExpression1.getChildren() != null){
|
|
|
+ for (AlarmExpression alarmExpression2 : alarmExpression1.getChildren()){
|
|
|
+ if (alarmExpression2.getChildren().size() > 0 && alarmExpression2.getChildren() != null){
|
|
|
+ List<AlarmExpression> al = alarmExpression2.getChildren();
|
|
|
+ for (AlarmExpression alarmExpression3 : al){
|
|
|
+ String calculator = MathCalculatorUtil.calculator(alarmExpression3.getExpression());
|
|
|
+ alarmExpression2.setExpression(alarmExpression2.getExpression().replaceAll(alarmExpression3.getFunCode(), calculator));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String calculator = MathCalculatorUtil.calculator(alarmExpression2.getExpression());
|
|
|
+ alarmExpression1.setExpression(alarmExpression1.getExpression().replaceAll(alarmExpression2.getFunCode(), calculator));
|
|
|
+ }
|
|
|
+ String calculator = MathCalculatorUtil.calculator(alarmExpression1.getExpression());
|
|
|
+ alarmExpression.setExpression(alarmExpression.getExpression().replaceAll(alarmExpression1.getFunCode(), calculator));
|
|
|
+ }else {
|
|
|
+ String calculator = MathCalculatorUtil.calculator(alarmExpression1.getExpression());
|
|
|
+ alarmExpression.setExpression(alarmExpression.getExpression().replaceAll(alarmExpression1.getFunCode(), calculator));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- return o;
|
|
|
- }
|
|
|
|
|
|
+ //判断表达式返回结果
|
|
|
+ String calculator = MathCalculatorUtil.calculator(alarmExpression.getExpression());
|
|
|
+ System.out.println(calculator);
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
}
|