Explorar o código

公式相关:G8bug

yangyj hai 1 ano
pai
achega
671d68af0f

+ 2 - 2
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -150,7 +150,7 @@ public class FormulaUtils {
     }*/
 
 
-    /*默认去空*/
+    /**默认去空*/
     public  static void write(FormData fd, Object data){
         write(fd,data,false);
     }
@@ -282,7 +282,7 @@ public class FormulaUtils {
         return keywords.stream().anyMatch(s::contains);
     }
 
-    /*回归·测试变量*/
+    /**回归·测试变量*/
     public static List<String> itemNames =Arrays.asList(
             ""
             ,"压 实 度 (%)下路床 特重、极重交通荷载等级 设计值"

+ 2 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -3818,7 +3818,7 @@ public class ExcelTabController extends BladeController {
      * @return
      * @throws Exception
      */
-    @PostMapping("/save_buss_data2")
+    @PostMapping("/save_buss_data3")
     @ApiOperationSupport(order = 13)
     @ApiOperation(value = "填报页面数据保存", notes = "填报页面数据保存")
     public R saveBussData(@Valid @RequestBody JSONObject dataInfo) throws Exception {
@@ -3829,6 +3829,7 @@ public class ExcelTabController extends BladeController {
         } else { //单个保存
             dataArray.add(dataInfo);
         }
+        this.excelTabService.formulaFillData2(dataArray,ExecuteType.INSPECTION);
         return excelTabService.saveBussData(dataArray);
     }
 

+ 10 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/FormulaTurnPoint.java

@@ -90,7 +90,7 @@ public class FormulaTurnPoint implements FormulaStrategy {
            /*插值分页*/
             List<Object> data = paginate(cur,result,configMap);
             /*数据回写*/
-            write(data,dataSourceMap,configMap.size());
+            write(data,dataSourceMap,configMap.size(),cur,tec);
 
         }
     }
@@ -147,6 +147,9 @@ public class FormulaTurnPoint implements FormulaStrategy {
                 tmp=new ArrayList<>();
             }
         }
+        if(!tmp.isEmpty()){
+            total.add(tmp);
+        }
         return total;
     }
 
@@ -161,10 +164,15 @@ public class FormulaTurnPoint implements FormulaStrategy {
         }).collect(Collectors.toList());
     }
     /**把结果写入各个元素*/
-    private void write(List<Object> data,LinkedHashMap<String, FormData> dataSourceMap,int len){
+    private void write(List<Object> data,LinkedHashMap<String, FormData> dataSourceMap,int len,FormData cur,TableElementConverter tec){
         if (Func.isNotEmpty(data)) {
             AtomicInteger ai = new AtomicInteger();
             Map<Integer, List<Object>> dataMap = data.stream().collect(Collectors.groupingBy(e -> ai.getAndAdd(1) % len));
+            int pageSize = data.size()/(len*cur.getCoordsList().size());
+            List<NodeTable> list = tec.getTableByName(cur.getTableName());
+            if(list.size()>pageSize){
+                List<NodeTable> removeList = list.stream().skip(pageSize).collect(Collectors.toList());
+            }
             ai.set(0);
             dataSourceMap.forEach((k, v) -> {
                 List<Object> dl = dataMap.get(ai.getAndIncrement());

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

@@ -96,6 +96,17 @@ public class TableElementConverter implements ITableElementConverter {
     /**汇总公式*/
     public List<FormData> summary = new ArrayList<>();
 
+    /**根据表名获取对应表页对象*/
+    public List<NodeTable> getTableByName(String initTableName){
+       List<NodeTable> list = new ArrayList<>();
+       for(NodeTable nt: this.tableAll){
+           if(nt.getInitTableName().equals(initTableName)){
+               list.add(nt);
+           }
+       }
+       return list;
+    }
+
     /*优化测试新增属性start*/
     /*优化测试新增属性end*/
 

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -404,6 +404,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                List<TableInfo> tableInfoList = this.getTableInfoList(dataArray);
                List<NodeTable> tableAll = createNodeTables(nodeId, tableInfoList.get(0).getContractId(), tableInfoList.get(0).getProjectId(), type);
                String tableNames=tableAll.stream().map(NodeTable::getInitTableName).distinct().collect(Collectors.joining("','","'","'"));
+               /*当前工序包含的所有元素信息,还未包含数据*/
                List<FormData>  processFds =this.formulaService.getSqlList(
                                            "select d.id,c.tab_ch_name tableChName,d.e_type eType,d.e_name eName,d.e_length eLength,d.e_allow_deviation eAllowDeviation,CONCAT(c.tab_en_name,':',d.e_key) code from m_table_info c join m_wbs_form_element d  on  c.id=d.f_id where d.is_deleted=0 and c.tab_en_name in("+tableNames+")"
                                            ,FormData.class
@@ -412,6 +413,10 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                if (Func.isNotEmpty(keyMappers) && Func.isNotEmpty(tableAll)) {
                    Map<String, Map<String, String>> coordinateMap = createCoordinateMap(keyMappers, type);
                    List<Formula> formulas = this.formulaService.getFormulaList(keyMappers);
+                   /*要找到最小加载数量
+                   * 1.根据依赖溯源然后确定当前页面修改数据的影响范围
+                   * 2.区分能部分执行和必须整体执行公式的元素*/
+
                    /*判断哪些元素是可部分执行和整体执行*/
                    CurrentNode currentNode = null;
                    Long pKeyId = null;