From ddcc906117be77e367953aa249a6dc96c312d752 Mon Sep 17 00:00:00 2001 From: wangshaoping Date: Tue, 23 Sep 2025 17:06:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=A1=86=E6=9E=B6=E5=8F=91?= =?UTF-8?q?=E5=B8=83:=208.2.41=20=20=201.=20=E8=A7=84=E5=88=99=E5=BC=95?= =?UTF-8?q?=E6=93=8E=E5=B0=86=E6=9E=9A=E4=B8=BE=E5=8F=98=E9=87=8F=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E4=B8=BA=E6=9E=9A=E4=B8=BE=E5=80=BC=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=BB=99=E5=AE=A2=E6=88=B7=E7=AB=AF=E3=80=82=20=20=202.=20?= =?UTF-8?q?=E5=86=B3=E7=AD=96=E5=BC=95=E6=93=8E=E5=A2=9E=E5=8A=A0=E8=A1=80?= =?UTF-8?q?=E7=BC=98=E5=85=B3=E7=B3=BB=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 前端核心发布: 8.2.134 1. 修改错误处理机制 2. 决策引擎增加血缘关系查询 --- .../src/components/index.ts | 2 + .../src/i18n/messages.json | 1 + .../src/i18n/messages_tw_CN.json | 1 + .../src/i18n/messages_zh_CN.json | 1 + .../src/menus/menus.json | 8 +- .../src/routes/routes.json | 13 ++ .../src/views/blood/Blood.vue | 112 ++++++++++++++++++ .../blood/controller/BloodWebController.java | 24 ++++ .../server/blood/service/BloodService.java | 11 ++ .../blood/service/impl/BloodServiceImpl.java | 78 ++++++++++++ .../model/repository/ParameterRepository.java | 2 + .../META-INF/platform/plugins/components.json | 3 + 12 files changed, 253 insertions(+), 3 deletions(-) create mode 100644 io.sc.engine.rule.frontend/src/views/blood/Blood.vue create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/blood/controller/BloodWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/blood/service/BloodService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/blood/service/impl/BloodServiceImpl.java 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",