|
@@ -9,7 +9,7 @@ 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");
|
|
|
+let fsUtil = require("../../../public/fsUtil");
|
|
|
|
|
|
import rptTplFacade from "../facade/rpt_template_facade";
|
|
|
import demoTemplateFacade from "../facade/rpt_tpl_data_demo_facade";
|
|
@@ -71,8 +71,143 @@ function getAllPagesCommonOrg(rpt_id, pageSize, option, cb) {
|
|
|
}
|
|
|
);
|
|
|
}
|
|
|
-function setupCustomizeCfg(customizeCfg, rptTpl) {
|
|
|
- //
|
|
|
+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 = "宋体";
|
|
|
+ }
|
|
|
+ tmpObj["Content_Narrow"].Name = "Arial Narrow";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ 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) {
|
|
|
+ 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.flowTab) {
|
|
|
+ private_Setup_Format(rptTpl.flowTab[JV.NODE_FLOW_CONTENT][JV.PROP_FLOW_FIELDS]);
|
|
|
+ private_Setup_Format(rptTpl.flowTab[JV.NODE_FLOW_PAGE_SUM][JV.PROP_SUM_FIELDS]);
|
|
|
+ private_Setup_Format(rptTpl.flowTab[JV.NODE_FLOW_SEG_SUM][JV.PROP_SUM_FIELDS]);
|
|
|
+ private_Setup_Format(rptTpl.flowTab[JV.NODE_FLOW_GROUP][JV.PROP_SUM_FIELDS]);
|
|
|
+ for (let discrete of rptTpl.flowTab[JV.NODE_DISCRETE_INFO]) {
|
|
|
+ private_Setup_Format(discrete[JV.PROP_DISCRETE_FIELDS]);
|
|
|
+ }
|
|
|
+ if (rptTpl.flowTabEx) {
|
|
|
+ private_Setup_Format(rptTpl.flowTabEx[JV.NODE_FLOW_CONTENT][JV.PROP_FLOW_FIELDS]);
|
|
|
+ private_Setup_Format(rptTpl.flowTabEx[JV.NODE_FLOW_PAGE_SUM][JV.PROP_SUM_FIELDS]);
|
|
|
+ private_Setup_Format(rptTpl.flowTabEx[JV.NODE_FLOW_SEG_SUM][JV.PROP_SUM_FIELDS]);
|
|
|
+ private_Setup_Format(rptTpl.flowTabEx[JV.NODE_FLOW_GROUP][JV.PROP_SUM_FIELDS]);
|
|
|
+ for (let discrete of rptTpl.flowTabEx[JV.NODE_DISCRETE_INFO]) {
|
|
|
+ private_Setup_Format(discrete[JV.PROP_DISCRETE_FIELDS]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (rptTpl.billTab) {
|
|
|
+ private_Setup_Format(rptTpl.billTab[JV.NODE_BILL_CONTENT][JV.PROP_BILL_FIELDS]);
|
|
|
+ for (let discrete of rptTpl.billTab[JV.NODE_DISCRETE_INFO]) {
|
|
|
+ private_Setup_Format(discrete[JV.PROP_DISCRETE_FIELDS]);
|
|
|
+ }
|
|
|
+ } else if (rptTpl.crossTab) {
|
|
|
+ private_Setup_Format(rptTpl.crossTab[JV.NODE_CROSS_CONTENT][JV.TAB_CROSS_FIELDS]);
|
|
|
+ private_Setup_Format(rptTpl.crossTab[JV.NODE_CROSS_ROW][JV.TAB_CROSS_FIELDS]);
|
|
|
+ private_Setup_Format(rptTpl.crossTab[JV.NODE_CROSS_COL][JV.TAB_CROSS_FIELDS]);
|
|
|
+ private_Setup_Format(rptTpl.crossTab[JV.NODE_CROSS_COL_SUM][JV.TAB_CROSS_FIELDS]);
|
|
|
+ private_Setup_Format(rptTpl.crossTab[JV.NODE_CROSS_ROW_EXT][JV.TAB_CROSS_FIELDS]);
|
|
|
+ private_Setup_Format(rptTpl.crossTab[JV.NODE_CROSS_ROW_SUM_EXT][JV.TAB_CROSS_FIELDS]);
|
|
|
+ for (let discrete of rptTpl.crossTab[JV.NODE_DISCRETE_INFO]) {
|
|
|
+ private_Setup_Format(discrete[JV.PROP_DISCRETE_FIELDS]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
function getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, option, cb) {
|
|
|
let rptTpl = null;
|
|
@@ -88,15 +223,15 @@ function getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, custo
|
|
|
let printCom = JpcEx.createNew();
|
|
|
if (pageSize) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pageSize;
|
|
|
if (orientation) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_ORIENTATION] = orientation;
|
|
|
- if (customizeCfg) setupCustomizeCfg(customizeCfg, rptTpl);
|
|
|
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);
|
|
|
let maxPages = printCom.totalPages;
|
|
|
let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
|
|
|
if (pageRst) {
|
|
|
- //fsUtil.writeObjToFile(pageRst, "D:/GitHome/ConstructionCost/tmp/testBuiltPageResult.jsp");
|
|
|
+ fsUtil.writeObjToFile(pageRst, "D:/GitHome/ConstructionCost/tmp/testBuiltPageResult.jsp");
|
|
|
cb(null, pageRst);
|
|
|
} else {
|
|
|
cb('Have errors while on going...', null);
|