module.exports = { getData: getData, updateItem:updateItem }; let mongoose = require('mongoose'); let divideModel = mongoose.model("divide_setting"); let consts = require('../models/project_consts'); let projectConsts = consts.projectConst; const uuidV1 = require('uuid/v1'); async function updateItem(data){ let ID = data.ID; let tasks= []; for(let u of data.updateDatas){ if(u.type == 'add'){ tasks.push({updateOne: {filter: {ID: ID}, update: {"$push":{divideList:u.doc} }}}); } if(u.type == "update"){ let ndoc = {}; let pre = "divideList.$." for(let key in u.doc){ ndoc[pre+key] = u.doc[key] } tasks.push({updateOne: {filter: {"ID": ID,"divideList.ID":u.ID}, update: ndoc}}); } if(u.type == "delete"){ tasks.push({updateOne: {filter: {ID: ID}, update: {"$pull":{divideList:{ID:u.ID}} }}}); if(u.itemType == "定额"){ await divideModel.update( {ID:ID}, { $pull: {ration_gljs:{rationID:u.ID},ration_coes:{rationID:u.ID}}}, { multi: true }) } } } if(tasks.length > 0) await divideModel.bulkWrite(tasks); return data; } function getData(projectID, callback) { divideModel.findOne({projectID: projectID}, '-_id', async function (err, datas) { if (!err) { // 旧项目没有人工系数文件,默认给它生成一个。 if (!datas) { datas = { ID: uuidV1(), projectID:projectID, divideList:[], ration_gljs:[], ration_coes:[], bills:[] } await divideModel.create(datas); callback(0, projectConsts.DIVIDE_SETTING, datas); } else { callback(0, projectConsts.DIVIDE_SETTING, datas); }; } else { callback(1, projectConsts.DIVIDE_SETTING, null); }; }); }