diff --git a/io.sc.engine.rule.frontend/src/components/index.ts b/io.sc.engine.rule.frontend/src/components/index.ts
index 90440f34..b21f74c4 100644
--- a/io.sc.engine.rule.frontend/src/components/index.ts
+++ b/io.sc.engine.rule.frontend/src/components/index.ts
@@ -10,6 +10,7 @@ import component_engine_rule_workflow from '@/views/workflow/Workflow.vue';
import component_engine_rule_dictionary from '@/views/dictionary/Dictionary.vue';
import component_engine_rule_lib from '@/views/lib/Lib.vue';
import component_engine_rule_function from '@/views/function/Function.vue';
+import component_engine_rule_blood from '@/views/blood/Blood.vue';
import component_engine_rule_testcase from '@/views/testcase/Testcase.vue';
import component_engine_rule_migration from '@/views/migration/Migration.vue';
@@ -22,6 +23,7 @@ const localComponents = {
'component.engine.rule.dictionary': component_engine_rule_dictionary,
'component.engine.rule.lib': component_engine_rule_lib,
'component.engine.rule.function': component_engine_rule_function,
+ 'component.engine.rule.blood': component_engine_rule_blood,
'component.engine.rule.testcase': component_engine_rule_testcase,
'component.engine.rule.migration': component_engine_rule_migration,
};
diff --git a/io.sc.engine.rule.frontend/src/i18n/messages.json b/io.sc.engine.rule.frontend/src/i18n/messages.json
index 80cab5fa..c3dc8650 100644
--- a/io.sc.engine.rule.frontend/src/i18n/messages.json
+++ b/io.sc.engine.rule.frontend/src/i18n/messages.json
@@ -6,6 +6,7 @@
"menu.engine.rule.dictionary": "Meta Data Manager",
"menu.engine.rule.lib": "Feature Library Manager",
"menu.engine.rule.function": "User Defined Function Library",
+ "menu.engine.rule.blood": "Blood Relationship Query",
"menu.engine.rule.testcase": "Test Case Manager",
"menu.engine.rule.migration": "Data Back and Migration",
diff --git a/io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json b/io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json
index 0f3d17ef..1f43ae53 100644
--- a/io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json
+++ b/io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json
@@ -6,6 +6,7 @@
"menu.engine.rule.dictionary": "元數據管理",
"menu.engine.rule.lib": "特征庫管理",
"menu.engine.rule.function": "自定義函數庫",
+ "menu.engine.rule.blood": "血緣關係查詢",
"menu.engine.rule.testcase": "試算用例",
"menu.engine.rule.migration": "數據備份和遷移",
diff --git a/io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json b/io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json
index 16f04870..afd80d03 100644
--- a/io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json
+++ b/io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json
@@ -6,6 +6,7 @@
"menu.engine.rule.dictionary": "元数据管理",
"menu.engine.rule.lib": "特征库管理",
"menu.engine.rule.function": "自定义函数库",
+ "menu.engine.rule.blood": "血缘关系查询",
"menu.engine.rule.testcase": "试算用例管理",
"menu.engine.rule.migration": "数据备份和迁移",
diff --git a/io.sc.engine.rule.frontend/src/menus/menus.json b/io.sc.engine.rule.frontend/src/menus/menus.json
index 0f9cd3d3..688a4ddd 100644
--- a/io.sc.engine.rule.frontend/src/menus/menus.json
+++ b/io.sc.engine.rule.frontend/src/menus/menus.json
@@ -29,10 +29,12 @@
{"type":"ROUTE", "order":400, "parentId":"menu.engine.rule", "id":"menu.engine.rule.dictionary", "titleI18nKey":"menu.engine.rule.dictionary", "icon":"bi-list-ol", "routeName":"route.engine.rule.dictionary"},
/*决策引擎/特征库管理*/
{"type":"ROUTE", "order":500, "parentId":"menu.engine.rule", "id":"menu.engine.rule.lib", "titleI18nKey":"menu.engine.rule.lib", "icon":"bi-folder2", "routeName":"route.engine.rule.lib"},
+ /*决策引擎/血缘关系查询*/
+ {"type":"ROUTE", "order":600, "parentId":"menu.engine.rule", "id":"menu.engine.rule.blood", "titleI18nKey":"menu.engine.rule.blood", "icon":"bi-diagram-3", "routeName":"route.engine.rule.blood"},
/*决策引擎/函数库*/
- {"type":"ROUTE", "order":600, "parentId":"menu.engine.rule", "id":"menu.engine.rule.function", "titleI18nKey":"menu.engine.rule.function", "icon":"superscript", "routeName":"route.engine.rule.function"},
+ {"type":"ROUTE", "order":700, "parentId":"menu.engine.rule", "id":"menu.engine.rule.function", "titleI18nKey":"menu.engine.rule.function", "icon":"superscript", "routeName":"route.engine.rule.function"},
/*决策引擎/测试用例管理*/
- {"type":"ROUTE", "order":700, "parentId":"menu.engine.rule", "id":"menu.engine.rule.testcase", "titleI18nKey":"menu.engine.rule.testcase", "icon":"bi-suitcase-lg", "routeName":"route.engine.rule.testcase"},
+ {"type":"ROUTE", "order":800, "parentId":"menu.engine.rule", "id":"menu.engine.rule.testcase", "titleI18nKey":"menu.engine.rule.testcase", "icon":"bi-suitcase-lg", "routeName":"route.engine.rule.testcase"},
/*决策引擎/数据迁移*/
- {"type":"ROUTE", "order":800, "parentId":"menu.engine.rule", "id":"menu.engine.rule.migration", "titleI18nKey":"menu.engine.rule.migration", "icon":"bi-share", "routeName":"route.engine.rule.migration"}
+ {"type":"ROUTE", "order":900, "parentId":"menu.engine.rule", "id":"menu.engine.rule.migration", "titleI18nKey":"menu.engine.rule.migration", "icon":"bi-share", "routeName":"route.engine.rule.migration"}
]
diff --git a/io.sc.engine.rule.frontend/src/routes/routes.json b/io.sc.engine.rule.frontend/src/routes/routes.json
index 627f40b5..e266b353 100644
--- a/io.sc.engine.rule.frontend/src/routes/routes.json
+++ b/io.sc.engine.rule.frontend/src/routes/routes.json
@@ -97,6 +97,19 @@
"permissions": ["/re/function/**/*"]
}
},
+ {
+ "name": "route.engine.rule.blood",
+ "path": "re/blood",
+ "parent": "/",
+ "priority": 0,
+ "module": "io.sc.engine.rule.frontend",
+ "component": "component.engine.rule.blood",
+ "componentPath": "@/views/blood/Blood.vue",
+ "redirect": null,
+ "meta": {
+ "permissions": ["/re/blood/**/*"]
+ }
+ },
{
"name": "route.engine.rule.testcase",
"path": "re/testcase",
diff --git a/io.sc.engine.rule.frontend/src/views/blood/Blood.vue b/io.sc.engine.rule.frontend/src/views/blood/Blood.vue
new file mode 100644
index 00000000..91059b9e
--- /dev/null
+++ b/io.sc.engine.rule.frontend/src/views/blood/Blood.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/blood/controller/BloodWebController.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/blood/controller/BloodWebController.java
new file mode 100644
index 00000000..94355545
--- /dev/null
+++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/blood/controller/BloodWebController.java
@@ -0,0 +1,24 @@
+package io.sc.engine.rule.server.blood.controller;
+
+import io.sc.engine.rule.server.blood.service.BloodService;
+import io.sc.engine.rule.server.model.vo.ModelVo;
+import io.sc.engine.rule.server.resource.vo.ResourceVo;
+import io.sc.platform.orm.service.support.QueryParameter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Locale;
+
+@RestController("io.sc.engine.rule.server.blood.controller.BloodWebController")
+@RequestMapping("/api/re/blood")
+public class BloodWebController {
+ @Autowired BloodService bloodService;
+
+ @GetMapping("findByCodeOrNameContains")
+ public List findByCodeOrNameContains(QueryParameter queryParameter) throws Exception {
+ return bloodService.findByCodeOrNameContains(queryParameter);
+ }
+}
diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/blood/service/BloodService.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/blood/service/BloodService.java
new file mode 100644
index 00000000..273b60e4
--- /dev/null
+++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/blood/service/BloodService.java
@@ -0,0 +1,11 @@
+package io.sc.engine.rule.server.blood.service;
+
+import io.sc.engine.rule.server.model.vo.ModelVo;
+import io.sc.engine.rule.server.resource.vo.ResourceVo;
+import io.sc.platform.orm.service.support.QueryParameter;
+
+import java.util.List;
+
+public interface BloodService {
+ public List findByCodeOrNameContains(QueryParameter queryParameter) throws Exception;
+}
diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/blood/service/impl/BloodServiceImpl.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/blood/service/impl/BloodServiceImpl.java
new file mode 100644
index 00000000..12ec6879
--- /dev/null
+++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/blood/service/impl/BloodServiceImpl.java
@@ -0,0 +1,78 @@
+package io.sc.engine.rule.server.blood.service.impl;
+
+import io.sc.engine.rule.server.blood.service.BloodService;
+import io.sc.engine.rule.server.model.entity.ModelEntity;
+import io.sc.engine.rule.server.model.entity.ParameterEntity;
+import io.sc.engine.rule.server.model.repository.ParameterRepository;
+import io.sc.engine.rule.server.model.service.ModelService;
+import io.sc.engine.rule.server.model.service.ParameterService;
+import io.sc.engine.rule.server.model.vo.ModelVo;
+import io.sc.engine.rule.server.resource.entity.ResourceEntity;
+import io.sc.engine.rule.server.resource.service.ResourceService;
+import io.sc.engine.rule.server.resource.vo.ResourceVo;
+import io.sc.platform.orm.service.support.QueryParameter;
+import io.sc.platform.orm.service.support.criteria.Criteria;
+import io.sc.platform.orm.service.support.criteria.impl.InSet;
+import io.sc.platform.orm.util.EntityVoUtil;
+import io.sc.platform.util.ObjectMapperUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service("io.sc.engine.rule.server.blood.service.impl.BloodServiceImpl")
+public class BloodServiceImpl implements BloodService {
+ @Autowired private ParameterRepository parameterRepository;
+ @Autowired private ParameterService parameterService;
+ @Autowired private ModelService modelService;
+ @Autowired private ResourceService resourceService;
+
+ @Override
+ public List findByCodeOrNameContains(QueryParameter queryParameter) throws Exception {
+ if(!queryParameter.existsCriteria()) {
+ return Collections.emptyList();
+ }
+ // 构造新查询,不排序,因为查询的条件是参数或指标,返回的结果是资源,所以在查询参数时不排序,返回资源时排序
+ QueryParameter query4Parameter =ObjectMapperUtil.json().readValue(ObjectMapperUtil.json().writeValueAsString(queryParameter),QueryParameter.class);
+ query4Parameter.setSortBy(null);
+
+ // 查询参数
+ List entities = parameterService.list(query4Parameter);
+ if(entities==null || entities.isEmpty()){
+ return Collections.emptyList();
+ }
+
+ // 获取参数 IDS
+ Set parameterIds = new LinkedHashSet<>();
+ if (entities != null && !entities.isEmpty()) {
+ for (ParameterEntity entity : entities) {
+ parameterIds.add(entity.getId());
+ }
+ }
+ if(parameterIds==null || parameterIds.isEmpty()){
+ return Collections.emptyList();
+ }
+
+ // 获取参数对应的资源 IDS
+ Set resourceIds =new LinkedHashSet<>();
+ if (!parameterIds.isEmpty()) {
+ for (String id : parameterIds) {
+ resourceIds.add(modelService.findRootModelByParameterId(id).getResource().getId());
+ }
+ }
+ if(resourceIds==null || resourceIds.isEmpty()){
+ return Collections.emptyList();
+ }
+
+ // 重新构建查询条件, 并保留排序字段
+ InSet inSet =new InSet();
+ inSet.setFieldName("id");
+ inSet.setValue(resourceIds.toArray(new String[]{}));
+
+ List criterias =new ArrayList<>();
+ criterias.add(inSet);
+
+ queryParameter.setCriterias(criterias);
+ return EntityVoUtil.toVo(resourceService.list(queryParameter));
+ }
+}
diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ParameterRepository.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ParameterRepository.java
index 21673e29..329c46ab 100644
--- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ParameterRepository.java
+++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ParameterRepository.java
@@ -55,4 +55,6 @@ public interface ParameterRepository extends DaoRepository findOutParameterEntityByModelIds(@Param("ids") Set modelIds);
+
+ public List findByCodeOrNameContains(@Param("code")String code, @Param("name")String name);
}
diff --git a/io.sc.engine.rule.server/src/main/resources/META-INF/platform/plugins/components.json b/io.sc.engine.rule.server/src/main/resources/META-INF/platform/plugins/components.json
index 3aaf1751..e28a7978 100644
--- a/io.sc.engine.rule.server/src/main/resources/META-INF/platform/plugins/components.json
+++ b/io.sc.engine.rule.server/src/main/resources/META-INF/platform/plugins/components.json
@@ -9,6 +9,9 @@
{
"includes":[
+ "io.sc.engine.rule.server.blood.controller",
+ "io.sc.engine.rule.server.blood.service.impl",
+
"io.sc.engine.rule.server.common.controller",
"io.sc.engine.rule.server.common.initializer",
"io.sc.engine.rule.server.common.jpa.listener",