Browse Source

公式相关

yangyj 2 năm trước cách đây
mục cha
commit
7184635eee

+ 4 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormData.java

@@ -54,6 +54,10 @@ public class FormData {
     /**总共多少页,有些公式只生成一条数据,所以必须每一页复制一条
      * */
     private Integer pages;
+    /**
+     * 存储元素对应的表记录表Id
+     */
+    private List<String> tableIds;
 
     public static final String CODE_REG="[^:]+:[^:]+";
 

+ 18 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TableElementConverter.java

@@ -2,6 +2,7 @@ package org.springblade.manager.formula.impl;
 
 
 import com.mixsmart.utils.StringUtils;
+import javassist.compiler.KeywordTable;
 import lombok.Data;
 import org.springblade.common.utils.BaseUtils;
 import org.springblade.core.tool.utils.Func;
@@ -87,17 +88,27 @@ public class TableElementConverter implements ITableElementConverter {
     @Override
     public void after() {
         /*可以优化对每一张表进行元素分类,同一张元素*/
+        /*根据数据库表分组*/
+        LinkedHashMap<String,List<KeyMapper>> tabs = keyMappers.stream().collect(Collectors.groupingBy(KeyMapper::getCode,LinkedHashMap::new,Collectors.toList()));
+        Map<String,List<TableInfo>> tableMap = new HashMap<>(tabs.size()*2);
         for (FormData fd : this.fds) {
+            /*元素所有的数据内容*/
             List<ElementData> values = fd.getValues();
-            /*每个元素数据有N组组成,每组由N页组成*/
+            List<TableInfo> tables;
             LinkedHashMap<Integer,LinkedHashMap<Integer,List<ElementData>>> groups = values.stream().collect(Collectors.groupingBy(ElementData::getGroupId,LinkedHashMap<Integer,LinkedHashMap<Integer,List<ElementData>>>::new,Collectors.groupingBy(ElementData::getIndex,LinkedHashMap<Integer,List<ElementData>>::new,Collectors.toList())));
-            List<Long> tableIds=keyMappers.stream().filter(e -> StringUtils.isEquals(e.getCode(),fd.getCode())).map(KeyMapper::getNodeId).collect(Collectors.toList());
-            List<TableInfo> tables = this.tableInfoList.stream().filter(e->tableIds.contains(Long.parseLong(e.getPkeyId()))).collect(Collectors.toList());
+            /*每个元素数据有N组组成,每组由N页组成*/
+            if(tableMap.containsKey(fd.getTableName())){
+                tables=tableMap.get(fd.getTableName());
+            }else{
+                List<Long> tableIds=keyMappers.stream().filter(e -> StringUtils.isEquals(e.getCode(),fd.getCode())).map(KeyMapper::getNodeId).collect(Collectors.toList());
+                tables = this.tableInfoList.stream().filter(e->tableIds.contains(Long.parseLong(e.getPkeyId()))).collect(Collectors.toList());
+                tableMap.put(fd.getTableName(),tables);
+            }
             groups.forEach((groupId, group) -> {
                    group.forEach((index,page)->{
                        TableInfo info = tables.get(index);
                        /*每一页对应一个info*/
-                       info.getDataMap().put(fd.getKey(),page.stream().map(e->StringUtils.handleNull(e.getValue())).collect(Collectors.joining(StringPool.COMMA)));
+                       info.getDataMap().put(fd.getKey(),recovery(page,""));
                    });
             });
 
@@ -106,7 +117,9 @@ public class TableElementConverter implements ITableElementConverter {
         Map<String,List<FormData>> fdsMap = this.fds.stream().collect(Collectors.groupingBy(FormData::getTableName));
     }
 
-
+    public String recovery(List<ElementData> dataList,String position){
+        return "";
+    }
 
 
 }