Browse Source

bills/ration, use class

MaiXinRong 8 years ago
parent
commit
8287ae75bc

+ 30 - 0
modules/main/models/base_model.js

@@ -0,0 +1,30 @@
+/**
+ * Created by Mai on 2017/6/12.
+ */
+
+class baseModel {
+    constructor (model) {
+        this.model = model;
+    };
+
+    /**
+     * 查询数据
+     * @param query
+     * @param fields
+     * @returns {Promise|Array|{index: number, input: string}}
+     */
+    getQueryData(query, fields) {
+        return this.model.find(query, fields).exec();
+    };
+
+    /**
+     * 批量插入数据
+     * @param datas
+     * @param callback
+     */
+    insertData (datas, callback) {
+        this.model.collection.insert(datas, callback);
+    };
+};
+
+module.exports = baseModel;

+ 69 - 93
modules/main/models/bills.js

@@ -1,18 +1,18 @@
 /**
  * Created by jimiz on 2017/4/1.
  */
-var mongoose = require("mongoose");
-var db = require("../db/project_db");
-var subSchema = require("./bills_sub_schemas");
-var deleteSchema = require('../../../public/models/delete_schema');
-var Schema = mongoose.Schema;
-var async = require("async");
-var counter = require("../../../public/counter/counter.js");
-var consts = require('./project_consts');
-var projectConsts = consts.projectConst;
-var commonConsts = consts.commonConst;
+let mongoose = require("mongoose");
+let db = require("../db/project_db");
+let subSchema = require("./bills_sub_schemas");
+let deleteSchema = require('../../../public/models/delete_schema');
+let Schema = mongoose.Schema;
+let async = require("async");
+let counter = require("../../../public/counter/counter.js");
+let consts = require('./project_consts');
+let projectConsts = consts.projectConst;
+let commonConsts = consts.commonConst;
 
-var billsSchema = new Schema({
+let billsSchema = new Schema({
     ID: Number,
     ParentID: Number,
     NextSiblingID: Number,
@@ -39,6 +39,7 @@ var billsSchema = new Schema({
     isTender_Machine: Boolean,
     tenderTargetPrice: String, // Decimal
     tenderTargetUnitPrice: String, // Decimal
+    tenderTargetUnitPrice: String, // Decimal
     // 费用字段
     fees: [subSchema.feesSchema],
     // 标记字段
@@ -46,98 +47,73 @@ var billsSchema = new Schema({
     deleteInfo: deleteSchema
 });
 
-var bills = db.model("bills", billsSchema);
-
-var billsDAO = function(){};
+let bills = db.model("bills", billsSchema);
+let baseModel = require('./base_model');
 
-billsDAO.prototype.getData = function(projectID, callback){
-    bills.find({'$or': [{projectID: projectID, deleteInfo: null}, {projectID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
-        if (!err) {
-            callback(0, projectConsts.BILLS, datas);
-        } else {
-            callback(1, projectConsts.BILLS, null);
-        };
-    });
-};
+class billsModel extends baseModel {
+    constructor () {
+        super(bills);
+    };
 
-// get All Project Bills, include deleted
-billsDAO.prototype.getProjectBills = function (projectId, callback) {
-    if (callback) {
-        bills.find({projectID: projectId}, '-_id').exec()
-            .then(function (result, err) {
-                if (err) {
-                    callback(1, '找不到模板', null);
-                } else {
-                    callback(0, '', result);
-                }
-            });
-        return null;
-    } else {
-        return bills.find({projectID: projectId}, '-_id').exec();
-    }
-}
+    /**
+     *
+     * @param {Number} projectId
+     * @returns {Promise}
+     */
+    getProjectData (projectId) {
+        return this.getQueryData({"projectID": projectId}, '-_id');
+    };
 
-billsDAO.prototype.AddBillsFromTemplate = function (datas, callback) {
-    bills.collection.insert(datas, callback);
-};
+    getData (projectID, callback) {
+        this.model.find({'$or': [{projectID: projectID, deleteInfo: null}, {projectID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
+            if (!err) {
+                callback(0, projectConsts.BILLS, datas);
+            } else {
+                callback(1, projectConsts.BILLS, null);
+            };
+        });
+    };
 
-billsDAO.prototype.save = function(user_id, datas, callback){
-    var functions = [];
-    var data;
+    save (user_id, datas, callback) {
+        let functions = [];
+        let data;
 
-    function saveOne(doc) {
-/*        switch (doc.type) {
-            case commonConsts.UT_CREATE:
-                return function (callback) {
-                    bills.update({projectID: doc.data.projectID, ID: doc.data.ID}, doc.data, callback);
-                };
-                break;
-            case commonConsts.UT_CREATE:
-                return function (callback) {
-                    bills.create(doc.data, callback);
-                };
-                break;
-            case commonConsts.UT_DELETE:
-                return function (callback) {
-                    doc.data.deleteInfo = {deleted: true, deleteDateTime: new Date(), deleteBy: user_id};
-                    bills.update({projectID: doc.data.projectID, ID: doc.data.ID}, doc.data, callback);
+        function saveOne(doc) {
+            return function (cb) {
+                switch (doc.updateType) {
+                    case commonConsts.UT_UPDATE:
+                        bills.update({projectID: doc.updateData.projectID, ID: doc.updateData.ID}, doc.updateData, cb);
+                        break;
+                    case commonConsts.UT_CREATE:
+                        bills.create(doc.updateData, cb);
+                        break;
+                    case commonConsts.UT_DELETE:
+                        doc.updateData.deleteInfo = {deleted: true, deleteDateTime: new Date(), deleteBy: user_id};
+                        bills.update({projectID: doc.updateData.projectID, ID: doc.updateData.ID}, doc.updateData, cb);
+                        break;
                 }
-                break;
-        }*/
-        return function (cb) {
-            switch (doc.updateType) {
-                case commonConsts.UT_UPDATE:
-                    bills.update({projectID: doc.updateData.projectID, ID: doc.updateData.ID}, doc.updateData, cb);
-                    break;
-                case commonConsts.UT_CREATE:
-                    bills.create(doc.updateData, cb);
-                    break;
-                case commonConsts.UT_DELETE:
-                    doc.updateData.deleteInfo = {deleted: true, deleteDateTime: new Date(), deleteBy: user_id};
-                    bills.update({projectID: doc.updateData.projectID, ID: doc.updateData.ID}, doc.updateData, cb);
-                    break;
             }
         }
-    }
-    for (var i = 0; i < datas.length; i++){
-        data = datas[i];
-        functions.push(saveOne(data));
-    }
+        for (let i = 0; i < datas.length; i++){
+            data = datas[i];
+            functions.push(saveOne(data));
+        }
 
-    async.parallel(functions, callback);
-};
+        async.parallel(functions, callback);
+    };
 
-billsDAO.prototype.getItemTemplate = function(callback){
-    var data = new bills;
-    /* to do: 需要根据标准配置库填充fees和flags字段,是否需要更多的参数? */
-    callback(0, '', data);
-};
+    getItemTemplate (callback) {
+        let data = new bills;
+        /* to do: 需要根据标准配置库填充fees和flags字段,是否需要更多的参数? */
+        callback(0, '', data);
+    };
 
-billsDAO.prototype.allocIDs = function(IDStep, callback){
-    counter.counterDAO.getIDAfterCount(counter.moduleName.bills, IDStep, function(err, highID){
-        var lowID = highID - IDStep + 1;
-        callback(0, '', {lowID: lowID, highID: highID});
-    });
+    allocIDs (IDStep, callback) {
+        counter.counterDAO.getIDAfterCount(counter.moduleName.bills, IDStep, function(err, highID){
+            let lowID = highID - IDStep + 1;
+            callback(0, '', {lowID: lowID, highID: highID});
+        });
+    };
 };
 
-module.exports = new billsDAO();
+module.exports = new billsModel();

+ 65 - 56
modules/main/models/ration.js

@@ -1,18 +1,18 @@
 /**
  * Created by jimiz on 2017/4/1.
  */
-var mongoose = require("mongoose");
-var db = require("../db/project_db");
-var subSchema = require("./bills_sub_schemas");
-var Schema = mongoose.Schema;
-var deleteSchema = require('../../../public/models/delete_schema');
-var async = require("async");
-var counter = require("../../../public/counter/counter.js");
-var consts = require('./project_consts');
-var projectConsts = consts.projectConst;
-var commonConsts = consts.commonConst;
+let mongoose = require("mongoose");
+let db = require("../db/project_db");
+let subSchema = require("./bills_sub_schemas");
+let Schema = mongoose.Schema;
+let deleteSchema = require('../../../public/models/delete_schema');
+let async = require("async");
+let counter = require("../../../public/counter/counter.js");
+let consts = require('./project_consts');
+let projectConsts = consts.projectConst;
+let commonConsts = consts.commonConst;
 
-var rationSchema = new Schema({
+let rationSchema = new Schema({
     ID: Number,
     projectID: Number,
     billsItemID: Number,
@@ -35,59 +35,68 @@ var rationSchema = new Schema({
     deleteInfo: deleteSchema
 });
 
-var ration = db.model("ration", rationSchema, "ration");
+let ration = db.model("ration", rationSchema, "ration");
+let baseModel = require('./base_model');
 
-var rationDAO = function(){};
+class rationModel extends baseModel {
+    constructor () {
+        super(ration);
+    }
 
-rationDAO.prototype.getData = function(projectID, callback){
-    ration.find({'$or': [{projectID: projectID, deleteInfo: null}, {projectID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
-        if (!err) {
-            callback(0, projectConsts.RATION, datas);
-        } else {
-            callback(1, '', null);
-        }
-    });
-};
+    getData (projectID, callback) {
+        ration.find({'$or': [{projectID: projectID, deleteInfo: null}, {projectID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
+            if (!err) {
+                callback(0, projectConsts.RATION, datas);
+            } else {
+                callback(1, '', null);
+            }
+        });
+    };
 
-rationDAO.prototype.save = function(projectId, datas, callback){
-    var functions = [];
-    var data;
+    save (projectId, datas, callback) {
+        let functions = [];
+        let data;
 
-    function saveOne(doc) {
-        return function (cb) {
-            switch (doc.updateType) {
-                case commonConsts.UT_UPDATE:
-                    ration.update({projectID: doc.updateData.projectID, ID: doc.updateData.ID}, doc.updateData, cb);
-                    break;
-                case commonConsts.UT_CREATE:
-                    ration.create(doc.updateData, cb);
-                    break;
-                case commonConsts.UT_DELETE:
-                    doc.updateData.deleteInfo = {deleted: true, deleteDateTime: new Date(), deleteBy: user_id};
-                    ration.update({projectID: doc.updateData.projectID, ID: doc.updateData.ID}, doc.updateData, cb);
-                    break;
+        function saveOne(doc) {
+            return function (cb) {
+                switch (doc.updateType) {
+                    case commonConsts.UT_UPDATE:
+                        ration.update({projectID: doc.updateData.projectID, ID: doc.updateData.ID}, doc.updateData, cb);
+                        break;
+                    case commonConsts.UT_CREATE:
+                        ration.create(doc.updateData, cb);
+                        break;
+                    case commonConsts.UT_DELETE:
+                        doc.updateData.deleteInfo = {deleted: true, deleteDateTime: new Date(), deleteBy: user_id};
+                        ration.update({projectID: doc.updateData.projectID, ID: doc.updateData.ID}, doc.updateData, cb);
+                        break;
+                }
             }
         }
-    }
-    for (var i = 0; i < datas.length; i++){
-        data = datas[i];
-        functions.push(saveOne(data));
-    }
+        for (let i = 0; i < datas.length; i++){
+            data = datas[i];
+            functions.push(saveOne(data));
+        }
 
-    async.parallel(functions, callback);
-};
+        async.parallel(functions, callback);
+    };
 
-rationDAO.prototype.getItemTemplate = function(callback){
-    var data = new ration;
-    /* to do: 需要根据标准配置库填充fees和flags字段,是否需要更多的参数? */
-    callback(0, '', data);
-};
+    getItemTemplate (callback) {
+        let data = new ration;
+        /* to do: 需要根据标准配置库填充fees和flags字段,是否需要更多的参数? */
+        callback(0, '', data);
+    };
+
+    allocIDs (IDstep, callback) {
+        counter.counterDAO.getIDAfterCount(counter.moduleName.ration, IDStep, function(err, highID){
+            let lowID = highID - IDStep + 1;
+            callback(0, '', {lowID: lowID, highID: highID});
+        });
+    };
 
-rationDAO.prototype.allocIDs = function(IDStep, callback){
-    counter.counterDAO.getIDAfterCount(counter.moduleName.ration, IDStep, function(err, highID){
-        var lowID = highID - IDStep + 1;
-        callback(0, '', {lowID: lowID, highID: highID});
-    });
+    getProjectData (projectID) {
+        return this.getQueryData({"projectID": projectID}, '-_id');
+    };
 };
 
-module.exports = new rationDAO();
+module.exports = new rationModel();

+ 18 - 10
modules/pm/controllers/copy_proj_controller.js

@@ -3,18 +3,26 @@
  */
 
 let billsData = require('../../main/models/bills');
+let rationData = require('../../main/models/ration');
+let async = require('async');
 
 module.exports = {
     copyProjectData: function (srcProjID, newProjID, callback) {
-        billsData.getProjectBills(srcProjID).then(function (results) {
-            let datas = [];
-            results.forEach(function (result) {
-                result._doc.projectID = newProjID;
-                datas.push(result._doc);
-            });
-            return billsData.AddBillsFromTemplate(datas, callback);
-        }).catch(function (err) {
-            callback(err);
-        });
+        var fun = [];
+        var copyData = function (model) {
+            return () => {
+                model.getProjectData(srcProjID).then(function (results) {
+                    let datas = [];
+                    results.forEach(function (result) {
+                        result._doc.projectID = newProjID;
+                        datas.push(result._doc);
+                    });
+                    return model.insertData(datas, callback);
+                }).catch((err) => callback(err));
+            };
+        };
+        fun.push(copyData(billsData));
+        fun.push(copyData(rationData));
+        async.parallel(fun, (err) => callback(err));
     }
 };

+ 2 - 4
modules/pm/controllers/new_proj_controller.js

@@ -13,9 +13,7 @@ module.exports = {
                 template._doc.projectID = newProjID;
                 datas.push(template._doc);
             })
-            return billsData.AddBillsFromTemplate(datas, callback);
-        }).catch(function (err) {
-            callback(err);
-        });
+            return billsData.insertData(datas, callback);
+        }).catch((err) => callback(err));
     }
 };

+ 3 - 1
modules/pm/controllers/pm_controller.js

@@ -7,7 +7,9 @@ let projType = require('../models/project').projType;
 //统一回调函数
 let callback = function(req, res, err, message, data){
     res.json({error: err, message: message, data: data});
-}
+};
+
+
 
 module.exports = {
     checkRight: function (req, res) {

+ 0 - 1
server.js

@@ -91,7 +91,6 @@ app.use('/pm/api', pmRouter);
 app.get('/main',  function(req, res) {
     let pm = require('./modules/pm/controllers/pm_controller');
     pm.checkProjectRight(req.session.userID, req.query.project, function (hasRight) {
-        console.log(hasRight);
         if (hasRight) {
             res.render('building_saas/main/html/main.html',
                 {

+ 9 - 2
web/building_saas/pm/js/pm_main.js

@@ -116,7 +116,14 @@ var LoadProjTree = function () {
 };
 
 var GetNeedUpdatePreNode = function (parent, next) {
-    if (parent && parent.id() !== -1) {
+    if (next) {
+        return next.preSibling();
+    } else if (parent) {
+        return parent.firstChild();
+    } else {
+        return null;
+    }
+    /*if (parent && parent.id() !== -1) {
         if (next && next.preSibling()) {
             return next.preSibling();
         } else {
@@ -124,7 +131,7 @@ var GetNeedUpdatePreNode = function (parent, next) {
         }
     } else {
         return null;
-    }
+    }*/
 };
 var GetPreNodeUpdateData = function (pre, nid) {
     var data = {};