Jelajahi Sumber

工料机汇总及单价文件

zhangyin 8 tahun lalu
induk
melakukan
0e33e18402

+ 8 - 0
modules/GLJ/db/unitPriceFile_db.js

@@ -0,0 +1,8 @@
+/**
+ * Created by jimiz on 2017/5/12.
+ */
+var mongoose = require("mongoose");
+var dbm = require("../../../config/db/db_manager");
+var db = dbm.getCfgConnection("unitPriceFile");
+
+module.exports = db;

+ 8 - 0
modules/GLJ/db/userGLJLib_db.js

@@ -0,0 +1,8 @@
+/**
+ * Created by jimiz on 2017/5/12.
+ */
+var mongoose = require("mongoose");
+var dbm = require("../../../config/db/db_manager");
+var db = dbm.getCfgConnection("userGLJLib");
+
+module.exports = db;

+ 94 - 0
modules/GLJ/models/GLJList.js

@@ -0,0 +1,94 @@
+/**
+ * Created by jimiz on 2017/5/10.
+ */
+var mongoose = require("mongoose");
+var db = require("../db/unitPriceFile_db");
+var Schema = mongoose.Schema;
+var deleteSchema = require('../../../public/models/deleteSchema');
+var counter = require("../../../public/counter/counter.js");
+var consts = require('../../main/models/projectConsts');
+var projectConsts = consts.projectConst;
+var commonConsts = consts.commonConst;
+
+var GLJListSchema = new Schema({
+    ID: Number,
+    fileID: Number,
+    code: String,
+    name: String,
+    specs: String,
+    unit: String,
+    type: Number,
+    price: String, //Decimal
+    deleteInfo: deleteSchema
+});
+
+var GLJList = db.model("GLJList", rationSchema, "GLJList");
+
+var GLJListDAO = function(){};
+
+GLJListDAO.prototype.getData = function(fileID, callback){
+    GLJList.find({'$or': [{fileID: fileID, deleteInfo: null}, {fileID: fileID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
+        if (!err) {
+            callback(0, projectConsts.GLJLIST, datas);
+        } else {
+            callback(1, '', null);
+        }
+    });
+};
+
+// 单价文件中的工料机不在这里新增,只能由add方法新增,删除需要在前端projectGLJ判断:1、是新工料机;2、没有定额引用,才可以删除
+GLJListDAO.prototype.save = function(fileId, datas, callback){
+    var functions = [];
+    var data;
+
+    // cb中返回doc,以便进行同步
+    function saveOne(doc) {
+        return function (cb) {
+            function updateCallback(err, data){
+                cb(err, doc);
+            }
+            switch (doc.updateType) {
+                case commonConsts.UT_UPDATE:
+                    ration.update({ID: doc.ID}, doc, updateCallback);
+                    break;
+                case commonConsts.UT_DELETE:
+                /* 假删除
+                 var item = new ration(doc);
+                 item.remove(cb);
+                 */
+            }
+        }
+    }
+    for (var i = 0; i < datas.length; i++){
+        data = datas[i];
+        functions.push(saveOne(data));
+    }
+
+    async.parallel(functions, callback);
+};
+
+GLJListDAO.prototype.add = function(count, callback){
+
+    function newCallback(err, lowID, highID){
+        if (!err) {
+            var datas = [];
+            for (var i = lowID; i <= highID; i++){
+                var GLJ = new GLJList;
+                GLJ.ID = i;
+                datas.push(GLJ);
+            }
+            callback(err, datas);
+
+        }
+        else{
+            callback(err, null);
+        }
+    }
+
+    counter.counterDAO.getIDAfterCount(COUNTER_MODULE_NAME.unitPriceGLJ, IDStep, function(err, highID){
+        var lowID = highID - IDStep + 1;
+        newCallback(err, lowID, highID);
+    });
+};
+
+module.exports = new GLJListDAO();

+ 54 - 0
modules/GLJ/models/unitPriceFile.js

@@ -0,0 +1,54 @@
+/**
+ * Created by jimiz on 2017/5/12.
+ */
+var mongoose = require("mongoose");
+var db = require("../db/unitPriceFile_db");
+var Schema = mongoose.Schema;
+var deleteSchema = require('../../../public/models/deleteSchema');
+var consts = require('../../main/models/projectConsts');
+var projectConsts = consts.projectConst;
+var commonConsts = consts.commonConst;
+var GLJList = require('./GLJList');
+
+var unitPriceFileSchema = new Schema({
+    ID: Number,
+    name: String,
+    version: Number,
+    projects: Array,
+    deleteInfo: deleteSchema
+});
+
+var unitPriceFile = db.model("unitPriceFile", unitPriceFileSchema, "unitPriceFile");
+
+var unitPriceFileDAO = function(){};
+
+unitPriceFileDAO.prototype.getData = function(fileID, callback){
+    unitPriceFile.find({'$or': [{fileID: fileID, deleteInfo: null}, {fileID: fileID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
+        if (!err) {
+            callback(0, projectConsts.UNITPRICEFILE, datas);
+        } else {
+            callback(1, '', null);
+        }
+    });
+};
+
+unitPriceFileDAO.prototype.save = function(fileId, datas, callback){
+    function changed(err, changedDatas){
+        sync(fileId, changedDatas, callback);
+    }
+    GLJList.save(fileID, datas, changed);
+};
+
+unitPriceFileDAO.prototype.sync = function(fileId, datas, callback){
+
+};
+
+unitPriceFileDAO.prototype.newFile = function(data, callback){
+
+};
+
+unitPriceFileDAO.prototype.add = function(count, callback){
+    GLJList.add(count, callback);
+};
+
+module.exports = new unitPriceFileDAO();

+ 3 - 0
modules/GLJ/models/userGLJLib.js

@@ -0,0 +1,3 @@
+/**
+ * Created by jimiz on 2017/5/12.
+ */

+ 5 - 4
modules/main/models/project.js

@@ -33,16 +33,17 @@ Project.prototype.save = function(datas, callback){
     var job, savePoint;
     var functions = [];
     var item;
+    var me = this;
 
-    this.prepare(datas, function(job, savePoint){});
+    me.prepare(datas, function(job, savePoint){});
 
     function saveModule(data) {
         return function (cb) {
             moduleMap[data.moduleName].save(data.data, cb);
         }
     }
-    for (var i = 0; i < this.datas.length; i++){
-        item = this.datas[i];
+    for (var i = 0; i < me.datas.length; i++){
+        item = me.datas[i];
         functions.push(saveModule(item));
     }
 
@@ -54,7 +55,7 @@ Project.prototype.save = function(datas, callback){
             callback(1, 'save project failed', null)
         }
     });
-    this.datas = [];
+    me.datas = [];
 };
 
 Project.prototype.getData = function(projectID, callback){

+ 3 - 1
modules/main/models/projectConsts.js

@@ -5,7 +5,9 @@ var projectConst = {
     BILLS: 'bills',
     RATION: 'ration',
     GLJ: 'GLJ',
-    PROJECTGLJ: 'projectGLJ'
+    PROJECTGLJ: 'projectGLJ',
+    GLJLIST: 'GLJList',
+    UNITPRICEFILE: 'unitPriceFile'
 
 };
 

+ 66 - 7
modules/main/models/projectGLJ.js

@@ -4,18 +4,77 @@
 var mongoose = require("mongoose");
 var db = require("../db/project_db");
 var Schema = mongoose.Schema;
+var deleteSchema = require('../../../public/models/deleteSchema');
+var consts = require('../../main/models/projectConsts');
+var projectConsts = consts.projectConst;
+var commonConsts = consts.commonConst;
+var unitPriceFile = require('../../GLJ/models/unitPriceFile.js')
 
 var projectGLJSchema = new Schema({
     ID: Number,
     projectID: Number,
-    code: Number,
-    name: String,
-    specs: String,
-    unit: String,
     type: String,
     amount: String, // Decimal
     rationPrice: String, //Decimal
     adjustPrice: String, //Decimal
-    price: String //Decimal
-    // to do
-});
+    price: String, //Decimal
+    isInterim: Boolean, // 是否暂估
+    provideType: Number, // 供货方式
+    partyAAmount: String, // Decimal 甲供数量
+    deliveryType: String, // 交货方式
+    deliveryPlace: String, // 送达地点
+    noTender: Boolean,
+    deleteInfo: deleteSchema
+});
+
+var projectGLJ = db.model("projectGLJ", projectGLJSchema, "projectGLJ");
+
+var projectGLJDAO = function(){};
+
+projectGLJDAO.prototype.getData = function(projectID, callback){
+    projectGLJ.find({'$or': [{projectID: projectID, deleteInfo: null}, {projectID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
+        if (!err) {
+            callback(0, projectConsts.PROJECTGLJ, datas);
+        } else {
+            callback(1, '', null);
+        }
+    });
+};
+
+// 工料机汇总的工料机不在这里新增,只能由add方法新增,删除需要在前端projectGLJ判断:1、是新工料机;2、没有定额引用,才可以删除
+projectGLJDAO.prototype.save = function(fileId, datas, callback){
+    var functions = [];
+    var data;
+
+    function saveOne(data) {
+        return function (cb) {
+
+            switch (doc.updateType) {
+                case commonConsts.UT_UPDATE:
+                    projectGLJ.update({ID: doc.ID}, doc, cb);
+                    break;
+                case commonConsts.UT_DELETE:
+                /* 假删除
+                 var item = new ration(doc);
+                 item.remove(cb);
+                 */
+            }
+        }
+    }
+    for (var i = 0; i < datas.length; i++){
+        data = datas[i];
+        functions.push(saveOne(data));
+    }
+
+    async.parallel(functions, callback);
+};
+
+projectGLJDAO.prototype.add = function(count, callback){
+    unitPriceFile.add(count, callback);
+};
+
+projectGLJDAO.prototype.syncData = function(datas, callback){
+
+};
+
+module.exports = new projectGLJDAO();

+ 20 - 0
modules/main/models/projectProperties.js

@@ -0,0 +1,20 @@
+/**
+ * Created by jimiz on 2017/5/19.
+ */
+var mongoose = require("mongoose");
+var db = require("../db/project_db");
+var subSchema = require("./billsSubSchemas");
+var Schema = mongoose.Schema;
+var deleteSchema = require('../../../public/models/deleteSchema');
+var consts = require('./projectConsts');
+var projectConsts = consts.projectConst;
+var commonConsts = consts.commonConst;
+
+var projectPropertiesSchema = new Schema({
+    projectID: Number,
+    unitPriceFileID: Number,
+    unitPriceFileVer: Number,
+    deleteInfo: deleteSchema
+});
+
+var projectProperties = db.model("projectProperties", projectPropertiesSchema, "projectProperties");

+ 3 - 0
modules/unitPrice/models/GLJList.js

@@ -0,0 +1,3 @@
+/**
+ * Created by jimiz on 2017/5/10.
+ */

+ 2 - 0
public/counter/counter.js

@@ -26,6 +26,8 @@ const COUNTER_MODULE_NAME = {
     rationTree: 'rationChapterTrees',
     report: 'rptTemplates',
     fee: 'fees',
+    unitPriceFile: 'unitPriceFile',
+    unitPriceGLJ: 'unitPriceGLJ',
     template_bills: 'temp_bills',
     billsLib: 'billsLib'
 }