|  | @@ -8,6 +8,9 @@ import async from "async";
 | 
	
		
			
				|  |  |  import JV from "../rpt_component/jpc_value_define";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  let Template = mongoose.model('rpt_templates');
 | 
	
		
			
				|  |  | +let rptTplDataFacade = require("../facade/rpt_tpl_data_facade");
 | 
	
		
			
				|  |  | +//let fsUtil = require("../../../public/fsUtil");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  import rptTplFacade from "../facade/rpt_template_facade";
 | 
	
		
			
				|  |  |  import demoTemplateFacade from "../facade/rpt_tpl_data_demo_facade";
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -17,6 +20,7 @@ import rpt_xl_util from "../util/rpt_excel_util";
 | 
	
		
			
				|  |  |  import rpt_pdf_util from "../util/rpt_pdf_util";
 | 
	
		
			
				|  |  |  import fs from "fs";
 | 
	
		
			
				|  |  |  import strUtil from "../../../public/stringUtil";
 | 
	
		
			
				|  |  | +import rptDataExtractor from "../util/rpt_construct_data_util";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  //统一回调函数
 | 
	
		
			
				|  |  |  let callback = function(req, res, err, data){
 | 
	
	
		
			
				|  | @@ -68,42 +72,36 @@ function getAllPagesCommonOrg(rpt_id, pageSize, option, cb) {
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -function getAllPagesCommon(rpt_id, pageSize, cb) {
 | 
	
		
			
				|  |  | +function getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, option, cb) {
 | 
	
		
			
				|  |  |      let rptTpl = null;
 | 
	
		
			
				|  |  |      rptTplFacade.getRptTemplate(rpt_id).then(function(rst) {
 | 
	
		
			
				|  |  |          rptTpl = rst;
 | 
	
		
			
				|  |  |          if (rptTpl) {
 | 
	
		
			
				|  |  | -            let tplData = {};
 | 
	
		
			
				|  |  | -            if (rptTpl[JV.NODE_FIELD_MAP]) {
 | 
	
		
			
				|  |  | -                //1. 离散数据
 | 
	
		
			
				|  |  | -                if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS].length > 0) {
 | 
	
		
			
				|  |  | -                    tplData[JV.DATA_DISCRETE_DATA] = [];
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                //2. 主数据
 | 
	
		
			
				|  |  | -                if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS].length > 0) {
 | 
	
		
			
				|  |  | -                    tplData[JV.DATA_MASTER_DATA] = [];
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                //3. 从数据
 | 
	
		
			
				|  |  | -                if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS].length > 0) {
 | 
	
		
			
				|  |  | -                    tplData[JV.DATA_DETAIL_DATA] = [];
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                //2. Ex主数据
 | 
	
		
			
				|  |  | -                if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS_EX] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS_EX].length > 0) {
 | 
	
		
			
				|  |  | -                    tplData[JV.DATA_MASTER_DATA_EX] = [];
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                //3. Ex从数据
 | 
	
		
			
				|  |  | -                if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS_EX] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS_EX].length > 0) {
 | 
	
		
			
				|  |  | -                    tplData[JV.DATA_DETAIL_DATA_EX] = [];
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                //4. 重点: 开始组装$PROJECT对象
 | 
	
		
			
				|  |  | -                let $PROJECT = {};
 | 
	
		
			
				|  |  | -                //let $PROJECT.COMMON = {};
 | 
	
		
			
				|  |  | -                //return demoTemplateData.getPromise(rptTpl.ID_KEY);
 | 
	
		
			
				|  |  | -                //return demoTemplateData.findOne({"Data_Key": rptTpl.ID_KEY}).exec();
 | 
	
		
			
				|  |  | +            let rptDataUtil = new rptDataExtractor();
 | 
	
		
			
				|  |  | +            rptDataUtil.initialize((rptTpl._doc)?rptTpl._doc:rptTpl);
 | 
	
		
			
				|  |  | +            let filter = rptDataUtil.getDataRequestFilter();
 | 
	
		
			
				|  |  | +            rptTplDataFacade.prepareProjectData(user_id, prj_id, filter, function (err, msg, rawDataObj) {
 | 
	
		
			
				|  |  | +                if (!err) {
 | 
	
		
			
				|  |  | +                    let tplData = rptDataUtil.assembleData(rawDataObj);
 | 
	
		
			
				|  |  | +                    let printCom = JpcEx.createNew();
 | 
	
		
			
				|  |  | +                    rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pageSize;
 | 
	
		
			
				|  |  | +                    let defProperties = rptUtil.getReportDefaultCache();
 | 
	
		
			
				|  |  | +                    let dftOption = option||JV.PAGING_OPTION_NORMAL;
 | 
	
		
			
				|  |  | +                    printCom.initialize(rptTpl);
 | 
	
		
			
				|  |  | +                    printCom.analyzeData(rptTpl, tplData, defProperties, dftOption);
 | 
	
		
			
				|  |  | +                    let maxPages = printCom.totalPages;
 | 
	
		
			
				|  |  | +                    let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
 | 
	
		
			
				|  |  | +                    if (pageRst) {
 | 
	
		
			
				|  |  | +                        //fsUtil.wirteObjToFile(pageRst, "D:/GitHome/ConstructionCost/tmp/testBuiltPageResult.js");
 | 
	
		
			
				|  |  | +                        cb(null, pageRst);
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        cb('Have errors while on going...', null);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | -                cb('No report template data were found!', null);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    cb('No report data were found!', null);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              cb('No report template was found!', null);
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -111,7 +109,15 @@ function getAllPagesCommon(rpt_id, pageSize, cb) {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  module.exports = {
 | 
	
		
			
				|  |  | -    getReportAllPages: function(req, res){
 | 
	
		
			
				|  |  | +    getReportAllPages: function (req, res) {
 | 
	
		
			
				|  |  | +        let rpt_id = req.body.rpt_tpl_id, prj_id = req.body.prj_id,
 | 
	
		
			
				|  |  | +            user_id = req.body.user_id, pageSize = req.body.pageSize;
 | 
	
		
			
				|  |  | +        getAllPagesCommon(rpt_id, prj_id, user_id, pageSize, function (err, pageRst) {
 | 
	
		
			
				|  |  | +            callback(req, res, err, pageRst);
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    getTestReportAllPages: function(req, res){
 | 
	
		
			
				|  |  |          let rpt_id = req.body.ID;
 | 
	
		
			
				|  |  |          let pageSize = req.body.pageSize;
 | 
	
		
			
				|  |  |          getAllPagesCommonOrg(rpt_id, pageSize, JV.PAGING_OPTION_NORMAL, function(err, pageRst){
 | 
	
	
		
			
				|  | @@ -119,7 +125,7 @@ module.exports = {
 | 
	
		
			
				|  |  |              callback(req, res, err, pageRst);
 | 
	
		
			
				|  |  |          })
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    getExcel: function(req, res) {
 | 
	
		
			
				|  |  | +    getTestExcel: function(req, res) {
 | 
	
		
			
				|  |  |          let rpt_id = req.params.id,
 | 
	
		
			
				|  |  |              pageSize = req.params.size,
 | 
	
		
			
				|  |  |              rptName = req.params.rptName,
 | 
	
	
		
			
				|  | @@ -145,7 +151,7 @@ module.exports = {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          })
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    getExcelInOneBook: function(req, res) {
 | 
	
		
			
				|  |  | +    getTestExcelInOneBook: function(req, res) {
 | 
	
		
			
				|  |  |          let rpt_ids = req.params.ids.split(','),
 | 
	
		
			
				|  |  |              pageSize = req.params.size,
 | 
	
		
			
				|  |  |              rptName = req.params.rptName,
 | 
	
	
		
			
				|  | @@ -185,7 +191,7 @@ module.exports = {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          })
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    getPDF:function (req, res) {
 | 
	
		
			
				|  |  | +    getTestPDF:function (req, res) {
 | 
	
		
			
				|  |  |          let rpt_id = req.params.id,
 | 
	
		
			
				|  |  |              pageSize = req.params.size,
 | 
	
		
			
				|  |  |              rptName = req.params.rptName;
 |