Browse Source

表单相关:G8多组测量值计算

yangyj 2 years ago
parent
commit
1e51e38e19

+ 25 - 18
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/FormulaTurnPoint.java

@@ -37,6 +37,8 @@ public class FormulaTurnPoint implements FormulaStrategy {
     private FormData cur;
     static final List<String> KEYS;
     private List<String> args;
+    /**从节点参数获取G8偏差范围的公式脚本*/
+    static final String F_DEV="WP['g8pcfw']";
 
     static {
         KEYS = new ArrayList<>(Arrays.asList(CD, YG, HS, QS, SC, SJ, GC, "备注"));
@@ -62,8 +64,6 @@ public class FormulaTurnPoint implements FormulaStrategy {
                     return;
                 }
             }
-            /*从节点参数获取G8偏差范围*/
-            String g8pcfw =Expression.parse("WP['g8pcfw']").calculate(tec.getConstantMap());
             /*用来映射元素*/
             LinkedHashMap<String, String> configMap = new LinkedHashMap<>(KEYS.size() * 2);
             for (int i = 0; i < KEYS.size(); i++) {
@@ -71,27 +71,34 @@ public class FormulaTurnPoint implements FormulaStrategy {
             }
             /*原始数据转ListMap*/
             List<Map<String, Object>>  tableData=listMaps( tec, dataSourceMap,configMap);
-            /*保存多组测量数据*/
+            /*数据分组*/
             List<List<Map<String, Object>>> total = group(tableData);
-           /* List<TurnPoint> result = ITurnPointCalculator.create(tableData, configMap,g8pcfw);*/
-            List<List<TurnPoint>> result = total.stream().map(e->ITurnPointCalculator.create(e, configMap,g8pcfw)).collect(Collectors.toList());
-            /*V判断*/
+           /* 分组计算*/
+            List<List<TurnPoint>> result = total.stream().map(e->ITurnPointCalculator.create(e, configMap,Expression.parse(F_DEV).calculate(tec.getConstantMap()))).collect(Collectors.toList());
+            /*附加属性如:顶面和底面高程判断*/
             forG8(result.stream().flatMap(Collection::stream).collect(Collectors.toList()), (Map<String, Object>)tec.getConstantMap().computeIfAbsent("G8", k -> new HashMap<>()),tec);
-            int rowSize= cur.getCoordsList().size();
-            List<Object> data = new ArrayList<>();
-            for(List<TurnPoint> turnPoints:result){
-                data.addAll(turnPoints2ListObj(turnPoints,configMap));
-                int dummyRow=rowSize-turnPoints.size()%rowSize;
-                if(dummyRow!=0) {
-                    data.addAll(Collections.nCopies(configMap.size() * dummyRow, StringPool.EMPTY));
-                }
-            }
-
+           /*插值分页*/
+            List<Object> data = paginate(result,configMap);
+            /*数据回写*/
             write(data,dataSourceMap,configMap.size());
 
         }
     }
 
+
+    public List<Object> paginate( List<List<TurnPoint>> result,LinkedHashMap<String, String> configMap){
+        int rowSize= cur.getCoordsList().size();
+        List<Object> data = new ArrayList<>();
+        for(List<TurnPoint> turnPoints:result){
+            data.addAll(turnPoints2ListObj(turnPoints,configMap));
+            int dummyRow=rowSize-turnPoints.size()%rowSize;
+            if(dummyRow!=0) {
+                data.addAll(Collections.nCopies(configMap.size() * dummyRow, StringPool.EMPTY));
+            }
+        }
+        return data;
+    }
+
     private List<Map<String, Object>> listMaps(TableElementConverter tec,LinkedHashMap<String, FormData> dataSourceMap,LinkedHashMap<String, String> configMap){
         CompositeDataAccess cda = new CompositeDataAccess(dataSourceMap);
         List<Map<String, Object>> tableData = new ArrayList<>();
@@ -176,8 +183,8 @@ public class FormulaTurnPoint implements FormulaStrategy {
     }
 
     public void c8103(List<TurnPoint> data,List<NodeTable> nodeTableList,TableElementConverter tec){
-        nodeTableList.stream().filter(e->e.getInitTableName().equals("m_20220928163111_1575040410223378432")).findFirst().ifPresent(t->{
-            List<FormData> fds= tec.formDataMap.values().stream().filter(k->k.getTableName().equals("m_20220928163111_1575040410223378432")&&k.getCoordsList().size()>1).collect(Collectors.toList());
+        nodeTableList.stream().filter(e-> "m_20220928163111_1575040410223378432".equals(e.getInitTableName())).findFirst().ifPresent(t->{
+            List<FormData> fds= tec.formDataMap.values().stream().filter(k-> "m_20220928163111_1575040410223378432".equals(k.getTableName())&&k.getCoordsList().size()>1).collect(Collectors.toList());
             /*[{"key":"#2","m":"垫石编号"},{"key":"#3","m":"顶面高程设计"},{"key":"#4","m":"顶面高程实测"},{"key":"#5","m":"顶面高程偏差"},{"key":"#6","m":"顶面四角高差实测"}]*/
             FormData dsbh=null,dmgcsj=null, dmgcsc=null,dmgcpc=null,sjgcsc=null;
             for(FormData u:fds){