/** * Created by jimiz on 2017/4/1. * 定额工料机 */ var mongoose = require("mongoose"); var db = require("../db/project_db"); var Schema = mongoose.Schema; var counter = require("../../../public/counter/counter.js"); var deleteSchema = require('../../../public/models/delete_schema'); var consts = require('./project_consts'); var projectGLJ = require('./project_glj'); var projectConsts = consts.projectConst; var commonConsts = consts.commonConst; var GLJSchema = new Schema({ ID: Number, GLJID: Number, rGLJID: Number, rationID: Number, billsItemID: Number, projectID: Number, orgRQuantity: String, //Decimal rQuantity: String, //Decimal customQuantity: String, //Decimal quantity: String, //Decimal deleteInfo: deleteSchema // to do }); var GLJ = db.model("GLJ", GLJSchema, "GLJ"); var GLJDAO = function(){}; 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 < datas.length; i++){ var data = datas[i]; pGLJIndex[data.ID] = data; } for (var j = 0; j < gljList.length; 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){ if (!err) { combineGLJs(datas); } else { callback(1, '', null); }; }); }; GLJDAO.prototype.save = function(datas, callback){ var functions = []; var data; function saveOne(data) { return function (cb) { switch (data.updateType) { case commonConsts.UT_UPDATE: GLJ.update({ID: data.ID}, data, cb); break; case commonConsts.UT_CREATE: GLJ.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); }; GLJDAO.prototype.getItemTemplate = function(callback){ var data = new bills; /* to do: 需要根据标准配置库填充fees和flags字段,是否需要更多的参数? */ callback(0, '', data); }; GLJDAO.prototype.allocIDs = function(IDStep, callback){ counter.counterDAO.getIDAfterCount(counter.moduleName.GLJ, IDStep, function(err, highID){ var lowID = highID - IDStep + 1; callback(0, '', {lowID: lowID, highID: highID}); }); }; module.exports = new GLJDAO();