Browse Source

2-17合并

yangyj 7 months ago
parent
commit
89433792ae

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

@@ -60,9 +60,8 @@ public class ExecutorFormat extends FormulaExecutor {
     }
 
     public void mergeCell(){
-        /*清单号*/
+        /*中期支付证书清单号、项目名*/
         FormData qdh= FormulaUtils.elementFindByCode(tec.formDataMap,"m_20240325154016_1772166597482381312:key_1").orElse(null);
-        /*项目名称*/
         FormData xm= FormulaUtils.elementFindByCode(tec.formDataMap,"m_20240325154016_1772166597482381312:key_13").orElse(null);
         if(qdh!=null&&xm!=null){
             List<ElementData> la = qdh.getValues();
@@ -88,6 +87,28 @@ public class ExecutorFormat extends FormulaExecutor {
                 }
             }
         }
+        /*2-17 小计合计*/
+        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();
+                if(la.size()>0&&lb.size()>0) {
+                    Set<String> mergeSet = IntStream.range(0, Math.min(la.size(), lb.size())).boxed().map(i -> {
+                        ElementData ea = la.get(i);
+                        ElementData eb = lb.get(i);
+                        String name = eb.stringValue();
+                        if (("小计").equals(name) || ("合计").equals(name)) {
+                            return ea.getIndex() + "@" + ea.getX() + "@" + ea.getY() + "@" + (eb.getX() + 2) + "@" + eb.getY();
+                        }
+                        return StringPool.EMPTY;
+                    }).filter(s -> !StringPool.EMPTY.equals(s)).collect(Collectors.toSet());
+                    if (mergeSet.size() > 0) {
+                        Set<String> set = tec.getMergeCellMaps().computeIfAbsent("m_20240222101754_1760489057181237248", k -> new HashSet<>());
+                        set.addAll(mergeSet);
+                    }
+                }
+            });
+        });
     }
 
 

+ 6 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -748,6 +748,11 @@ public class ExecutorMeter extends FormulaExecutor {
                             return ma;
                         }
                 ).collect(Collectors.toList());
+               list= new ArrayList<>(list.stream().collect(Collectors.toMap(fc,m->m,(v1,v2)->{
+                   v1.setAmount(addFc.apply(v1.getAmount(),v2.getAmount()));
+                   v1.setQuantity(addFc.apply(v1.getQuantity(),v2.getQuantity()));
+                   return v1;
+               },LinkedHashMap::new)).values());
                LinkedHashMap<String,List<MaterialsArrival>> group= list.stream().collect(Collectors.groupingBy(MaterialsArrival::getName, LinkedHashMap::new,Collectors.toList()));
                int rowSize= capacity-1;
                group.forEach((k,v)->{
@@ -756,7 +761,7 @@ public class ExecutorMeter extends FormulaExecutor {
                    for(int i=0;i<pages.size();i++){
                        List<MaterialsArrival> data = pages.get(i);
                        tmp.addAll(data);
-                       int over= rowSize-v.size();
+                       int over= rowSize-data.size();
                        if(i==pages.size()-1){
                            over--;
                        }