Browse Source

工料机to do

zhangyin 8 years ago
parent
commit
7ea7bcad75

+ 5 - 1
modules/glj/models/glj_list.js

@@ -1,5 +1,6 @@
 /**
 /**
  * Created by jimiz on 2017/5/10.
  * Created by jimiz on 2017/5/10.
+ * 单价文件的GLJ列表,注意与项目GLJ区分
  */
  */
 var mongoose = require("mongoose");
 var mongoose = require("mongoose");
 var db = require("../db/unit_price_file_db");
 var db = require("../db/unit_price_file_db");
@@ -18,15 +19,18 @@ var GLJListSchema = new Schema({
     specs: String,
     specs: String,
     unit: String,
     unit: String,
     type: Number,
     type: Number,
+    adjustPrice: String,
+    rationPrice: String,
     price: String, //Decimal
     price: String, //Decimal
     deleteInfo: deleteSchema
     deleteInfo: deleteSchema
 });
 });
 
 
-var GLJList = db.model("GLJList", rationSchema, "GLJList");
+var GLJList = db.model("GLJList", GLJListSchema, "GLJList");
 
 
 var GLJListDAO = function(){};
 var GLJListDAO = function(){};
 
 
 GLJListDAO.prototype.getData = function(fileID, callback){
 GLJListDAO.prototype.getData = function(fileID, callback){
+    var me = this;
     GLJList.find({'$or': [{fileID: fileID, deleteInfo: null}, {fileID: fileID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
     GLJList.find({'$or': [{fileID: fileID, deleteInfo: null}, {fileID: fileID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
         if (!err) {
         if (!err) {
             callback(0, projectConsts.GLJLIST, datas);
             callback(0, projectConsts.GLJLIST, datas);

+ 7 - 2
modules/glj/models/unit_price_file.js

@@ -23,9 +23,14 @@ var unitPriceFile = db.model("unitPriceFile", unitPriceFileSchema, "unitPriceFil
 var unitPriceFileDAO = function(){};
 var unitPriceFileDAO = function(){};
 
 
 unitPriceFileDAO.prototype.getData = function(fileID, callback){
 unitPriceFileDAO.prototype.getData = function(fileID, callback){
+    var data;
     unitPriceFile.find({'$or': [{fileID: fileID, deleteInfo: null}, {fileID: fileID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
     unitPriceFile.find({'$or': [{fileID: fileID, deleteInfo: null}, {fileID: fileID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
         if (!err) {
         if (!err) {
-            callback(0, projectConsts.UNITPRICEFILE, datas);
+            GLJList.getData(fileID, function(err, gljList){
+                data['properties'] = datas[0];
+                data['glj_list'] = gljList;
+                callback(0, projectConsts.UNITPRICEFILE, data);
+            });
         } else {
         } else {
             callback(1, '', null);
             callback(1, '', null);
         }
         }
@@ -44,7 +49,7 @@ unitPriceFileDAO.prototype.save = function(fileId, datas, callback){
 unitPriceFileDAO.prototype.sync = function(fileID, datas, callback){
 unitPriceFileDAO.prototype.sync = function(fileID, datas, callback){
     unitPriceFile.find({'$or': [{ID: fileID, deleteInfo: null}, {ID: fileID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
     unitPriceFile.find({'$or': [{ID: fileID, deleteInfo: null}, {ID: fileID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
         if (!err) {
         if (!err) {
-            datas[0].projects
+            // to do
 
 
             callback(0, projectConsts.UNITPRICEFILE, datas);
             callback(0, projectConsts.UNITPRICEFILE, datas);
         } else {
         } else {

+ 30 - 9
modules/main/models/glj.js

@@ -1,5 +1,6 @@
 /**
 /**
  * Created by jimiz on 2017/4/1.
  * Created by jimiz on 2017/4/1.
+ * 定额工料机
  */
  */
 var mongoose = require("mongoose");
 var mongoose = require("mongoose");
 var db = require("../db/project_db");
 var db = require("../db/project_db");
@@ -7,6 +8,7 @@ var Schema = mongoose.Schema;
 var counter = require("../../../public/counter/counter.js");
 var counter = require("../../../public/counter/counter.js");
 var deleteSchema = require('../../../public/models/delete_schema');
 var deleteSchema = require('../../../public/models/delete_schema');
 var consts = require('./project_consts');
 var consts = require('./project_consts');
+var projectGLJ = require('./project_glj');
 var projectConsts = consts.projectConst;
 var projectConsts = consts.projectConst;
 var commonConsts = consts.commonConst;
 var commonConsts = consts.commonConst;
 
 
@@ -21,14 +23,6 @@ var GLJSchema = new Schema({
     rQuantity: String, //Decimal
     rQuantity: String, //Decimal
     customQuantity: String, //Decimal
     customQuantity: String, //Decimal
     quantity: String, //Decimal
     quantity: String, //Decimal
-    rationItemQuantity: String, //Decimal
-    rationPrice: String, //Decimal
-    adjustPrice: String,            // 调整基价 (建筑有个专门的发文公布调整基价,且该单价会被计算引用,不是用户调的那个)
-    marketPrice: String,            // 市场单价 (等同于公路的预算价)
-    price: String,                  // 最终的单价(用户自定义修改单价在这里)
-    tenderQuantity: String, //Decimal
-    tenderPrice: String, //Decimal
-    type: Number,
     deleteInfo: deleteSchema
     deleteInfo: deleteSchema
     // to do
     // to do
 
 
@@ -39,9 +33,36 @@ var GLJ = db.model("GLJ", GLJSchema, "GLJ");
 var GLJDAO = function(){};
 var GLJDAO = function(){};
 
 
 GLJDAO.prototype.getData = function(projectID, callback){
 GLJDAO.prototype.getData = function(projectID, callback){
+
+    function combineGLJs(gljList){
+        var pGLJIndex = {};
+        projectGLJ.getData(projectID, function (err, message, datas) {
+            if (!err) {
+                for (var i = 0; i < length(datas); i++){
+                    var data = datas[i];
+                    pGLJIndex[data.ID] = data;
+                }
+
+                for (var j = 0; j < length(gljList); j++){
+                    var glj = gljList[j];
+                    var pGLJ = pGLJIndex[glj.ID];
+                    for (var p in data) {
+                        if (p != 'ID' && p != 'code' && p != 'name' && p != 'projectID' && p != 'deleteInfo') {
+                            pGLJ[p] = glj[p];
+                        }
+                    }
+                }
+                callback(0, projectConsts.GLJ, gljList);
+            }
+            else {
+                callback(2, 'can not get unitPriceFile gljList', null);
+            }
+        })
+    }
+
     GLJ.find({'$or': [{projectID: projectID, deleteInfo: null}, {projectID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
     GLJ.find({'$or': [{projectID: projectID, deleteInfo: null}, {projectID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
         if (!err) {
         if (!err) {
-            callback(0, projectConsts.GLJ, datas);
+            combineGLJs(datas);
         } else {
         } else {
             callback(1, '', null);
             callback(1, '', null);
         };
         };

+ 2 - 1
modules/main/models/project_consts.js

@@ -7,7 +7,8 @@ var projectConst = {
     GLJ: 'GLJ',
     GLJ: 'GLJ',
     PROJECTGLJ: 'projectGLJ',
     PROJECTGLJ: 'projectGLJ',
     GLJLIST: 'GLJList',
     GLJLIST: 'GLJList',
-    UNITPRICEFILE: 'unitPriceFile'
+    UNITPRICEFILE: 'unitPriceFile',
+    PROPERTIES: 'properties'
 
 
 };
 };
 
 

+ 54 - 10
modules/main/models/project_glj.js

@@ -1,23 +1,24 @@
 /**
 /**
  * Created by jimiz on 2017/4/1.
  * Created by jimiz on 2017/4/1.
+ * 工料机汇总
  */
  */
 var mongoose = require("mongoose");
 var mongoose = require("mongoose");
 var db = require("../db/project_db");
 var db = require("../db/project_db");
 var Schema = mongoose.Schema;
 var Schema = mongoose.Schema;
 var deleteSchema = require('../../../public/models/delete_schema');
 var deleteSchema = require('../../../public/models/delete_schema');
-var consts = require('project_consts');
+var consts = require('./project_consts');
 var projectConsts = consts.projectConst;
 var projectConsts = consts.projectConst;
 var commonConsts = consts.commonConst;
 var commonConsts = consts.commonConst;
-var unitPriceFile = require('../../glj/models/unit_price_file')
+var unitPriceFile = require('../../glj/models/unit_price_file');
+var upGLJList = require('../../glj/models/glj_list');
+var projectProperties = require('./project_properties.js')
 
 
 var projectGLJSchema = new Schema({
 var projectGLJSchema = new Schema({
     ID: Number,
     ID: Number,
+    code: String,
+    name: String,
     projectID: Number,
     projectID: Number,
-    type: String,
     amount: String, // Decimal
     amount: String, // Decimal
-    rationPrice: String, //Decimal
-    adjustPrice: String, //Decimal
-    price: String, //Decimal
     isInterim: Boolean, // 是否暂估
     isInterim: Boolean, // 是否暂估
     provideType: Number, // 供货方式
     provideType: Number, // 供货方式
     partyAAmount: String, // Decimal 甲供数量
     partyAAmount: String, // Decimal 甲供数量
@@ -32,11 +33,51 @@ var projectGLJ = db.model("projectGLJ", projectGLJSchema, "projectGLJ");
 var projectGLJDAO = function(){};
 var projectGLJDAO = function(){};
 
 
 projectGLJDAO.prototype.getData = function(projectID, callback){
 projectGLJDAO.prototype.getData = function(projectID, callback){
+
+    function combineGLJData(fileID, gljList){
+        var gljIndex = {};
+
+        upGLJList.getData(fileID, function (err, message, datas) {
+            if (!err) {
+                for (var i = 0; i < length(datas); i++){
+                    var data = datas[i];
+                    gljIndex[data.code + '_' + data.name] = data;
+                }
+
+                for (var j = 0; j < length(gljList); j++){
+                    var pGLJ = gljList[j];
+                    var glj = gljIndex[pGLJ.code + '_' + pGLJ.name];
+                    for (var p in data) {
+                        if (p != 'ID' && p != 'fileID' && p != 'deleteInfo') {
+                            pGLJ[p] = glj[p];
+                        }
+                    }
+                }
+                callback(0, projectConsts.PROJECTGLJ, gljList);
+            }
+            else {
+                callback(3, 'can not get unitPriceFile gljList', null);
+            }
+        })
+    }
+
+    function getGLJDatas(gljList){
+        projectProperties.getData(projectID, function (err, message, datas) {
+            if (!err) {
+                var fileID = datas[0];
+                combineGLJData(fileID, gljList);
+            } else {
+                callback(2, 'can not get unitPriceFileID', null);
+            }
+
+        })
+    }
+
     projectGLJ.find({'$or': [{projectID: projectID, deleteInfo: null}, {projectID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
     projectGLJ.find({'$or': [{projectID: projectID, deleteInfo: null}, {projectID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
         if (!err) {
         if (!err) {
-            callback(0, projectConsts.PROJECTGLJ, datas);
+            getGLJDatas(datas);
         } else {
         } else {
-            callback(1, '', null);
+            callback(1, 'can not get projectGLJ', null);
         }
         }
     });
     });
 };
 };
@@ -69,8 +110,11 @@ projectGLJDAO.prototype.save = function(projectID, datas, callback){
     async.parallel(functions, callback);
     async.parallel(functions, callback);
 };
 };
 
 
-projectGLJDAO.prototype.add = function(projectID, count, callback){
-    unitPriceFile.add(count, callback);
+projectGLJDAO.prototype.add = function(projectID, fileID, count, callback){
+    function addGLJ(err, datas){
+
+    }
+    unitPriceFile.add(fileID, count, callback);
 };
 };
 
 
 projectGLJDAO.prototype.syncData = function(projectID, datas, callback){
 projectGLJDAO.prototype.syncData = function(projectID, datas, callback){

+ 45 - 2
modules/main/models/project_properties.js

@@ -11,10 +11,53 @@ var projectConsts = consts.projectConst;
 var commonConsts = consts.commonConst;
 var commonConsts = consts.commonConst;
 
 
 var projectPropertiesSchema = new Schema({
 var projectPropertiesSchema = new Schema({
-    projectID: Number,
+    ID: Number,
     unitPriceFileID: Number,
     unitPriceFileID: Number,
     unitPriceFileVer: Number,
     unitPriceFileVer: Number,
     deleteInfo: deleteSchema
     deleteInfo: deleteSchema
 });
 });
 
 
-var projectProperties = db.model("projectProperties", projectPropertiesSchema, "projectProperties");
+var projectProperties = db.model("projectProperties", projectPropertiesSchema, "projectProperties");
+
+var projectPropertiesDAO = function(){};
+
+projectPropertiesDAO.prototype.getData = function(projectID, callback){
+    projectProperties.find({'$or': [{ID: projectID, deleteInfo: null}, {ID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
+        if (!err) {
+            callback(0, projectConsts.PROPERTIES, datas);
+        } else {
+            callback(1, '', null);
+        };
+    });
+};
+
+projectPropertiesDAO.prototype.save = function(datas, callback){
+    var functions = [];
+    var data;
+
+    function saveOne(data) {
+        return function (cb) {
+            switch (data.updateType) {
+                case commonConsts.UT_UPDATE:
+                    projectProperties.update({ID: data.ID}, data, cb);
+                    break;
+                case commonConsts.UT_CREATE:
+                    projectProperties.create(data, cb);
+                    break;
+                case commonConsts.UT_DELETE:
+                /* 假删除
+                 var item = new GLJ(doc);
+                 item.remove(cb);
+                 */
+            }
+        }
+    }
+    for (var i = 0; i < datas.length; i++){
+        data = datas[i];
+        functions.push(saveOne(data));
+    }
+
+    async.parallel(functions, callback);
+};
+
+module.exports = new projectPropertiesDAO();