ソースを参照

报表模板优化

TonyKang 6 年 前
コミット
8b5f1634f5
1 ファイル変更25 行追加47 行削除
  1. 25 47
      modules/reports/rpt_component/jpc_flow_tab.js

+ 25 - 47
modules/reports/rpt_component/jpc_flow_tab.js

@@ -153,7 +153,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
 
         me.auto_height_fields_idx = [];//那些被标记为判断自动行高的指标集合
         me.auto_height_info = [];
-        me.group_fields = [];
+        me.group_check_fields = [];
         me.group_sum_fields = [];
         me.group_sum_values = null;
         me.group_node_info = null; //记录在哪个seg及到哪条记录后有group sum信息
@@ -172,8 +172,17 @@ JpcFlowTabSrv.prototype.createNew = function(){
         if (rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_SEG_SUM]) JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_SEG_SUM][JV.PROP_SUM_FIELDS], me.seg_sum_tab_fields, me.seg_sum_fields_idx, me.isEx);
         if (rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_PAGE_SUM]) JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_PAGE_SUM][JV.PROP_SUM_FIELDS], me.page_sum_tab_fields, me.page_sum_fields_idx, me.isEx);
         if (rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP]) {
-            JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_FIELDS], me.group_fields, null, me.isEx);
-            JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_SUM_FIELDS], me.group_sum_fields, null, me.isEx);
+            JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_FIELDS], me.group_check_fields, null, me.isEx);
+            if (rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES]) {
+                for (let grpLine of rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES]) {
+                    if (grpLine[JV.PROP_GROUP_SUM_KEYS] && grpLine[JV.PROP_GROUP_SUM_KEYS].length > 0) {
+                        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, grpLine[JV.PROP_GROUP_SUM_KEYS], me.group_sum_fields, null, me.isEx);
+                    }
+                }
+            }
+            for (let grp_sum_f of me.group_sum_fields) {
+                grp_sum_f[JV.PROP_SUM_KEY] = `grp_sum_key_` + grp_sum_f[JV.PROP_FIELD_ID];
+            }
         }
         JpcFieldHelper.findAutoHeightFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_CONTENT][JV.PROP_FLOW_FIELDS], me.auto_height_fields_idx, me.isEx);
         for (let si = 0; si < dataSeq.length; si++) {
@@ -187,7 +196,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
         let data_details = me.isEx?dataObj[JV.DATA_DETAIL_DATA_EX]:dataObj[JV.DATA_DETAIL_DATA],
             data_fields = [];
         for (let i = 0; i < me.seg_sum_fields_idx.length; i++) {
-            if (typeof(me.seg_sum_fields_idx[i])=="object") {
+            if (typeof(me.seg_sum_fields_idx[i]) === "object") {
                 let exField = JE.F(me.seg_sum_fields_idx[i][JV.PROP_ID], $CURRENT_RPT);
                 if (exField) {
                     data_fields.push(exField["data_field"]);
@@ -227,36 +236,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
             }
         }
     };
-    JpcFlowTabResult.getFlowFieldById = function (fieldKey, rptTpl) {
-        let rst = null;
-        if (rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_GROUP] && rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES] && rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES].length > 0) {
-            for (let grpLine of rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES]) {
-                if (grpLine[JV.PROP_GROUP_SUM_KEYS] && grpLine[JV.PROP_GROUP_SUM_KEYS].length > 0) {
-                    for (let sumKey of grpLine[JV.PROP_GROUP_SUM_KEYS]) {
-                        if (sumKey[JV.PROP_SUM_KEY] === fieldKey) {
-                            rst = sumKey;
-                            break;
-                        }
-                    }
-                }
-                if (rst) break;
-            }
-        }
-        if (!(rst) && rptTpl[JV.NODE_FLOW_INFO_EX] && rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_GROUP] && rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES] && rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES].length > 0) {
-            for (let grpLine of rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES]) {
-                if (grpLine[JV.PROP_GROUP_SUM_KEYS] && grpLine[JV.PROP_GROUP_SUM_KEYS].length > 0) {
-                    for (let sumKey of grpLine[JV.PROP_GROUP_SUM_KEYS]) {
-                        if (sumKey[JV.PROP_SUM_KEY] === fieldKey) {
-                            rst = sumKey;
-                            break;
-                        }
-                    }
-                }
-                if (rst) break;
-            }
-        }
-        return rst;
-    };
+
     JpcFlowTabResult.sumUpGrp = function (rptTpl, $CURRENT_RPT, dataObj, segIdx, preGrpIdx, nexGrpIdx) {
         let me = this, segDataIdx = me.segments[segIdx];
         for (let j = 0; j < me.group_sum_fields.length; j++) {
@@ -273,7 +253,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
                     if (sum_field[JV.PROP_PRECISION] && sum_field[JV.PROP_PRECISION].type === `fixed`) {
                         precisionAmt = sum_field[JV.PROP_FIXED_PRECISION_AMT];
                     } else {
-                        let flowF = me.getFlowFieldById(me.group_sum_fields[j][JV.PROP_SUM_KEY], rptTpl);
+                        let flowF = me.group_sum_fields[j]; //调整后,me.group_sum_fields[j]就是group lines下数组SumKey_S的元素值,无需再找
                         if (flowF && !strUtil.isEmptyString(flowF[JV.PROP_FORMAT])) {
                             let idx = flowF[JV.PROP_FORMAT].indexOf('.');
                             if (idx >= 0) {
@@ -292,7 +272,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
     };
     JpcFlowTabResult.setupGroupingData = function (rptTpl, dataObj, $CURRENT_RPT) {
         let me = this;
-        if (me.group_fields.length > 0 && me.group_sum_fields.length > 0) {
+        if (me.group_check_fields.length > 0 && me.group_sum_fields.length > 0) {
             me.group_sum_values = [];
             me.group_node_info = [];
             let CURRENT_FLOW_INFO = (me.isEx)?JV.NODE_FLOW_INFO_EX:JV.NODE_FLOW_INFO;
@@ -312,8 +292,8 @@ JpcFlowTabSrv.prototype.createNew = function(){
                 for (let di = 0; di < segDataIdx.length; di++) {
                     let hasDiff = false;
                     if (di > 1) {
-                        for (let i = 0; i < me.group_fields.length; i++) {
-                            let grp_field = JE.F(me.group_fields[i][JV.PROP_FIELD_ID], $CURRENT_RPT);
+                        for (let i = 0; i < me.group_check_fields.length; i++) {
+                            let grp_field = JE.F(me.group_check_fields[i][JV.PROP_FIELD_ID], $CURRENT_RPT);
                             if (grp_field) {
                                 let data_field = null;
                                 if (grp_field[JV.PROP_AD_HOC_DATA]) {
@@ -984,14 +964,11 @@ JpcFlowTabSrv.prototype.createNew = function(){
                             if (contentValuesIdx[rowIdx][3] === grpIdx) {
                                 let grp_line = rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES][grpIdx];
                                 if (page === 1) {
-                                    let sumFields = rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_SUM_FIELDS];
-                                    for (let sumF of sumFields) {
-                                        if (grp_line[JV.PROP_GROUP_SUM_KEYS] && grp_line[JV.PROP_GROUP_SUM_KEYS].length > 0) {
-                                            for (let grp_sum_field of grp_line[JV.PROP_GROUP_SUM_KEYS]) {
-                                                if (grp_sum_field[JV.PROP_SUM_KEY] === sumF[JV.PROP_SUM_KEY]) {
-                                                    let map_field = JE.F(sumF[JV.PROP_FIELD_ID], $CURRENT_RPT);
-                                                    JpcFieldHelper.resetFormat(grp_sum_field, map_field, customizeCfg);
-                                                }
+                                    if (grp_line[JV.PROP_GROUP_SUM_KEYS] && grp_line[JV.PROP_GROUP_SUM_KEYS].length > 0) {
+                                        for (let grp_sum_field of grp_line[JV.PROP_GROUP_SUM_KEYS]) {
+                                            if (grp_sum_field[JV.PROP_FIELD_ID]) {
+                                                let map_field = JE.F(grp_sum_field[JV.PROP_FIELD_ID], $CURRENT_RPT);
+                                                JpcFieldHelper.resetFormat(grp_sum_field, map_field, customizeCfg);
                                             }
                                         }
                                     }
@@ -1147,7 +1124,8 @@ JpcFlowTabSrv.prototype.createNew = function(){
             let segIdx = JpcCommonHelper.getSegIdxByPageIdx(page, me.page_seg_map);
             let curSegGrpSum = me.group_sum_values[segIdx];
             for (let sumFieldNode of grp_line[JV.PROP_GROUP_SUM_KEYS]) {
-                let value = curSegGrpSum[sumFieldNode[JV.PROP_SUM_KEY]][grpValueIdx[2]];
+                // let value = curSegGrpSum[sumFieldNode[JV.PROP_SUM_KEY]][grpValueIdx[2]];
+                let value = curSegGrpSum[`grp_sum_key_` + sumFieldNode[JV.PROP_FIELD_ID]][grpValueIdx[2]];
                 let sumFldRst = JpcTextHelper.outputDirectValue(sumFieldNode, value,  band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx);
                 rst.push(sumFldRst);
             }