Ver Fonte

附件手动填写数据

zhuwei há 3 dias atrás
pai
commit
bb9680aee1

+ 32 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/SubTable.java

@@ -204,20 +204,43 @@ public class SubTable {
         String name = itemName.get(0);
         if(StringUtils.isNotEmpty(name)) {
             int head = 0;
+            //计算 最后一行之前的数据
             for (int i = 1; i < itemName.size(); i++) {
                 String x = itemName.get(i);
                 /*如果非空且与当前的不一样则视为新项目*/
-                if (StringUtils.isNotEmpty(x) && !x.equals(name) || (i == itemName.size() - 1)) {
-                   /* String des =designs.subList(head, i).stream().filter(StringUtils::isNotEmpty).distinct().collect(Collectors.joining("/"));*/
-                    Item item = new Item(name);
+                if (StringUtils.isNotEmpty(x) && !x.equals(name) || (i == itemName.size() - 1)) { //主要计算项 与 数据的关系
+                    if(!original.containsKey(name)){
+                        Item item = new Item(name);
+                        if(designs!=null&&designs.size()>0) {
+                            item.setDesign(designs.subList(head, i).stream().filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList()));
+                        }
+                        item.setData(new ArrayList<>(data.subList(head*15,  i*ROW_SIZE)));
+                        original.put(name,item);
+                        head = i;
+                        name = x;
+                    }else{
+                        Item item = original.get(name);
+                        item.getData().addAll(new ArrayList<>(data.subList(head*15,  i*ROW_SIZE)));
+                        original.put(name,item);
+                        head = i;
+                        name = x;
+                    }
+                }
+            }
+            // 添加最后一行的数据
+            String keyName = itemName.get(itemName.size()-1);
+            if(StringUtils.isNotEmpty(keyName)) {
+                if(!original.containsKey(keyName)){
+                    Item item = new Item(keyName);
                     if(designs!=null&&designs.size()>0) {
-                        item.setDesign(designs.subList(head, i).stream().filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList()));
+                        item.setDesign(designs.subList(itemName.size()-1, itemName.size()).stream().filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList()));
                     }
-                   /* original.put(name + StringPool.AT + des, new ArrayList<>(data.subList(head*15,  i*ROW_SIZE)));*/
-                    item.setData(new ArrayList<>(data.subList(head*15,  i*ROW_SIZE)));
-                    original.put(name,item);
-                    head = i;
-                    name = x;
+                    item.setData(new ArrayList<>(data.subList((itemName.size()-1)*15,  itemName.size()*ROW_SIZE)));
+                    original.put(keyName,item);
+                }else{
+                    Item item = original.get(keyName);
+                    item.getData().addAll(new ArrayList<>(data.subList((itemName.size()-1)*15,  itemName.size()*ROW_SIZE)));
+                    original.put(keyName,item);
                 }
             }
             merge();

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaService.java

@@ -21,6 +21,7 @@ import java.util.Map;
 public interface IFormulaService extends BaseService<Formula> {
 
     void execute(TableElementConverter tec);
+
     void execute2(TableElementConverter tec);