123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718 |
- /**
- * Created by Tony on 2017/3/13.
- */
- let UserModel = require("../../users/models/user_model");
- const mongoose = require("mongoose");
- const async = require("async");
- const JV = require("../rpt_component/jpc_value_define");
- 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');
- const rptTplFacade = require("../facade/rpt_template_facade");
- const demoTemplateFacade = require("../facade/rpt_tpl_data_demo_facade");
- const JpcEx = require("../rpt_component/jpc_ex");
- const rptUtil = require("../util/rpt_util");
- const rpt_xl_util = require("../util/rpt_excel_util");
- const rpt_pdf_util = require("../util/rpt_pdf_util");
- const rpt_svg_util = require("../util/rpt_svg_util");
- const fs = require("fs");
- const strUtil = require("../../../public/stringUtil");
- const rptDataExtractor = require("../util/rpt_construct_data_util");
- //统一回调函数
- let callback = function(req, res, err, data){
- if(err){
- res.json({success: false, error: err});
- }
- else{
- //res.send({success: true, data: data});
- res.json({success:true, data: data});
- }
- };
- const WATERMARK_FONT = {
- "Name": "宋体",
- "FontHeight": "32",
- "FontColor": "GOLD",
- "FontBold": "T",
- "FontItalic": "F",
- "FontUnderline": "F",
- "FontStrikeOut": "F",
- "FontAngle": "45"
- };
- function getAllPagesCommonOrg(rpt_id, pageSize, option, cb) {
- let rptTpl = null;
- rptTplFacade.getRptTemplate(rpt_id).then(function(rst) {
- rptTpl = rst;
- if (rptTpl) {
- if (rptTpl.ID_KEY) {
- return demoTemplateFacade.getDemoData(rptTpl.ID_KEY);
- } else {
- //callback(req, res, 'No report template data were found!', null);
- cb('No report template data were found!', null);
- }
- } else {
- //callback(req, res, 'No report template was found!', null);
- cb('No report template was found!', null);
- }
- }).then(function(tplData){
- if (tplData) {
- 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, JV.OUTPUT_TYPE_NORMAL);
- let maxPages = printCom.totalPages;
- let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
- if (pageRst) {
- cb(null, pageRst);
- } else {
- //callback(req, res, "Have errors while on going...", null);
- cb('Have errors while on going...', null);
- }
- } else {
- //callback(req, res, 'No report data were found!', null);
- cb('No report data were found!', null);
- }
- }
- );
- }
- function setupCustomizeCfg(customizeCfg, rptTpl, defProperties) {
- let tmpObj = {};
- //1. 字体
- let newFonts = [];
- for (let font of defProperties.fonts) {
- let copyFont = {};
- copyFont.ID = font.ID;
- for (let fontProp of JV.FONT_PROPS) {
- copyFont[fontProp] = font[fontProp];
- }
- newFonts.push(copyFont);
- tmpObj[font.ID] = copyFont;
- }
- let private_setup_font = function (propStr, newFont) {
- if (tmpObj[propStr]) {
- tmpObj[propStr].Name = newFont.Name;
- tmpObj[propStr].FontHeight = String(newFont.FontHeight);
- tmpObj[propStr].FontBold = newFont.FontBold;
- tmpObj[propStr].FontItalic = newFont.FontItalic;
- tmpObj[propStr].FontUnderline = newFont.FontUnderline;
- }
- };
- for (let custFont of customizeCfg.fonts) {
- switch (custFont.CfgDispName) {
- case "表标题":
- private_setup_font("ReportTitle_Main", custFont);
- break;
- case "列标题":
- private_setup_font("HeaderColumn", custFont);
- private_setup_font("FooterColumn", custFont);
- break;
- case "正文内容":
- private_setup_font("Content", custFont);
- break;
- case "合计":
- private_setup_font("GrandTotal", custFont);
- private_setup_font("SectionTotal", custFont);
- break;
- case "表眉/表脚":
- private_setup_font("Header", custFont);
- private_setup_font("Footer", custFont);
- break;
- }
- }
- // 1.1 窄体
- if (tmpObj["Content_Narrow"]) {
- if (customizeCfg.isNarrow) {
- tmpObj["Content_Narrow"].Name = "Arial Narrow";
- } else {
- if (tmpObj["Content"]) {
- tmpObj["Content_Narrow"].Name = tmpObj["Content"].Name;
- } else {
- tmpObj["Content_Narrow"].Name = "宋体";
- }
- }
- }
- defProperties.fonts = newFonts;
- //2. 页边距
- rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_LEFT] = customizeCfg.margins[JV.PROP_LEFT] / 10;
- rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_RIGHT] = customizeCfg.margins[JV.PROP_RIGHT] / 10;
- rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_TOP] = customizeCfg.margins[JV.PROP_TOP] / 10;
- rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_BOTTOM] = customizeCfg.margins[JV.PROP_BOTTOM] / 10;
- //3. 边框竖线
- if (!(customizeCfg.showVerticalLine)) {
- let private_copy_border = function (src) {
- let rst = {};
- rst.Position = src.Position;
- rst.LineWeight = src.LineWeight;
- rst.DashStyle = src.DashStyle;
- rst.Color = src.Color;
- return rst;
- };
- let newStyles = [];
- for (let i =0 ; i < defProperties.styles.length; i++) {
- let style = defProperties.styles[i];
- newStyles.push(style);
- if (style.ID === "BORDER_ALL_AROUND") {
- let newStyle = {};
- newStyle.ID = style.ID;
- newStyle.CfgDispName = style.CfgDispName;
- newStyle.border_style = [];
- for (let border of style.border_style) {
- let newBorder = private_copy_border(border);
- newStyle.border_style.push(newBorder);
- if (border.Position === "Left" || border.Position === "Right") {
- newBorder.LineWeight = 0;
- }
- }
- newStyles[newStyles.length - 1] = newStyle;
- }
- }
- defProperties.styles = newStyles;
- }
- //4. 补0
- let private_Setup_Format = function(tabFields) {
- if (tabFields) {
- for (let tabField of tabFields) {
- if (tabField[JV.PROP_FORMAT]) {
- tabField[JV.PROP_FORMAT] = tabField[JV.PROP_FORMAT].replace(new RegExp("#","gm"),"0");
- }
- }
- }
- };
- if (customizeCfg.fillZero) {
- if (rptTpl[JV.NODE_FLOW_INFO]) {
- if (rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_CONTENT]) private_Setup_Format(rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_CONTENT][JV.PROP_FLOW_FIELDS]);
- if (rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_PAGE_SUM]) private_Setup_Format(rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_PAGE_SUM][JV.PROP_SUM_FIELDS]);
- if (rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_SEG_SUM]) private_Setup_Format(rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_SEG_SUM][JV.PROP_SUM_FIELDS]);
- if (rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_GROUP] && rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES])
- private_Setup_Format(rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES][JV.PROP_SUM_FIELDS]);
- if (rptTpl[JV.NODE_FLOW_INFO][JV.NODE_DISCRETE_INFO]) {
- for (let discrete of rptTpl[JV.NODE_FLOW_INFO][JV.NODE_DISCRETE_INFO]) {
- private_Setup_Format(discrete[JV.PROP_DISCRETE_FIELDS]);
- }
- }
- if (rptTpl[JV.NODE_FLOW_INFO_EX]) {
- if (rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_CONTENT]) private_Setup_Format(rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_CONTENT][JV.PROP_FLOW_FIELDS]);
- if (rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_PAGE_SUM]) private_Setup_Format(rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_PAGE_SUM][JV.PROP_SUM_FIELDS]);
- if (rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_SEG_SUM]) private_Setup_Format(rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_SEG_SUM][JV.PROP_SUM_FIELDS]);
- if (rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_GROUP]) private_Setup_Format(rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_GROUP][JV.PROP_SUM_FIELDS]);
- if (rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_GROUP] && rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES])
- private_Setup_Format(rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES][JV.PROP_SUM_FIELDS]);
- if (rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_DISCRETE_INFO]) {
- for (let discrete of rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_DISCRETE_INFO]) {
- private_Setup_Format(discrete[JV.PROP_DISCRETE_FIELDS]);
- }
- }
- }
- } else if (rptTpl[JV.NODE_BILL_INFO]) {
- if (rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT]) private_Setup_Format(rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT][JV.PROP_BILL_FIELDS]);
- if (rptTpl[JV.NODE_BILL_INFO][JV.NODE_DISCRETE_INFO]) {
- for (let discrete of rptTpl[JV.NODE_BILL_INFO][JV.NODE_DISCRETE_INFO]) {
- private_Setup_Format(discrete[JV.PROP_DISCRETE_FIELDS]);
- }
- }
- } else if (rptTpl[JV.NODE_CROSS_INFO]) {
- if (rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_CONTENT]) private_Setup_Format(rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_CONTENT][JV.TAB_CROSS_FIELDS]);
- if (rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW]) private_Setup_Format(rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW][JV.TAB_CROSS_FIELDS]);
- if (rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_COL]) private_Setup_Format(rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_COL][JV.TAB_CROSS_FIELDS]);
- if (rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_COL_SUM]) private_Setup_Format(rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_COL_SUM][JV.TAB_CROSS_FIELDS]);
- if (rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_EXT]) private_Setup_Format(rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_EXT][JV.TAB_CROSS_FIELDS]);
- if (rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_SUM_EXT]) private_Setup_Format(rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_SUM_EXT][JV.TAB_CROSS_FIELDS]);
- if (rptTpl[JV.NODE_CROSS_INFO][JV.NODE_DISCRETE_INFO]) {
- for (let discrete of rptTpl[JV.NODE_CROSS_INFO][JV.NODE_DISCRETE_INFO]) {
- private_Setup_Format(discrete[JV.PROP_DISCRETE_FIELDS]);
- }
- }
- }
- }
- }
- function getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, option, outputType, cb) {
- let rptTpl = null;
- rptTplFacade.getRptTemplate(rpt_id).then(function(rst) {
- rptTpl = rst;
- if (rptTpl) {
- let rptDataUtil = new rptDataExtractor();
- rptDataUtil.initialize((rptTpl._doc)?rptTpl._doc:rptTpl);
- let summaryRst = [], economicRst = [];
- let filter = rptDataUtil.getDataRequestFilter(summaryRst, economicRst);
- let promiseArr = [null, null, null];
- if (summaryRst.length > 0) {
- if (summaryRst.indexOf(`Construct`) >= 0 || summaryRst.indexOf(`ConstructDetail`) >= 0) {
- promiseArr[0] = pm_facade.getSummaryInfoByTender(prj_id, pm_facade.projectType.project);
- }
- if (summaryRst.indexOf(`Segment`) >= 0 || summaryRst.indexOf(`SegmentDetail`) >= 0) {
- promiseArr[1] = pm_facade.getSummaryInfoByTender(prj_id, pm_facade.projectType.engineering);
- }
- }
- if (economicRst.length > 0) {
- // economicRst.push('ProjectInfoFields');
- // economicRst.push('ProjectFeatureFields');
- promiseArr[2] = pm_facade.getIndexReportData(prj_id, economicRst);
- }
- rptTplDataFacade.prepareProjectData(user_id, prj_id, filter, function (err, msg, rawDataObj) {
- if (!err) {
- let buildPageData = function() {
- try {
- let tplData = rptDataUtil.assembleData(rawDataObj);
- let printCom = JpcEx.createNew();
- if (pageSize) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pageSize;
- //console.log("orientation: " + (orientation === 'null'));
- if (orientation && (orientation !== 'null')) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_ORIENTATION] = orientation;
- let defProperties = rptUtil.getReportDefaultCache();
- if (customizeCfg) setupCustomizeCfg(customizeCfg, rptTpl, defProperties);
- let dftOption = option||JV.PAGING_OPTION_NORMAL;
- printCom.initialize(rptTpl);
- printCom.analyzeData(rptTpl, tplData, defProperties, dftOption, outputType);
- let maxPages = printCom.totalPages;
- let pageRst = null;
- if (maxPages > 0) {
- pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties, customizeCfg);
- } else {
- pageRst = printCom.outputAsPreviewPage(rptTpl, defProperties);
- }
- if (pageRst) {
- // fsUtil.writeObjToFile(pageRst, "D:/GitHome/ConstructionCost/tmp/testBuiltPageResult.jsp");
- cb(null, pageRst);
- } else {
- cb('Have errors while on going...', null);
- }
- } catch (ex) {
- console.log("报表数据异常: userId " + user_id + ", project id: " + prj_id);
- console.log(ex);
- cb('Exception occurs while on going...', null);
- }
- };
- //*/
- //取汇总数据流程
- if (promiseArr[0] !== null) {
- promiseArr[0].then(function (rst) {
- rawDataObj.Construct = rst.parent;
- rawDataObj.ConstructDetail = rst.subList;
- if (promiseArr[1] !== null) {
- promiseArr[1].then(function (rst) {
- rawDataObj.Segment = rst.parent;
- rawDataObj.SegmentDetail = rst.subList;
- buildPageData(rawDataObj, rptDataUtil, rptTpl);
- });
- } else {
- buildPageData(rawDataObj, rptDataUtil, rptTpl);
- }
- });
- } else if (promiseArr[1] !== null) {
- promiseArr[1].then(function (rst) {
- rawDataObj.Segment = rst.parent;
- rawDataObj.SegmentDetail = rst.subList;
- buildPageData(rawDataObj, rptDataUtil, rptTpl);
- });
- } else {
- if (promiseArr[2] !== null) {
- promiseArr[2].then(function (rst) {
- let ecoFieldsRst = (rst._doc)?rst._doc:rst;
- // fsUtil.writeObjToFile(ecoFieldsRst, "D:/GitHome/ConstructionCost/tmp/testEcoFieldsResult.jsp");
- rawDataObj.prjData.push({moduleName: 'ProjectInfoFields', data: ecoFieldsRst.ProjectInfoFields});
- rawDataObj.prjData.push({moduleName: 'ProjectFeatureFields', data: ecoFieldsRst.ProjectFeatureFields});
- rawDataObj.prjData.push({moduleName: 'ProjectCostFields', data: ecoFieldsRst.ProjectCostFields});
- rawDataObj.prjData.push({moduleName: 'ProjectEcoFields', data: ecoFieldsRst.ProjectEcoFields});
- rawDataObj.prjData.push({moduleName: 'ProjectLabMaterialFields', data: ecoFieldsRst.ProjectLabMaterialFields});
- rawDataObj.prjData.push({moduleName: 'ProjectQtyFields', data: ecoFieldsRst.ProjectQtyFields});
- buildPageData(rawDataObj, rptDataUtil, rptTpl);
- });
- } else {
- buildPageData(rawDataObj, rptDataUtil, rptTpl);
- }
- }
- /*/
- let tplData = rptDataUtil.assembleData(rawDataObj);
- let printCom = JpcEx.createNew();
- if (pageSize) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pageSize;
- //console.log("orientation: " + (orientation === 'null'));
- if (orientation && (orientation !== 'null')) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_ORIENTATION] = orientation;
- let defProperties = rptUtil.getReportDefaultCache();
- if (customizeCfg) setupCustomizeCfg(customizeCfg, rptTpl, defProperties);
- let dftOption = option||JV.PAGING_OPTION_NORMAL;
- printCom.initialize(rptTpl);
- printCom.analyzeData(rptTpl, tplData, defProperties, dftOption, outputType);
- let maxPages = printCom.totalPages;
- let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties, customizeCfg);
- if (pageRst) {
- // fsUtil.writeObjToFile(pageRst, "D:/GitHome/ConstructionCost/tmp/testBuiltPageResult.jsp");
- cb(null, pageRst);
- } else {
- cb('Have errors while on going...', null);
- }
- //*/
- } else {
- cb('No report data were found!', null);
- }
- });
- } else {
- cb('No report template was found!', null);
- }
- })
- }
- function fillWaterMark(pageRstArray) {
- for (const pageRst of pageRstArray) {
- if (!pageRst[JV.NODE_FONT_COLLECTION].hasOwnProperty(JV.PROP_WATERMARK)) {
- pageRst[JV.NODE_FONT_COLLECTION][JV.PROP_WATERMARK] = WATERMARK_FONT;
- }
- for (const page of pageRst.items) {
- const warterCell = {
- "font": "WaterMark",
- "control": "NewContent_Center",
- "style": "Default_None",
- "Value": "大司空云计价",
- "area": {
- "Left": 300,
- "Right": 500,
- "Top": 300,
- "Bottom": 500
- }
- };
- //page.cells.push(warterCell);
- page.cells.unshift(warterCell);
- }
- }
- }
- module.exports = {
- getReportAllPages: function (req, res) {
- let params = JSON.parse(req.body.params),
- rpt_id = params.rpt_tpl_id,
- prj_id = params.prj_id,
- pageSize = params.pageSize,
- orientation = params.orientation,
- customizeCfg = params.custCfg
- ;
- // req.session.sessionUser.ssoId
- let user_id = req.session.sessionUser.id;
- getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, null, JV.OUTPUT_TYPE_NORMAL, function (err, pageRst) {
- try {
- let userModel = new UserModel();
- // console.log('req.session.sessionUser.ssoId: ' + req.session.sessionUser.ssoId);
- userModel.isFree(req.session.sessionUser.ssoId, params.compilation).then(function(rst) {
- // console.log('is Free user? ' + rst);
- if (rst) {
- //加水印!
- // fillWaterMark([pageRst]);
- }
- callback(req, res, err, pageRst);
- });
- } catch (error) {
- //
- } finally {
- //callback(req, res, err, pageRst);
- }
- });
- },
- getMultiReports: function (req, res) {
- let params = JSON.parse(req.body.params),
- prj_id = params.prj_id,
- rpt_ids = params.rpt_ids.split(','),
- 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 id of rpt_ids) {
- parallelFunctions.push((function (rpt_id) {
- return function (cb) {
- getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_NORMAL, function (err, pageRst) {
- if(err){
- cb(err);
- }
- else{
- cb(null, pageRst);
- }
- })
- }
- })(parseInt(id)));
- }
- async.parallel(parallelFunctions, function (err, pageRstArray) {
- if (err) {
- callback(req, res, '数据有误', null);
- } else {
- callback(req, res, err, pageRstArray);
- }
- })
- },
- getMultiReportsEx: function (req, res) {
- //原则说明:把所有报表模板集中获取,统一filter,只读一次数据!(有空再整)
- let params = JSON.parse(req.body.params),
- prj_id = params.prj_id,
- rpt_ids = params.rpt_ids.split(','),
- pageSize = params.pageSize,
- orientation = params.orientation,
- customizeCfg = params.custCfg,
- option = params.option;
- let user_id = req.session.sessionUser.id;
- let dftOption = option||JV.PAGING_OPTION_NORMAL;
- },
- getReportAllPagesSvg: function (req, res) {
- let params = JSON.parse(req.body.params),
- rpt_id = params.rpt_tpl_id,
- prj_id = params.prj_id,
- pageSize = params.pageSize,
- orientation = params.orientation,
- customizeCfg = params.custCfg
- ;
- let user_id = req.session.sessionUser.id;
- getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, null, JV.OUTPUT_TYPE_SVG, function (err, pageRst) {
- let svgRstStrArr = rpt_svg_util.exportSvgStr(pageRst, 0, 0);
- callback(req, res, err, svgRstStrArr);
- });
- },
- createExcelFilesInOneBook: function (req, res) {
- let params = JSON.parse(req.body.params),
- prj_id = params.prj_id,
- rpt_ids = params.rpt_ids,
- rptName = params.rptName,
- 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];
- parallelFunctions.push((function (rpt_id) {
- return function (cb) {
- getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, function (err, pageRst) {
- if(err){
- cb(err);
- }
- else{
- cb(err, pageRst);
- }
- })
- }
- })(parseInt(r_id)));
- }
- async.parallel(parallelFunctions, function (err, pageRstArray) {
- if (err) {
- callback(req, res, '数据有误', null);
- } else {
- rpt_xl_util.exportExcelInOneBook(pageRstArray, pageSize, rptName, function(uuidName){
- let fileRst = {uuid: uuidName, reportName: rptName};
- callback(req, res, err, fileRst);
- });
- }
- })
- },
- createExcelFiles: 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,
- isOneSheet = params.isOneSheet,
- 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, JV.OUTPUT_TYPE_EXCEL, function (err, pageRst) {
- if(err){
- cb(err);
- } else {
- rpt_xl_util.exportExcel(pageRst, pageSize, rpt_name, isOneSheet, null, null, 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);
- }
- })
- },
- getFileByUUID: function (req, res) {
- let uuid = req.params.uuid,
- 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 + 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);
- });
- filestream.on('end', function() {
- res.end();
- });
- } catch (e) {
- console.log(e);
- }
- },
- getExcel: function(req, res) {
- let prj_id = req.params.prj_id,
- rpt_id = req.params.rpt_id,
- pageSize = req.params.size,
- orientation = req.params.orientation,
- rptName = req.params.rptName,
- isOneSheet = req.params.isOneSheet,
- option = req.params.option
- ;
- let customizeCfg = null;
- let user_id = req.session.sessionUser.id;
- let dftOption = option||JV.PAGING_OPTION_NORMAL;
- getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, function(err, pageRst){
- try {
- rpt_xl_util.exportExcel(pageRst, pageSize, rptName, isOneSheet, null, null, function(uuidName){
- 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/' + uuidName + '.xlsx');
- filestream.on('data', function(chunk) {
- res.write(chunk);
- });
- filestream.on('end', function() {
- res.end();
- });
- });
- } catch (e) {
- console.log(e);
- }
- })
- },
- getExcelInOneBook: function (req, res) {
- let prj_id = req.params.prj_id,
- rpt_ids = req.params.rpt_ids.split(','),
- pageSize = req.params.size,
- rptName = req.params.rptName,
- option = req.params.option;
- let user_id = req.session.sessionUser.id;
- let parallelFunctions = [];
- let dftOption = option||JV.PAGING_OPTION_NORMAL;
- for (let id of rpt_ids) {
- parallelFunctions.push((function (rpt_id) {
- return function (cb) {
- getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, null, null, dftOption, JV.OUTPUT_TYPE_EXCEL, function (err, pageRst) {
- if(err){
- cb(err);
- }
- else{
- cb(null, pageRst);
- }
- })
- }
- })(parseInt(id)));
- }
- async.parallel(parallelFunctions, function (err, pageRstArray) {
- if (err) {
- callback(req, res, '数据有误', null);
- } else {
- rpt_xl_util.exportExcelInOneBook(pageRstArray, pageSize, rptName, function(tmpFilePath){
- 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/' + tmpFilePath + '.xlsx');
- filestream.on('data', function(chunk) {
- res.write(chunk);
- });
- filestream.on('end', function() {
- res.end();
- });
- });
- }
- })
- },
- 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, JV.OUTPUT_TYPE_PDF, 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,
- pageSize = req.params.size,
- orientation = req.params.orientation,
- rptName = req.params.rptName
- ;
- let user_id = req.session.sessionUser.id;
- getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, null, JV.PAGING_OPTION_NORMAL, JV.OUTPUT_TYPE_PDF, 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");
- let rptNameURI = encodeURI(rptName);
- res.setHeader("Content-Disposition", "attachment; filename=\"" + rptNameURI + ".pdf\"; filename*=utf-8''" + rptNameURI + ".pdf" );
- let filestream = fs.createReadStream(__dirname.slice(0, __dirname.length - 28) + '/tmp/' + uuidName + '.pdf');
- filestream.on('data', function(chunk) {
- res.write(chunk);
- });
- filestream.on('end', function() {
- res.end();
- });
- })
- })
- }
- };
|