| 
					
				 | 
			
			
				@@ -85,6 +85,7 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.seg_sum_fields_idx = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.seg_sum_tab_fields = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.page_sum_fields_idx = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.page_sum_tab_fields = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.group_fields = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.group_sum_fields = []; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -95,6 +96,7 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.pageStatusLst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.groupSumValLst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.segSumValLst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.pageSumValLst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.multiCols = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.pagesAmt = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -102,7 +104,7 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let FLOW_NODE_STR = me.isEx?JV.NODE_FLOW_INFO_EX:JV.NODE_FLOW_INFO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_PAGE_SUM][JV.PROP_SUM_FIELDS], null, me.page_sum_fields_idx, me.isEx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let si = 0; si < dataSeq.length; si++) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -355,15 +357,18 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (currentRecAmt + maxRowRec >= ttlSegRecAmt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             pageStatus[JV.STATUS_SEGMENT_END] = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            pageStatus[JV.STATUS_REPORT_END] = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             private_resetBandArea(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             let hasAdHocRow = !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, ttlSegRecAmt, currentRecAmt, maxRowRec, me.isEx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if (hasAdHocRow) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 //add page info(pre segment end) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 pageStatus[JV.STATUS_SEGMENT_END] = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                pageStatus[JV.STATUS_REPORT_END] = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 private_addPage(segIdx, grpSeqInfo, false, false, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             //add page info 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             pageStatus[JV.STATUS_SEGMENT_END] = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            pageStatus[JV.STATUS_REPORT_END] = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             private_addPage(segIdx, grpSeqInfo, false, false, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             private_addPage(segIdx, grpSeqInfo, false, false, -1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -503,6 +508,7 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 2.3 Sum Seg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             tabRstLst.push(me.outputSegSum(rptTpl, dataObj, page, segIdx, bands, unitFactor, controls)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 2.4 Sum Page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tabRstLst.push(me.outputPageSum(rptTpl, dataObj, page, segIdx, bands, unitFactor, controls)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 2.5 Group 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 2.6 Discrete 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             tabRstLst.push(JpcDiscreteHelper.outputDiscreteInfo(rptTpl[FLOW_NODE_STR][JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, me.pageStatusLst[page - 1], segIdx, 1, 0, $CURRENT_RPT)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -536,6 +542,7 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 2.3 Sum Seg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 tabRstLst.push(me.outputSegSum(rptTpl, dataObj, actualPage, segIdx, bands, unitFactor, controls)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 2.4 Sum Page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                tabRstLst.push(me.outputPageSum(rptTpl, dataObj, actualPage, segIdx, bands, unitFactor, controls)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 2.5 Group 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 2.6 Discrete 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (pi === 0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -563,6 +570,15 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let data_details = me.isEx?dataObj[JV.DATA_DETAIL_DATA_EX]:dataObj[JV.DATA_DETAIL_DATA]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let data_details_ex = $CURRENT_RPT.isFollowMode?dataObj[JV.DATA_DETAIL_DATA_EX]:null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let contentValuesIdx = me.dispValueIdxLst[page - 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let page_sum_data_fields = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (let i = 0; i < me.page_sum_fields_idx.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let data_field = data_details[me.page_sum_fields_idx[i]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    page_sum_data_fields.push(data_field); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let rowGrandTotal = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (let di = 0; di < page_sum_data_fields.length; di++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rowGrandTotal.push(0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //normal content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (let rowIdx = 0; rowIdx < contentValuesIdx.length; rowIdx++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (let i = 0; i < tab_fields.length; i++) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -603,7 +619,12 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //page sum content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (let di = 0; di < page_sum_data_fields.length; di++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * JpcFieldHelper.getValue(page_sum_data_fields[di], contentValuesIdx[rowIdx][2]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                me.pageSumValLst.push(rowGrandTotal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //grouping content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (let rowIdx = 0; rowIdx < contentValuesIdx.length; rowIdx++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (contentValuesIdx[rowIdx][1] === JV.DISPLAY_VAL_TYPE_GROUP) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -672,6 +693,35 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    JpcFlowTabResult.outputPageSum = function (rptTpl, dataObj, page, segIdx, bands, unitFactor, controls) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = this, rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let FLOW_NODE_STR = me.isEx?JV.NODE_FLOW_INFO_EX:JV.NODE_FLOW_INFO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let tab = rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_PAGE_SUM]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let band = bands[tab[JV.PROP_BAND_NAME]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (band) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let pageStatus = me.pageStatusLst[page - 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let tab_fields = me.page_sum_tab_fields; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (let i = 0; i < tab_fields.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let cellItem = JpcCommonOutputHelper.createCommonOutput(tab_fields[i], me.pageSumValLst[page - 1], controls); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_fields[i][JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0, true, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rst.push(cellItem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (tab[JV.PROP_TEXT]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (tab[JV.PROP_TEXTS]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (let j = 0; j < tab[JV.PROP_TEXTS].length; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (tab[JV.NODE_DISCRETE_INFO]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rst = rst.concat(JpcDiscreteHelper.outputDiscreteInfo(tab[JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, me.pageStatusLst[page - 1], segIdx, me.multiCols, 0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     JpcFlowTabResult.outputTabField = function (band, tab_field, data_field, valueIdx, serialIdx, rows, rowIdx, cols, colIdx, unitFactor, isRow, controls, multiColIdx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rst = JpcCommonOutputHelper.createCommonOutput(tab_field, JpcFieldHelper.getValue(data_field, valueIdx), controls); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -695,10 +745,10 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (grp_line[JV.PROP_DISCRETE_FIELDS]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //暂时不支持 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (grp_line[JV.PROP_PARAMS]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //暂时不支持 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // console.log(rst); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 |