|
@@ -1,6 +1,7 @@
|
|
|
package com.persagy.apm.alarmservice.alarmcondition.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -9,6 +10,7 @@ import com.google.common.base.CaseFormat;
|
|
|
import com.persagy.apm.alarmservice.alarmcondition.dao.AlarmConditionMapper;
|
|
|
import com.persagy.apm.alarmservice.alarmcondition.model.AlarmCondition;
|
|
|
import com.persagy.apm.alarmservice.alarmcondition.model.ConvertAlarmConditionTool;
|
|
|
+import com.persagy.apm.alarmservice.alarmcondition.model.Formula;
|
|
|
import com.persagy.apm.alarmservice.alarmcondition.model.dto.AddAlarmConditionDTO;
|
|
|
import com.persagy.apm.alarmservice.alarmcondition.model.dto.PageQueryAlarmConditionDTO;
|
|
|
import com.persagy.apm.alarmservice.alarmcondition.model.dto.QueryAlarmConditionDTO;
|
|
@@ -23,10 +25,7 @@ import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 报警条件(AlarmCondition) service层
|
|
@@ -49,79 +48,61 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
|
|
|
public String createAlarmCondition(AddAlarmConditionDTO addAlarmConditionDTO) {
|
|
|
AlarmCondition alarmCondition = ConvertAlarmConditionTool.INSTANCE.convertAddDto2Entity(addAlarmConditionDTO);
|
|
|
List<List<CalculateMethodDTO>> frontend = addAlarmConditionDTO.getFrontend();
|
|
|
- List<List<String>> infoCodes = addAlarmConditionDTO.getInfoCodes();
|
|
|
Object json = JSON.toJSON(frontend);
|
|
|
alarmCondition.setFrontend(json);
|
|
|
//将前端公式转换成后台公式
|
|
|
- String backend = frontend2Backend(frontend,infoCodes);
|
|
|
- alarmCondition.setBackend(backend);
|
|
|
+ Map<String, String> stringMap = frontend2Backend(frontend);
|
|
|
+ alarmCondition.setBackend(stringMap.get("backend"));
|
|
|
+ alarmCondition.setInfoCodes(stringMap.get("infoCode"));
|
|
|
// 设置默认值
|
|
|
setDefaultValue(alarmCondition);
|
|
|
save(alarmCondition);
|
|
|
return alarmCondition.getId();
|
|
|
}
|
|
|
|
|
|
- private String frontend2Backend(List<List<CalculateMethodDTO>> frontend, List<List<String>> infoCodes) {
|
|
|
- List<String> nullList = new ArrayList<>();
|
|
|
+ private Map<String, String> frontend2Backend(List<List<CalculateMethodDTO>> frontend) {
|
|
|
StringBuffer allNotNull = new StringBuffer();
|
|
|
StringBuffer allNull = new StringBuffer();
|
|
|
- for (List<String> infoCode : infoCodes) {
|
|
|
- StringBuffer notNullString = new StringBuffer();
|
|
|
- StringBuffer nullString = new StringBuffer();
|
|
|
- nullString.append("(");
|
|
|
- notNullString.append("(");
|
|
|
- for (String s : infoCode) {
|
|
|
- notNullString.append(s).append("!=NaN").append(" && ");
|
|
|
- nullString.append(s).append("==NaN").append(" || ");
|
|
|
- }
|
|
|
- notNullString.delete(notNullString.length() - 4, notNullString.length()).append(")").append("||");
|
|
|
- allNotNull.append("(").append(notNullString).append(" || ");
|
|
|
- nullString.delete(nullString.length() - 4, nullString.length()).append(")");
|
|
|
- nullList.add(nullString.toString());
|
|
|
- }
|
|
|
- allNotNull.delete(allNotNull.length() - 4, allNotNull.length()).append(")");
|
|
|
- for (int i = 0; i < frontend.size(); i++) {
|
|
|
- StringBuffer calculateString = new StringBuffer();
|
|
|
- for (int j = 0; j < frontend.get(i).size(); j++) {
|
|
|
- CalculateMethodDTO calculateMethodDTO = frontend.get(i).get(j);
|
|
|
- calculateString.append("(")
|
|
|
- .append(calculateMethodDTO.getMonitorIndicatorId())
|
|
|
- .append(calculateMethodDTO.getOperator())
|
|
|
- .append(calculateMethodDTO.getFormula()).append(")")
|
|
|
- .append(" && ");
|
|
|
- }
|
|
|
- calculateString.append("(").delete(calculateString.length() - 4, calculateString.length()).append(")");
|
|
|
- allNull.append(nullList.get(i)).append("?true:").append(calculateString).append("||");
|
|
|
- }
|
|
|
- StringBuffer substring = new StringBuffer();
|
|
|
- substring.append(allNotNull).append(allNull);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- /*StringBuffer allNotNull = new StringBuffer();
|
|
|
- StringBuffer allNull = new StringBuffer();
|
|
|
+ Set<String> infoCodesList = new HashSet<>();
|
|
|
for (List<CalculateMethodDTO> calculateMethodDTOS : frontend) {
|
|
|
StringBuffer notNullString = new StringBuffer();
|
|
|
StringBuffer nullString = new StringBuffer();
|
|
|
StringBuffer calculateString = new StringBuffer();
|
|
|
for (CalculateMethodDTO calculateMethodDTO : calculateMethodDTOS) {
|
|
|
+ infoCodesList.add(calculateMethodDTO.getMonitorIndicatorId());
|
|
|
+ String formular = calculateMethodDTO.getFormula();
|
|
|
+ List<Formula> formulas = JSONObject.parseArray(formular, Formula.class);
|
|
|
+ StringBuffer tempFormula = new StringBuffer();
|
|
|
+ for (Formula formula : formulas) {
|
|
|
+ if(formula.getValue()!=null){
|
|
|
+ nullString.append(formula.getValue()).append("==NaN").append(" || ");
|
|
|
+ notNullString.append(formula.getValue()).append("!=NaN").append(" && ");
|
|
|
+ tempFormula.append(formula.getValue());
|
|
|
+ infoCodesList.add(formula.getValue());
|
|
|
+ }else{
|
|
|
+ tempFormula.append(formula.getLabel());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ calculateMethodDTO.setTempFormula(tempFormula.toString());
|
|
|
nullString.append(calculateMethodDTO.getMonitorIndicatorId()).append("==NaN").append(" || ");
|
|
|
notNullString.append(calculateMethodDTO.getMonitorIndicatorId()).append("!=NaN").append(" && ");
|
|
|
calculateString.append("(")
|
|
|
.append(calculateMethodDTO.getMonitorIndicatorId())
|
|
|
.append(calculateMethodDTO.getOperator())
|
|
|
- .append(calculateMethodDTO.getFormula()).append(")")
|
|
|
+ .append(calculateMethodDTO.getTempFormula()).append(")")
|
|
|
.append(" && ");
|
|
|
}
|
|
|
notNullString.delete(notNullString.length() - 4, notNullString.length()).append(")");
|
|
|
allNotNull.append("(").append(notNullString).append(" || ");
|
|
|
allNull.append("(").append("(").append(nullString.substring(0, nullString.length() - 4)).append(")").append("?true:").append("(").append(calculateString.substring(0, calculateString.length() - 4)).append(")").append(")").append(" || ");
|
|
|
}
|
|
|
+ String infoCode = JSON.toJSONString(infoCodesList);
|
|
|
StringBuffer substring = new StringBuffer();
|
|
|
- substring.append("(").append(allNotNull.substring(0, allNotNull.length() - 4)).append(")").append(" && ").append("(").append(allNull.substring(0, allNull.length() - 4)).append(")").toString();*/
|
|
|
- return substring.toString();
|
|
|
+ substring.append("(").append(allNotNull.substring(0, allNotNull.length() - 4)).append(")").append(" && ").append("(").append(allNull.substring(0, allNull.length() - 4)).append(")").toString();
|
|
|
+ Map<String, String> map = new HashMap();
|
|
|
+ map.put("infoCode",infoCode);
|
|
|
+ map.put("backend",substring.toString());
|
|
|
+ return map;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -171,13 +152,12 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
|
|
|
alarmCondition.setModifier(PoemsContext.getContext().getUserId());
|
|
|
if (updateAlarmConditionDTO.getFrontend() != null) {
|
|
|
List<List<CalculateMethodDTO>> frontend = updateAlarmConditionDTO.getFrontend();
|
|
|
- //Map<String, String> infoCodes = updateAlarmConditionDTO.getInfoCodes();
|
|
|
String frontJson = JSON.toJSONString(frontend);
|
|
|
alarmCondition.setFrontend(frontJson);
|
|
|
//将前端公式转换成后台公式
|
|
|
- List<List<String>> infoCodes = updateAlarmConditionDTO.getInfoCodes();
|
|
|
- String backend = frontend2Backend(frontend, infoCodes);
|
|
|
- alarmCondition.setBackend(backend);
|
|
|
+ Map<String, String> stringMap = frontend2Backend(frontend);
|
|
|
+ alarmCondition.setBackend(stringMap.get("backend"));
|
|
|
+ alarmCondition.setInfoCodes(stringMap.get("infoCode"));
|
|
|
}
|
|
|
updateById(alarmCondition);
|
|
|
}
|