瀏覽代碼

code sync

TonyKang 8 年之前
父節點
當前提交
1e6dda8169

+ 52 - 65
modules/reports/controllers/rpt_controller.js

@@ -23,77 +23,64 @@ let callback = function(req, res, err, data){
     }
 };
 
-module.exports = {
-    getReportAllPages: function(req, res){
-        let grp_id = req.body.grp_id;
-        let tpl_id = req.body.tpl_id;
-        let pageSize = req.body.pageSize;
-        let rptTpl = null;
-        Template.findOne({GROUP_KEY: grp_id, ID_KEY: tpl_id}, '-_id').exec().then(function(rst) {
-            rptTpl = rst;
-            if (rptTpl) {
-                return TemplateData.getPromise(tpl_id);
+function getAllPagesCommon(req, res, rpt_id, pageSize, cb) {
+    let rptTpl = null;
+    Template.findOne({ID: rpt_id}, '-_id').exec().then(function(rst) {
+        rptTpl = rst;
+        if (rptTpl) {
+            if (rptTpl.ID_KEY) {
+                return TemplateData.getPromise(rptTpl.ID_KEY);
             } else {
-                callback(req, res, 'No report template was found!', null);
+                callback(req, res, 'No report template data were 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();
-                    printCom.initialize(rptTpl);
-                    printCom.analyzeData(rptTpl, tplData, defProperties);
-                    let maxPages = printCom.totalPages;
-                    let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
-                    if (pageRst) {
-                        callback(req, res, null, pageRst);
-                    } else {
-                        callback(req, res, "Have errors while on going...", null);
-                    }
+        } else {
+            callback(req, res, '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();
+                printCom.initialize(rptTpl);
+                printCom.analyzeData(rptTpl, tplData, defProperties);
+                let maxPages = printCom.totalPages;
+                let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
+                if (pageRst) {
+                    cb(pageRst);
                 } else {
-                    callback(req, res, 'No report data were found!', null);
+                    callback(req, res, "Have errors while on going...", null);
                 }
+            } else {
+                callback(req, res, 'No report data were found!', null);
             }
-        );
+        }
+    );
+};
+
+module.exports = {
+    getReportAllPages: function(req, res){
+        let rpt_id = req.body.ID;
+        let pageSize = req.body.pageSize;
+        getAllPagesCommon(req, res, rpt_id, pageSize, function(pageRst){
+            callback(req, res, null, pageRst);
+        })
     },
     getExcel: function(req, res) {
-        let grp_id = req.params.id, tpl_id = req.params.pm, pageSize = req.params.size, rptName = req.params.rptName;
-        let rptTpl = null;
-        Template.findOne({GROUP_KEY: grp_id, ID_KEY: tpl_id}, '-_id').exec().then(function(rst) {
-            rptTpl = rst;
-            if (rptTpl) {
-                return TemplateData.getPromise(tpl_id);
-            } else {
-                callback(req, res, '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();
-                    printCom.initialize(rptTpl);
-                    printCom.analyzeData(rptTpl, tplData, defProperties);
-                    let maxPages = printCom.totalPages;
-                    let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
-                    if (pageRst) {
-                        rpt_xl_util.exportExcel(pageRst, rptName, null, function(newName){
-                            res.setHeader('Content-Type', 'application/vnd.openxmlformats');
-                            res.setHeader("Content-Disposition", "attachment; filename=" + strUtil.getPinYinCamelChars(rptName) + ".xlsx");
-                            let filestream = fs.createReadStream(__dirname.slice(0, __dirname.length - 28) + '/tmp/' + newName + '.xlsx');
-                            filestream.on('data', function(chunk) {
-                                res.write(chunk);
-                            });
-                            filestream.on('end', function() {
-                                res.end();
-                            });
-                        });
-                    } else {
-                        callback(req, res, "Have errors while on going...", null);
-                    }
-                } else {
-                    callback(req, res, 'No report data were found!', null);
-                }
-            }
-        );
+        let rpt_id = req.params.id,
+            pageSize = req.params.size,
+            rptName = req.params.rptName;
+        getAllPagesCommon(req, res, rpt_id, pageSize, function(pageRst){
+            rpt_xl_util.exportExcel(pageRst, rptName, null, function(newName){
+                res.setHeader('Content-Type', 'application/vnd.openxmlformats');
+                res.setHeader("Content-Disposition", "attachment; filename=" + strUtil.getPinYinCamelChars(rptName) + ".xlsx");
+                let filestream = fs.createReadStream(__dirname.slice(0, __dirname.length - 28) + '/tmp/' + newName + '.xlsx');
+                filestream.on('data', function(chunk) {
+                    res.write(chunk);
+                });
+                filestream.on('end', function() {
+                    res.end();
+                });
+            });
+        })
     }
 };

+ 34 - 2
modules/reports/controllers/rpt_tpl_controller.js

@@ -5,9 +5,10 @@
 let async = require("async");
 let counter = require('../../../public/counter/counter');
 
-//let TplNode = require('../models/tpl_tree_node');
+let RptTplModel = require('../models/rpt_template');
 let TreeNodeModel = require('../models/tpl_tree_node');
 let rptTplDef = require("../../../public/rpt_tpl_def").getUtil();
+let stringUtil = require("../../../public/stringUtil");
 
 //统一回调函数
 let callback = function(req, res, err, message, data){
@@ -48,7 +49,7 @@ module.exports = {
             callback(req,res, err, "", results);
         });
     },
-    deleteTptTplNodes: function(req, res){
+    deleteRptTplNodes: function(req, res){
         let params = JSON.parse(req.body.params),
             nodeIds = params.nodeIds,
             preNodeId = params.preNodeId,
@@ -95,5 +96,36 @@ module.exports = {
                 }
             });
         });
+    },
+    createDftRptTpl: function(req, res) {
+        let params = JSON.parse(req.body.params),
+            treeNodeId = params.treeNodeId,
+            //grpChars = stringUtil.getPinYinFullChars(params.grpChars),
+            rptDftTplId = params.rptDftTplId;
+        let filter = {"ID": rptDftTplId};
+        RptTplModel.findOne(filter, '-_id').exec().then(function(dftTplRst) {
+            if (dftTplRst) {
+                dftTplRst["ID"] = treeNodeId;
+                dftTplRst["GROUP_KEY"] = "";
+                dftTplRst["ID_KEY"] = "";
+                let rptTpl = new RptTplModel(dftTplRst);
+                rptTpl.save(function (err, actTplRst) {
+                    if (err) {
+                        callback(req,res, "报表模板创建错误", "", null);
+                    } else {
+                        //TreeNodeModel.update();
+                        TreeNodeModel.update({ID: treeNodeId}, {"refId": treeNodeId}, function(err, rst){
+                            if (err) {
+                                callback(req,res, "报表模板创建错误", "", null);
+                            } else {
+                                callback(req,res, false, "", actTplRst);
+                            }
+                        });
+                    }
+                });
+            } else {
+                callback(req, res, 'Create report template failed!', null);
+            }
+        })
     }
 }

+ 2 - 0
modules/reports/models/rpt_template.js

@@ -6,12 +6,14 @@ let dbm = require("../../../config/db/db_manager");
 let smartcostdb = dbm.getCfgConnection("scConstruct");
 let Schema = mongoose.Schema;
 let RptTemplateSchema = new Schema({
+    "ID" : Number,
     "GROUP_KEY": String,
     "ID_KEY": String,
     "主信息": Schema.Types.Mixed,
     "指标_数据_映射": Schema.Types.Mixed,
     "布局框_集合": Array,
     "流水式表_信息": Schema.Types.Mixed,
+    "账单式表_信息": Schema.Types.Mixed,
     "交叉表_信息": Schema.Types.Mixed,
     "无映射离散指标_集合": Schema.Types.Mixed,
     "离散参数_集合": Schema.Types.Mixed,

+ 1 - 1
modules/reports/routes/report_router.js

@@ -7,6 +7,6 @@ let rptRouter = express.Router();
 let reportController = require('./../controllers/rpt_controller');
 
 rptRouter.post('/getReport', reportController.getReportAllPages);
-rptRouter.get('/getExcel/:id/:pm/:size/:rptName', reportController.getExcel);
+rptRouter.get('/getExcel/:id/:size/:rptName', reportController.getExcel);
 
 module.exports = rptRouter;

+ 3 - 2
modules/reports/routes/rpt_tpl_router.js

@@ -4,7 +4,8 @@ let reportTplController = require('./../controllers/rpt_tpl_controller');
 
 rptTplRouter.post('/createTplTreeNode', reportTplController.createTplTreeNode);
 rptTplRouter.post('/getRptTplTree', reportTplController.getRptTplTree);
-rptTplRouter.post('/updateTptTplNodes', reportTplController.updateTreeNodes);
-rptTplRouter.post('/deleteTptTplNodes', reportTplController.deleteTptTplNodes);
+rptTplRouter.post('/updateRptTplNodes', reportTplController.updateTreeNodes);
+rptTplRouter.post('/deleteRptTplNodes', reportTplController.deleteRptTplNodes);
+rptTplRouter.post('/createDftRptTpl', reportTplController.createDftRptTpl);
 
 module.exports = rptTplRouter;

+ 14 - 8
test/demo/stringTest.js

@@ -38,13 +38,19 @@ var strUtil = require('../../public/stringUtil');
 //    t.end();
 //})
 
-test('test number to Chinese', function(t){
-    //t.equal(strUtil.convertNumToChinese(1, true), '壹');
-    //t.equal(strUtil.convertNumToChinese(1, false), '一');
-    t.equal(strUtil.convertNumToChinese(11, false), '一十一');
-    t.equal(strUtil.convertNumToChinese(12, false), '一十二');
-    t.equal(strUtil.convertNumToChinese(21, false), '二十一');
-    //console.log(strUtil.convertNumToChinese(102, false));
-    t.equal(strUtil.convertNumToChinese(102, false), '一百零二');
+// test('test number to Chinese', function(t){
+//     //t.equal(strUtil.convertNumToChinese(1, true), '壹');
+//     //t.equal(strUtil.convertNumToChinese(1, false), '一');
+//     t.equal(strUtil.convertNumToChinese(11, false), '一十一');
+//     t.equal(strUtil.convertNumToChinese(12, false), '一十二');
+//     t.equal(strUtil.convertNumToChinese(21, false), '二十一');
+//     //console.log(strUtil.convertNumToChinese(102, false));
+//     t.equal(strUtil.convertNumToChinese(102, false), '一百零二');
+//     t.end();
+// });
+
+test('test 拼音', function(t){
+    t.equal(strUtil.getPinYinCamelChars("招标清单"), "ZBQD");
+    t.equal(strUtil.getPinYinCamelChars("1. 招标清单"), "1. ZBQD");
     t.end();
 })