Commit 623c09e6 authored by zhengjian's avatar zhengjian

6.6-2

parent 21cbc6f0
...@@ -218,13 +218,13 @@ public class FundModuleController { ...@@ -218,13 +218,13 @@ public class FundModuleController {
} }
private GlobalResponse simulation(List<FundConfigCondition> configConditions,Long configId){ private GlobalResponse simulation(List<FundConfigCondition> configConditions,Long configId){
log.info("资方模块接口,根据案例进行空跑, configConditions : {}", configConditions); log.info("资方模块接口,根据案例进行空跑, configConditions : {}, configId:{}", configConditions,configId);
if (CollectionUtils.isEmpty(configConditions)) { if (CollectionUtils.isEmpty(configConditions)) {
return GlobalResponse.create(FundModuleResponse.ID_IS_EMPTY); return GlobalResponse.create(FundModuleResponse.ID_IS_EMPTY);
} }
Stopwatch stopwatch = Stopwatch.createStarted(); Stopwatch stopwatch = Stopwatch.createStarted();
GlobalResponse response = fundModuleService.simulationCases(configConditions,configId); GlobalResponse response = fundModuleService.simulationCases(configConditions,configId);
log.info("资方模块接口,根据id获取所有案例, configConditions : {} 耗时 : {}, response : {}", configConditions, stopwatch.stop().elapsed(TimeUnit.MILLISECONDS), JSON.toJSONString(response)); log.info("资方模块接口,根据id获取所有案例, configConditions : {}, configId:{}, 耗时 : {}, response : {}", configConditions, configId,stopwatch.stop().elapsed(TimeUnit.MILLISECONDS), JSON.toJSONString(response));
return response; return response;
} }
} }
...@@ -20,6 +20,7 @@ import com.quantgroup.asset.distribution.service.rule.IRuleService; ...@@ -20,6 +20,7 @@ import com.quantgroup.asset.distribution.service.rule.IRuleService;
import com.quantgroup.asset.distribution.service.rule.vo.BaseRuleVO; import com.quantgroup.asset.distribution.service.rule.vo.BaseRuleVO;
import com.quantgroup.asset.distribution.service.rule.vo.IRuleVO; import com.quantgroup.asset.distribution.service.rule.vo.IRuleVO;
import com.quantgroup.asset.distribution.service.rule.vo.UnionRuleVO; import com.quantgroup.asset.distribution.service.rule.vo.UnionRuleVO;
import com.sun.org.apache.bcel.internal.generic.NEW;
import org.apache.commons.collections.Bag; import org.apache.commons.collections.Bag;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.bag.HashBag; import org.apache.commons.collections.bag.HashBag;
...@@ -390,21 +391,40 @@ public class FundModuleServiceImpl implements IFundModuleService{ ...@@ -390,21 +391,40 @@ public class FundModuleServiceImpl implements IFundModuleService{
} }
} }
/**
* 根据操作符和值生成新值 exp. > 3000 生成 3001 not in {9,10} 生成 8
* @param operator 操作符 参照 {@link RuleOperator}
* @param value 参与对比的值 若返回结果为x 则 x满足 x operator value
* @return 参照上述x
* @auth jian.zheng
* @update 2020-4-10 11:35:38
* @updatedBy jian.zheng
*/
private static String getValue(String operator,String value){ private static String getValue(String operator,String value){
Class<?> clazz = getType(value); Class<?> clazz = getType(value);
switch (RuleOperator.fromCode(operator)) { switch (RuleOperator.fromCode(operator)) {
case Equal: case Equal:
case LessThanOrEqual:
case GreaterThanOrEqual:
return value; return value;
case NotEqual: case NotEqual:
if (clazz.isAssignableFrom(BigDecimal.class)) { if (clazz.isAssignableFrom(BigDecimal.class)) {
return new BigDecimal(value).add(new BigDecimal(1)).toString(); return new BigDecimal(value).add(new BigDecimal(1)).toString();
}else if (clazz.isAssignableFrom(Boolean.class)){ }else if (clazz.isAssignableFrom(Boolean.class)){
return Boolean.toString(!Boolean.valueOf(value)); return Boolean.toString(!Boolean.parseBoolean(value));
}else { }else {
if (value.length() == 1){ if (RandomUtils.nextInt(0,10) <5){
return String.valueOf((char) (value.charAt(0) + 1)); if ("a".equals(value) || "A".equals(value)){
return getValue(">",value);
}else {
return getValue("<",value);
}
}else { }else {
return value.substring(0,value.length() - 1) + String.valueOf((char) (value.charAt(value.length() -1 ) + 1)); if ("z".equals(value) || "Z".equals(value)){
return getValue("<",value);
}else {
return getValue(">",value);
}
} }
} }
case In: case In:
...@@ -417,21 +437,13 @@ public class FundModuleServiceImpl implements IFundModuleService{ ...@@ -417,21 +437,13 @@ public class FundModuleServiceImpl implements IFundModuleService{
case NotIn: case NotIn:
if (value.contains(",")){ if (value.contains(",")){
List<String> list = Arrays.asList(value.split(",")); List<String> list = Arrays.asList(value.split(","));
if (BigDecimal.class.isAssignableFrom(list.get(0).getClass())){ String start = getValue(operator,list.get(0));
Integer num = 1; while (list.contains(start)){
while (list.contains(String.valueOf(num))){ start = getValue("!=",start);
num ++;
}
return num.toString();
}else {
String start = getValue(operator,list.get(0));
while (list.contains(start)){
start = getValue("<",start);
}
return start;
} }
return start;
}else { }else {
return value; return getValue("!=",value);
} }
case LessThan: case LessThan:
if (BigDecimal.class.isAssignableFrom(clazz)){ if (BigDecimal.class.isAssignableFrom(clazz)){
...@@ -440,24 +452,47 @@ public class FundModuleServiceImpl implements IFundModuleService{ ...@@ -440,24 +452,47 @@ public class FundModuleServiceImpl implements IFundModuleService{
}else { }else {
return new BigDecimal(value).subtract(new BigDecimal(1)).toString(); return new BigDecimal(value).subtract(new BigDecimal(1)).toString();
} }
}else { }else if (String.class.isAssignableFrom(clazz)){
throw new QGException(QGExceptionType.CRATE_RULE_VO_ERROR); if (value.length() == 1){
if ("a".equals(value) || "A".equals(value)){
return value + "-1";
}else {
return String.valueOf((char) (value.charAt(0) - 1));
}
}else {
String front = value.substring(0,value.length() - 1);
String last = String.valueOf(value.charAt(value.length() -1));
String newLast = getValue("<",last);
return front + newLast;
}
} }
case GreaterThan: case GreaterThan:
if (BigDecimal.class.isAssignableFrom(clazz)){ if (BigDecimal.class.isAssignableFrom(clazz)){
return new BigDecimal(value).add(new BigDecimal(1)).toString(); return new BigDecimal(value).add(new BigDecimal(1)).toString();
}else { }else if (String.class.isAssignableFrom(clazz)){
throw new QGException(QGExceptionType.CRATE_RULE_VO_ERROR); if (value.length() == 1){
if ("z".equals(value) || "Z".equals(value)){
return value + "+1";
}else {
return String.valueOf((char) (value.charAt(0) + 1));
}
}else {
String front = value.substring(0,value.length() - 1);
String last = String.valueOf(value.charAt(value.length() + 1));
String newLast = getValue(">",last);
return front + newLast;
}
} }
case LessThanOrEqual:
return getValue("<",value);
case GreaterThanOrEqual:
return getValue(">",value);
default: default:
throw new QGException(QGExceptionType.RULE_OPERATOR_NOT_EXIST); throw new QGException(QGExceptionType.RULE_OPERATOR_NOT_EXIST);
} }
} }
public static void main(String[] args) {
System.out.println(getValue(">=","3000"));
System.out.println(getValue("<=","3000"));
}
private static Class<?> getType(String value){ private static Class<?> getType(String value){
if (StringUtils.isNumeric(value)){ if (StringUtils.isNumeric(value)){
return BigDecimal.class; return BigDecimal.class;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment