Browse Source

用户配置apply到PDF

TonyKang 6 years ago
parent
commit
2ffd20f48d

+ 46 - 4
modules/reports/controllers/rpt_controller.js

@@ -394,16 +394,17 @@ module.exports = {
             }
         })
     },
-    getExcelByUUID: function (req, res) {
+    getFileByUUID: function (req, res) {
         let uuid = req.params.uuid,
-            rptName = req.params.rptName
+            rptName = req.params.rptName,
+            suffix = "." + req.params.suffix
         ;
         // let user_id = req.session.sessionUser.id; //未来要校验user id
         try {
             res.setHeader('Content-Type', 'application/vnd.openxmlformats');
             let rptNameURI = encodeURI(rptName);
-            res.setHeader("Content-Disposition", "attachment; filename=\"" + rptNameURI + ".xlsx\"; filename*=utf-8''" + rptNameURI + '.xlsx' );
-            let filestream = fs.createReadStream(__dirname.slice(0, __dirname.length - 28) + '/tmp/' + uuid + '.xlsx');
+            res.setHeader("Content-Disposition", "attachment; filename=\"" + rptNameURI + suffix + "\"; filename*=utf-8''" + rptNameURI + suffix );
+            let filestream = fs.createReadStream(__dirname.slice(0, __dirname.length - 28) + '/tmp/' + uuid + suffix);
             filestream.on('data', function(chunk) {
                 res.write(chunk);
             });
@@ -487,6 +488,46 @@ module.exports = {
             }
         })
     },
+    createPdfFiles: function (req, res) {
+        let params = JSON.parse(req.body.params),
+            prj_id = params.prj_id,
+            rpt_ids = params.rpt_ids,
+            rpt_names = params.rpt_names,
+            pageSize = params.pageSize,
+            orientation = params.orientation,
+            customizeCfg = params.custCfg,
+            option = params.option;
+        let user_id = req.session.sessionUser.id;
+        let parallelFunctions = [];
+        let dftOption = option||JV.PAGING_OPTION_NORMAL;
+        for (let idx = 0; idx < rpt_ids.length; idx++) {
+            let r_id = rpt_ids[idx];
+            let r_name = rpt_names[idx];
+            parallelFunctions.push((function (rpt_id, rpt_name) {
+                return function (cb) {
+                    getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, function (err, pageRst) {
+                        if(err){
+                            cb(err);
+                        }
+                        else{
+                            rpt_pdf_util.export_pdf_file(pageRst, pageSize, rpt_name, function(uuidName){
+                                let fileRst = {uuid: uuidName, reportName: rpt_name};
+                                cb(err, fileRst);
+                            })
+                        }
+                    })
+                }
+            })(parseInt(r_id), r_name));
+        }
+        async.parallel(parallelFunctions, function (err, fileRstArray) {
+            if (err) {
+                callback(req, res, '数据有误', null);
+            } else {
+                // console.log(err);
+                callback(req, res, err, fileRstArray);
+            }
+        })
+    },
     getPDF:function (req, res) {
         let prj_id = req.params.prj_id,
             rpt_id = req.params.rpt_id,
@@ -514,6 +555,7 @@ module.exports = {
         })
 
     },
+
     getTestReportAllPages: function(req, res){
         let rpt_id = req.body.ID;
         let pageSize = req.body.pageSize;

+ 3 - 2
modules/reports/routes/report_router.js

@@ -29,11 +29,12 @@ module.exports =function (app) {
     rptRouter.post('/getMultiReports', reportController.getMultiReports);
     rptRouter.post('/createExcelFiles', reportController.createExcelFiles);
     rptRouter.post('/createExcelFilesInOneBook', reportController.createExcelFilesInOneBook);
+    rptRouter.post('/createPdfFiles', reportController.createPdfFiles);
+
     rptRouter.get('/getExcelInOneBook/:prj_id/:rpt_ids/:size/:rptName/:option', reportController.getExcelInOneBook);
     rptRouter.get('/getExcel/:prj_id/:rpt_id/:size/:orientation/:rptName/:isOneSheet/:option', reportController.getExcel);
-    rptRouter.get('/getExcelByUUID/:uuid/:rptName', reportController.getExcelByUUID);
+    rptRouter.get('/getFileByUUID/:uuid/:rptName/:suffix', reportController.getFileByUUID);
     rptRouter.get('/getPDF/:prj_id/:rpt_id/:size/:orientation/:rptName', reportController.getPDF);
-    // rptRouter.get('/getExcelInOneBook/:ids/:size/:rptName/:option', reportController.getExcelInOneBook);
 
     app.use("/report_api", rptRouter);
 };

+ 39 - 10
web/building_saas/report/js/rpt_main.js

@@ -367,7 +367,7 @@ let rptControlObj = {
             CommonAjax.postEx("report_api/createExcelFilesInOneBook", params, 20000, true, function(result){
                     if (result) {
                         let uuIdUrls = [];
-                        let uuIdUrl =  "/report_api/getExcelByUUID/" + result.uuid + "/" + result.reportName;
+                        let uuIdUrl =  "/report_api/getFileByUUID/" + result.uuid + "/" + result.reportName + "/xlsx";
                         uuIdUrls.push(uuIdUrl);
                         downloadReport(uuIdUrls);
                     } else {
@@ -398,7 +398,7 @@ let rptControlObj = {
                     if (result) {
                         let uuIdUrls = [];
                         for (let uuIdObj of result) {
-                            let uuIdUrl =  "/report_api/getExcelByUUID/" + uuIdObj.uuid + "/" + uuIdObj.reportName;
+                            let uuIdUrl =  "/report_api/getFileByUUID/" + uuIdObj.uuid + "/" + uuIdObj.reportName + "/xlsx";
                             uuIdUrls.push(uuIdUrl);
                         }
                         downloadReport(uuIdUrls);
@@ -428,18 +428,47 @@ let rptControlObj = {
         }
     },
     getPDF: function() {
+        // let me = rptControlObj;
+        // if (zTreeOprObj.checkedRptTplNodes && zTreeOprObj.checkedRptTplNodes.length > 0) {
+        //     let urls = [];
+        //     let orientation = ((zTreeOprObj.checkedRptTplNodes.length > 1)?null:me.getCurrentOrientation());
+        //     for (let tplNode of zTreeOprObj.checkedRptTplNodes) {
+        //         let orgRptName = tplNode.name;
+        //         let url =  "/report_api/getPDF/" + projectInfoObj.projectInfo.ID + "/" + tplNode.refId + "/" +
+        //             me.getCurrentPageSize() + "/" + orientation + "/" + orgRptName
+        //             // + "/" + encodeURI(JSON.stringify(zTreeOprObj.reportPageCfg));
+        //         urls.push(url);
+        //     }
+        //     downloadReport(urls);
+        // }
         let me = rptControlObj;
         if (zTreeOprObj.checkedRptTplNodes && zTreeOprObj.checkedRptTplNodes.length > 0) {
-            let urls = [];
-            let orientation = ((zTreeOprObj.checkedRptTplNodes.length > 1)?null:me.getCurrentOrientation());
+            let rpt_ids = [], rpt_names = [];
             for (let tplNode of zTreeOprObj.checkedRptTplNodes) {
-                let orgRptName = tplNode.name;
-                let url =  "/report_api/getPDF/" + projectInfoObj.projectInfo.ID + "/" + tplNode.refId + "/" +
-                    me.getCurrentPageSize() + "/" + orientation + "/" + orgRptName
-                    // + "/" + encodeURI(JSON.stringify(zTreeOprObj.reportPageCfg));
-                urls.push(url);
+                rpt_ids.push(tplNode.refId);
+                rpt_names.push(tplNode.name)
             }
-            downloadReport(urls);
+            let params = {};
+            params.prj_id = projectInfoObj.projectInfo.ID;
+            params.rpt_ids = rpt_ids;
+            params.rpt_names = rpt_names;
+            params.pageSize = me.getCurrentPageSize();
+            params.orientation = ((zTreeOprObj.checkedRptTplNodes.length > 1)?null:me.getCurrentOrientation());
+            params.custCfg = zTreeOprObj.reportPageCfg;
+            params.option = "normal";
+            CommonAjax.postEx("report_api/createPdfFiles", params, 20000, true, function(result){
+                    if (result) {
+                        let uuIdUrls = [];
+                        for (let uuIdObj of result) {
+                            let uuIdUrl =  "/report_api/getFileByUUID/" + uuIdObj.uuid + "/" + uuIdObj.reportName + "/pdf";
+                            uuIdUrls.push(uuIdUrl);
+                        }
+                        downloadReport(uuIdUrls);
+                    } else {
+                        //
+                    }
+                }, null, null
+            );
         }
     },
     firstPage: function(dom) {