yangyj 2 yıl önce
ebeveyn
işleme
ed08f216ad

+ 2 - 1
blade-service/blade-archive/src/main/java/org/springblade/ArchiveApplication.java

@@ -1,6 +1,7 @@
 package org.springblade;
 
 import org.springblade.common.constant.LauncherConstant;
+import org.springblade.core.cloud.feign.EnableBladeFeign;
 import org.springblade.core.launch.BladeApplication;
 import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.cloud.client.SpringCloudApplication;
@@ -11,7 +12,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
  * @Date 2023/2/16 17:44
  * @description TODO
  */
-
+@EnableBladeFeign
 @SpringCloudApplication
 @EnableAsync
 @EnableCaching

+ 4 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -542,21 +542,18 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
 
     @Override
     public List<KeyMapper> getKeyMapperList(List<Long> ids,Long projectId) {
+        /*表名,pkeyId,元素名,元素id 映射对象*/
         List<Map<String,Object>> listMap = this.jdbcTemplate.queryForList(" select a.init_table_name as tableName,a.p_key_id as pkId ,c.e_key as field,c.e_name as eName,c.id  as fieldId   " +
                 "from m_wbs_tree_contract a " +
                 "inner join m_table_info b on a.init_table_name=b.tab_en_name " +
                 "INNER JOIN m_wbs_form_element c on b.id=c.f_id " +
                 "where a.p_key_id in("+ids.stream().map(String::valueOf).collect(Collectors.joining(","))+")  ORDER BY a.init_table_name");
-        /*当前节点的参数可以是私有级和公有级*/
-
         if(Func.isNotEmpty(listMap)){
-            /*根据元素id分组*/
+            /*当前节点的某个元素存在多种作用域的公式,作用域范围越小优先级越高*/
             List<KeyMapper> list= listMap.stream().map(m->BeanUtil.toBean(m,KeyMapper.class)).collect(Collectors.toList());
             Set<KeyMapper> set = new HashSet<>(list.size()*2);
-            StringBuilder sb = new StringBuilder("select element_id elementId,formula_id formulaId,scope from m_element_formula_mapping where scope<30 and element_id in("+list.stream().map(KeyMapper::getFieldId).map(Func::toStr).collect(Collectors.joining(","))+") and is_deleted=0 ");
-            if(projectId!=null){
-                sb.append(" and project_id=").append(projectId);
-            }
+            StringBuilder sb = new StringBuilder("select element_id elementId,formula_id formulaId,scope from m_element_formula_mapping where element_id in("+list.stream().map(KeyMapper::getFieldId).map(Func::toStr).collect(Collectors.joining(","))+") and is_deleted=0 ");
+            sb.append(" and ( scope<2 or (scope =10 and node_id) ");
             List<Map<String,Object>> efMap= this.jdbcTemplate.queryForList(sb.toString());
             if(Func.isNotEmpty(efMap)){
                 Map<Long,List<Map<String,Object>>> efGroup= efMap.stream().collect(Collectors.groupingBy(e->Func.toLong(e.get("elementId"))));