1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /**
- * 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
- }
|