瀏覽代碼

Merge branch 'master' into olym

caiaolin 8 年之前
父節點
當前提交
b354c7b25f

+ 14 - 1
config/config.js

@@ -17,5 +17,18 @@ module.exports = {
         var me = this;
         me.current.server = me.prod.server;
         me.current.port = me.prod.port;
-    }
+    },
+    options:{
+            "user": "",
+            "pass": "",
+            "auth": {
+                "authdb": ""
+            },
+            "server": {
+                 "socketOptions": {
+                "connectTimeoutMS": 10000
+                }
+            }
+
+        }
 }

+ 15 - 0
config/db/db_manager.js

@@ -45,5 +45,20 @@ module.exports = {
         mg.connect('mongodb://' + config.current.server + ":" + config.current.port + '/' + dbName);
         return mg;
         //*/
+    },
+    connect:function () {
+        var config = require("../config.js");
+        var dbURL = 'mongodb://' + config.current.server + ":" + config.current.port + '/scConstruct';
+
+        var db = mg.connect(dbURL, config.options, function(err) {
+            if (err) {
+                console.log('Could not connect to MongoDB!');
+                console.log(err);
+            }
+        });
+        mg.connection.on('error', function(err) {
+            console.log('MongoDB connection error:', err);
+            process.exit(-1);
+        });
     }
 };

+ 47 - 0
modules/common/fileUtils.js

@@ -0,0 +1,47 @@
+'use strict';
+
+/**
+ * Module dependencies.
+ */
+var _ = require('lodash'),
+	glob = require('glob');
+
+
+/**
+ * Get files by glob patterns
+ */
+module.exports.getGlobbedFiles = function(globPatterns, removeRoot) {
+	// For context switching
+	var _this = this;
+
+	// URL paths regex
+	var urlRegex = new RegExp('^(?:[a-z]+:)?\/\/', 'i');
+
+	// The output array
+	var output = [];
+
+	// If glob pattern is array so we use each pattern in a recursive way, otherwise we use glob
+	if (_.isArray(globPatterns)) {
+		globPatterns.forEach(function(globPattern) {
+			output = _.union(output, _this.getGlobbedFiles(globPattern, removeRoot));
+		});
+	} else if (_.isString(globPatterns)) {
+		if (urlRegex.test(globPatterns)) {
+			output.push(globPatterns);
+		} else {
+			glob(globPatterns, {
+				sync: true
+			}, function(err, files) {
+				if (removeRoot) {
+					files = files.map(function(file) {
+						return file.replace(removeRoot, '');
+					});
+				}
+
+				output = _.union(output, files);
+			});
+		}
+	}
+
+	return output;
+};

+ 14 - 0
modules/ration_glj/controllers/ration_glj_controller.js

@@ -0,0 +1,14 @@
+/**
+ * Created by chen on 2017/6/29.
+ */
+let mongoose = require("mongoose")
+module.exports={
+    createRationGLJ:createRationGLJ
+}
+function createRationGLJ() {
+    let gls = mongoose.model('ration_glj');
+    gls.create({'GLJID':1,'basePrice':23.23,'name':"testgls"},function(err, gls){
+        console.log(gls)
+    })
+}
+

+ 30 - 0
modules/ration_glj/models/ration_glj.js

@@ -0,0 +1,30 @@
+/**
+ * Created by chen on 2017/6/29.
+ */
+var mongoose = require('mongoose'),
+    Schema = mongoose.Schema;
+
+/**
+ * Schema
+ */
+var ration_glj = new Schema({
+    ID: String,
+    GLJID:Number,
+    projectID: Number,
+    name:String,
+    code:String,
+    specs:String,
+    unit:String,
+    basePrice:Number,
+    gljDistType:String,
+    gljType:Number,
+    quantity:Number,
+    customQuantity:Number,
+    rationItemQuantity:Number,
+    marketPrice:Number,
+    adjustPrice:Number,
+    marketPriceAdjest:Number,
+    isEstimate:Boolean
+});
+
+mongoose.model('ration_glj', ration_glj);

+ 3 - 3
modules/reports/controllers/rpt_controller.js

@@ -4,7 +4,7 @@
 
 let JV = require('../rpt_component/jpc_value_define');
 let Template = require('../models/rpt_template');
-let TemplateData = require('../models/rpt_tpl_data');
+let TemplateData = require('../models/rpt_tpl_data_demo');
 let JpcEx = require('../rpt_component/jpc_ex');
 //let cache = require('../../../public/cache/cacheUtil');
 let rptUtil = require("../util/rpt_util");
@@ -29,7 +29,7 @@ module.exports = {
         let tpl_id = req.body.tpl_id;
         let pageSize = req.body.pageSize;
         let rptTpl = null;
-        Template.getPromise(grp_id, tpl_id).then(function(rst) {
+        Template.findOne({GROUP_KEY: grp_id, ID_KEY: tpl_id}, '-_id').exec().then(function(rst) {
             rptTpl = rst;
             if (rptTpl) {
                 return TemplateData.getPromise(tpl_id);
@@ -59,7 +59,7 @@ module.exports = {
     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.getPromise(grp_id, tpl_id).then(function(rst) {
+        Template.findOne({GROUP_KEY: grp_id, ID_KEY: tpl_id}, '-_id').exec().then(function(rst) {
             rptTpl = rst;
             if (rptTpl) {
                 return TemplateData.getPromise(tpl_id);

+ 64 - 11
modules/reports/controllers/rpt_tpl_controller.js

@@ -2,7 +2,12 @@
  * Created by Tony on 2017/6/1.
  */
 
-let TplNode = require('../models/tpl_tree_node');
+let async = require("async");
+let counter = require('../../../public/counter/counter');
+
+//let TplNode = require('../models/tpl_tree_node');
+let TreeNodeModel = require('../models/tpl_tree_node');
+let rptTplDef = require("../../../public/rpt_tpl_def").getUtil();
 
 //统一回调函数
 let callback = function(req, res, err, message, data){
@@ -15,15 +20,32 @@ module.exports = {
             grpType = params.grpType,
             userId = params.userId,
             tplType = params.tplType;
-        TplNode.getTplTreeNodes(grpType, userId, tplType, function(err, data){
-            callback(req,res,err,"", data);
-        })
+        let filter = {"grpType": grpType, "$or": [{"isDeleted": null}, {"isDeleted": false} ]};
+        if (userId) {
+            filter.userId = userId;
+        }
+        if ((tplType && tplType !== rptTplDef.TplType.ALL)) {
+            filter.tplType = tplType;
+        }
+        TreeNodeModel.find(filter, '-_id', function(err, data){
+            if (err) {
+                callback(req,res, true,"", null);
+            } else callback(req,res,false,"", data);
+        });
     },
     updateTreeNodes: function(req, res) {
         let params = JSON.parse(req.body.params),
             nodes = params.nodes;
-        TplNode.updateTreeNodes(nodes, function(err,results){
-            callback(req,res, err, "", results)
+        let functions = [];
+        for (let node of nodes) {
+            functions.push((function(doc) {
+                return function(cb) {
+                    TreeNodeModel.update({ID: doc.ID}, doc, cb);
+                };
+            })(node));
+        }
+        async.parallel(functions, function(err, results) {
+            callback(req,res, err, "", results);
         });
     },
     deleteTptTplNodes: function(req, res){
@@ -31,16 +53,47 @@ module.exports = {
             nodeIds = params.nodeIds,
             preNodeId = params.preNodeId,
             preNodeNextId = params.preNodeNextId;
-        TplNode.removeNodes(nodeIds, preNodeId, preNodeNextId, function(err,results){
-            callback(req,res, err, "", results)
+        let functions = [];
+        if (preNodeId !== -1) {
+            functions.push((function(nodeId, nextId) {
+                return function(cb) {
+                    TreeNodeModel.update({ID: nodeId}, {"NextSiblingID": nextId}, cb);
+                };
+            })(preNodeId, preNodeNextId));
+        }
+        for (let nId of nodeIds) {
+            functions.push((function(nodeId) {
+                return function(cb) {
+                    TreeNodeModel.update({ID: nodeId}, {"isDeleted": true}, cb);
+                };
+            })(nId));
+        }
+        async.parallel(functions, function(err, results) {
+            callback(req,res, err, "", results);
         });
     },
     createTplTreeNode: function(req, res){
         let params = JSON.parse(req.body.params),
             lastNodeId = params.lastNodeId,
             nodeData = params.rawNodeData;
-        TplNode.createTplTreeNode(nodeData, lastNodeId, function(err, data){
-            callback(req,res,err,"", data);
-        })
+        counter.counterDAO.getIDAfterCount(counter.moduleName.report, 1, function(err, result){
+            nodeData.ID = result.value.sequence_value;
+            let node = new TreeNodeModel(nodeData);
+            node.save(function (err, result) {
+                if (err) {
+                    callback(req,res, "树节点错误!", "", null);
+                } else {
+                    if (lastNodeId > 0) {
+                        TreeNodeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){
+                            if (err) {
+                                callback(req,res, "树节点错误!", "", null);
+                            } else {
+                                callback(req,res, false, "", result);
+                            }
+                        });
+                    } else callback(req,res, false, "", result);
+                }
+            });
+        });
     }
 }

+ 2 - 25
modules/reports/models/rpt_cfg.js

@@ -3,7 +3,7 @@
  */
 let mongoose = require('mongoose');
 let dbm = require("../../../config/db/db_manager");
-let smartcostdb = dbm.getCfgConnection("Reports");
+let smartcostdb = dbm.getCfgConnection("scConstruct");
 let Schema = mongoose.Schema;
 let FormatSchema = new Schema({
     "ID" : String,
@@ -46,27 +46,4 @@ let RptCfgSchema = new Schema({
 
 let Rpt_Cfg_Mdl = smartcostdb.model("rpt_cfg", RptCfgSchema, "rpt_cfg");
 
-class RptCfgDAO {
-    getByUserId(userId, callback){
-        Rpt_Cfg_Mdl.find({userId: userId}, '-_id', function(err, templates){
-            if(templates.length){
-                callback(false, templates[0]);
-            }
-            else{
-                callback('no record was found!');
-            }
-        })
-    };
-    getAll(id, callback){
-        Rpt_Cfg_Mdl.find({}, '-_id', function(err, templates){
-            if(templates.length){
-                callback(false, templates);
-            }
-            else{
-                callback('no record was found!');
-            }
-        })
-    };
-};
-
-module.exports = new RptCfgDAO();
+module.exports = Rpt_Cfg_Mdl;

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

@@ -3,7 +3,7 @@
  */
 let mongoose = require('mongoose');
 let dbm = require("../../../config/db/db_manager");
-let smartcostdb = dbm.getCfgConnection("Reports");
+let smartcostdb = dbm.getCfgConnection("scConstruct");
 let Schema = mongoose.Schema;
 let RptTemplateSchema = new Schema({
     "GROUP_KEY": String,
@@ -20,21 +20,4 @@ let RptTemplateSchema = new Schema({
 
 let Template = smartcostdb.model("rpt_templates", RptTemplateSchema, "rpt_templates");
 
-class RplTplDAO{
-    get(grpId, id, callback){
-        Template.find({GROUP_KEY: grpId, ID_KEY: id}, '-_id', function(err, templates){
-            if(templates.length){
-                callback(false, templates[0]);
-            }
-            else{
-                callback('查找不到报表模板!');
-            }
-        })
-    };
-    getPromise(grpId, id){
-        let rst = Template.findOne({GROUP_KEY: grpId, ID_KEY: id}, '-_id').exec() ;
-        return rst;
-    }
-}
-
-module.exports = new RplTplDAO();
+module.exports = Template;

modules/reports/models/rpt_tpl_data.js → modules/reports/models/rpt_tpl_data_demo.js


+ 2 - 77
modules/reports/models/tpl_tree_node.js

@@ -3,9 +3,7 @@
  */
 var mongoose = require('mongoose');
 var dbm = require("../../../config/db/db_manager");
-var db = dbm.getCfgConnection("Reports");
-var async = require("async");
-var rptTplDef = require("../../../public/rpt_tpl_def").getUtil();
+var db = dbm.getCfgConnection("scConstruct");
 var Schema = mongoose.Schema;
 var TreeNodeSchema = new Schema({
     ID:Number,
@@ -21,78 +19,5 @@ var TreeNodeSchema = new Schema({
 });
 
 var TreeNodeModel = db.model("rpt_tpl_tree", TreeNodeSchema, "rpt_tpl_tree");
-var counter = require('../../../public/counter/counter');
 
-//var RplTplTreeDAO = function(){};
-class RplTplTreeDAO{
-    getTplTreeNodes(grpType, userId, tplType, callback) {
-        var filter = {"grpType": grpType, "$or": [{"isDeleted": null}, {"isDeleted": false} ]};
-        if (userId) {
-            filter.userId = userId;
-        }
-        if ((tplType && tplType !== rptTplDef.TplType.ALL)) {
-            filter.tplType = tplType;
-        }
-        TreeNodeModel.find(filter, '-_id', function(err, data){
-            if (err) {
-                callback(true, null);
-            } else callback(false,data);
-        });
-    };
-    updateTreeNodes(nodes, callback) {
-        var functions = [];
-        for (let node of nodes) {
-            functions.push((function(doc) {
-                return function(cb) {
-                    TreeNodeModel.update({ID: doc.ID}, doc, cb);
-                };
-            })(node));
-        }
-        async.parallel(functions, function(err, results) {
-            callback(err, results);
-        });
-    };
-    removeNodes(nodeIds, preNodeId, preNodeNextId, callback) {
-        var functions = [];
-        if (preNodeId != -1) {
-            functions.push((function(nodeId, nextId) {
-                return function(cb) {
-                    TreeNodeModel.update({ID: nodeId}, {"NextSiblingID": nextId}, cb);
-                };
-            })(preNodeId, preNodeNextId));
-        }
-        for (let nId of nodeIds) {
-            functions.push((function(nodeId) {
-                return function(cb) {
-                    TreeNodeModel.update({ID: nodeId}, {"isDeleted": true}, cb);
-                };
-            })(nId));
-        }
-        async.parallel(functions, function(err, results) {
-            callback(err, results);
-        });
-    };
-    createTplTreeNode(nodeData, lastNodeId, callback) {
-        counter.counterDAO.getIDAfterCount(counter.moduleName.report, 1, function(err, result){
-            nodeData.ID = result.value.sequence_value;
-            var node = new TreeNodeModel(nodeData);
-            node.save(function (err, result) {
-                if (err) {
-                    callback("树节点错误!", false);
-                } else {
-                    if (lastNodeId > 0) {
-                        TreeNodeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){
-                            if (err) {
-                                callback("树节点错误!", false);
-                            } else {
-                                callback(false, result);
-                            }
-                        });
-                    } else callback(false, result);
-                }
-            });
-        });
-    };
-}
-
-module.exports = new RplTplTreeDAO();
+module.exports = TreeNodeModel;

+ 30 - 4
modules/reports/util/rpt_util.js

@@ -2,15 +2,15 @@
  * Created by Tony on 2017/3/24.
  */
 let cache = require('../../../public/cache/cacheUtil');
-let rpt_cfg = require('../models/rpt_cfg');
+let Rpt_Cfg_Mdl = require('../models/rpt_cfg');
 
 const RPT_CFG_GRP = 'rpt_cfg';
 
 module.exports = {
     setReportDefaultCache: function () {
-        rpt_cfg.getByUserId("Administrator", function (err, cfgs) {
-            if (cfgs) {
-                cache.setCache(RPT_CFG_GRP,'admin_cfg',cfgs);
+        Rpt_Cfg_Mdl.find({userId: "Administrator"}, '-_id', function(err, templates){
+            if(templates.length){
+                cache.setCache(RPT_CFG_GRP,'admin_cfg',templates[0]);
             }
         })
     },
@@ -23,5 +23,31 @@ module.exports = {
         rst.styles = admin_cfg.borders;
         admin_cfg = null;
         return rst;
+    },
+    setReportCacheByUser: function (userId) {
+        let me = this;
+        Rpt_Cfg_Mdl.find({userId: userId}, '-_id', function(err, templates){
+            if(templates.length){
+                cache.setCache(RPT_CFG_GRP, userId + '_cfg',templates[0]);
+            } else {
+                me.setReportDefaultCache();
+            }
+        })
+    },
+    getReportCacheByUser: function (userId) {
+        let me = this,
+            rst = {ctrls: null, fonts: null, styles: null},
+            user_cfg = cache.getCache(RPT_CFG_GRP,userId + '_cfg');
+        ;
+        if (!(user_cfg)) {
+            rst = null;
+            rst = me.getReportDefaultCache();
+        } else {
+            rst.ctrls = user_cfg.formats;
+            rst.fonts = user_cfg.fonts;
+            rst.styles = user_cfg.borders;
+            user_cfg = null;
+        }
+        return rst;
     }
 }

+ 4 - 2
package.json

@@ -18,11 +18,13 @@
     "request": "^2.79.0",
     "tape": "^4.6.3",
     "nodemon": "^1.11.0",
-    "lodash": "^3.10.1"
+    "lodash": "^3.10.1",
+    "glob": "~4.0.5"
   },
   "dependencies": {
     "bluebird": "^3.5.0",
-    "jszip": "^3.1.3"
+    "jszip": "^3.1.3",
+    "uuid": "^3.1.0"
   },
   "scripts": {
     "start": "nodemon server.js"

+ 8 - 0
server.js

@@ -1,6 +1,8 @@
 let express = require('express');
 
 let config = require("./config/config.js");
+let fileUtils = require("./modules/common/fileUtils");
+let dbm = require("./config/db/db_manager");
 //config.setToLocalDb();
 config.setToQaDb();
 //config.setupCache();
@@ -13,6 +15,12 @@ let DBStore = require('connect-mongo')(session);
 
 let URL = require('url')
 
+dbm.connect();
+//这里现在只引入了定额工料机里的models,当其它模块的models修改后使用:./modules/**/models/*.js引入所有的模块
+fileUtils.getGlobbedFiles('./modules/ration_glj/models/*.js').forEach(function(modelPath) {
+    require(path.resolve(modelPath));
+})
+
 let app = express();
 let _rootDir = __dirname;
 app.use(express.static(_rootDir));

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

@@ -5,7 +5,7 @@ var test = require('tape');
 var mongoose = require('mongoose');
 var JV = require('../../../modules/reports/rpt_component/jpc_value_define');
 var Template = require('../../../modules/reports/models/rpt_template');
-var TemplateData = require('../../../modules/reports/models/rpt_tpl_data');
+var TemplateData = require('../../../modules/reports/models/rpt_tpl_data_demo');
 var JpcEx = require('../../../modules/reports/rpt_component/jpc_ex');
 var rptUtil = require("../../../modules/reports/util/rpt_util");
 var fs = require('fs');

+ 2 - 0
web/building_saas/main/html/main.html

@@ -528,6 +528,8 @@
     <script type="text/javascript" src="/web/building_saas/main/js/views/std_bills_lib.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/views/std_ration_lib.js"></script>
     <!-- reports -->
+    <script type="text/javascript" src="/public/web/treeDataHelper.js"></script>
+    <script type="text/javascript" src="/public/web/ztree_common.js"></script>
     <script type="text/javascript" src="/public/web/rpt_tpl_def.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/rpt/rpt_main.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/rpt/rpt_cfg_const.js"></script>

+ 11 - 1
web/building_saas/main/js/rpt/rpt_cfg_const.js

@@ -10,8 +10,18 @@ let setting = {
         enable: true
     },
     data: {
+        keep: {
+            parent:true,
+            leaf:true
+        },
+        key: {
+            children: "items"
+        },
         simpleData: {
-            enable: true
+            enable: true,
+            idKey: "ID",
+            pIdKey: "ParentID",
+            rootPId: -1
         }
     },
     callback: {