/** * Created by zhang on 2018/1/26. */ let projectsModel = require("../../pm/models/project_schema"); let async_n = require("async"); let ration_model = require('../models/ration'); let bill_model = require('../models/bills'); let consts = require('../models/project_consts'); let projectConsts = consts.projectConst; module.exports = { markUpdateProject:markUpdateProject, removeProjectMark:removeProjectMark, updateNodes:updateNodes }; function updateNodes(datas,callback) { let tasks = []; for(let node of datas){ tasks.push(updateOne(node)) } async_n.parallel(tasks, function(err, results) { if (!err){ callback(0, '', results); } else{ console.log(err); callback(1, 'save project failed'+err.message, null); } }); function updateOne(node) { if(node.type == projectConsts.BILLS){ return function (asCallback) { bill_model.model.findOneAndUpdate({projectID: node.data.projectID, ID: node.data.ID,deleteInfo: null}, node.data,{new: true}, asCallback); } }else if(node.type ==projectConsts.RATION){ return function (asCallback) { ration_model.model.findOneAndUpdate({projectID: node.data.projectID, ID: node.data.ID,deleteInfo: null}, node.data,{new: true}, asCallback); } } } } //data = {feeRateID:111111,projectID:1245}; type = feeRate async function markUpdateProject(data,type) { let tasks=[]; let query = {deleteInfo:null}; let result = null; if(type=="feeRate"){//更改了费率 query['property.feeFile.id'] = data.feeRateID; } if(type=="unitFile"){//更改了单价文件 query['property.unitPriceFile.id'] = data.unitFileID;//unitPriceFile } let projects =await projectsModel.find(query); for(let p of projects){ if(p.ID!=data.projectID){//当前项目不用更新 tasks.push(generateMarkTask(type,p.ID)); } } if(tasks.length>0){ result = await projectsModel.bulkWrite(tasks); } return result; } async function removeProjectMark(projectID) { return await projectsModel.findOneAndUpdate({ID:projectID},{"$unset":{"changeMark":1}}); } function generateMarkTask(value,projectID) { let task = { updateOne:{ filter:{ ID:projectID }, update:{ changeMark:value } } }; return task }