Bladeren bron

增加预处理设置

TonyKang 5 jaren geleden
bovenliggende
commit
41bd59eec5

+ 3 - 2
app/controller/report_controller.js

@@ -555,11 +555,12 @@ async function getAllPagesCommon(ctx, rptTpl, params, option, outputType, baseDi
         // console.log('before assemble');
         const tplData = rptDataUtil.assembleData(ctx, rawDataObj, baseDir, printCom);
         // console.log(tplData);
-        printCom.analyzeData(rptTpl, tplData, defProperties, dftOption, outputType);
+        // ctx.helper
+        printCom.analyzeData(ctx.helper, rptTpl, tplData, defProperties, dftOption, outputType);
         const maxPages = printCom.totalPages;
         let pageRst = null;
         if (maxPages > 0) {
-            pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties, params.custCfg);
+            pageRst = printCom.outputAsSimpleJSONPageArray(ctx.helper, rptTpl, tplData, 1, maxPages, defProperties, params.custCfg);
         } else {
             pageRst = printCom.outputAsPreviewPage(rptTpl, defProperties);
         }

+ 6 - 6
app/reports/rpt_component/jpc_ex.js

@@ -166,14 +166,14 @@ JpcExSrv.prototype.createNew = function() {
         me.events = JpcEvent.createNew(rptTpl);
     };
 
-    JpcResult.analyzeData = function(rptTpl, dataObj, defProperties, option, outputType) {
+    JpcResult.analyzeData = function($CTX_HELPER, rptTpl, dataObj, defProperties, option, outputType) {
         const me = this;
         const dftPagingOption = option || JV.PAGING_OPTION_NORMAL;
         // 1. data object
         let dataHelper = JpcData.createNew();
-        me.executeFormulas(JV.RUN_TYPE_BEFORE_ANALYZING, rptTpl, dataObj, me); // 在分析前运行,主要是增加灵活性,比如:重新编排数据的主从关系
+        me.executeFormulas($CTX_HELPER, JV.RUN_TYPE_BEFORE_ANALYZING, rptTpl, dataObj, me); // 在分析前运行,主要是增加灵活性,比如:重新编排数据的主从关系
         if (me.crossTab) {
-            me.executeFormulas(JV.RUN_TYPE_BEFORE_PAGING, rptTpl, dataObj, me);
+            me.executeFormulas($CTX_HELPER, JV.RUN_TYPE_BEFORE_PAGING, rptTpl, dataObj, me);
             dataHelper.analyzeData(rptTpl, dataObj);
             me.crossTab.sorting(rptTpl, dataObj, dataHelper.dataSeq.slice(0), me);
         } else {
@@ -193,7 +193,7 @@ JpcExSrv.prototype.createNew = function() {
             // let dt2 = new Date();
             // alert(dt2 - dt1);
             // 3. formulas
-            me.executeFormulas(JV.RUN_TYPE_BEFORE_PAGING, rptTpl, dataObj, me);
+            me.executeFormulas($CTX_HELPER, JV.RUN_TYPE_BEFORE_PAGING, rptTpl, dataObj, me);
         }
         // 4. paging
         me.paging(rptTpl, dataObj, defProperties, dftPagingOption, outputType);
@@ -222,7 +222,7 @@ JpcExSrv.prototype.createNew = function() {
             me.totalPages = me.billTab.paging(rptTpl, dataObj);
         }
     };
-    JpcResult.executeFormulas = function(runType, $CURRENT_TEMPLATE, $CURRENT_DATA, $CURRENT_RPT) {
+    JpcResult.executeFormulas = function($CTX_HELPER, runType, $CURRENT_TEMPLATE, $CURRENT_DATA, $CURRENT_RPT) {
         const execFmlMe = this;
         for (let execFmlIdx = 0; execFmlIdx < execFmlMe.formulas.length; execFmlIdx++) {
             // remark: 搞这么复杂的变量名是为了防止与表达式起冲突(如循环变量i,j,k,容易造成变量冲突且不容易看出问题)
@@ -301,7 +301,7 @@ JpcExSrv.prototype.createNew = function() {
         }
         return rst;
     };
-    JpcResult.outputAsSimpleJSONPageArray = function(rptTpl, dataObj, startPage, endPage, defProperties, customizeCfg) {
+    JpcResult.outputAsSimpleJSONPageArray = function($CTX_HELPER, rptTpl, dataObj, startPage, endPage, defProperties, customizeCfg) {
         const me = this;
         const rst = {};
         if ((startPage > 0) && (startPage <= endPage) && (endPage <= me.totalPages)) {

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

@@ -75,6 +75,7 @@ module.exports = {
     PROP_HANDLE_TYPE_COMPONENT_MOVE: '组成物数据转移',
     PROP_HANDLE_TYPE_COMPONENT_REPLACEMENT: '组成物替换',
     PROP_HANDLE_TYPE_PRECISION: '合计精度',
+    PROP_HANDLE_SELF_SETUP: '自定义设置',
 
     PROP_ADJUST_COLLECTION: '数据调整集',
     PROP_ADJUST_ACTION: 'action',

+ 9 - 1
app/reports/util/rpt_calculation_data_util.js

@@ -548,7 +548,15 @@ function preDefineProcess(ctx, tpl, preDefineCfg, rawDataObj, $CURRENT_RPT) {
         if (data_analyze_util[analysisKey]) {
             try {
                 // 在预定义方式中,小麦处理原始数据,不需要
-                data_analyze_util[analysisKey].fun(ctx, rawDataObj, fields);
+                let preSetup = preDefineCfg[JV.PROP_HANDLE_SELF_SETUP];
+                try {
+                    if (preSetup) {
+                        preSetup = JSON.parse(preSetup);
+                    }
+                } catch (ex) {
+                    console.log(ex);
+                }
+                data_analyze_util[analysisKey].fun(ctx, rawDataObj, fields, preSetup);
             } catch (err) {
                 throw '报表预处理数据出错';
             }