TonyKang 5 tahun lalu
induk
melakukan
b1041f90e2

+ 2 - 2
app/controller/report_controller.js

@@ -419,7 +419,7 @@ async function getAllPagesCommon(ctx, rptTpl, params, option, outputType, baseDi
     // console.log(rawDataObj);
     try {
         // console.log('before assemble');
-        const tplData = rptDataUtil.assembleData(rawDataObj, baseDir);
+        const tplData = rptDataUtil.assembleData(ctx, rawDataObj, baseDir);
         // console.log(tplData);
         const printCom = JpcEx.createNew();
         if (params.pageSize) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = params.pageSize;
@@ -517,7 +517,7 @@ async function getMultiRptsCommon(ctx, params, outputType, baseDir) {
         for (let tplIdx = 0; tplIdx < rptTpls.length; tplIdx++) {
             const rptTpl = (rptTpls[tplIdx]._doc) ? rptTpls[tplIdx]._doc : rptTpls[tplIdx];
             rptDataUtil.initialize(rptTpl);
-            const tplData = rptDataUtil.assembleData(rawDataObj, baseDir);
+            const tplData = rptDataUtil.assembleData(ctx, rawDataObj, baseDir);
             const printCom = JpcEx.createNew();
             rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = params.pageSize;
 

+ 2 - 0
app/reports/rpt_component/jpc_value_define.js

@@ -64,6 +64,8 @@ module.exports = {
     PROP_FILTER_COMPARE_OBJ_KEY: 'compareObjIdKey',
     PROP_FILTER_COMPARE_VAL: 'compareValue',
     PROP_FILTER_CONDITION: '判断条件',
+    PROP_HANDLE_TYPE_PRE_DEFINED: '指定方式',
+    PROP_HANDLE_TYPE_PRE_DEFINED_KEY: '方式Key',
     PROP_HANDLE_TYPE_FILTER: '过滤',
     PROP_HANDLE_TYPE_SUM: '合计',
     PROP_HANDLE_TYPE_SORT: '排序',

+ 24 - 5
app/reports/util/rpt_calculation_data_util.js

@@ -11,6 +11,7 @@ const fs = require('fs');
 const fsUtil = require('../../public/js/fsUtil');
 const stringUtil = require('../../public/js/stringUtil');
 const scMathUtil = require('../../public/js/scMathUtil');
+const data_analyze_util = require('../../lib/rpt_data_analysis');
 const _ = require('lodash');
 
 const treeUtil = require('../public/treeUtil');
@@ -189,7 +190,7 @@ class Rpt_Data_Extractor {
     }
 
     // 装配数据(把收集到的数据,依据报表模板的指示,预处理(如:排序、过滤、合计)及装配到相关指标)
-    assembleData(rawDataObj, baseDir) {
+    assembleData(ctx, rawDataObj, baseDir) {
         const $PROJECT = { REPORT: {} };
         const tpl = this.rptTpl;
         this.COMMON.initialize(tpl, rawDataObj);
@@ -203,13 +204,13 @@ class Rpt_Data_Extractor {
                 const srcData = getModuleDataByKey(rawDataObj.prjData, preHandle[JV.PROP_DATA_KEY]);
                 switch (preHandle[JV.PROP_HANDLE_TYPE]) {
                     case JV.PROP_HANDLE_TYPE_SORT:
-                        sortData(srcData, preHandle, rawDataObj.prjData);
+                        // sortData(srcData, preHandle, rawDataObj.prjData);
                         break;
                     case JV.PROP_HANDLE_TYPE_FILTER:
-                        filterData(srcData, preHandle, rawDataObj.prjData);
+                        // filterData(srcData, preHandle, rawDataObj.prjData);
                         break;
-                    case JV.PROP_HANDLE_TYPE_ADJUST:
-                        adjustData(srcData, preHandle);
+                    case JV.PROP_HANDLE_TYPE_PRE_DEFINED:
+                        preDefineProcess(ctx, preHandle, rawDataObj);
                         break;
                     default:
                         break;
@@ -483,6 +484,24 @@ function filterData(sourceData, handleCfg, prjData) {
     // fsUtil.writeObjToFile(sourceData.data, 'D:/GitHome/ConstructionCost/tmp/filteredRst.jsp');
 }
 
+function preDefineProcess(ctx, preDefineCfg, rawDataObj) {
+    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);
+            } catch (ex) {
+                //
+            }
+            break;
+        case '' :
+            break;
+        default:
+            break;
+    }
+}
+
 function adjustData(sourceData, adjustCfg) {
     const rstArr = [];
     for (const item of getActDataArr(sourceData)) {