Browse Source

2-17合并e

yangyj 7 months ago
parent
commit
d7ce329a59

+ 28 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorFormat.java

@@ -12,6 +12,7 @@ import org.springblade.manager.entity.Formula;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.function.BiFunction;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
@@ -59,6 +60,30 @@ public class ExecutorFormat extends FormulaExecutor {
         tec.getTableAll().removeIf(e->StringUtils.isEquals(0,e.getStatus()));
     }
 
+
+    private void  biColumnMerge(String col1, String col2, String tableName, BiFunction<ElementData,ElementData,String> coordsFc){
+        FormulaUtils.beRelyFrom(tec.formDataMap,col1).findFirst().ifPresent(c1->{
+            FormulaUtils.beRelyFrom(tec.formDataMap,col2).findFirst().ifPresent(c2->{
+                List<ElementData> la = c1.getValues();
+                List<ElementData> lb = c2.getValues();
+                if(la.size()>0&&lb.size()>0) {
+                    Set<String> mergeSet = IntStream.range(0, Math.min(la.size(), lb.size())).boxed().map(i -> coordsFc.apply(la.get(i),lb.get(i))).filter(s -> !StringPool.EMPTY.equals(s)).collect(Collectors.toSet());
+                    if (mergeSet.size() > 0) {
+                        Set<String> set = tec.getMergeCellMaps().computeIfAbsent(tableName, k -> new HashSet<>());
+                        set.addAll(mergeSet);
+                    }
+                }
+            });
+        });
+    }
+    /*2-17 小计合计*/
+   private   BiFunction<ElementData,ElementData,String> coordsFc217=(ea,eb)->{
+       String name = eb.stringValue();
+       if (("小计").equals(name) || ("合计").equals(name)) {
+           return ea.getIndex() + "@" + ea.getX() + "@" + ea.getY() + "@" + (eb.getX() + 2) + "@" + eb.getY();
+       }
+       return StringPool.EMPTY;
+    };
     public void mergeCell(){
         /*中期支付证书清单号、项目名*/
         FormData qdh= FormulaUtils.elementFindByCode(tec.formDataMap,"m_20240325154016_1772166597482381312:key_1").orElse(null);
@@ -88,7 +113,8 @@ public class ExecutorFormat extends FormulaExecutor {
             }
         }
         /*2-17 小计合计*/
-        FormulaUtils.beRelyFrom(tec.formDataMap,"MtAiv:key_1").findFirst().ifPresent(qh->{
+        biColumnMerge("MtAiv:key_1","MtAiv:key_2","m_20240222101754_1760489057181237248",coordsFc217);
+       /* FormulaUtils.beRelyFrom(tec.formDataMap,"MtAiv:key_1").findFirst().ifPresent(qh->{
             FormulaUtils.beRelyFrom(tec.formDataMap,"MtAiv:key_2").findFirst().ifPresent(clmc->{
                 List<ElementData> la = qh.getValues();
                 List<ElementData> lb = clmc.getValues();
@@ -108,7 +134,7 @@ public class ExecutorFormat extends FormulaExecutor {
                     }
                 }
             });
-        });
+        });*/
     }