diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java index fb26b58..616e496 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { Integer index = byteResolverParam.getIndex(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java index fb26b58..616e496 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { Integer index = byteResolverParam.getIndex(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java index b787f7f..0c3790a 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java index fb26b58..616e496 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { Integer index = byteResolverParam.getIndex(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java index b787f7f..0c3790a 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java index 96f41be..ec27244 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java index fb26b58..616e496 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { Integer index = byteResolverParam.getIndex(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java index b787f7f..0c3790a 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java index 96f41be..ec27244 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java index 627efb3..a7440ef 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -12,8 +12,8 @@ import java.util.HashMap; import java.util.Map; - -@Service +//转换规则 +@Service("convert") @AllArgsConstructor @Slf4j public class RuleResolver implements ByteResolver { @@ -22,7 +22,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam){ - FieldRuleEngine fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); + RuleEvaluator fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); if(ObjectUtil.isEmpty(fieldRuleEngine)){ return byteResolverParam.getValue(); } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java index fb26b58..616e496 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { Integer index = byteResolverParam.getIndex(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java index b787f7f..0c3790a 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java index 96f41be..ec27244 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java index 627efb3..a7440ef 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -12,8 +12,8 @@ import java.util.HashMap; import java.util.Map; - -@Service +//转换规则 +@Service("convert") @AllArgsConstructor @Slf4j public class RuleResolver implements ByteResolver { @@ -22,7 +22,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam){ - FieldRuleEngine fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); + RuleEvaluator fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); if(ObjectUtil.isEmpty(fieldRuleEngine)){ return byteResolverParam.getValue(); } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java deleted file mode 100644 index 203bc8d..0000000 --- a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.domain; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("field_rule_engine") -@Data -public class FieldRuleEngine { - - private Long id; - private String name; - private String desc; - private String condition; - private String excuteOperation; - private Date lasTime; - private Date createTime; - -} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java index fb26b58..616e496 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { Integer index = byteResolverParam.getIndex(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java index b787f7f..0c3790a 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java index 96f41be..ec27244 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java index 627efb3..a7440ef 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -12,8 +12,8 @@ import java.util.HashMap; import java.util.Map; - -@Service +//转换规则 +@Service("convert") @AllArgsConstructor @Slf4j public class RuleResolver implements ByteResolver { @@ -22,7 +22,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam){ - FieldRuleEngine fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); + RuleEvaluator fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); if(ObjectUtil.isEmpty(fieldRuleEngine)){ return byteResolverParam.getValue(); } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java deleted file mode 100644 index 203bc8d..0000000 --- a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.domain; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("field_rule_engine") -@Data -public class FieldRuleEngine { - - private Long id; - private String name; - private String desc; - private String condition; - private String excuteOperation; - private Date lasTime; - private Date createTime; - -} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java new file mode 100644 index 0000000..416f68c --- /dev/null +++ b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java @@ -0,0 +1,20 @@ +package com.casic.missiles.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@TableName("rule_evaluator") +@Data +public class RuleEvaluator { + + private Long id; + private String name; + private String desc; + private String condition; + private String excuteOperation; + private Date lasTime; + private Date createTime; + +} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java index fb26b58..616e496 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { Integer index = byteResolverParam.getIndex(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java index b787f7f..0c3790a 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java index 96f41be..ec27244 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java index 627efb3..a7440ef 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -12,8 +12,8 @@ import java.util.HashMap; import java.util.Map; - -@Service +//转换规则 +@Service("convert") @AllArgsConstructor @Slf4j public class RuleResolver implements ByteResolver { @@ -22,7 +22,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam){ - FieldRuleEngine fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); + RuleEvaluator fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); if(ObjectUtil.isEmpty(fieldRuleEngine)){ return byteResolverParam.getValue(); } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java deleted file mode 100644 index 203bc8d..0000000 --- a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.domain; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("field_rule_engine") -@Data -public class FieldRuleEngine { - - private Long id; - private String name; - private String desc; - private String condition; - private String excuteOperation; - private Date lasTime; - private Date createTime; - -} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java new file mode 100644 index 0000000..416f68c --- /dev/null +++ b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java @@ -0,0 +1,20 @@ +package com.casic.missiles.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@TableName("rule_evaluator") +@Data +public class RuleEvaluator { + + private Long id; + private String name; + private String desc; + private String condition; + private String excuteOperation; + private Date lasTime; + private Date createTime; + +} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java b/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java index 9df177d..7d07ff6 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java @@ -1,9 +1,10 @@ package com.casic.missiles.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; + import org.apache.ibatis.annotations.Mapper; @Mapper -public interface FieldRuleEngineMapper extends BaseMapper { +public interface FieldRuleEngineMapper extends BaseMapper { } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java index fb26b58..616e496 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { Integer index = byteResolverParam.getIndex(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java index b787f7f..0c3790a 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java index 96f41be..ec27244 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java index 627efb3..a7440ef 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -12,8 +12,8 @@ import java.util.HashMap; import java.util.Map; - -@Service +//转换规则 +@Service("convert") @AllArgsConstructor @Slf4j public class RuleResolver implements ByteResolver { @@ -22,7 +22,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam){ - FieldRuleEngine fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); + RuleEvaluator fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); if(ObjectUtil.isEmpty(fieldRuleEngine)){ return byteResolverParam.getValue(); } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java deleted file mode 100644 index 203bc8d..0000000 --- a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.domain; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("field_rule_engine") -@Data -public class FieldRuleEngine { - - private Long id; - private String name; - private String desc; - private String condition; - private String excuteOperation; - private Date lasTime; - private Date createTime; - -} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java new file mode 100644 index 0000000..416f68c --- /dev/null +++ b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java @@ -0,0 +1,20 @@ +package com.casic.missiles.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@TableName("rule_evaluator") +@Data +public class RuleEvaluator { + + private Long id; + private String name; + private String desc; + private String condition; + private String excuteOperation; + private Date lasTime; + private Date createTime; + +} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java b/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java index 9df177d..7d07ff6 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java @@ -1,9 +1,10 @@ package com.casic.missiles.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; + import org.apache.ibatis.annotations.Mapper; @Mapper -public interface FieldRuleEngineMapper extends BaseMapper { +public interface FieldRuleEngineMapper extends BaseMapper { } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java index 7f13c50..716195b 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -27,7 +27,7 @@ @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java index fb26b58..616e496 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { Integer index = byteResolverParam.getIndex(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java index b787f7f..0c3790a 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java index 96f41be..ec27244 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java index 627efb3..a7440ef 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -12,8 +12,8 @@ import java.util.HashMap; import java.util.Map; - -@Service +//转换规则 +@Service("convert") @AllArgsConstructor @Slf4j public class RuleResolver implements ByteResolver { @@ -22,7 +22,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam){ - FieldRuleEngine fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); + RuleEvaluator fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); if(ObjectUtil.isEmpty(fieldRuleEngine)){ return byteResolverParam.getValue(); } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java deleted file mode 100644 index 203bc8d..0000000 --- a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.domain; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("field_rule_engine") -@Data -public class FieldRuleEngine { - - private Long id; - private String name; - private String desc; - private String condition; - private String excuteOperation; - private Date lasTime; - private Date createTime; - -} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java new file mode 100644 index 0000000..416f68c --- /dev/null +++ b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java @@ -0,0 +1,20 @@ +package com.casic.missiles.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@TableName("rule_evaluator") +@Data +public class RuleEvaluator { + + private Long id; + private String name; + private String desc; + private String condition; + private String excuteOperation; + private Date lasTime; + private Date createTime; + +} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java b/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java index 9df177d..7d07ff6 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java @@ -1,9 +1,10 @@ package com.casic.missiles.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; + import org.apache.ibatis.annotations.Mapper; @Mapper -public interface FieldRuleEngineMapper extends BaseMapper { +public interface FieldRuleEngineMapper extends BaseMapper { } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java index 7f13c50..716195b 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -27,7 +27,7 @@ @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java index 2ac9b5a..3f63613 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -27,7 +27,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm){ - FieldRuleEngine fieldRuleEngine = null; + RuleEvaluator fieldRuleEngine = null; try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java index fb26b58..616e496 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { Integer index = byteResolverParam.getIndex(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java index b787f7f..0c3790a 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java index 96f41be..ec27244 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java index 627efb3..a7440ef 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -12,8 +12,8 @@ import java.util.HashMap; import java.util.Map; - -@Service +//转换规则 +@Service("convert") @AllArgsConstructor @Slf4j public class RuleResolver implements ByteResolver { @@ -22,7 +22,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam){ - FieldRuleEngine fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); + RuleEvaluator fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); if(ObjectUtil.isEmpty(fieldRuleEngine)){ return byteResolverParam.getValue(); } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java deleted file mode 100644 index 203bc8d..0000000 --- a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.domain; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("field_rule_engine") -@Data -public class FieldRuleEngine { - - private Long id; - private String name; - private String desc; - private String condition; - private String excuteOperation; - private Date lasTime; - private Date createTime; - -} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java new file mode 100644 index 0000000..416f68c --- /dev/null +++ b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java @@ -0,0 +1,20 @@ +package com.casic.missiles.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@TableName("rule_evaluator") +@Data +public class RuleEvaluator { + + private Long id; + private String name; + private String desc; + private String condition; + private String excuteOperation; + private Date lasTime; + private Date createTime; + +} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java b/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java index 9df177d..7d07ff6 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java @@ -1,9 +1,10 @@ package com.casic.missiles.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; + import org.apache.ibatis.annotations.Mapper; @Mapper -public interface FieldRuleEngineMapper extends BaseMapper { +public interface FieldRuleEngineMapper extends BaseMapper { } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java index 7f13c50..716195b 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -27,7 +27,7 @@ @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java index 2ac9b5a..3f63613 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -27,7 +27,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm){ - FieldRuleEngine fieldRuleEngine = null; + RuleEvaluator fieldRuleEngine = null; try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/PrecisionDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/PrecisionDecorator.java index 3e688ce..f684da9 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/PrecisionDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/PrecisionDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -27,7 +27,7 @@ @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm) { - FieldRuleEngine fieldRuleEngine = null; + RuleEvaluator fieldRuleEngine = null; try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java index fb26b58..616e496 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { Integer index = byteResolverParam.getIndex(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java index b787f7f..0c3790a 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java index 96f41be..ec27244 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java index 627efb3..a7440ef 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -12,8 +12,8 @@ import java.util.HashMap; import java.util.Map; - -@Service +//转换规则 +@Service("convert") @AllArgsConstructor @Slf4j public class RuleResolver implements ByteResolver { @@ -22,7 +22,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam){ - FieldRuleEngine fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); + RuleEvaluator fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); if(ObjectUtil.isEmpty(fieldRuleEngine)){ return byteResolverParam.getValue(); } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java deleted file mode 100644 index 203bc8d..0000000 --- a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.domain; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("field_rule_engine") -@Data -public class FieldRuleEngine { - - private Long id; - private String name; - private String desc; - private String condition; - private String excuteOperation; - private Date lasTime; - private Date createTime; - -} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java new file mode 100644 index 0000000..416f68c --- /dev/null +++ b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java @@ -0,0 +1,20 @@ +package com.casic.missiles.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@TableName("rule_evaluator") +@Data +public class RuleEvaluator { + + private Long id; + private String name; + private String desc; + private String condition; + private String excuteOperation; + private Date lasTime; + private Date createTime; + +} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java b/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java index 9df177d..7d07ff6 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java @@ -1,9 +1,10 @@ package com.casic.missiles.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; + import org.apache.ibatis.annotations.Mapper; @Mapper -public interface FieldRuleEngineMapper extends BaseMapper { +public interface FieldRuleEngineMapper extends BaseMapper { } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java index 7f13c50..716195b 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -27,7 +27,7 @@ @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java index 2ac9b5a..3f63613 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -27,7 +27,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm){ - FieldRuleEngine fieldRuleEngine = null; + RuleEvaluator fieldRuleEngine = null; try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/PrecisionDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/PrecisionDecorator.java index 3e688ce..f684da9 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/PrecisionDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/PrecisionDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -27,7 +27,7 @@ @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm) { - FieldRuleEngine fieldRuleEngine = null; + RuleEvaluator fieldRuleEngine = null; try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/RuleDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/RuleDecorator.java index 4fcdb5e..21cd0ea 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/RuleDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/RuleDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -26,7 +26,7 @@ //吃我一套正则表达式 @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm) { - FieldRuleEngine fieldRuleEngine = null; + RuleEvaluator fieldRuleEngine = null; try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java index 835d11e..6be70e0 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/ByteMergeProvider.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.exception.ExpressionNotFoundException; @@ -22,9 +22,10 @@ private final FieldRuleEngineMapper fieldRuleEngineMapper; //拿到所有的值合并到一个值 - public String resolveByteMerge(List valueList, String ruletypeId) { + public String resolveByteMerge(List valueList, String ruletypeId, String vaildRange) { String values = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); + Map vaildMap = getVaildRangeMap(vaildRange); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(ruletypeId); if (ObjectUtil.isEmpty(fieldRuleEngine)) { @@ -32,7 +33,9 @@ } Map env2 = new HashMap(); for (int i = 0; i < valueList.size(); i++) { - env2.put("value[" + i + "]", valueList.get(i)); + if (vaildMap.containsKey(i)) { + env2.put("value" + i, valueList.get(i)); + } } values = String.valueOf(AviatorEvaluator.execute(fieldRuleEngine.getExcuteOperation(), env2)); return values; @@ -42,4 +45,13 @@ } } + private Map getVaildRangeMap(String vaildRange) { + String[] range = vaildRange.split(","); + Map vaildMap = new HashMap(); + for (int i = 0; i < range.length; i++) { + vaildMap.put(Integer.valueOf(range[i]), ""); + } + return vaildMap; + } + } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java index 39f794c..178ef6d 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/FieldResolverManger.java @@ -10,7 +10,6 @@ import io.netty.buffer.ByteBuf; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -80,7 +79,8 @@ while (!ObjectUtil.isEmpty(ruleMapList) && i < ruleMapList.size()) { if (ruleMapList.get(i).get("ruleType").equals("combine")) { //合并 String ruletypeId = String.valueOf(ruleMapList.get(i).get("ruleTypeId")); - customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId); + String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); + customizeResolveValue = byteMergeProvider.resolveByteMerge(bytStrList, ruletypeId,vaildRange); break; } else { String vaildRange = String.valueOf(ruleMapList.get(i).get("vaildRange")); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java index fb26b58..616e496 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/LogicalShiftResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { Integer index = byteResolverParam.getIndex(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java index b787f7f..0c3790a 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/OperationResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java index 96f41be..ec27244 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/PrecisionResolver.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -25,7 +25,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam) { - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); Object value = byteResolverParam.getValue(); try { fieldRuleEngine = fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java index 627efb3..a7440ef 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/codec/decoder/resolver/resolver/RuleResolver.java @@ -2,7 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.casic.missiles.codec.decoder.resolver.ByteResolver; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.ByteResolverParam; import com.googlecode.aviator.AviatorEvaluator; @@ -12,8 +12,8 @@ import java.util.HashMap; import java.util.Map; - -@Service +//转换规则 +@Service("convert") @AllArgsConstructor @Slf4j public class RuleResolver implements ByteResolver { @@ -22,7 +22,7 @@ @Override public Object resolveOperationRule(ByteResolverParam byteResolverParam){ - FieldRuleEngine fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); + RuleEvaluator fieldRuleEngine=fieldRuleEngineMapper.selectById(byteResolverParam.getRuletypeId()); if(ObjectUtil.isEmpty(fieldRuleEngine)){ return byteResolverParam.getValue(); } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java deleted file mode 100644 index 203bc8d..0000000 --- a/sensorhub-server/src/main/java/com/casic/missiles/domain/FieldRuleEngine.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.missiles.domain; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("field_rule_engine") -@Data -public class FieldRuleEngine { - - private Long id; - private String name; - private String desc; - private String condition; - private String excuteOperation; - private Date lasTime; - private Date createTime; - -} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java new file mode 100644 index 0000000..416f68c --- /dev/null +++ b/sensorhub-server/src/main/java/com/casic/missiles/domain/RuleEvaluator.java @@ -0,0 +1,20 @@ +package com.casic.missiles.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@TableName("rule_evaluator") +@Data +public class RuleEvaluator { + + private Long id; + private String name; + private String desc; + private String condition; + private String excuteOperation; + private Date lasTime; + private Date createTime; + +} diff --git a/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java b/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java index 9df177d..7d07ff6 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/mapper/FieldRuleEngineMapper.java @@ -1,9 +1,10 @@ package com.casic.missiles.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; + import org.apache.ibatis.annotations.Mapper; @Mapper -public interface FieldRuleEngineMapper extends BaseMapper { +public interface FieldRuleEngineMapper extends BaseMapper { } diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java index 7f13c50..716195b 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/LogicalShiftDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -27,7 +27,7 @@ @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm) { String logicalValue = ""; - FieldRuleEngine fieldRuleEngine = new FieldRuleEngine(); + RuleEvaluator fieldRuleEngine = new RuleEvaluator(); try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java index 2ac9b5a..3f63613 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/OperationDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -27,7 +27,7 @@ //混合运算,有常量或者乘除的缩放 @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm){ - FieldRuleEngine fieldRuleEngine = null; + RuleEvaluator fieldRuleEngine = null; try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/PrecisionDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/PrecisionDecorator.java index 3e688ce..f684da9 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/PrecisionDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/PrecisionDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -27,7 +27,7 @@ @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm) { - FieldRuleEngine fieldRuleEngine = null; + RuleEvaluator fieldRuleEngine = null; try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/RuleDecorator.java b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/RuleDecorator.java index 4fcdb5e..21cd0ea 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/RuleDecorator.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/server/delivery/decorator/impl/RuleDecorator.java @@ -3,7 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.domain.FieldConfig; -import com.casic.missiles.domain.FieldRuleEngine; +import com.casic.missiles.domain.RuleEvaluator; import com.casic.missiles.domain.RuleDict; import com.casic.missiles.mapper.FieldRuleEngineMapper; import com.casic.missiles.model.NodeDecoratorParm; @@ -26,7 +26,7 @@ //吃我一套正则表达式 @Override public Object nodeDecoratorRule(NodeDecoratorParm nodeDecoratorParm) { - FieldRuleEngine fieldRuleEngine = null; + RuleEvaluator fieldRuleEngine = null; try { Map env2 = new HashMap(); Map ruleDictMap = nodeDecoratorParm.getRuleDictMap(); diff --git a/sensorhub-server/src/main/java/com/casic/missiles/utils/AviatorUtil.java b/sensorhub-server/src/main/java/com/casic/missiles/utils/AviatorUtil.java index 6ef2b56..83c455a 100644 --- a/sensorhub-server/src/main/java/com/casic/missiles/utils/AviatorUtil.java +++ b/sensorhub-server/src/main/java/com/casic/missiles/utils/AviatorUtil.java @@ -1,8 +1,11 @@ package com.casic.missiles.utils; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.googlecode.aviator.AviatorEvaluator; +import com.googlecode.aviator.runtime.function.AbstractFunction; +import com.googlecode.aviator.runtime.function.FunctionUtils; +import com.googlecode.aviator.runtime.type.AviatorBigInt; +import com.googlecode.aviator.runtime.type.AviatorObject; import java.util.ArrayList; import java.util.HashMap; @@ -21,14 +24,31 @@ // } //Original String // String string = "hello world"; + List list =new ArrayList<>(); Map env2 = new HashMap(); for (int i = 0; i < 2; i++) { - env2.put("value"+i ,1); + list.add("2"); } - Object values = String.valueOf(AviatorEvaluator.execute("String.valueOf(value0) + value1", env2)); + env2.put("list",list); + AviatorEvaluator.addFunction(new MinFunction()); + Object values = String.valueOf(AviatorEvaluator.execute("sum(list)", env2)); int i = 0; } + static class MinFunction extends AbstractFunction { + @Override + public AviatorObject call(Map env, AviatorObject arg1, AviatorObject arg2) { + Number left = FunctionUtils.getNumberValue(arg1, env); + Number right = FunctionUtils.getNumberValue(arg2, env); + return new AviatorBigInt(Math.min(left.doubleValue(), right.doubleValue())); + } + + @Override + public String getName() { + return "min"; + } + } + //字节位移 private static Object resolveLogicalShift(Object value, Integer index) {