|
@@ -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;
|