Explorar o código

预处理调整参数

TonyKang %!s(int64=5) %!d(string=hai) anos
pai
achega
a3253b4980
Modificáronse 1 ficheiros con 30 adicións e 4 borrados
  1. 30 4
      app/reports/util/rpt_calculation_data_util.js

+ 30 - 4
app/reports/util/rpt_calculation_data_util.js

@@ -210,7 +210,7 @@ class Rpt_Data_Extractor {
                         // filterData(srcData, preHandle, rawDataObj.prjData);
                         break;
                     case JV.PROP_HANDLE_TYPE_PRE_DEFINED:
-                        preDefineProcess(ctx, preHandle, rawDataObj);
+                        preDefineProcess(ctx, tpl, preHandle, rawDataObj);
                         break;
                     default:
                         break;
@@ -484,13 +484,39 @@ function filterData(sourceData, handleCfg, prjData) {
     // fsUtil.writeObjToFile(sourceData.data, 'D:/GitHome/ConstructionCost/tmp/filteredRst.jsp');
 }
 
-function preDefineProcess(ctx, preDefineCfg, rawDataObj) {
+function preDefineProcess(ctx, tpl, preDefineCfg, rawDataObj) {
+    // 依据约定,需要提供如右所示格式的数据:[{field: 'b_code', table: 'mem_stage_bills'}, {field: 'id', table: 'mem_stage_bills'}]
+    // 指标对象的mapExpression 格式类似于: "$PROJECT.REPORT.getProperty('mem_stage_im_zl', 'calc_memo')"
+    const fields = [];
+    if (preDefineCfg.fields) {
+        for (const field of preDefineCfg.fields) {
+            const tplF = $JE.F(field.ID, tpl);
+            const mapStr = tplF[JV.PROP_FIELD_EXP_MAP].split(','); // 如上,用逗号分割
+            let start = 0;
+            let end = 0;
+            let cnt = 0;
+            for (let idx = 0; idx < mapStr[1].length; idx++) {
+                if (mapStr[1][idx] === '\'') {
+                    cnt++;
+                    if (cnt === 1) {
+                        start = idx;
+                    } else {
+                        end = idx;
+                        break;
+                    }
+                }
+            }
+            const codeKey = mapStr[1].slice(start + 1, end);
+            // console.log('field codeKey: ' + codeKey);
+            const rstF = { field: codeKey, table: tplF.TableName };
+            fields.push(rstF);
+        }
+    }
     switch (preDefineCfg[JV.PROP_HANDLE_TYPE_PRE_DEFINED_KEY]) {
         case 'changeSort' :
-            // [{field: 'b_code', table: 'mem_stage_bills'}, {field: 'id', table: 'mem_stage_bills'}]
             try {
                 // 在预定义方式中,小麦处理原始数据,不需要
-                data_analyze_util.changeSort.fun(ctx, rawDataObj);
+                data_analyze_util.changeSort.fun(ctx, rawDataObj, fields);
             } catch (ex) {
                 //
             }