瀏覽代碼

TASK #4467 报表模板新增归档数据拆分

Tony Kang 1 年之前
父節點
當前提交
4c6df1dc1c

+ 10 - 3
app/controller/report_archive_controller.js

@@ -282,7 +282,7 @@ module.exports = app => {
                         if (updateRmIdx < 0 && item.items.length >= MAX_ARCHIVE) {
                             updateRmIdx = 0;
                             for (let idx = 1; idx < item.items.length; idx++) {
-                                if (item.items[updateRmIdx].updateDate_time < item.items[idx].updateDate_time) {
+                                if (item.items[updateRmIdx].updateDate_time > item.items[idx].updateDate_time) {
                                     updateRmIdx = idx;
                                 }
                             }
@@ -329,6 +329,7 @@ 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 parentUuid = uuidV1();
                 const childUuids = [];
                 // const newUuidName = uuidV1();
@@ -350,8 +351,14 @@ module.exports = app => {
                     if (!(oss_result && oss_result.url && oss_result.res.status === 200)) {
                         throw '上传文件失败';
                     }
-                    index++;
-                    stream = await parts();
+                    await sendToWormhole(stream);
+                    ++index;
+                    if (index <= childAmt) {
+                        stream = await parts();
+                    } else {
+                        stream = undefined;
+                    }
+                    // stream = await parts();
                 }
                 const body = await this._updateArchiveCommon(ctx, prjId, stgId, rptId, parentUuid, childUuids);
                 ctx.body = body;

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

@@ -612,7 +612,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}`;
+                        archiveUrl = `/tender/report_api/addParentChildrenArchive/${PROJECT_ID}/${current_stage_id}/${currentNode.refId}/${currentRptPageRst.splitArcPages.length}`;
                     }
                     postDataWithFile(archiveUrl, formData, function (result) {
                     // postDataWithFile('/tender/report_api/addArchive/' + PROJECT_ID + '/' + current_stage_id + '/' + currentNode.refId, formData, function (result) {
@@ -679,7 +679,8 @@ 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}/${orgName}`;
+                            archiveUrl = `/tender/report_api/addParentChildrenArchive/${PROJECT_ID}/${current_stage_id}/${currentNode.refId}/${currentRptPageRst.splitArcPages.length}`; // 分页方式不需要 orgName 
                         }
                         postDataWithFile(archiveUrl, formData, function (result) {
                         // postDataWithFile('/tender/report_api/updateArchive/' + PROJECT_ID + '/' + current_stage_id + '/' + currentNode.refId + '/' + orgName, formData, function (result) {

+ 16 - 12
app/public/report/js/rpt_jspdf.js

@@ -675,19 +675,23 @@ const JpcJsPDFHelper = {
         if (pageData.splitArcPages && pageData.splitArcPages.length > 0) {
             let prePageVal = pageData.splitArcPages[0];
             let indPages = [];
-            const orgItems = pageData.items;
-            for (let pIdx = 0; pIdx < pageData.splitArcPages.length; pIdx++) {
-                if (prePageVal !== pageData.splitArcPages[pIdx]) {
-                    pageData.items = indPages;
-                    rst.push(JpcJsPDFHelper._createPdf(pageData, paperSize, signatureRelArr, signAuditArr));
-                    indPages = [];
-                    prePageVal = pageData.splitArcPages[pIdx];
-                }
-                indPages.push(orgItems[pIdx]);
-                if (pIdx === pageData.splitArcPages.length - 1) {
-                    pageData.items = indPages;
-                    rst.push(JpcJsPDFHelper._createPdf(pageData, paperSize, signatureRelArr, signAuditArr));
+            const orgItems = [].concat(pageData.items);
+            try {
+                for (let pIdx = 0; pIdx < pageData.splitArcPages.length; pIdx++) {
+                    if (prePageVal !== pageData.splitArcPages[pIdx]) {
+                        pageData.items = indPages;
+                        rst.push(JpcJsPDFHelper._createPdf(pageData, paperSize, signatureRelArr, signAuditArr));
+                        indPages = [];
+                        prePageVal = pageData.splitArcPages[pIdx];
+                    }
+                    indPages.push(orgItems[pIdx]);
+                    if (pIdx === pageData.splitArcPages.length - 1) {
+                        pageData.items = indPages;
+                        rst.push(JpcJsPDFHelper._createPdf(pageData, paperSize, signatureRelArr, signAuditArr));
+                    }
                 }
+            } finally {
+                pageData.items = orgItems;
             }
         }
         return rst;

+ 17 - 17
app/public/report/js/rpt_main.js

@@ -1248,23 +1248,23 @@ function downloadPDFReport(pageDataArr, pageSize, rpt_names, signatureRelArr, si
 
             JpcJsPDFHelper.outputAsPdf(pageData, pageSize, rptName, singleSignatureRelArr, STAGE_AUDIT, false, zTreeOprObj._chkPrePayStatus()); // 精确控制签名
             if (pageData.splitArcPages) {
-                // let prePageVal = pageData.splitArcPages[0], rptNameIdx = 0;
-                // let indPages = [];
-                // const orgItems = pageData.items;
-                // for (let pIdx = 0; pIdx < pageData.splitArcPages.length; pIdx++) {
-                //     if (prePageVal !== pageData.splitArcPages[pIdx]) {
-                //         pageData.items = indPages;
-                //         JpcJsPDFHelper.outputAsPdf(pageData, pageSize, `${rptName}_${rptNameIdx}`, singleSignatureRelArr, STAGE_AUDIT);
-                //         rptNameIdx++;
-                //         indPages = [];
-                //         prePageVal = pageData.splitArcPages[pIdx];
-                //     }
-                //     indPages.push(orgItems[pIdx]);
-                //     if (pIdx === pageData.splitArcPages.length - 1) {
-                //         pageData.items = indPages;
-                //         JpcJsPDFHelper.outputAsPdf(pageData, pageSize, `${rptName}_${rptNameIdx}`, singleSignatureRelArr, STAGE_AUDIT);
-                //     }
-                // }
+                let prePageVal = pageData.splitArcPages[0], rptNameIdx = 0;
+                let indPages = [];
+                const orgItems = pageData.items;
+                for (let pIdx = 0; pIdx < pageData.splitArcPages.length; pIdx++) {
+                    if (prePageVal !== pageData.splitArcPages[pIdx]) {
+                        pageData.items = indPages;
+                        JpcJsPDFHelper.outputAsPdf(pageData, pageSize, `${rptName}_${rptNameIdx}`, singleSignatureRelArr, STAGE_AUDIT);
+                        rptNameIdx++;
+                        indPages = [];
+                        prePageVal = pageData.splitArcPages[pIdx];
+                    }
+                    indPages.push(orgItems[pIdx]);
+                    if (pIdx === pageData.splitArcPages.length - 1) {
+                        pageData.items = indPages;
+                        JpcJsPDFHelper.outputAsPdf(pageData, pageSize, `${rptName}_${rptNameIdx}`, singleSignatureRelArr, STAGE_AUDIT);
+                    }
+                }
                 // 已验证拆分ok
             }
             if (rptControlObj.currentDownloadIdx < newPageDataArr.length) setTimeout(private_download(newPageDataArr, new_rpt_names), 2000);

+ 8 - 0
app/reports/rpt_component/jpc_flow_tab.js

@@ -698,7 +698,12 @@ JpcFlowTabSrv.prototype.createNew = function() {
                     segRestRecAmt = restRecAmt;
                 }
             };
+            const pagesForPreSplit = [];
             for (let segIdx = 0; segIdx < me.segments.length; segIdx++) {
+                if (dataObj.splitArcVals) {
+                    // 流水式的分页强制以主数据划分
+                    pagesForPreSplit.push(Math.ceil((pageIdx + 1) / me.multiCols));
+                }
                 const grpSeqInfo = (me.group_node_info) ? me.group_node_info[segIdx] : null;
                 const grpRecAmt = (grpSeqInfo) ? (grpSeqInfo.length * me.group_lines_amt) : 0;
                 let grpRecAmtEx = 0;
@@ -850,6 +855,9 @@ JpcFlowTabSrv.prototype.createNew = function() {
                     }
                 }
             }
+            if (dataObj.splitArcVals) {
+                dataObj.splitArcPages = pagesForPreSplit;
+            }
             rst = Math.ceil(pageIdx / me.multiCols);
         }
         me.pagesAmt = rst;

+ 2 - 2
app/router.js

@@ -428,7 +428,7 @@ module.exports = app => {
     app.post('/tender/:id/settle/save', sessionAuth, tenderCheck, uncheckTenderCheck, 'settleController.save');
     app.post('/tender/:id/settle/delete', sessionAuth, tenderCheck, uncheckTenderCheck, tenderBuildCheck, 'settleController.delete');
     // 结算期
-    app.get('/tender/:id/settle/:sorder',sessionAuth, tenderCheck, uncheckTenderCheck, settleCheck, 'settleController.index');
+    app.get('/tender/:id/settle/:sorder', sessionAuth, tenderCheck, uncheckTenderCheck, settleCheck, 'settleController.index');
 
     // 报表
     app.get('/tender/:id/report', sessionAuth, tenderCheck, uncheckTenderCheck, 'reportController.index');
@@ -465,7 +465,7 @@ module.exports = app => {
     app.post('/report/cDefine', sessionAuth, 'reportController.setCustomDefine');
 
     app.post('/tender/report_api/addArchive/:prjId/:stgId/:rptId', sessionAuth, 'reportArchiveController.addReportArchive');
-    app.post('/tender/report_api/addParentChildrenArchive/:prjId/:stgId/:rptId', sessionAuth, 'reportArchiveController.addParentChildrenArchiveReports');
+    app.post('/tender/report_api/addParentChildrenArchive/:prjId/:stgId/:rptId/:childAmt', sessionAuth, 'reportArchiveController.addParentChildrenArchiveReports');
 
     app.post('/tender/report_api/updateArchive/:prjId/:stgId/:rptId/:orgName', sessionAuth, 'reportArchiveController.updateReportArchive');
     app.post('/tender/report_api/removeArchive/:prjId/:stgId/:rptId/:orgName', sessionAuth, 'reportArchiveController.removeReportArchive');