Browse Source

add test case / excel output on going

TonyKang 8 years ago
parent
commit
92679a414f

+ 23 - 21
modules/reports/controllers/rpt_controller.js

@@ -26,31 +26,33 @@ module.exports = {
         var grp_id = req.body.grp_id;
         var tpl_id = req.body.tpl_id;
         var pageSize = req.body.pageSize;
-        Template.get(grp_id, tpl_id, function(err, rptTpl){
+        var rptTpl = null;
+        Template.getPromise(grp_id, tpl_id).then(function(rst) {
+            rptTpl = rst;
             if (rptTpl) {
-                TemplateData.get(tpl_id, function(err, tplData){
-                    if (tplData) {
-                        var printCom = JpcEx.createNew();
-                        rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pageSize;
-                        var defProperties = rptUtil.getReportDefaultCache();
-                        printCom.initialize(rptTpl);
-                        printCom.analyzeData(rptTpl, tplData, defProperties);
-                        var maxPages = printCom.totalPages;
-                        var pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
-                        if (pageRst) {
-                            callback(req, res, err, pageRst);
-                        } else {
-                            callback(req, res, "Have errors while on going...", null);
-                        }
-                        //callback(req, res, err, tplData);
+                return TemplateData.getPromise(tpl_id);
+            } else {
+                callback(req, res, 'No report template was found!', null);
+            }
+        }).then(function(tplData){
+                if (tplData) {
+                    var printCom = JpcEx.createNew();
+                    rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pageSize;
+                    var defProperties = rptUtil.getReportDefaultCache();
+                    printCom.initialize(rptTpl);
+                    printCom.analyzeData(rptTpl, tplData, defProperties);
+                    var maxPages = printCom.totalPages;
+                    var pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
+                    if (pageRst) {
+                        callback(req, res, null, pageRst);
                     } else {
-                        callback(req, res, err, null);
+                        callback(req, res, "Have errors while on going...", null);
                     }
-                })
-            } else {
-                callback(req, res, err, null);
+                } else {
+                    callback(req, res, 'No report data were found!', null);
+                }
             }
-        });
+        );
     },
     remove: function(req, res){
     }

+ 2 - 1
package.json

@@ -16,6 +16,7 @@
     "tape": "^4.6.3"
   },
   "dependencies": {
-    "bluebird": "^3.5.0"
+    "bluebird": "^3.5.0",
+    "excel-export": "^0.5.1"
   }
 }

+ 4 - 9
server.js

@@ -9,7 +9,7 @@ cfgCacheUtil.setupDftCache();
 
 var path = require('path');
 var session = require('express-session');
-//var DBStore = require('connect-mongo')(session);
+var DBStore = require('connect-mongo')(session);
 
 var app = express();
 var _rootDir = __dirname;
@@ -29,9 +29,8 @@ app.use(session({
     cookie: {maxAge: 1000*60*30},
     resave: false,
     saveUninitialized: true
-    /*
+    //*
     ,store: new DBStore({
-        //url: 'mongodb://localhost:27017/usersManages'
         url: 'mongodb://' + config.current.server + ':' + config.current.port + '/usersManages'
     })
     //*/
@@ -78,7 +77,7 @@ app.get('/report',  function(req, res) {
                 userID: req.session.userID});
     }
 });
-app.use("/report", rpt_Router);
+app.use("/report_api", rpt_Router);
 
 //zhangenping add 2017.0.13-----------------------------------------begin
 app.use(express.static(_rootDir+"/web"));
@@ -87,12 +86,8 @@ var rations_Router = require("./modules/rationLibEditor/routes/rationLibEditor_r
 app.use("/rationLibEditor",rations_Router);
 //-----------------------------------------------------------------end
 
-var apiRouter = express.Router();
-
-app.use('/api', apiRouter);
-
 app.use(function(req, res, next) {
-	res.status(404).sendFile(_rootDir+'/src/404.html');
+	res.status(404).send('404 Error');
 });
 app.use(function(err, req, res, next) {
     console.error(err.stack);

+ 37 - 0
test/unit/excel_export/fileReadWrite.js

@@ -0,0 +1,37 @@
+/**
+ * Created by Tony on 2017/3/27.
+ */
+var fs = require('fs');
+fs.readFile('../../tmp_data/test_bills_data2.js',function(err,data){
+    if(err) throw err;
+
+    var jsonObj = JSON.parse(data);
+    var space = ' ';
+    var newLine = '\n';
+    var chunks = [];
+    var length = 0;
+
+    for(var i=0,size=jsonObj.length;i<size;i++){
+        var one = jsonObj[i];
+        //what value you want
+        var value1 = one['ID'];
+        var value2 = one['FullCode'];
+        var value3 = one['Name'];
+        var value = value1 + space + value2 + space + value3 + space + newLine;
+        var buffer = new Buffer(value);
+        chunks.push(buffer);
+        length += buffer.length;
+    }
+
+    var resultBuffer = new Buffer(length);
+    for(var i=0,size=chunks.length,pos=0;i<size;i++){
+        chunks[i].copy(resultBuffer,pos);
+        pos += chunks[i].length;
+    }
+
+    fs.writeFile('../../../tmp/resut.text',resultBuffer,function(err){
+        if(err) throw err;
+        console.log('has finished');
+    });
+
+});

+ 20 - 0
test/unit/others/rounding.js

@@ -0,0 +1,20 @@
+/**
+ * Created by Tony on 2017/3/28.
+ */
+
+var test = require('tape');
+test('test javascript rounding: ', function (t) {
+    var f1 = 2.35, f2 = 2.45, f3 = 2.449999999999999995, f4 = 2.44999999999999995;
+    t.equal(Math.round(f1*10), 24);
+    t.equal(Math.round(f2*10), 25);
+    t.equal(Math.round(f3*10), 25);
+    t.end();
+});
+
+test('test javascript fixed rounding: ', function (t) {
+    var f1 = 2.35, f2 = 2.45, f3 = 2.449995;
+    t.equal(f1.toFixed(1), '2.4');
+    t.equal(f2.toFixed(1), '2.5');
+    t.equal(f3.toFixed(1), '2.5');
+    t.end();
+});

+ 12 - 1
test/unit/reports/testRpt.js

@@ -8,6 +8,7 @@ var Template = require('../../../modules/reports/models/rpt_template');
 var TemplateData = require('../../../modules/reports/models/rpt_temp_data');
 var JpcEx = require('../../../modules/reports/rpt_component/JpcEx');
 var rptUtil = require("../../../modules/reports/util/rpt_util");
+var fs = require('fs');
 
 test('test get report pages function: ', function (t) {
     rptUtil.setReportDefaultCache();
@@ -17,7 +18,7 @@ test('test get report pages function: ', function (t) {
 
 test('test get report pages function: ', function (t) {
     var grp_id = "SC";
-    var tpl_id = "07_1";
+    var tpl_id = "08_2";
     var pageSize = "A4";
     var rptTpl = null, tplData = null;
     Template.getPromise(grp_id, tpl_id).then(function(rst) {
@@ -38,6 +39,16 @@ test('test get report pages function: ', function (t) {
             printCom.analyzeData(rptTpl, tplData, defProperties);
             var maxPages = printCom.totalPages;
             var pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
+            if (pageRst) {
+                //save as file
+                var pageStr = JSON.stringify(pageRst);
+                var buffer = new Buffer(pageStr);
+                //var length = buffer.length;
+                fs.writeFile('../../../tmp/' + tpl_id + '.page.txt',buffer,function(err){
+                    if(err) throw err;
+                    console.log('has finished');
+                });
+            }
             t.equal(pageRst != null, true);
         }
         t.end();

+ 4 - 22
web/report/html/RptHome.html

@@ -9,9 +9,9 @@
     <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
     -->
 
-    <script src="/src/lib/jquery-1.9.1.min.js"></script>
-    <script type="text/javascript" src="/src/jpc_report/rpt_component/Jpc_Output_ValueDefine.js"></script>
-    <script type="text/javascript" src="/src/jpc_report/rpt_component/Jpc_Output.js"></script>
+    <script src="/lib/jquery/jquery.min.js"></script>
+    <script type="text/javascript" src="/web/report/js/Jpc_Output_ValueDefine.js"></script>
+    <script type="text/javascript" src="/web/report/js/Jpc_Output.js"></script>
     <table id="forPrintHide">
         <tr>
             <td width="5"></td>
@@ -56,24 +56,6 @@
     var rpt_id = null;
     var rpt_size = null;
 
-    window.onload = function (){
-        $.ajax({
-            type:"POST",
-            url: 'http://localhost:3010/api/setDftCache',
-            dataType: 'json',
-            cache: false,
-            timeout: 10000,
-            success: function(data){
-                defProperties = data;
-            },
-            error: function(jqXHR, textStatus, errorThrown){
-                //alert('error ' + textStatus + " " + errorThrown);
-                //or create local default cache...
-            }
-        });
-
-    }
-
     function printCurrentPage() {
         if (currentRptTpl) {
             //$("table#forPrintHide").css
@@ -132,7 +114,7 @@
             canvas.style.cursor = "wait";
             $.ajax({
                 type:"POST",
-                url: 'http://localhost:3010/api/getReport',
+                url: 'http://localhost:6060/report_api/getReport',
                 //url: 'http://www.smart_cost_tony.cn:3010/api/getReport',
                 data: {"grp_id": rpt_grp, "tpl_id": rpt_id, "pageSize": rpt_size},
                 dataType: 'json',

web/scripts/Jpc_Output.js → web/report/js/Jpc_Output.js


web/scripts/Jpc_Output_ValueDefine.js → web/report/js/Jpc_Output_ValueDefine.js