|
|
@@ -20,11 +20,12 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
//grpPageInfo :{"segGrpRecStartIdx": 0, "insertedGrpRecAmt": 0, "preAddPageGrpInfo": null}; //纯属解释参数grpPageInfo结构
|
|
|
//valueIdx: [isFollowMode, type(normal, auto-height, group), valueIndex, sub-value-index(自动行高特有), total-value-amount(自动行高特有)] //解释 dispValueIdxLst 数据构造
|
|
|
function private_addPageValue(ValuedIdxLst, sortedSequence, grpSequenceInfo, startRecIdx, maxRecPerPage,page_seg_map, segIdx, pageIdx, grpPageInfo, isFollow, segAutoHeightInfo, prePageLeftAutoHeightRecAmt) {
|
|
|
- let vIdx = [], preAmt = 0, insertedGrpAmt = 0, grp_lines = 0, followMode = (isFollow)?JV.TYPE_FOLLOW_MODE:-1, nextPageAutoHeightRecAmt = 0;
|
|
|
+ let vIdx = [], vFirstIdx = [], preAmt = 0, insertedGrpAmt = 0, grp_lines = 0, followMode = (isFollow)?JV.TYPE_FOLLOW_MODE:-1, nextPageAutoHeightRecAmt = 0;
|
|
|
if (grpSequenceInfo && grpPageInfo) {
|
|
|
if (grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO].length > 0) {
|
|
|
for (let grpLineIdx of grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO]) {
|
|
|
- vIdx.push([followMode, JV.DISPLAY_VAL_TYPE_GROUP, grpPageInfo[JV.PROP_SEG_GRP_IDX], grpLineIdx]);
|
|
|
+ //vIdx.push([followMode, JV.DISPLAY_VAL_TYPE_GROUP, grpPageInfo[JV.PROP_SEG_GRP_IDX], grpLineIdx]);
|
|
|
+ vFirstIdx.push([followMode, JV.DISPLAY_VAL_TYPE_GROUP, grpPageInfo[JV.PROP_SEG_GRP_IDX], grpLineIdx]);
|
|
|
}
|
|
|
grpPageInfo[JV.PROP_SEG_GRP_IDX]++;
|
|
|
}
|
|
|
@@ -127,6 +128,10 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
if (private_normal_add_rec(vi)) break;
|
|
|
}
|
|
|
}
|
|
|
+ if (vFirstIdx.length > 0) {
|
|
|
+ vIdx = vIdx.concat(vFirstIdx);
|
|
|
+ //备注: 在一开始就加grp的情况下,这些数据应该放在后面才对
|
|
|
+ }
|
|
|
page_seg_map.push([pageIdx, segIdx]);
|
|
|
ValuedIdxLst.push(vIdx);
|
|
|
return nextPageAutoHeightRecAmt;
|
|
|
@@ -148,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信息
|
|
|
@@ -167,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++) {
|
|
|
@@ -182,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"]);
|
|
|
@@ -215,43 +229,17 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
for (let j = 0; j < me.segments[i].length; j++) {
|
|
|
//3. start to sum
|
|
|
// rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * JpcFieldHelper.getValue(data_fields[di], me.segments[i][j]);
|
|
|
- rowGrandTotal[di] = rowGrandTotal[di] + parseFloat(parseFloat(JpcFieldHelper.getValue(data_fields[di], me.segments[i][j])).toFixed(precisionAmt));
|
|
|
- }
|
|
|
- }
|
|
|
- me.segSumValLst.push(rowGrandTotal);
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- 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;
|
|
|
+ let sv = JpcFieldHelper.getValue(data_fields[di], me.segments[i][j]);
|
|
|
+ if (sv) {
|
|
|
+ rowGrandTotal[di] = rowGrandTotal[di] + parseFloat(parseFloat(sv).toFixed(precisionAmt));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (rst) break;
|
|
|
+ me.segSumValLst.push(rowGrandTotal);
|
|
|
}
|
|
|
}
|
|
|
- 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++) {
|
|
|
@@ -268,7 +256,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) {
|
|
|
@@ -287,7 +275,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;
|
|
|
@@ -307,8 +295,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]) {
|
|
|
@@ -341,7 +329,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
- JpcFlowTabResult.setupAutoHeightData = function(bands, segIdx, rptTpl, dataObj, $CURRENT_RPT, defProperties) {
|
|
|
+ JpcFlowTabResult.setupAutoHeightData = function(bands, segIdx, rptTpl, dataObj, $CURRENT_RPT, defProperties, outputType) {
|
|
|
let me = this;
|
|
|
if (me.auto_height_fields_idx.length > 0) {
|
|
|
let CURRENT_FLOW_INFO = (me.isEx)?JV.NODE_FLOW_INFO_EX:JV.NODE_FLOW_INFO;
|
|
|
@@ -372,11 +360,24 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
let private_get_max_lines_of_the_record = function(theRecIdx) {
|
|
|
let rst = 1;
|
|
|
for (let loop = 0; loop < me.auto_height_fields_idx.length; loop++) {
|
|
|
+ /*
|
|
|
let data_field = null;
|
|
|
let tab_field = me.auto_height_fields_idx[loop][1];
|
|
|
if (me.auto_height_fields_idx[loop][0] !== JV.BLANK_FIELD_INDEX) {
|
|
|
data_field = data_details[me.auto_height_fields_idx[loop][0]];
|
|
|
}
|
|
|
+ /*/
|
|
|
+ let tab_field = me.auto_height_fields_idx[loop][1];
|
|
|
+ let data_field = null,
|
|
|
+ map_data_field = JE.F(tab_field[JV.PROP_FIELD_ID], $CURRENT_RPT);
|
|
|
+ if (me.auto_height_fields_idx[loop][0] !== JV.BLANK_FIELD_INDEX && (typeof me.auto_height_fields_idx[loop][0] !== 'object')) {
|
|
|
+ data_field = data_details[me.auto_height_fields_idx[loop][0]];
|
|
|
+ } else {
|
|
|
+ if (map_data_field) {
|
|
|
+ data_field = map_data_field[JV.PROP_AD_HOC_DATA];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //*/
|
|
|
if (data_field) {
|
|
|
let value = JpcFieldHelper.getValue(data_field, theRecIdx);
|
|
|
let area = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, 1, 1, 0, 1, 0, 1, 0, false, false);
|
|
|
@@ -410,6 +411,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
}
|
|
|
}
|
|
|
if (accAmt > rst) rst = accAmt;
|
|
|
+ // if (hasSplitStr && outputType !== JV.OUTPUT_TYPE_EXCEL) {
|
|
|
if (hasSplitStr) {
|
|
|
let newValArr = [];
|
|
|
for (let i = 0; i < values.length; i++) {
|
|
|
@@ -423,6 +425,8 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
splitStrArr = [];
|
|
|
newValArr = [];
|
|
|
}
|
|
|
+ //备注: 如果outputType是excel类型,那么就只保留原始的分行符,无需介入分行,由excel本身去处理分行,只需要保留足够的空间即可。
|
|
|
+ // 根据最新需求,暂时不考虑excel类型输出,换回原来逻辑
|
|
|
}
|
|
|
}
|
|
|
return rst;
|
|
|
@@ -455,7 +459,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- JpcFlowTabResult.preSetupPages = function (rptTpl, dataObj, defProperties, option, $CURRENT_RPT, followTabEx) {
|
|
|
+ JpcFlowTabResult.preSetupPages = function (rptTpl, dataObj, defProperties, option, $CURRENT_RPT, followTabEx, outputType) {
|
|
|
//换一种思路来整理流水式数据
|
|
|
let me = this, rst = 1, counterRowRec = 0, counterRowRecEx = 0, maxRowRec = 1, pageIdx = 0, currentRecAmt = 0;
|
|
|
me.paging_option = option||JV.PAGING_OPTION_NORMAL;
|
|
|
@@ -502,6 +506,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
maxRowRec = JpcFlowTabHelper.getMaxRowsPerPage(bands, rptTpl, me.isEx);
|
|
|
}
|
|
|
let handledRowAmt = 0; //handledRowAmt纪录的是真正处理过的显示行数,包含了空白行,主要是为分页用(自动行高)
|
|
|
+ let segRestRecAmt = 0; //一般情况下为0,只有在特殊情况下才需要,如09-x表中,正常流水一页显示不了的时候,就有大问题了
|
|
|
function private_addPage(segIdx, grpSeqInfo, isFollow, isMix, mixSplitPoint) {
|
|
|
private_resetBandArea();
|
|
|
me.pageStatusLst.push(pageStatus.slice(0));
|
|
|
@@ -516,6 +521,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
redundantRecAmt++;
|
|
|
}
|
|
|
}
|
|
|
+ let restRecAmt = 0;
|
|
|
if (isMix) {
|
|
|
//先处理上半部分
|
|
|
prePageLeftAutoHeightRecAmt = private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, counterRowRec, mixSplitPoint,me.page_seg_map, segIdx, pageIdx, grpPageInfo, false, me.auto_height_info, prePageLeftAutoHeightRecAmt);
|
|
|
@@ -523,7 +529,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
private_chk_handle_rec_amt(dv, false);
|
|
|
}
|
|
|
//再处理下半部分
|
|
|
- let restRecAmt = maxRowRec - me.dispValueIdxLst[me.dispValueIdxLst.length - 1].length; //备注:在一些极端条件下,mixSplitPoint这个分割点不合适处理下半部分数据,以实际生成的value-index数量为准
|
|
|
+ restRecAmt = maxRowRec - me.dispValueIdxLst[me.dispValueIdxLst.length - 1].length; //备注:在一些极端条件下,mixSplitPoint这个分割点不合适处理下半部分数据,以实际生成的value-index数量为准
|
|
|
// private_addPageValue(me.dispValueIdxLst, followTabEx.segments[segIdx], null, counterRowRecEx, maxRowRec - mixSplitPoint, me.page_seg_map, segIdx, pageIdx, null, true, null, 0);
|
|
|
private_addPageValue(me.dispValueIdxLst, followTabEx.segments[segIdx], null, counterRowRecEx, restRecAmt, me.page_seg_map, segIdx, pageIdx, null, true, null, 0);
|
|
|
for (let dv of me.dispValueIdxLst[me.dispValueIdxLst.length - 1]) {
|
|
|
@@ -548,6 +554,10 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
}
|
|
|
}
|
|
|
currentRecAmt -= redundantRecAmt; //在自动行高调整场景下,需要减去冗余的数量
|
|
|
+ if (restRecAmt < 0) {
|
|
|
+ currentRecAmt -= restRecAmt;
|
|
|
+ segRestRecAmt = restRecAmt;
|
|
|
+ }
|
|
|
}
|
|
|
for (let segIdx = 0; segIdx < me.segments.length; segIdx++) {
|
|
|
let grpSeqInfo = (me.group_node_info)?me.group_node_info[segIdx]:null;
|
|
|
@@ -555,6 +565,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
let grpRecAmtEx = 0;
|
|
|
let accAutoHeightAmt = 0; //累计的自动行高数量
|
|
|
handledRowAmt = 0; //初始化每一段的已处理纪录行数
|
|
|
+ segRestRecAmt = 0;
|
|
|
if (followTabEx && followTabEx.group_node_info) {
|
|
|
grpRecAmtEx = followTabEx.group_node_info.length * followTabEx.group_lines_amt;
|
|
|
}
|
|
|
@@ -564,7 +575,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
grpPageInfo[JV.PROP_GRP_LINES] = me.group_lines_amt;
|
|
|
pageStatus[JV.STATUS_SEGMENT_START] = true;
|
|
|
private_resetBandArea();
|
|
|
- me.setupAutoHeightData(bands, segIdx, rptTpl, dataObj, $CURRENT_RPT, defProperties);
|
|
|
+ me.setupAutoHeightData(bands, segIdx, rptTpl, dataObj, $CURRENT_RPT, defProperties, outputType);
|
|
|
let threshold = 0;
|
|
|
currentRecAmt = 0;
|
|
|
counterRowRec = 0;
|
|
|
@@ -572,10 +583,13 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
let ttlSegRecAmtNormal = me.segments[segIdx].length + grpRecAmt; //正常的segment下的数据长度累计(含grouping data)
|
|
|
let ttlSegRecAmt = (followTabEx)?(me.segments[segIdx].length + grpRecAmt + followTabEx.segments[segIdx].length + grpRecAmtEx):(me.segments[segIdx].length + grpRecAmt); //所有的segment下的数据长度累计(包括ex部分)
|
|
|
let adHocAutoHeightAmt = 0;
|
|
|
+ let normalContentAmt = 0;
|
|
|
+ let exBuffer = 0;
|
|
|
let adHocAutoHeightGrpStartIdx = 0;
|
|
|
if (me.auto_height_fields_idx.length > 0) {
|
|
|
for (let loop = 0; loop < me.auto_height_info[segIdx].length; loop++) {
|
|
|
adHocAutoHeightAmt += (me.auto_height_info[segIdx][loop] - 1);
|
|
|
+ normalContentAmt++;
|
|
|
if (me.group_node_info && me.group_node_info[segIdx]) {
|
|
|
if (me.group_node_info[segIdx][adHocAutoHeightGrpStartIdx] === loop) {
|
|
|
adHocAutoHeightGrpStartIdx++;
|
|
|
@@ -584,6 +598,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
}
|
|
|
ttlSegRecAmtNormal += adHocAutoHeightAmt;
|
|
|
ttlSegRecAmt += adHocAutoHeightAmt;
|
|
|
+ if (adHocAutoHeightAmt > 0) exBuffer = grpRecAmt;
|
|
|
}
|
|
|
//自动行高调整在多流水合并方式时,只支持前部分(后期需要再加)
|
|
|
while (true) {
|
|
|
@@ -604,8 +619,8 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
}
|
|
|
if ((ttlSegRecAmtNormal < ttlSegRecAmt) || (followTabEx !== null)) {
|
|
|
//有流水拓展,并且是follow mode
|
|
|
- // if (currentRecAmt + adHocAutoHeightAmt + maxRowRec > ttlSegRecAmtNormal) {
|
|
|
- if (currentRecAmt + accAutoHeightAmt + adHocAutoHeightAmt + maxRowRec > ttlSegRecAmtNormal) {
|
|
|
+ if (currentRecAmt + accAutoHeightAmt + exBuffer + maxRowRec > ttlSegRecAmtNormal) {
|
|
|
+ // if (currentRecAmt + accAutoHeightAmt + adHocAutoHeightAmt + maxRowRec > ttlSegRecAmtNormal) {
|
|
|
// if (currentRecAmt + adHocAutoHeightAmt >= ttlSegRecAmtNormal) {
|
|
|
if (currentRecAmt + accAutoHeightAmt + adHocAutoHeightAmt >= ttlSegRecAmtNormal) {
|
|
|
//纯 followTabEx 数据
|
|
|
@@ -647,7 +662,12 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
private_addPage(segIdx, grpSeqInfo, false, true, ttlSegRecAmtNormal);
|
|
|
}
|
|
|
} else {
|
|
|
- private_addPage(segIdx, grpSeqInfo, false, true, ttlSegRecAmtNormal);
|
|
|
+ //在这里要考虑如果有多页正常的流水数据情况,那么就得考虑这页有多少条普通流水记录,不应该一刀切地用ttlSegRecAmtNormal
|
|
|
+ let splitPoint = ttlSegRecAmtNormal - handledRowAmt ;
|
|
|
+ // if (splitPoint > (exBuffer + maxRowRec)) {
|
|
|
+ // splitPoint = splitPoint % (exBuffer + maxRowRec);
|
|
|
+ // }
|
|
|
+ private_addPage(segIdx, grpSeqInfo, false, true, splitPoint);
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
@@ -684,7 +704,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
}
|
|
|
//检测是否可退出
|
|
|
// if ((currentRecAmt + accAutoHeightAmt + adHocAutoHeightAmt >= ttlSegRecAmt) && (pageIdx % me.multiCols === 0)) {
|
|
|
- if (handledRowAmt >= ttlSegRecAmt && (pageIdx % me.multiCols === 0)) {
|
|
|
+ if (handledRowAmt >= (ttlSegRecAmt + segRestRecAmt) && (pageIdx % me.multiCols === 0)) {
|
|
|
//备注:这里必须得考虑多栏的情况,否则会造成pageStatus出界的问题
|
|
|
break;
|
|
|
}
|
|
|
@@ -904,7 +924,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
for (let idx_ex = 0; idx_ex < tab_fields_ex.length; idx_ex++) {
|
|
|
let tab_fieldex = tab_fields_ex[idx_ex];
|
|
|
let data_fieldex = null, map_data_fieldex = JE.F(tab_fieldex[JV.PROP_FIELD_ID], $CURRENT_RPT);
|
|
|
- if (me.disp_fields_ex_idx[idx_ex] !== JV.BLANK_FIELD_INDEX && (typeof me.disp_fields_idx[idx_ex] !== 'object')) {
|
|
|
+ if (me.disp_fields_ex_idx[idx_ex] !== JV.BLANK_FIELD_INDEX && (typeof me.disp_fields_ex_idx[idx_ex] !== 'object')) {
|
|
|
data_fieldex = data_details_ex[me.disp_fields_ex_idx[idx_ex]];
|
|
|
} else {
|
|
|
if (map_data_fieldex) {
|
|
|
@@ -949,7 +969,10 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
|
}
|
|
|
// rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * JpcFieldHelper.getValue(page_sum_data_fields[di], contentValuesIdx[rowIdx][2]);
|
|
|
if (contentValuesIdx[rowIdx][2] >= 0) {
|
|
|
- rowGrandTotal[di] = rowGrandTotal[di] + parseFloat(parseFloat(JpcFieldHelper.getValue(page_sum_data_fields[di], contentValuesIdx[rowIdx][2])).toFixed(precisionAmt));
|
|
|
+ let psv = JpcFieldHelper.getValue(page_sum_data_fields[di], contentValuesIdx[rowIdx][2]);
|
|
|
+ if (psv) {
|
|
|
+ rowGrandTotal[di] = rowGrandTotal[di] + parseFloat(parseFloat(psv).toFixed(precisionAmt));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -962,14 +985,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);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1125,7 +1145,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);
|
|
|
}
|
|
|
@@ -1236,13 +1257,13 @@ function combineAutoHeightCells(prepareObj, page, controls) {
|
|
|
rst.push(sameColCells[i].cellIdx); //记下Cell的位置,在函数外消除
|
|
|
//如果到了最后一条数据,得判断firstMergeCell是否满格(即数据是满的,有可能有些格数据也有折行但不是自动行高判断指标)
|
|
|
//不满格的cell的Vertical强制设置为 'center'
|
|
|
- if (i === sameColCells.length - 1 && validValueAmt !== fullValidValueAmt) {
|
|
|
+ if (i === sameColCells.length - 1 && validValueAmt !== fullValidValueAmt && (fullValidValueAmt / validValueAmt > 2.5) ) {
|
|
|
firstMergeCell[JV.PROP_CONTROL].VerticalForExcel = 'center';
|
|
|
}
|
|
|
} else {
|
|
|
//碰到新开始的自动行高行,判断原先的firstMergeCell是否满格(即数据是满的,有可能有些格数据也有折行但不是自动行高判断指标)
|
|
|
//不满格的cell的Vertical强制设置为 'center'
|
|
|
- if (validValueAmt !== fullValidValueAmt) {
|
|
|
+ if (validValueAmt !== fullValidValueAmt && (fullValidValueAmt / validValueAmt > 2.5)) {
|
|
|
firstMergeCell[JV.PROP_CONTROL].VerticalForExcel = 'center';
|
|
|
}
|
|
|
firstMergeCell = sameColCells[i].cell;
|