Procházet zdrojové kódy

Merge branch 'master' of http://192.168.1.12:3000/SmartCost/ConstructionCost

TonyKang před 8 roky
rodič
revize
7d1f79acf4

+ 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);
+        });
     }
 };

binární
documents/分析设计/ConstructCost项目数据下载提交设计.docx


binární
documents/分析设计/造价词典.docx


+ 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;
+};

+ 2 - 2
modules/fee_rates/models/fee_rates.js

@@ -4,7 +4,7 @@
 
 var mg = require('mongoose');
 var dbm = require("../../../config/db/db_manager");
-var umDB = dbm.getCfgConnection("projectFees");
+var db = dbm.getCfgConnection("scConstruct");
 
 var ratesSchema = new mg.Schema({
     ID: Number,
@@ -21,7 +21,7 @@ var feeRatesSchema = new mg.Schema({
     rates: [ratesSchema]
 });
 
-var feeRatesModel = umDB.model('feeRates', feeRatesSchema, 'feeRates');
+var feeRatesModel = db.model('fee_rates', feeRatesSchema, 'fee_rates');
 
 var FeeRateFile = function(){};
 

+ 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);

+ 2 - 2
modules/ration_repository/models/coe.js

@@ -5,7 +5,7 @@
 
 var mongoose = require("mongoose");
 var dbm = require("../../../config/db/db_manager");
-var db = dbm.getCfgConnection("rationRepository");
+var db = dbm.getCfgConnection("scConstruct");
 var counter = require('../../../public/counter/counter');
 
 var coeSchema = mongoose.Schema({
@@ -25,7 +25,7 @@ var coeListSchema = mongoose.Schema({
     coes: [coeSchema]
 }, {versionKey: false});
 
-var coeListModel = db.model("coeLists",coeListSchema, "coeLists")
+var coeListModel = db.model("std_ration_lib_coe_list",coeListSchema, "std_ration_lib_coe_list")
 
 var coeListDAO = function(){};
 

+ 3 - 3
modules/ration_repository/models/glj_repository.js

@@ -5,7 +5,7 @@
 
 var mongoose = require("mongoose");
 var dbm = require("../../../config/db/db_manager");
-var db = dbm.getCfgConnection("rationRepository")
+var db = dbm.getCfgConnection("scConstruct");
 var async = require("async");
 var Schema = mongoose.Schema;
 
@@ -30,8 +30,8 @@ var gljSchema = mongoose.Schema({
     gljType: Number, //这个是UI显示上的详细分类,对应gljTypeSchema
     gljDistType: String  //人工,材料,机械
 });
-var gljTypeModel = db.model("gljType",gljTypeSchema, "gljType");
-var gljItemModel = db.model("gljRepository",gljSchema, "gljRepository");
+var gljTypeModel = db.model("std_ration_lib_glj_type",gljTypeSchema, "std_ration_lib_glj_type");
+var gljItemModel = db.model("std_ration_lib_glj_list",gljSchema, "std_ration_lib_glj_list");
 var repositoryMap = require('./repository_map');
 var counter = require('../../../public/counter/counter');
 

+ 0 - 45
modules/ration_repository/models/rationAssist.js

@@ -1,45 +0,0 @@
-/**
- * Created by CSL on 2017/5/5.
- * 辅助定额调整。
- */
-
-var mongoose = require("mongoose");
-var dbm = require("../../../config/db/db_manager");
-var db = dbm.getCfgConnection("rationRepository")
-
-// eg:重庆CQJZDE-2008,P28,AA0116机械装运土方全程运距100米内(主定额)20米内(会根据用户实际录入值变化),AA0117每增加10米(辅助定额)。
-// 建筑中的主定额只有一条辅助定额。(公路的主定额会对应多条辅助定额)
-var assistSchema = mongoose.Schema({
-    libID: Number,                      // 所属定额定ID
-    mainRationID: Number,               // 主定额ID
-    assistRationID: Number,             // 辅助定额ID
-    assistDisplayName: String,          // 辅助定额显示名称 (eg:每增加10米)
-    minValue: String,                   // 下限值(eg:20)
-    maxValue: String,                   // 上限值(eg:100,也可能没有)
-    stepValue: String                   // 步距值 (eg:10)
-});
-
-var assistModel = db.model("rationAssists",assistSchema, "rationAssists")
-
-var assistDAO = function(){};
-
-assistDAO.prototype.getAssist = function (data, callback) {
-    assistModel.findOne({
-            "libID": data.libID,
-            "mainRationID": data.mainRationID,
-            "$or": [{"isDeleted": null}, {"isDeleted": false}]
-        },
-        function (err, doc) {
-            if (err) callback(true, "获取辅助定额错误!", "")
-            else callback(false, "获取辅助定额成功", doc);
-        })
-};
-
-// test datas.
-//function callbackExec(err) {if (err) {console.log(err);} else {console.log('saved.')};};
-//assistModel.create({"libID": 1, "mainRationID":1, assistRationID: 2, assistDisplayName: "每增加10米", minValue:"20", maxValue: "100", stepValue:"10"}, callbackExec);
-//assistModel.create({"libID": 1, "mainRationID":3, assistRationID: 4, assistDisplayName: "每增加100米", minValue:"200", maxValue: "500", stepValue:"100"}, callbackExec);
-//assistModel.create({"libID": 1, "mainRationID":5, assistRationID: 6, assistDisplayName: "每增加100米", minValue:"1000", maxValue: null, stepValue:"1000"}, callbackExec);
-
-
-module.exports = new assistDAO();

+ 0 - 35
modules/ration_repository/models/rationCoe.js

@@ -1,35 +0,0 @@
-/**
- * Created by CSL on 2017/5/3.
- * 定额系数关系表。(即附注条件。系数会被定额公用,如同一个分枝下的兄弟定额。)
- * 公路上,定额章节点上也会挂系数(关系数据库可减少数据冗余),该系数作用于该章节下的所有定额。每条定额还有自己特有的系数。
- * 建筑上,简化逻辑设计,把章节点上的系数移到具体的定额上。
- */
-var mongoose = require("mongoose");
-var dbm = require("../../../config/db/db_manager");
-var db = dbm.getCfgConnection("rationRepository")
-
-var rationCoeSchema = mongoose.Schema({
-    ID:Number,
-    libID: Number,
-    rationID: Number,
-    coeIDs: Array
-});
-
-var rationCoeModel = db.model("rationCoes",rationCoeSchema, "rationCoes")
-
-var rationCoeDAO = function(){};
-
-rationCoeDAO.prototype.getRationCoes = function (data, callback) {
-    rationCoeModel.findOne({
-            "libID": data.libID,
-            "rationID": data.rationID,
-            "$or": [{"isDeleted": null}, {"isDeleted": false}]
-        },
-        function (err, doc) {
-            if (err) callback(true, "获取定额调整系数错误!", "")
-            else callback(false, "获取定额调整系数成功", doc);
-        })
-};
-
-module.exports = new rationCoeDAO();
-

+ 16 - 3
modules/ration_repository/models/ration_item.js

@@ -3,7 +3,7 @@
  */
 var mongoose = require("mongoose");
 var dbm = require("../../../config/db/db_manager");
-var db = dbm.getCfgConnection("rationRepository")
+var db = dbm.getCfgConnection("scConstruct");
 var async = require("async");
 var Schema = mongoose.Schema;
 
@@ -13,6 +13,18 @@ var rationGljItemSchema = mongoose.Schema({
     proportion: Number //配合比,暂时无需使用,默认0
 }, { _id: false });
 
+var rationAssItemSchema = mongoose.Schema({
+    name: String,
+    assistID: Number,
+    assistCode: String,
+    stdValue: String,
+    stepValue: String,
+    decimal: Number,
+    carryBit: String,
+    minValue: String,
+    maxValue: String
+}, { _id: false });
+
 var rationItemSchema = mongoose.Schema({
     ID:Number,
     code: String,
@@ -24,9 +36,10 @@ var rationItemSchema = mongoose.Schema({
     caption: String,
     feeType: Number,
     rationGljList: [rationGljItemSchema],
-    rationCoeList: Array
+    rationCoeList: Array,
+    rationAssList: [rationAssItemSchema]
 });
-var rationItemModel = db.model("rationItems",rationItemSchema, "rationItems")
+var rationItemModel = db.model("std_ration_lib_ration_items",rationItemSchema, "std_ration_lib_ration_items")
 var counter = require('../../../public/counter/counter');
 
 var rationItemDAO = function(){};

+ 2 - 2
modules/ration_repository/models/ration_section_tree.js

@@ -4,7 +4,7 @@
 
 var mongoose = require("mongoose");
 var dbm = require("../../../config/db/db_manager");
-var chapterTreeDb = dbm.getCfgConnection("rationRepository")
+var chapterTreeDb = dbm.getCfgConnection("scConstruct");
 var async = require("async");
 var Schema = mongoose.Schema;
 
@@ -16,7 +16,7 @@ var rationChapterTreeSchema = new Schema({//章节树  //生成唯一id改为sec
     name: String,
     isDeleted: Boolean
 });
-var rationChapterTreeModel = chapterTreeDb.model("rationChapterTrees",rationChapterTreeSchema, "rationChapterTrees")
+var rationChapterTreeModel = chapterTreeDb.model("std_ration_lib_ration_chapter_trees", rationChapterTreeSchema, "std_ration_lib_ration_chapter_trees");
 var counter = require('../../../public/counter/counter');
 
 var rationChapterTreeDAO = function(){};

+ 4 - 3
modules/ration_repository/models/repository_map.js

@@ -5,7 +5,7 @@
 var mongoose = require('mongoose');
 var dbm = require("../../../config/db/db_manager");
 //var stringUtil = require('../../../public/stringUtil');
-var rationLibdb = dbm.getCfgConnection("rationRepository");
+var rationLibdb = dbm.getCfgConnection("scConstruct");
 var Schema = mongoose.Schema;
 var RepositoryMapSchema = new Schema({
     "ID": Number,
@@ -17,7 +17,7 @@ var RepositoryMapSchema = new Schema({
 });
 var counter = require('../../../public/counter/counter');
 
-var rationRepository = rationLibdb.model("repositoryMap", RepositoryMapSchema, "repositoryMap");
+var rationRepository = rationLibdb.model("std_ration_lib_map", RepositoryMapSchema, "std_ration_lib_map");
 
 function createNewLibModel(rationLibObj){
     var rst = {};
@@ -28,7 +28,8 @@ function createNewLibModel(rationLibObj){
     rst.deleted = false;
     return rst;
 }
-var rationRepositoryDao = function(){};
+
+rationRepositoryDao = function(){};
 
 rationRepositoryDao.prototype.getRealLibName = function(dispName,callback){
     if (callback) {

+ 2 - 2
modules/std_fee_rate_libs/models/std_fee_rate_libs.js

@@ -4,7 +4,7 @@
 
 var mg = require('mongoose');
 var dbm = require("../../../config/db/db_manager");
-var umDB = dbm.getCfgConnection("stdFeeRateLibs");
+var db = dbm.getCfgConnection("scConstruct");
 
 var ratesSchema = new mg.Schema({
     ID: Number,
@@ -21,7 +21,7 @@ var libsSchema = new mg.Schema({
     rates: [ratesSchema]                  // 树表结构费率值
 });
 
-var libsModel = umDB.model('libs', libsSchema);
+var libsModel = db.model('std_fee_rate_libs', libsSchema, 'std_fee_rate_libs');
 
 var StdFeeRateLibs = function(){};
 

+ 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));