TonyKang %!s(int64=6) %!d(string=hai) anos
pai
achega
d7bb76a61f

+ 8 - 1
modules/reports/controllers/rpt_controller.js

@@ -335,6 +335,13 @@ function getMultiRptsCommon(user_id, prj_id, rpt_ids, pageSize, orientation, cus
     rptTplFacade.getRptTemplates(rpt_ids).then(function(rptTpls) {
         let rptDataUtil = new rptDataExtractor();
         let filters = [];
+        if (rptTpls.length > 1) {
+            rptTpls.sort(function (item1, item2){
+                let i1 = (item1._doc)?item1._doc:item1, i2 = (item2._doc)?item2._doc:item2;
+                let ID1 = rpt_ids.indexOf(i1[JV.PROP_ID]), ID2 = rpt_ids.indexOf(i2[JV.PROP_ID]);
+                return ID1 - ID2;
+            });
+        }
         for (let rptTpl of rptTpls) {
             rptDataUtil.initialize((rptTpl._doc)?rptTpl._doc:rptTpl);
             let filter = rptDataUtil.getDataRequestFilter();
@@ -889,7 +896,7 @@ module.exports = {
             });
         };
         if (rpt_ids && rpt_ids.length > 0) {
-            getMultiRptsCommon(user_id, prj_id, rpt_ids, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_PDF, function (err, rptPageRstArray) {
+            getMultiRptsCommon(user_id, prj_id, rpt_ids, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_NORMAL, function (err, rptPageRstArray) {
                 if (err) {
                     console.log('导出Excel错误(生成数据过程错误), userId: ' + user_id + ', prjId' + prj_id);
                     callback(req, res, '数据生成错误', null);

+ 2 - 1
modules/reports/util/rpt_excel_util.js

@@ -444,7 +444,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
     };
     let private_getSharedStrIdx = function(val) {
         let strVal = val;
-        if (val === null) {
+        if (val === null || val === undefined || (typeof val === 'number' && isNaN(val))) {
             strVal = "";
         }
         let rst = sharedStrList.indexOf(strVal);
@@ -749,6 +749,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
                     let valIdx = private_getSharedStrIdx(theShtData.cells[cIdx][JV.PROP_VALUE]);
                     cellObj.v = valIdx;
                 }
+
                 rowIdx2 = theYPos.indexOf(theShtData.cells[cIdx][JV.PROP_AREA][JV.PROP_BOTTOM]);
                 colIdx2 = xPos.indexOf(theShtData.cells[cIdx][JV.PROP_AREA][JV.PROP_RIGHT]);
                 if ((rowIdx2 - rowIdx1 > 1) || (colIdx2 - colIdx1 > 1)) {

+ 9 - 7
test/unit/reports/test_multi_rpts.js

@@ -31,19 +31,21 @@ let demoRptIds = [];
 // demoRptIds.push(38); //5.2.2表
 // demoRptIds.push(6); //封面
 // demoRptIds.push(22); //03
+// demoRptIds.push(23); //04 综合费率表
+// demoRptIds.push(24); //05 预算
+// demoRptIds.push(25); //06
 // demoRptIds.push(26); //07
-// demoRptIds.push(28); //09
 // demoRptIds.push(27); //08
-// demoRptIds.push(24); //05
+// demoRptIds.push(28); //09
 // demoRptIds.push(20); //01
-// demoRptIds.push(23); //04 综合费率表
 // demoRptIds.push(56); //24
 // demoRptIds.push(36); //5.1
 // demoRptIds.push(49); //5.5
 // demoRptIds.push(66); //5.4
-demoRptIds.push(57); //01
-demoRptIds.push(58); //03
-demoRptIds.push(59); //04
+// demoRptIds.push(57); //01
+// demoRptIds.push(58); //03
+// demoRptIds.push(59); //04
+demoRptIds.push(65); //05 工程量清单
 
 let pagesize = "A4";
 
@@ -59,7 +61,7 @@ let demoPrjId = - 1;
 // demoPrjId = 455; //PROD:
 // demoPrjId = 618; //PROD:
 // demoPrjId = 815; //PROD:
-demoPrjId = 1510; //UAT:
+demoPrjId = 552; //UAT:
 //*/
 let userId_Dft = userId_Leng;
 // let userId_Dft = "5a025c4c15074d134c2b9689";

+ 8 - 8
test/unit/reports/test_rpt_test_template.js

@@ -32,7 +32,7 @@ let demoPrjId = - 1;
 // let demoRptId = 26; //07
 // let demoRptId = 28; //09
 // let demoRptId = 27; //08
-// let demoRptId = 24; //05
+let demoRptId = 24; //05
 // let demoRptId = 20; //01
 // let demoRptId = 23; //04 综合费率表
 
@@ -48,7 +48,7 @@ let demoPrjId = - 1;
 // let demoRptId = 71; //21-2
 // let demoRptId = 74; //22
 // let demoRptId = 83; //02 预算
-let demoRptId = 84; //02 清单
+// let demoRptId = 84; //02 清单
 
 let pagesize = "A4";
 //288: 11-2表(新)
@@ -71,9 +71,9 @@ let userId_Leng = "5c3ffa9aa0a92732f41216e0"; //小冷User Id (养护的)
 // demoPrjId = 618; //PROD:
 // demoPrjId = 2580; //PROD:
 // demoPrjId = 815; //PROD:
-// demoPrjId = 499; //UAT:
+demoPrjId = 552; //UAT:
 // demoPrjId = 738; //UAT:
-demoPrjId = 670; //UAT: 清单项目
+// demoPrjId = 670; //UAT: 清单项目
 //*/
 let userId_Dft = userId_Leng;
 // userId_Dft = '5c641205950967000d20d35b'; //临时用
@@ -114,7 +114,7 @@ test('测试 - 测试模板啦: ', function (t) {
                 try {
                     let dt = new Date();
                     console.log('取完项目数据时间:' + (dt));
-                    fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataObject_测试模板.jsp");
+                    // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataObject_测试模板.jsp");
                     let tplData = rptDataUtil.assembleData(rawDataObj);
                     // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataAfterCacl_测试模板.jsp");
                     // fsUtil.writeObjToFile(tplData, "D:/GitHome/YangHuCost/tmp/rptTplAssembledData_测试模板.jsp");
@@ -136,9 +136,9 @@ test('测试 - 测试模板啦: ', function (t) {
                     if (pageRst) {
                         // fsUtil.writeObjToFile(pageRst, "D:/GitHome/YangHuCost/tmp/testBuiltPageResult_测试模板" + dt.getTime() + ".jsp");
                         // fsUtil.writeObjToFile(pageRst, "D:/GitHome/YangHuCost/tmp/testBuiltPageResult_测试模板.jsp");
-                        // rpt_xl_util.exportExcel(pageRst, pagesize, "local_test_rpt_excel", true, null, null, function(uuidName){
-                        //     console.log("excel uuid: " + uuidName);
-                        // });
+                        rpt_xl_util.exportExcel(pageRst, pagesize, "local_test_rpt_excel", true, null, null, function(uuidName){
+                            console.log("excel uuid: " + uuidName);
+                        });
                         // rpt_pdf_util.export_pdf_file(pageRst, pagesize, 'local_test_rpt_pdf', function(uuidName){
                         //     console.log("pdf uuid: " + uuidName);
                         // });