Browse Source

code sync

TonyKang 4 years ago
parent
commit
06aa744033

+ 3 - 1
modules/main/models/project_consts.js

@@ -53,7 +53,9 @@ let summaryConstList = [
     `Construct`,
     `ConstructDetail`,
     `Segment`,
-    `SegmentDetail`
+    `SegmentDetail`,
+    'Budget',
+    'BudgetDetail'
 ];
 
 let projectFieldConstList = [

+ 33 - 15
modules/reports/controllers/rpt_controller.js

@@ -11,6 +11,7 @@ let Template = mongoose.model('rpt_templates');
 let rptTplDataFacade = require("../facade/rpt_tpl_data_facade");
 let fsUtil = require("../../../public/fsUtil");
 let pm_facade = require('../../../modules/pm/facade/pm_facade');
+let bill_facade = require('../../../modules/main/facade/bill_facade');
 
 const rptTplFacade = require("../facade/rpt_template_facade");
 const demoTemplateFacade = require("../facade/rpt_tpl_data_demo_facade");
@@ -197,7 +198,7 @@ function setupCustomizeCfg(customizeCfg, rptTpl, defProperties) {
     }
 }
 
-async function getAllPagesCommon(user_id, prj_id, prj_ids, rpt_id, pageSize, orientation, customizeCfg, option, outputType, flag, cb) {
+async function getAllPagesCommon(construct_id, user_id, prj_id, prj_ids, rpt_id, pageSize, orientation, customizeCfg, option, outputType, flag, cb) {
     let rptTpl = null;
     rptTplFacade.getRptTemplate(rpt_id).then(function(rst) {
         rptTpl = rst;
@@ -208,6 +209,9 @@ async function getAllPagesCommon(user_id, prj_id, prj_ids, rpt_id, pageSize, ori
             let filter = rptDataUtil.getDataRequestFilter(summaryRst, economicRst);
             let promiseArr = [null, null, null];
             if (summaryRst.length > 0) {
+                if (summaryRst.indexOf(`Budget`) >= 0 || summaryRst.indexOf(`BudgetDetail`) >= 0) {
+                    promiseArr[0] = bill_facade.getBudgetSummary(construct_id); //与其他汇总类的请求互斥,不能同时出现!
+                }
                 if (summaryRst.indexOf(`Construct`) >= 0 || summaryRst.indexOf(`ConstructDetail`) >= 0) {
                     promiseArr[0] = pm_facade.getSummaryInfoByTender(prj_id, pm_facade.projectType.project);
                 }
@@ -325,12 +329,17 @@ async function getAllPagesCommon(user_id, prj_id, prj_ids, rpt_id, pageSize, ori
                         //取汇总数据流程
                         if (promiseArr[0] !== null) {
                             promiseArr[0].then(function (rst) {
-                                rawDataObj.Construct = rst.parent;
-                                rawDataObj.ConstructDetail = rst.subList;
+                                if (rst.hasOwnProperty('parent')) {
+                                    rawDataObj.Construct = rst.parent;
+                                    rawDataObj.ConstructDetail = rst.subList;
+                                } else {
+                                    rawDataObj.Budget = [];
+                                    rawDataObj.BudgetDetail = rst;
+                                }
                                 if (promiseArr[1] !== null) {
-                                    promiseArr[1].then(function (rst) {
-                                        rawDataObj.Segment = rst.parent;
-                                        rawDataObj.SegmentDetail = rst.subList;
+                                    promiseArr[1].then(function (rst2) {
+                                        rawDataObj.Segment = rst2.parent;
+                                        rawDataObj.SegmentDetail = rst2.subList;
                                         buildPageData(rawDataObj, rptDataUtil, rptTpl);
                                     });
                                 } else {
@@ -399,6 +408,7 @@ module.exports = {
     getReportAllPages: function (req, res) {
         let params = JSON.parse(req.body.params),
             rpt_id = params.rpt_tpl_id,
+            construct_id = params.construct_id,
             prj_id = params.prj_id,
             prj_ids = params.prj_ids,
             flag = params.flag;
@@ -408,7 +418,7 @@ module.exports = {
         ;
         // req.session.sessionUser.ssoId
         let user_id = req.session.sessionUser.id;
-        getAllPagesCommon(user_id, prj_id, prj_ids, rpt_id, pageSize, orientation, customizeCfg, null, JV.OUTPUT_TYPE_NORMAL, flag, function (err, pageRst) {
+        getAllPagesCommon(construct_id, user_id, prj_id, prj_ids, rpt_id, pageSize, orientation, customizeCfg, null, JV.OUTPUT_TYPE_NORMAL, flag, function (err, pageRst) {
             try {
                 let userModel = new UserModel();
                 // console.log('req.session.sessionUser.ssoId: ' + req.session.sessionUser.ssoId);
@@ -430,6 +440,7 @@ module.exports = {
     getMultiReports: function (req, res) {
         let params = JSON.parse(req.body.params),
             prj_id = params.prj_id,
+            construct_id = params.construct_id,
             prj_ids = params.prj_ids,
             compare_ids = params.compare_ids,
             rpt_ids = params.rpt_ids.split(','),
@@ -449,7 +460,7 @@ module.exports = {
             }
             parallelFunctions.push((function (rpt_id, flag) {
                 return function (cb) {
-                    getAllPagesCommon(user_id, prj_id, f_prj_ids, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_NORMAL, flag, function (err, pageRst) {
+                    getAllPagesCommon(construct_id, user_id, prj_id, f_prj_ids, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_NORMAL, flag, function (err, pageRst) {
                         if(err){
                             cb(err);
                         }
@@ -484,6 +495,7 @@ module.exports = {
     getReportAllPagesSvg: function (req, res) {
         let params = JSON.parse(req.body.params),
             rpt_id = params.rpt_tpl_id,
+            construct_id = params.construct_id,
             flag = params.flag;
             prj_id = params.prj_id,
             prj_ids = params.prj_ids,
@@ -492,7 +504,7 @@ module.exports = {
             customizeCfg = params.custCfg
         ;
         let user_id = req.session.sessionUser.id;
-        getAllPagesCommon(user_id, prj_id, prj_ids, rpt_id, pageSize, orientation, customizeCfg, null, JV.OUTPUT_TYPE_SVG, flag, function (err, pageRst) {
+        getAllPagesCommon(construct_id, user_id, prj_id, prj_ids, rpt_id, pageSize, orientation, customizeCfg, null, JV.OUTPUT_TYPE_SVG, flag, function (err, pageRst) {
             let svgRstStrArr = rpt_svg_util.exportSvgStr(pageRst, 0, 0);
             callback(req, res, err, svgRstStrArr);
         });
@@ -501,6 +513,7 @@ module.exports = {
     createExcelFilesInOneBook: function (req, res) {
         let params = JSON.parse(req.body.params),
             prj_id = params.prj_id,
+            construct_id = params.construct_id,
             prj_ids = params.prj_ids,
             compare_ids = params.compare_ids,
             rpt_ids = params.rpt_ids,
@@ -521,7 +534,7 @@ module.exports = {
             }
             parallelFunctions.push((function (rpt_id, flag) {
                 return function (cb) {
-                    getAllPagesCommon(user_id, prj_id, f_prj_ids, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, flag, function (err, pageRst) {
+                    getAllPagesCommon(construct_id, user_id, prj_id, f_prj_ids, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, flag, function (err, pageRst) {
                         if(err){
                             cb(err);
                         }
@@ -547,6 +560,7 @@ module.exports = {
     createExcelFiles: function (req, res) {
         let params = JSON.parse(req.body.params),
             prj_id = params.prj_id,
+            construct_id = params.construct_id,
             prj_ids = params.prj_ids,
             compare_ids = params.compare_ids,
             rpt_ids = params.rpt_ids,
@@ -569,7 +583,7 @@ module.exports = {
             let r_name = rpt_names[idx];
             parallelFunctions.push((function (rpt_id, rpt_name, flag) {
                 return function (cb) {
-                    getAllPagesCommon(user_id, prj_id, f_prj_ids, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, flag, function (err, pageRst) {
+                    getAllPagesCommon(construct_id, user_id, prj_id, f_prj_ids, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, flag, function (err, pageRst) {
                         if(err){
                             cb(err);
                         } else {
@@ -615,6 +629,7 @@ module.exports = {
     getExcel: function(req, res) {
         let prj_id = req.params.prj_id,
             prj_ids = params.prj_ids,
+            construct_id = params.construct_id,
             rpt_id = req.params.rpt_id,
             flag = req.params.flag,
             pageSize = req.params.size,
@@ -626,7 +641,7 @@ module.exports = {
         let customizeCfg = null;
         let user_id = req.session.sessionUser.id;
         let dftOption = option||JV.PAGING_OPTION_NORMAL;
-        getAllPagesCommon(user_id, prj_id, prj_ids, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, flag, function(err, pageRst){
+        getAllPagesCommon(construct_id, user_id, prj_id, prj_ids, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, flag, function(err, pageRst){
             try {
                 rpt_xl_util.exportExcel(pageRst, pageSize, rptName, isOneSheet, null, null, function(uuidName){
                     res.setHeader('Content-Type', 'application/vnd.openxmlformats');
@@ -648,6 +663,7 @@ module.exports = {
     getExcelInOneBook: function (req, res) {
         let prj_id = req.params.prj_id,
             prj_ids = params.prj_ids,
+            construct_id = params.construct_id,
             rpt_ids = req.params.rpt_ids.split(','),
             flags = req.params.flags;
             pageSize = req.params.size,
@@ -660,7 +676,7 @@ module.exports = {
             let id = rpt_ids[idx], r_flag = flags[idx];
             parallelFunctions.push((function (rpt_id, flag) {
                 return function (cb) {
-                    getAllPagesCommon(user_id, prj_id, prj_ids, rpt_id, pageSize, null, null, dftOption, JV.OUTPUT_TYPE_EXCEL, flag, function (err, pageRst) {
+                    getAllPagesCommon(construct_id, user_id, prj_id, prj_ids, rpt_id, pageSize, null, null, dftOption, JV.OUTPUT_TYPE_EXCEL, flag, function (err, pageRst) {
                         if(err){
                             cb(err);
                         }
@@ -693,6 +709,7 @@ module.exports = {
     createPdfFiles: function (req, res) {
         let params = JSON.parse(req.body.params),
             prj_id = params.prj_id,
+            construct_id = params.construct_id,
             prj_ids = params.prj_ids,
             rpt_ids = params.rpt_ids,
             flags = params.flags,
@@ -709,7 +726,7 @@ module.exports = {
             let r_name = rpt_names[idx];
             parallelFunctions.push((function (rpt_id, rpt_name, flag) {
                 return function (cb) {
-                    getAllPagesCommon(user_id, prj_id, prj_ids, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_PDF, flag, function (err, pageRst) {
+                    getAllPagesCommon(construct_id, user_id, prj_id, prj_ids, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_PDF, flag, function (err, pageRst) {
                         if(err){
                             cb(err);
                         }
@@ -736,13 +753,14 @@ module.exports = {
         let prj_id = req.params.prj_id,
             prj_ids = params.prj_ids,
             rpt_id = req.params.rpt_id,
+            construct_id = req.params.construct_id,
             flag = req.params.flag;
             pageSize = req.params.size,
             orientation = req.params.orientation,
             rptName = req.params.rptName
         ;
         let user_id = req.session.sessionUser.id;
-        getAllPagesCommon(user_id, prj_id, prj_ids, rpt_id, pageSize, orientation, null, JV.PAGING_OPTION_NORMAL, JV.OUTPUT_TYPE_PDF, flag, function(err, pageRst){
+        getAllPagesCommon(construct_id, user_id, prj_id, prj_ids, rpt_id, pageSize, orientation, null, JV.PAGING_OPTION_NORMAL, JV.OUTPUT_TYPE_PDF, flag, function(err, pageRst){
             rpt_pdf_util.export_pdf_file(pageRst, pageSize, rptName,function (uuidName) {
                 res.setHeader('Content-Type', 'application/vnd.openxmlformats');
                 // res.setHeader("Content-Disposition", "attachment; filename=" + strUtil.getPinYinCamelChars(rptName) + ".pdf");

+ 8 - 1
modules/reports/util/rpt_construct_data_util.js

@@ -372,7 +372,8 @@ class Rpt_Data_Extractor {
             }
         }
         //还有汇总的...
-        if (rawDataObj.hasOwnProperty(`Construct`) || rawDataObj.hasOwnProperty(`ConstructDetail`) || rawDataObj.hasOwnProperty(`Segment`) || rawDataObj.hasOwnProperty(`SegmentDetail`)) {
+        if (rawDataObj.hasOwnProperty(`Construct`) || rawDataObj.hasOwnProperty(`ConstructDetail`) || rawDataObj.hasOwnProperty(`Segment`) || rawDataObj.hasOwnProperty(`SegmentDetail`)
+        || rawDataObj.hasOwnProperty(`Budget`) || rawDataObj.hasOwnProperty(`BudgetDetail`)) {
             $PROJECT.SUMMARY = {};
             if (rawDataObj.Construct) {
                 setupMainFunc($PROJECT.SUMMARY, `Construct`, rawDataObj.Construct);
@@ -386,6 +387,12 @@ class Rpt_Data_Extractor {
             if (rawDataObj.SegmentDetail) {
                 setupFunc($PROJECT.SUMMARY, `SegmentDetail`, {"data": rawDataObj.SegmentDetail});
             }
+            if (rawDataObj.Budget) {
+                setupMainFunc($PROJECT.SUMMARY, `Budget`, rawDataObj.Budget);
+            }
+            if (rawDataObj.BudgetDetail) {
+                setupFunc($PROJECT.SUMMARY, `BudgetDetail`, {"data": rawDataObj.BudgetDetail});
+            }
         }
 
         if (tpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {

+ 6 - 1
web/building_saas/report/js/rpt_main.js

@@ -108,7 +108,7 @@ let zTreeOprObj = {
         params.engineerId = projectObj.project.projectInfo.property.engineering;
         let private_chk_hide = function (chkTplItem) {
             //考虑未来拓展,统一在此判断报表模板是否显示
-            //*
+            /*
             let rst = false;
             if (chkTplItem.hasOwnProperty('flags') && chkTplItem.flags.hasOwnProperty('taxType') && chkTplItem.flags['taxType'] !== null &&
                 parseInt(chkTplItem.flags['taxType']) !== parseInt(projectObj.project.projectInfo.property.taxType)) {
@@ -359,6 +359,7 @@ let zTreeOprObj = {
     requestReport: function (params) {
         let me = zTreeOprObj;
         params.compilation = projectObj.project.projectInfo.compilation;
+        params.construct_id = projectObj.project.property.rootProjectID;
         hintBox.waitBox();
         CommonAjax.postEx("report_api/getReport", params, 15000, true,
             function(result){
@@ -508,6 +509,7 @@ let rptControlObj = {
                 flags.push(flag);
             }
             params.prj_id = projectObj.project.projectInfo.ID;
+            params.construct_id = projectObj.project.property.rootProjectID;
             params.compare_ids = compare_ids;
             params.rpt_ids = refRptTplIds;
             params.flags = flags;
@@ -568,6 +570,7 @@ let rptControlObj = {
                 flags.push(flag);
             }
             params.prj_id = projectObj.project.projectInfo.ID;
+            params.construct_id = projectObj.project.property.rootProjectID;
             params.compare_ids = compare_ids;
             params.rpt_ids = rpt_ids;
             params.flags = flags;
@@ -648,6 +651,7 @@ let rptControlObj = {
             }
             let params = {};
             params.prj_id = projectObj.project.projectInfo.ID;
+            params.construct_id = projectObj.project.property.rootProjectID;
             params.compare_ids = compare_ids;
             params.rpt_ids = rpt_ids;
             params.flags = flags;
@@ -700,6 +704,7 @@ let rptControlObj = {
             params.orientation = ((zTreeOprObj.checkedRptTplNodes.length > 1)?null:rptControlObj.getCurrentOrientation());
             params.custCfg = zTreeOprObj.reportPageCfg;
             params.prj_id = projectObj.project.projectInfo.ID;
+            params.construct_id = projectObj.project.property.rootProjectID;
             for (let tplNode of zTreeOprObj.checkedRptTplNodes) {
                 rptIds.push(tplNode.refId);
                 rpt_names.push(tplNode.name);

+ 1 - 0
web/building_saas/report/js/rpt_print.js

@@ -11,6 +11,7 @@ let rptPrintHelper = {
             params.orientation = ((zTreeOprObj.checkedRptTplNodes.length > 1)?null:rptControlObj.getCurrentOrientation());
             params.custCfg = zTreeOprObj.reportPageCfg;
             params.prj_id = projectObj.project.projectInfo.ID;
+            params.construct_id = projectObj.project.property.rootProjectID;
             for (let tplNode of zTreeOprObj.checkedRptTplNodes) {
                 rptIds.push(tplNode.refId);
                 let flag = null;