提交 48b81819 编写于 作者: hebao@lab.ibiz5.com's avatar hebao@lab.ibiz5.com

规则引擎构建支持业务数据自定义sql条件过滤

上级 e3cfb7db
......@@ -54,6 +54,7 @@ public class BaseRequest
private String resultDataSource;
private String resultTableName;
private String resultTopic;
private String extCond;
private String batch;
private List<String> rules;
private List<String> ruleIds;
......
......@@ -193,7 +193,11 @@ public class RuleEngineExService extends RuleEngineServiceImpl {
execlog.setKeyValueField(msg.getModel());
execlog.setSystemId(msg.getSystemid());
ruExecLogService.create(execlog);
msg.setDatas(liteDataService.getModelObjs(msg.getModelId(),msg.getFillpropertys(),engineMQMsg.getDatas()));
if(StringUtils.hasLength(msg.getExtCond())){
msg.setDatas(liteDataService.getModelObjs2(msg.getModelId(),msg.getFillpropertys(),engineMQMsg.getDatas(),msg.getExtCond()));
}else{
msg.setDatas(liteDataService.getModelObjs(msg.getModelId(),msg.getFillpropertys(),engineMQMsg.getDatas()));
}
baseEntityService.processAll(msg);
}catch (Exception ex){
......@@ -242,6 +246,7 @@ public class RuleEngineExService extends RuleEngineServiceImpl {
String resultDataSource = Setting.getValue(et.getExtParams(), "resultDataSource");
String resultTableName = Setting.getValue(et.getExtParams(), "resultTableName");
String resultTopic = Setting.getValue(et.getExtParams(), "resultTopic");
String extCond = Setting.getValue(et.getExtParams(), "extCond");
if(StringUtils.isEmpty(resultDataSource)){
resultDataSource=Default_ResultDataSource;
}
......@@ -251,6 +256,9 @@ public class RuleEngineExService extends RuleEngineServiceImpl {
if(!StringUtils.isEmpty(resultTopic)){
msg.setResultTopic(resultTopic);
}
if(StringUtils.hasLength(extCond)){
msg.setExtCond(extCond);
}
msg.setResultDataSource(resultDataSource);
msg.setResultTableName(resultTableName);
List<String> rules = new ArrayList<>();
......
......@@ -160,6 +160,24 @@ public class LiteDataService {
return rt;
}
public List<ModelObj> getModelObjs2(String metaModelId, Set<String> fillPropertys, List<EntityObj> kEntityObjs, String extCond) {
DataModel dataModel = liteModelService.getDataModel(metaModelId);
EntityModel entityModel = dataModel.getFactEntityModel();
List<ModelObj> rt = new ArrayList<>();
List<EntityObj> factEntityList = new ArrayList<>();
List<List<EntityObj>> splist=splitList(kEntityObjs, 1000);
if (fillPropertys == null || fillPropertys.size() == 0 || fillPropertys.contains(dataModel.getFactPorperty().getPropertyName()))
splist.forEach(list -> factEntityList.addAll(getEntityService(entityModel.getDsName()).selectBase(entityModel.getDsName(), entityModel,
QueryFilter.createQuery().cust(dataModel.lookup(list)+(StringUtils.hasLength(extCond)?" and "+extCond:"")))));
factEntityList.forEach(entityObj ->
rt.add(new ModelObj().setDataModel(dataModel).setFactEntity(entityObj.setProperty(dataModel.getFactPorperty()))));
fillEntityObj(dataModel, fillPropertys, rt);
dataModel.getNestedDataModels().forEach(subModel ->
this.getModelObjs(subModel, fillPropertys, factEntityList).forEach(subObj -> subObj.findParent(rt)));
rt.forEach(modelObj -> modelObj.getTimestamp());
return rt;
}
public void fillEntityObj(DataModel dataModel, Set<String> fillPropertys, List<ModelObj> modelObjs) {
List<List<ModelObj>> splist=splitList(modelObjs, 1000);
if (dataModel.getObjectProperties().size() > 1) {
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册