Browse Source

TASK #4467(补充分割指标及内容内容信息)

Tony Kang 1 year ago
parent
commit
f78834410f

+ 12 - 8
app/controller/report_archive_controller.js

@@ -250,7 +250,7 @@ module.exports = app => {
             }
         }
 
-        async _updateArchiveCommon(ctx, prjId, stgId, rptId, parentUuidName, childUuids) {
+        async _updateArchiveCommon(ctx, prjId, stgId, rptId, parentUuidName, childUuids, splitField) {
             const updateDate = new Date();
             const montStr = (updateDate.getMonth() + 1) < 10 ? ('0' + (updateDate.getMonth() + 1)) : (updateDate.getMonth() + 1);
             const dateStr = (updateDate.getDate()) < 10 ? ('0' + updateDate.getDate()) : (updateDate.getDate());
@@ -300,14 +300,14 @@ module.exports = app => {
                             item.items.splice(updateRmIdx, 1);
                         }
 
-                        const newItem = { uuid: parentUuidName, updateDate_time: dtStr, childUuids };
+                        const newItem = { uuid: parentUuidName, updateDate_time: dtStr, childUuids, splitField };
                         item.items.push(newItem);
                         break;
                     }
                 }
                 if (!hasArchive) {
                     // 表示有新的模板需要添加
-                    contentArr.push({ rpt_id: rptId, items: [{ uuid: parentUuidName, updateDate_time: dtStr, childUuids }] });
+                    contentArr.push({ rpt_id: rptId, items: [{ uuid: parentUuidName, updateDate_time: dtStr, childUuids, splitField }] });
                 }
                 const updatedRst = await ctx.service.rptArchive.updateArchive(orgArchiveList[0].id, prjId, stgId, contentArr);
                 // console.log(updatedRst);
@@ -315,7 +315,7 @@ module.exports = app => {
             } else {
                 // 需要增加
                 const archiveArr = [];
-                archiveArr.push({ rpt_id: rptId, items: [{ uuid: parentUuidName, updateDate_time: dtStr, childUuids }] });
+                archiveArr.push({ rpt_id: rptId, items: [{ uuid: parentUuidName, updateDate_time: dtStr, childUuids, splitField }] });
                 const addedRst = await ctx.service.rptArchive.createArchive(prjId, stgId, archiveArr);
                 rst = { err: 0, msg: parentUuidName, data: { uuid: parentUuidName, fileName, updateDate, updatedRst: archiveArr } };
             }
@@ -329,7 +329,11 @@ module.exports = app => {
                 const prjId = ctx.params.prjId;
                 const stgId = ctx.params.stgId;
                 const rptId = ctx.params.rptId;
-                const childAmt = parseInt(ctx.params.childAmt); // 子分页数量
+                // const childAmt = parseInt(ctx.params.childAmt); // 子分页数量
+                const childInfo = ctx.params.childAmt.split(';'); // 这个参数带比较多的信息,包含分割指标的:1. 名称 2. ID 3. 内容
+                const childAmt = parseInt(childInfo[0]);
+                const splitFieldObj = JSON.parse(childInfo[1]);
+                // console.log(splitFieldObj);
                 const parentUuid = uuidV1();
                 const childUuids = [];
                 // const newUuidName = uuidV1();
@@ -360,7 +364,7 @@ module.exports = app => {
                     }
                     // stream = await parts();
                 }
-                const body = await this._updateArchiveCommon(ctx, prjId, stgId, rptId, parentUuid, childUuids);
+                const body = await this._updateArchiveCommon(ctx, prjId, stgId, rptId, parentUuid, childUuids, splitFieldObj);
                 ctx.body = body;
             } catch (error) {
                 ctx.helper.log(error);
@@ -384,7 +388,7 @@ module.exports = app => {
                 if (!(oss_result && oss_result.url && oss_result.res.status === 200)) {
                     throw '上传文件失败';
                 }
-                const body = await this._updateArchiveCommon(ctx, prjId, stgId, rptId, newUuidName, []);
+                const body = await this._updateArchiveCommon(ctx, prjId, stgId, rptId, newUuidName, [], {});
                 ctx.body = body;
             } catch (err) {
                 this.log(err);
@@ -422,7 +426,7 @@ module.exports = app => {
                     }
                 }
 
-                const body = await this._updateArchiveCommon(ctx, prjId, stgId, rptId, orgUuidName, []);
+                const body = await this._updateArchiveCommon(ctx, prjId, stgId, rptId, orgUuidName, [], {});
                 ctx.body = body;
             } catch (err) {
                 this.log(err);

+ 3 - 2
app/public/report/js/rpt_archive.js

@@ -635,7 +635,7 @@ let rptArchiveObj = {
                 if (!rptArchiveObj._chkIfFullArchives(currentNode)) {
                     let archiveUrl = `/tender/report_api/addArchive/${PROJECT_ID}/${current_stage_id}/${currentNode.refId}`;
                     if (currentRptPageRst.splitArcPages && currentRptPageRst.splitArcPages.length > 0) {
-                        archiveUrl = `/tender/report_api/addParentChildrenArchive/${PROJECT_ID}/${current_stage_id}/${currentNode.refId}/${currentRptPageRst.splitArcPages.length}`;
+                        archiveUrl = `/tender/report_api/addParentChildrenArchive/${PROJECT_ID}/${current_stage_id}/${currentNode.refId}/${currentRptPageRst.splitArcPages.length};${JSON.stringify(currentRptPageRst.splitArcPagesInfo)}`;
                     }
                     postDataWithFile(archiveUrl, formData, function (result) {
                     // postDataWithFile('/tender/report_api/addArchive/' + PROJECT_ID + '/' + current_stage_id + '/' + currentNode.refId, formData, function (result) {
@@ -657,6 +657,7 @@ let rptArchiveObj = {
                             params.uuid = result.uuid; //正确返回时,带着uuid回来
                             params.childUuids = result.childUuids; //还有子uuid
                             params.splitArcPages = currentRptPageRst.splitArcPages ? currentRptPageRst.splitArcPages : [];
+                            params.splitArcPagesInfo = currentRptPageRst.splitArcPagesInfo ? currentRptPageRst.splitArcPagesInfo : {};
                             params.reportName = currentNode.name;
                             CommonAjax.postXsrfEx("/tender/report_api/addArchiveEncryption", params, 10000, true, getCookie('csrfToken_j'),
                                 function(rst){
@@ -703,7 +704,7 @@ let rptArchiveObj = {
                         let archiveUrl = `/tender/report_api/updateArchive/${PROJECT_ID}/${current_stage_id}/${currentNode.refId}/${orgName}`;
                         if (currentRptPageRst.splitArcPages && currentRptPageRst.splitArcPages.length > 0) {
                             // archiveUrl = `/tender/report_api/addParentChildrenArchive/${PROJECT_ID}/${current_stage_id}/${currentNode.refId}/${orgName}`;
-                            archiveUrl = `/tender/report_api/addParentChildrenArchive/${PROJECT_ID}/${current_stage_id}/${currentNode.refId}/${currentRptPageRst.splitArcPages.length}`; // 分页方式不需要 orgName 
+                            archiveUrl = `/tender/report_api/addParentChildrenArchive/${PROJECT_ID}/${current_stage_id}/${currentNode.refId}/${currentRptPageRst.splitArcPages.length};${JSON.stringify(currentRptPageRst.splitArcPagesInfo)}`; // 分页方式不需要 orgName 
                         }
                         postDataWithFile(archiveUrl, formData, function (result) {
                         // postDataWithFile('/tender/report_api/updateArchive/' + PROJECT_ID + '/' + current_stage_id + '/' + currentNode.refId + '/' + orgName, formData, function (result) {

+ 5 - 1
app/reports/rpt_component/jpc_bill_tab.js

@@ -49,20 +49,24 @@ JpcBillTabSrv.prototype.createNew = function() {
             }
         }
         me.totalPages = rst;
-        if (dataObj.splitArcVals) {
+        if (dataObj.splitArcVals && dataObj.splitField) {
             // 账单式表 分割
             let preVal = dataObj.splitArcVals[0];
             let pgIdx = 1;
             const pagesForPreSplit = [];
+            const splitFieldInfo = { Name: dataObj.splitField.Name, ID: dataObj.splitField.ID, splitPageValues: [] };
             pagesForPreSplit.push(pgIdx);
+            splitFieldInfo.splitPageValues.push(preVal);
             for (let idx = 1; idx < dataObj.splitArcVals.length; idx++) {
                 if (preVal !== dataObj.splitArcVals[idx]) {
                     preVal = dataObj.splitArcVals[idx];
                     pgIdx++;
                 }
                 pagesForPreSplit.push(pgIdx);
+                splitFieldInfo.splitPageValues.push(preVal);
             }
             dataObj.splitArcPages = pagesForPreSplit;
+            dataObj.splitArcPagesInfo = splitFieldInfo;
         }
         return rst;
     };

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

@@ -192,6 +192,7 @@ JpcExSrv.prototype.createNew = function() {
                             rptTpl.splitFieldId = splitArc.split_field_id;
                             const df = $JE.getFieldValueArray(splitField, dataObj);
                             dataObj.splitArcVals = df;
+                            dataObj.splitField = splitField;
                             break;
                         }
                     }

+ 4 - 1
app/reports/rpt_component/jpc_flow_tab.js

@@ -699,10 +699,12 @@ JpcFlowTabSrv.prototype.createNew = function() {
                 }
             };
             const pagesForPreSplit = [];
+            const splitFieldInfo = { Name: dataObj.splitField.Name, ID: dataObj.splitField.ID, splitPageValues: [] };
             for (let segIdx = 0; segIdx < me.segments.length; segIdx++) {
                 if (dataObj.splitArcVals) {
-                    // 流水式的分页强制以主数据划分
+                    // 流水式的分页强制以主数据划分,如果不是,那后果由做模板的人负责
                     pagesForPreSplit.push(Math.ceil((pageIdx + 1) / me.multiCols));
+                    splitFieldInfo.splitPageValues.push(dataObj.splitArcVals[segIdx]);
                 }
                 const grpSeqInfo = (me.group_node_info) ? me.group_node_info[segIdx] : null;
                 const grpRecAmt = (grpSeqInfo) ? (grpSeqInfo.length * me.group_lines_amt) : 0;
@@ -857,6 +859,7 @@ JpcFlowTabSrv.prototype.createNew = function() {
             }
             if (dataObj.splitArcVals) {
                 dataObj.splitArcPages = pagesForPreSplit;
+                dataObj.splitArcPagesInfo = splitFieldInfo;
             }
             rst = Math.ceil(pageIdx / me.multiCols);
         }

+ 9 - 2
app/service/jpc_report.js

@@ -66,7 +66,11 @@ module.exports = app => {
                     pageRst = printCom.outputAsPreviewPage(rptTpl, defProperties);
                 }
                 pageRst.id = params.rpt_tpl_id;
-                if (tplData.splitArcPages) pageRst.splitArcPages = tplData.splitArcPages;
+                if (tplData.splitArcPages) {
+                    pageRst.splitArcPages = tplData.splitArcPages;
+                    pageRst.splitArcPagesInfo = tplData.splitArcPagesInfo;
+                }
+
                 return pageRst;
             } catch (ex) {
                 console.log('报表数据异常, tender id: ' + params.tender_id);
@@ -202,7 +206,10 @@ module.exports = app => {
                         pageRst = printCom.outputAsPreviewPage(rptTpl, defProperties);
                     }
                     pageRst.id = rptTpl.id;
-                    if (tplData.splitArcPages) pageRst.splitArcPages = tplData.splitArcPages;
+                    if (tplData.splitArcPages) {
+                        pageRst.splitArcPages = tplData.splitArcPages;
+                        pageRst.splitArcPagesInfo = tplData.splitArcPagesInfo;
+                    }
                     rptPageRstArray.push(pageRst);
                 }
                 return rptPageRstArray;