Bladeren bron

中间计量表bug

yangyj 1 jaar geleden
bovenliggende
commit
60aeaed343

+ 22 - 0
blade-common/src/main/java/org/springblade/common/utils/BaseUtils.java

@@ -469,6 +469,28 @@ public static List<Object> obj2List(Object obj) {
         }
         return max;
     }
+    private static final String COLUMN_REG = "^[A-Z]{0,2}$";
+    /*列名转int*/
+    public static int parseColumn(String column) {
+        int value = -1;
+        if (StringUtils.isNotEmpty(column)) {
+            column = column.trim();
+            if (column.matches(COLUMN_REG)) {
+                char[] columnCh = column.toCharArray();
+                for (char ch : columnCh) {
+                    //字母, 最长只考虑双字母的
+                    if (ch >= 65 && ch <= 90) {
+                        if (value > 0) {
+                            value = (26 * value) + (ch - 64);
+                        } else {
+                            value = ch - 64;
+                        }
+                    }
+                }
+            }
+        }
+        return value - 1;
+    }
 
 
 }

+ 1 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/InterimMeter.java

@@ -57,7 +57,7 @@ public class InterimMeter {
     @JSONField(name = "key_13",label="申报数量")
     private List<String> completedList;
     /**第n页 共m页*/
-    @JSONField(name = "key_12",label="页码",ordinal = 101)
+    @JSONField(name = "key_15",label="页码",ordinal = 101)
     private String pageCount;
 
 }

+ 0 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorInit.java

@@ -58,7 +58,6 @@ public class ExecutorInit extends FormulaExecutor {
         }
         tec.formDataMap.putAll(FormulaUtils.toFormDataMap(tec.periodInfo));
 
-
     }
 
     /*预处理计量单元树*/

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -23,6 +23,7 @@ import java.util.function.BinaryOperator;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
+import java.util.stream.Stream;
 
 /**
  * @author yangyj
@@ -837,6 +838,12 @@ public class ExecutorMeter extends FormulaExecutor {
                     dataList.add(iim);
                 }
             }
+            /*支付号,项目名称,单位,申报数量*/
+            Function<Function<InterimMeter,List<String>>,Function<List<InterimMeter>, List<Object>>> interimMeters2oListFc=i2s->dl->dl.stream().flatMap(e->i2s.apply(e).stream()).collect(Collectors.toList());
+            fieldDataFcMap.put(InterimMeter.TBN+":key_10",interimMeters2oListFc.apply(InterimMeter::getFormNumberList));
+            fieldDataFcMap.put(InterimMeter.TBN+":key_11",interimMeters2oListFc.apply(InterimMeter::getItemNameList));
+            fieldDataFcMap.put(InterimMeter.TBN+":key_12",interimMeters2oListFc.apply(InterimMeter::getUnitList));
+            fieldDataFcMap.put(InterimMeter.TBN+":key_13",interimMeters2oListFc.apply(InterimMeter::getCompletedList));
            putOut(InterimMeter.class);
         }
     }

+ 11 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -2631,6 +2631,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         Map<String,String> parent=  getWtpParent(meterType.getName(),contractInfo.getPId());
         List<NodeTable> tableList=getTableListMeter(parent);
         Map<String,Map<String,String>> coordinateMap=tableList.parallelStream().collect(Collectors.toMap(NodeTable::getInitTableName,m->FormulaUtils.getElementExcelCoords(m.getHtmlUrl()),(v1,v2)->v2));
+        /*额外单元格坐标配置*/
+        settingCoordsExtend(coordinateMap);
         List<FormData> processFds = this.createFormDataByTableName(tableList.stream().map(NodeTable::getInitTableName).collect(Collectors.joining("','")));
         listForMeter(processFds,contractInfo.getPId(),parent.get("id"));
 
@@ -2664,6 +2666,15 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         return tec.getReportResults();
     }
 
+    public void settingCoordsExtend( Map<String,Map<String,String>> coordinateMap){
+        if(coordinateMap!=null){
+            /*中间计量表*/
+            Map<String,String> interimMeterMap = coordinateMap.computeIfAbsent("m_20231212171403_1734501859877453824",k->new HashMap<>());
+            /*页码*/
+            interimMeterMap.put("key_23","3_"+(BaseUtils.parseColumn("I")+1));
+        }
+    }
+
     public List<NodeTable> getTableListMeter(Map<String,String> parent){
       return this.getSqlList("select p_key_id pkeyId, node_name nodeName ,init_table_name initTableName,html_url htmlUrl ,excel_id excelId from  m_wbs_tree_private where ancestors like ? and LENGTH(html_url)>0 and is_deleted=0 and project_id=? and wbs_id=?",NodeTable.class,parent.get("path")+"%",parent.get("projectId"),parent.get("wbsId"));
     }