diff --git a/io.sc.engine.rule.frontend/src/i18n/messages.json b/io.sc.engine.rule.frontend/src/i18n/messages.json
index df04c0ac..76924f1b 100644
--- a/io.sc.engine.rule.frontend/src/i18n/messages.json
+++ b/io.sc.engine.rule.frontend/src/i18n/messages.json
@@ -10,9 +10,22 @@
"menu.engine.rule.testcase": "Test Case Manager",
"menu.engine.rule.migration": "Data Back and Migration",
- "re.blood.grid.query.code": "Parameter Code",
- "re.blood.grid.query.name": "Parameter Name",
- "re.blood.grid.query.type": "Parameter Type",
+ "re.blood.query.tab.parameter": "Query Resource By Parameter",
+ "re.blood.query.tab.lib": "Query Resource By Lib",
+ "re.blood.query.tab.indicator": "Query Resource By Indicator",
+
+ "re.blood.query.tab.parameter.code": "Parameter Code",
+ "re.blood.query.tab.parameter.name": "Parameter Name",
+ "re.blood.query.tab.parameter.type": "Parameter Type",
+
+ "re.blood.query.tab.lib.code": "Lib Code",
+ "re.blood.query.tab.lib.name": "Lib Name",
+ "re.blood.query.tab.lib.version": "Lib Type",
+ "re.blood.query.tab.lib.type": "Lib Type",
+
+ "re.blood.query.tab.indicator.code": "Indicator Code",
+ "re.blood.query.tab.indicator.name": "Indicator Name",
+ "re.blood.query.tab.indicator.type": "Indicator Type",
"re.resources.grid.title": "Resources",
"re.resources.grid.toolbar.addTop": "Top Folder",
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 88341bc2..3545f761 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
@@ -10,9 +10,22 @@
"menu.engine.rule.testcase": "試算用例",
"menu.engine.rule.migration": "數據備份和遷移",
- "re.blood.grid.query.code": "參數代碼",
- "re.blood.grid.query.name": "參數名稱",
- "re.blood.grid.query.type": "參數類型",
+ "re.blood.query.tab.parameter": "通過參數查詢資源",
+ "re.blood.query.tab.lib": "通过指标库查找资源",
+ "re.blood.query.tab.indicator": "通過特征查詢資源",
+
+ "re.blood.query.tab.parameter.code": "參數代碼",
+ "re.blood.query.tab.parameter.name": "參數名稱",
+ "re.blood.query.tab.parameter.type": "參數類型",
+
+ "re.blood.query.tab.lib.code": "特征庫代碼",
+ "re.blood.query.tab.lib.name": "特征庫名稱",
+ "re.blood.query.tab.lib.version": "特征庫版本",
+ "re.blood.query.tab.lib.type": "特征庫類型",
+
+ "re.blood.query.tab.indicator.code": "特征代碼",
+ "re.blood.query.tab.indicator.name": "特征名稱",
+ "re.blood.query.tab.indicator.type": "特征類型",
"re.resources.grid.title": "資源",
"re.resources.grid.toolbar.addTop": "頂級文件夾",
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 a9d7d3cf..149eb38a 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
@@ -10,9 +10,22 @@
"menu.engine.rule.testcase": "试算用例管理",
"menu.engine.rule.migration": "数据备份和迁移",
- "re.blood.grid.query.code": "参数代码",
- "re.blood.grid.query.name": "参数名称",
- "re.blood.grid.query.type": "参数类型",
+ "re.blood.query.tab.parameter": "通过 [ 参数 ] 查询资源",
+ "re.blood.query.tab.lib": "通过 [ 指标库 ] 查找资源",
+ "re.blood.query.tab.indicator": "通过 [ 特征 ] 查询资源",
+
+ "re.blood.query.tab.parameter.code": "参数代码",
+ "re.blood.query.tab.parameter.name": "参数名称",
+ "re.blood.query.tab.parameter.type": "参数类型",
+
+ "re.blood.query.tab.lib.code": "特征库代码",
+ "re.blood.query.tab.lib.name": "特征库名称",
+ "re.blood.query.tab.lib.version": "特征库版本",
+ "re.blood.query.tab.lib.type": "特征库类型",
+
+ "re.blood.query.tab.indicator.code": "特征代码",
+ "re.blood.query.tab.indicator.name": "特征名称",
+ "re.blood.query.tab.indicator.type": "特征类型",
"re.resources.grid.title": "资源",
"re.resources.grid.toolbar.addTop": "顶级文件夹",
diff --git a/io.sc.engine.rule.frontend/src/views/blood/Blood.vue b/io.sc.engine.rule.frontend/src/views/blood/Blood.vue
index 0bf9f6f2..50c0edfd 100644
--- a/io.sc.engine.rule.frontend/src/views/blood/Blood.vue
+++ b/io.sc.engine.rule.frontend/src/views/blood/Blood.vue
@@ -1,126 +1,32 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/io.sc.engine.rule.frontend/src/views/blood/Indicator.vue b/io.sc.engine.rule.frontend/src/views/blood/Indicator.vue
new file mode 100644
index 00000000..1b953071
--- /dev/null
+++ b/io.sc.engine.rule.frontend/src/views/blood/Indicator.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
diff --git a/io.sc.engine.rule.frontend/src/views/blood/Lib.vue b/io.sc.engine.rule.frontend/src/views/blood/Lib.vue
new file mode 100644
index 00000000..fcae54bc
--- /dev/null
+++ b/io.sc.engine.rule.frontend/src/views/blood/Lib.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
diff --git a/io.sc.engine.rule.frontend/src/views/blood/Parameter.vue b/io.sc.engine.rule.frontend/src/views/blood/Parameter.vue
new file mode 100644
index 00000000..973db388
--- /dev/null
+++ b/io.sc.engine.rule.frontend/src/views/blood/Parameter.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
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
index 3bc667ae..9da629ed 100644
--- 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
@@ -23,6 +23,16 @@ public class BloodWebController {
return bloodService.findResourcesByParameterCodeAndNameAndType(queryParameter);
}
+ @GetMapping("findResourcesByLibCodeAndVersionAndType")
+ public List findResourcesByLibCodeAndVersionAndType(QueryParameter queryParameter) throws Exception {
+ return bloodService.findResourcesByLibCodeAndVersionAndType(queryParameter);
+ }
+
+ @GetMapping("findResourcesByIndicatorCodeAndNameAndType")
+ public List findResourcesByIndicatorCodeAndNameAndType(QueryParameter queryParameter) throws Exception {
+ return bloodService.findResourcesByIndicatorCodeAndNameAndType(queryParameter);
+ }
+
@GetMapping("findResourcesByIndicator")
public List findResourcesByIndicator(@Param("libCode")String libCode,@Param("libVersion")Integer libVersion,@Param("indicatorCode")String indicatorCode) throws Exception {
return bloodService.findResourcesByIndicator(libCode,libVersion,indicatorCode);
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
index d1d876e3..d66e4a50 100644
--- 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
@@ -7,5 +7,9 @@ import java.util.List;
public interface BloodService {
public List findResourcesByParameterCodeAndNameAndType(QueryParameter queryParameter) throws Exception;
+ public List findResourcesByLibCodeAndVersionAndType(QueryParameter queryParameter) throws Exception;
+ public List findResourcesByIndicatorCodeAndNameAndType(QueryParameter queryParameter) throws Exception;
+
+
public List findResourcesByIndicator(String libCode,Integer libVersion,String IndicatorCode) 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
index ab2d0d83..76c4a22e 100644
--- 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
@@ -1,6 +1,11 @@
package io.sc.engine.rule.server.blood.service.impl;
+import io.sc.engine.rule.core.po.lib.Indicator;
import io.sc.engine.rule.server.blood.service.BloodService;
+import io.sc.engine.rule.server.lib.entity.IndicatorEntity;
+import io.sc.engine.rule.server.lib.entity.LibEntity;
+import io.sc.engine.rule.server.lib.service.IndicatorService;
+import io.sc.engine.rule.server.lib.service.LibService;
import io.sc.engine.rule.server.model.entity.ParameterEntity;
import io.sc.engine.rule.server.model.entity.parameter.IndicatorParameterEntity;
import io.sc.engine.rule.server.model.repository.ParameterRepository;
@@ -11,6 +16,7 @@ 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.Equals;
import io.sc.platform.orm.service.support.criteria.impl.InSet;
import io.sc.platform.orm.util.EntityVoUtil;
import io.sc.platform.util.ObjectMapperUtil;
@@ -22,8 +28,9 @@ 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 LibService libService;
+ @Autowired private IndicatorService indicatorService;
@Autowired private ModelService modelService;
@Autowired private ResourceService resourceService;
@@ -34,7 +41,7 @@ public class BloodServiceImpl implements BloodService {
}
// 构造新查询,不排序,因为查询的条件是参数或指标,返回的结果是资源,所以在查询参数时不排序,返回资源时排序
QueryParameter query4Parameter =ObjectMapperUtil.json().readValue(ObjectMapperUtil.json().writeValueAsString(queryParameter),QueryParameter.class);
- query4Parameter.setSortBy(null);
+ query4Parameter.setSortBy(new ArrayList());
// 查询参数
List entities = parameterService.list(query4Parameter);
@@ -55,17 +62,15 @@ public class BloodServiceImpl implements BloodService {
// 获取参数对应的资源及父资源 IDS
Set resourceIds =new LinkedHashSet<>();
- if (!parameterIds.isEmpty()) {
- for (String id : parameterIds) {
- modelService.findRootModelByParameterId(id).getResource();
- ResourceEntity resourceEntity =modelService.findRootModelByParameterId(id).getResource();
- if(resourceEntity!=null) {
- resourceIds.add(resourceEntity.getId());
- ResourceEntity parentResourceEntity =resourceEntity.getParent();
- while(parentResourceEntity!=null){
- resourceIds.add(parentResourceEntity.getId());
- parentResourceEntity =parentResourceEntity.getParent();
- }
+ for (String id : parameterIds) {
+ modelService.findRootModelByParameterId(id).getResource();
+ ResourceEntity resourceEntity =modelService.findRootModelByParameterId(id).getResource();
+ if(resourceEntity!=null) {
+ resourceIds.add(resourceEntity.getId());
+ ResourceEntity parentResourceEntity =resourceEntity.getParent();
+ while(parentResourceEntity!=null){
+ resourceIds.add(parentResourceEntity.getId());
+ parentResourceEntity =parentResourceEntity.getParent();
}
}
}
@@ -86,6 +91,116 @@ public class BloodServiceImpl implements BloodService {
return EntityVoUtil.toVo(resourceEntities);
}
+ @Override
+ public List findResourcesByLibCodeAndVersionAndType(QueryParameter queryParameter) throws Exception {
+ if(!queryParameter.existsCriteria()) {
+ return Collections.emptyList();
+ }
+ // 构造新查询,不排序,因为查询的条件是参数或指标,返回的结果是资源,所以在查询参数时不排序,返回资源时排序
+ QueryParameter query4Lib =ObjectMapperUtil.json().readValue(ObjectMapperUtil.json().writeValueAsString(queryParameter),QueryParameter.class);
+ query4Lib.getSortBy().clear();
+
+ List libEntities =libService.list(query4Lib);
+ if(libEntities==null || libEntities.isEmpty()){
+ return Collections.emptyList();
+ }
+
+ // 获取参数 IDS
+ Set parameterIds = new LinkedHashSet<>();
+ for(LibEntity libEntity : libEntities){
+ List entities =null;
+ Equals equalsCriteria =(Equals)query4Lib.getCriteriaByFieldName("version");
+ if(equalsCriteria!=null && StringUtils.hasText(equalsCriteria.getValue())) {
+ entities =parameterService.getRepository().findIndicatorParameterEntityByLibCodeAndVersion(libEntity.getCode(), libEntity.getVersion());
+ }else{
+ entities =parameterService.getRepository().findIndicatorParameterEntityByLibCode(libEntity.getCode());
+ }
+ if(entities!=null && !entities.isEmpty()){
+ for(IndicatorParameterEntity entity : entities) {
+ parameterIds.add(entity.getId());
+ }
+ }
+ }
+ if(parameterIds==null || parameterIds.isEmpty()){
+ return Collections.emptyList();
+ }
+
+ // 获取参数对应的资源及父资源 IDS
+ Set resourceIds =new LinkedHashSet<>();
+ for (String id : parameterIds) {
+ modelService.findRootModelByParameterId(id).getResource();
+ ResourceEntity resourceEntity =modelService.findRootModelByParameterId(id).getResource();
+ if(resourceEntity!=null) {
+ resourceIds.add(resourceEntity.getId());
+ ResourceEntity parentResourceEntity =resourceEntity.getParent();
+ while(parentResourceEntity!=null){
+ resourceIds.add(parentResourceEntity.getId());
+ parentResourceEntity =parentResourceEntity.getParent();
+ }
+ }
+ }
+ 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 queryParameter2 =new QueryParameter();
+ queryParameter2.setCriterias(criterias);
+ queryParameter2.addSortBy("type");
+ queryParameter2.addSortBy("namec");
+ queryParameter2.addSortBy("version");
+ return EntityVoUtil.toVo(resourceService.list(queryParameter2));
+ }
+
+ @Override
+ public List findResourcesByIndicatorCodeAndNameAndType(QueryParameter queryParameter) throws Exception {
+ if(!queryParameter.existsCriteria()) {
+ return Collections.emptyList();
+ }
+ // 构造新查询,不排序,因为查询的条件是参数或指标,返回的结果是资源,所以在查询参数时不排序,返回资源时排序
+ QueryParameter query4Indicator =ObjectMapperUtil.json().readValue(ObjectMapperUtil.json().writeValueAsString(queryParameter),QueryParameter.class);
+ query4Indicator.setSortBy(new ArrayList());
+
+ // 查询指标
+ List entities = indicatorService.list(query4Indicator);
+ if(entities==null || entities.isEmpty()){
+ return Collections.emptyList();
+ }
+
+ List resourceIds =new ArrayList<>();
+ for (IndicatorEntity entity : entities) {
+ List vos =findResourcesByIndicator(entity.getLib().getCode(),entity.getLib().getVersion(),entity.getCode());
+ if(vos!=null && !vos.isEmpty()){
+ for(ResourceVo vo : vos){
+ resourceIds.add(vo.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 queryParameter2 =new QueryParameter();
+ queryParameter2.setCriterias(criterias);
+ queryParameter2.addSortBy("type");
+ queryParameter2.addSortBy("namec");
+ queryParameter2.addSortBy("version");
+ return EntityVoUtil.toVo(resourceService.list(queryParameter2));
+ }
+
@Override
public List findResourcesByIndicator(String libCode, Integer libVersion, String indicatorCode) throws Exception {
if(!StringUtils.hasText(libCode) || libVersion==null) {
@@ -115,17 +230,15 @@ public class BloodServiceImpl implements BloodService {
// 获取参数对应的资源及父资源 IDS
Set resourceIds =new LinkedHashSet<>();
- if (!parameterIds.isEmpty()) {
- for (String id : parameterIds) {
- modelService.findRootModelByParameterId(id).getResource();
- ResourceEntity resourceEntity =modelService.findRootModelByParameterId(id).getResource();
- if(resourceEntity!=null) {
- resourceIds.add(resourceEntity.getId());
- ResourceEntity parentResourceEntity =resourceEntity.getParent();
- while(parentResourceEntity!=null){
- resourceIds.add(parentResourceEntity.getId());
- parentResourceEntity =parentResourceEntity.getParent();
- }
+ for (String id : parameterIds) {
+ modelService.findRootModelByParameterId(id).getResource();
+ ResourceEntity resourceEntity =modelService.findRootModelByParameterId(id).getResource();
+ if(resourceEntity!=null) {
+ resourceIds.add(resourceEntity.getId());
+ ResourceEntity parentResourceEntity =resourceEntity.getParent();
+ while(parentResourceEntity!=null){
+ resourceIds.add(parentResourceEntity.getId());
+ parentResourceEntity =parentResourceEntity.getParent();
}
}
}