/** * Created by CSL on 2017/5/3. * 系数表。 */ var mongoose = require("mongoose"); var dbm = require("../../../config/db/db_manager"); var db = dbm.getCfgConnection("scConstruct"); var counter = require('../../../public/counter/counter'); var coeSchema = mongoose.Schema({ coeType: String, // 系数类型,指作用范围: // 单个(如:111量0.001)、人工类、材料类、机械类、全部(如:定额×0.925)。 gljCode: String, // 要调整的工料机Code(当coeType=0时有效) operator: String, // 运算符(*、+、-、=) amount: String, // 调整的量 _id: false }); var coeListSchema = mongoose.Schema({ libID: Number, // 所属定额定ID ID: Number, // 系数ID(流水号ID) name: String, // 名称 content: String, // 说明 coes: [coeSchema] }, {versionKey: false}); var coeListModel = db.model("std_ration_lib_coe_list",coeListSchema, "std_ration_lib_coe_list") var coeListDAO = function(){}; coeListDAO.prototype.getCoe = function (data, callback) { coeListModel.findOne({ "libID": data.libID, "ID": data.ID, "$or": [{"isDeleted": null}, {"isDeleted": false}] }, function (err, doc) { if (err) callback("获取系数明细错误!", null) else callback(null, doc); }) }; coeListDAO.prototype.getCoeItemsByIDs = function (data, callback) { coeListModel.find({ "libID": data.libID, "ID": {"$in":data.coeIDs} }, ["libID","ID","name","content","-_id"], function (err, doc) { if (err) callback("批量获取系数明细错误!", null) else callback(null, doc); }) }; coeListDAO.prototype.getCoesByLibID = function (libID, callback) { coeListModel.find({ "libID": libID }, function (err, doc) { if (err) callback("获取定额库系数表错误", null) else callback(null, doc); }) }; coeListDAO.prototype.saveToCoeList = function(data, callback) { var me = this; if (data.addArr.length > 0) { me.addItems(data.addArr, callback); }; if (data.deleteArr.length > 0) { me.deleteItems(data.deleteArr, callback); }; if (data.updateArr.length > 0) { me.updateItems(data.updateArr, callback); }; }; coeListDAO.prototype.addItems = function(addArr, callback) { if (addArr && addArr.length > 0) { counter.counterDAO.getIDAfterCount(counter.moduleName.coeList, addArr.length, function(err, result){ var maxId = result.value.sequence_value; for (var i = 0; i < addArr.length; i++) { var obj = new coeListModel(addArr[i]); obj.ID = (maxId - (addArr.length - 1) + i); coeListModel.create(obj, function(err) { if (err) { callback(true, "add fail", null); } else { callback(false, "add success", obj.ID); }; }); }; }); } else { callback(true, "no source", null); }; }; coeListDAO.prototype.updateItems = function(updateArr, callback) { if (updateArr && updateArr.length > 0) { for (var i = 0; i < updateArr.length; i++) { var obj = updateArr[i]; coeListModel.update({"libID": obj.libID, "ID": obj.ID}, updateArr[i], function(err) { if (err) { callback(true, "update fail", null); } else { callback(false, "update success", obj.ID); }; }); }; } else { callback(true, "no source", null); }; }; coeListDAO.prototype.deleteItems = function(deleteArr, callback) { if (deleteArr && deleteArr.length > 0) { for (var i = 0; i < deleteArr.length; i++) { var obj = deleteArr[i]; coeListModel.remove({"libID": obj.libID, "ID": obj.ID}, function(err) { if (err) { callback(true, "delete fail", null); } else { callback(false, "delete success", obj.ID); }; }); }; } else { callback(true, "no source", null); }; }; module.exports = new coeListDAO();