diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/processor/ConditionRangeIndicatorProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/processor/ConditionRangeIndicatorProcessorEntity.java index 21ada600..dafa1e44 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/processor/ConditionRangeIndicatorProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/processor/ConditionRangeIndicatorProcessorEntity.java @@ -1,15 +1,19 @@ package io.sc.engine.rule.server.lib.entity.processor; import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; import io.sc.engine.rule.server.lib.entity.IndicatorProcessorEntity; import io.sc.engine.rule.server.lib.vo.processor.ConditionRangeIndicatorProcessorVo; +import io.sc.platform.util.ObjectMapperUtil; +import org.springframework.util.StringUtils; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.List; /** * 指标处理器(条件范围操作)实体类 @@ -46,7 +50,7 @@ public class ConditionRangeIndicatorProcessorEntity extends IndicatorProcessorEn @Override public boolean replace(ParameterAndValueType parameterAndValueType, ReplaceMode mode) { - String replaced =parameterAndValueType.replace(this.conditionRange, mode); + String replaced =replaceJsonString(this.conditionRange, parameterAndValueType, mode); replaced =(replaced==null?"":replaced); boolean result =false; if(!replaced.equals(this.conditionRange)) { @@ -55,4 +59,42 @@ public class ConditionRangeIndicatorProcessorEntity extends IndicatorProcessorEn this.conditionRange =replaced; return result; } + + private String replaceJsonString(String json, ParameterAndValueType parameterAndValueType, ReplaceMode mode) { + if(!StringUtils.hasText(json)){ + return json; + } + try { + List items = ObjectMapperUtil.json().readValue(json, new TypeReference>() { + }); + for (ConditionRangeItem item : items) { + item.setCondition(parameterAndValueType.replace(item.getCondition(), mode)); + item.setValue(parameterAndValueType.replace(item.getValue(), mode)); + } + return ObjectMapperUtil.json().writeValueAsString(items); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + static class ConditionRangeItem { + private String condition; + private String value; + + public String getCondition() { + return condition; + } + + public void setCondition(String condition) { + this.condition = condition; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/processor/ObjectPropertiesIndicatorProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/processor/ObjectPropertiesIndicatorProcessorEntity.java index 22438b3a..2048cb4a 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/processor/ObjectPropertiesIndicatorProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/processor/ObjectPropertiesIndicatorProcessorEntity.java @@ -1,15 +1,20 @@ package io.sc.engine.rule.server.lib.entity.processor; import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; import io.sc.engine.rule.server.lib.entity.IndicatorProcessorEntity; import io.sc.engine.rule.server.lib.vo.processor.ObjectPropertiesIndicatorProcessorVo; +import io.sc.platform.util.ObjectMapperUtil; +import org.springframework.util.StringUtils; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.List; /** * 模型参数处理器(对象属性操作)实体类 @@ -66,7 +71,7 @@ public class ObjectPropertiesIndicatorProcessorEntity extends IndicatorProcessor } this.objectCondition =replaced; - replaced =parameterAndValueType.replace(this.objectProperties, mode); + replaced =replaceJsonString(this.objectProperties, parameterAndValueType, mode); replaced =(replaced==null?"":replaced); if(!replaced.equals(this.objectProperties)) { result =true; @@ -74,4 +79,50 @@ public class ObjectPropertiesIndicatorProcessorEntity extends IndicatorProcessor this.objectProperties =replaced; return result; } + + private String replaceJsonString(String json, ParameterAndValueType parameterAndValueType, ReplaceMode mode) { + if(!StringUtils.hasText(json)){ + return json; + } + try { + List items = ObjectMapperUtil.json().readValue(json, new TypeReference>() { + }); + for (ObjectPropertiesItem item : items) { + item.setExpression(parameterAndValueType.replace(item.getExpression(), mode)); + } + return ObjectMapperUtil.json().writeValueAsString(items); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + static class ObjectPropertiesItem { + private String code; + private String name; + private String expression; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getExpression() { + return expression; + } + + public void setExpression(String expression) { + this.expression = expression; + } + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ConditionRangeParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ConditionRangeParameterProcessorEntity.java index 82c81de2..11a2f348 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ConditionRangeParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ConditionRangeParameterProcessorEntity.java @@ -1,15 +1,19 @@ package io.sc.engine.rule.server.model.entity.processor; import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.ConditionRangeParameterProcessorVo; +import io.sc.platform.util.ObjectMapperUtil; +import org.springframework.util.StringUtils; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.List; /** * 模型参数处理器(条件范围操作)实体类 @@ -45,7 +49,7 @@ public class ConditionRangeParameterProcessorEntity extends ParameterProcessorEn @Override public boolean replace(ParameterAndValueType parameterAndValueType, ReplaceMode mode) { - String replaced =parameterAndValueType.replace(this.conditionRange, mode); + String replaced =replaceJsonString(this.conditionRange, parameterAndValueType, mode); replaced =(replaced==null?"":replaced); boolean result =false; if(!replaced.equals(this.conditionRange)) { @@ -54,4 +58,42 @@ public class ConditionRangeParameterProcessorEntity extends ParameterProcessorEn this.conditionRange =replaced; return result; } + + private String replaceJsonString(String json, ParameterAndValueType parameterAndValueType, ReplaceMode mode) { + if(!StringUtils.hasText(json)){ + return json; + } + try { + List items = ObjectMapperUtil.json().readValue(json, new TypeReference>() { + }); + for (ConditionRangeItem item : items) { + item.setCondition(parameterAndValueType.replace(item.getCondition(), mode)); + item.setValue(parameterAndValueType.replace(item.getValue(), mode)); + } + return ObjectMapperUtil.json().writeValueAsString(items); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + static class ConditionRangeItem { + private String condition; + private String value; + + public String getCondition() { + return condition; + } + + public void setCondition(String condition) { + this.condition = condition; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTable2CParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTable2CParameterProcessorEntity.java index 84ff90c7..f2a0b77f 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTable2CParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTable2CParameterProcessorEntity.java @@ -1,15 +1,22 @@ package io.sc.engine.rule.server.model.entity.processor; import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.DecisionTable2CParameterProcessorVo; +import io.sc.platform.util.ObjectMapperUtil; +import org.springframework.util.StringUtils; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 模型参数处理器(简单决策表)实体类 @@ -45,7 +52,7 @@ public class DecisionTable2CParameterProcessorEntity extends ParameterProcessorE @Override public boolean replace(ParameterAndValueType parameterAndValueType, ReplaceMode mode) { - String replaced =parameterAndValueType.replace(this.decisionTable2C, mode); + String replaced =replaceJsonString(this.decisionTable2C, parameterAndValueType, mode); replaced =(replaced==null?"":replaced); boolean result =false; if(!replaced.equals(this.decisionTable2C)) { @@ -54,4 +61,23 @@ public class DecisionTable2CParameterProcessorEntity extends ParameterProcessorE this.decisionTable2C =replaced; return result; } + + private String replaceJsonString(String json, ParameterAndValueType parameterAndValueType, ReplaceMode mode) { + if(!StringUtils.hasText(json)){ + return json; + } + try { + List> items = ObjectMapperUtil.json().readValue(json, new TypeReference>>() { + }); + + for (Map item : items) { + for (Map.Entry entry : item.entrySet()) { + item.put(entry.getKey(),parameterAndValueType.replace(entry.getValue(),mode)); + } + } + return ObjectMapperUtil.json().writeValueAsString(items); + } catch (Exception e) { + throw new RuntimeException(e); + } + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTableParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTableParameterProcessorEntity.java index cba51dbf..d9ade977 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTableParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTableParameterProcessorEntity.java @@ -1,15 +1,20 @@ package io.sc.engine.rule.server.model.entity.processor; import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.DecisionTableParameterProcessorVo; +import io.sc.platform.util.ObjectMapperUtil; +import org.springframework.util.StringUtils; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.List; +import java.util.Map; /** * 模型参数处理器(决策表)实体类 @@ -45,7 +50,7 @@ public class DecisionTableParameterProcessorEntity extends ParameterProcessorEnt @Override public boolean replace(ParameterAndValueType parameterAndValueType, ReplaceMode mode) { - String replaced =parameterAndValueType.replace(this.decisionTable, mode); + String replaced =replaceJsonString(this.decisionTable, parameterAndValueType, mode); replaced =(replaced==null?"":replaced); boolean result =false; if(!replaced.equals(this.decisionTable)) { @@ -54,4 +59,23 @@ public class DecisionTableParameterProcessorEntity extends ParameterProcessorEnt this.decisionTable =replaced; return result; } + + private String replaceJsonString(String json, ParameterAndValueType parameterAndValueType, ReplaceMode mode) { + if(!StringUtils.hasText(json)){ + return json; + } + try { + List> items = ObjectMapperUtil.json().readValue(json, new TypeReference>>() { + }); + + for (Map item : items) { + for (Map.Entry entry : item.entrySet()) { + item.put(entry.getKey(),parameterAndValueType.replace(entry.getValue(),mode)); + } + } + return ObjectMapperUtil.json().writeValueAsString(items); + } catch (Exception e) { + throw new RuntimeException(e); + } + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ObjectPropertiesParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ObjectPropertiesParameterProcessorEntity.java index 732642d9..d36226b7 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ObjectPropertiesParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ObjectPropertiesParameterProcessorEntity.java @@ -1,15 +1,19 @@ package io.sc.engine.rule.server.model.entity.processor; import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.ObjectPropertiesParameterProcessorVo; +import io.sc.platform.util.ObjectMapperUtil; +import org.springframework.util.StringUtils; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.List; /** * 模型参数处理器(对象属性操作)实体类 @@ -66,7 +70,7 @@ public class ObjectPropertiesParameterProcessorEntity extends ParameterProcessor } this.objectCondition =replaced; - replaced =parameterAndValueType.replace(this.objectProperties, mode); + replaced =replaceJsonString(this.objectProperties, parameterAndValueType, mode); replaced =(replaced==null?"":replaced); if(!replaced.equals(this.objectProperties)) { result =true; @@ -74,4 +78,50 @@ public class ObjectPropertiesParameterProcessorEntity extends ParameterProcessor this.objectProperties =replaced; return result; } + + private String replaceJsonString(String json, ParameterAndValueType parameterAndValueType, ReplaceMode mode) { + if(!StringUtils.hasText(json)){ + return json; + } + try { + List items = ObjectMapperUtil.json().readValue(json, new TypeReference>() { + }); + for (ObjectPropertiesItem item : items) { + item.setExpression(parameterAndValueType.replace(item.getExpression(), mode)); + } + return ObjectMapperUtil.json().writeValueAsString(items); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + static class ObjectPropertiesItem { + private String code; + private String name; + private String expression; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getExpression() { + return expression; + } + + public void setExpression(String expression) { + this.expression = expression; + } + } }