/** * Created by zhang on 2018/1/22. */ let quantity_detail = require("./quantity_detail_facade"); let model = require("../../bills_lib/models/bills_lib_model"); let Bills_Lib = model.billsMod; let bill_Model = require('../models/bills').model; let _ = require("lodash"); module.exports={ getSectionInfo : async function (data) { let conditions=[]; let fxList=[]; let sectionInfo ={}; for(let libID in data){ let codes=[]; let temp={}; codes= _.keys(data[libID]); temp['billsLibId']=libID; temp['code'] = {"$in": codes}; conditions.push(temp); } if(conditions.length>0){ fxList = await Bills_Lib.find({"$or":conditions}); } if(fxList.length>0){ let sectionIDs = {}; for(let f of fxList){ if(f._doc.sectionInfo){ f._doc.sectionInfo.first?sectionIDs[f._doc.sectionInfo.first]=true:""; f._doc.sectionInfo.second?sectionIDs[f._doc.sectionInfo.second]=true:""; f._doc.sectionInfo.third?sectionIDs[f._doc.sectionInfo.third]=true:""; } } let IDList = _.keys(sectionIDs); let sectionList = await Bills_Lib.find({'ID':{'$in':IDList}}); let sectionMap = _.mapKeys(sectionList,'ID'); let fxMap = _.mapKeys(fxList,'code'); sectionInfo={ fxMap:fxMap, sectionMap :sectionMap } return sectionInfo; } return null; }, reorganizeFBFX:async function(data){ let result = {}; let tasks = generateBillTasks(data); if(data.delete && data.delete.length > 0){ let qd_query={projectID: data.projectID, billID: {"$in": data.delete}}; await quantity_detail.deleteByQuery(qd_query) ; } if(tasks.length > 0){ result =await bill_Model.bulkWrite(tasks); } return result; } } function generateBillTasks(data) { let tasks=[]; let user_id = data.user_id,projectID = data.projectID; let deleteInfo={deleted: true, deleteDateTime: new Date(), deleteBy: user_id}; if(data.delete && data.delete.length > 0){ for(let d_ID of data.delete){ let task={ updateOne:{ filter:{ ID:d_ID, projectID:projectID }, update :{ deleteInfo:deleteInfo } } }; tasks.push(task); } } if(data.update && data.update.length > 0){ for(let u_data of data.update){ let task ={ updateOne:{ filter : { ID:u_data.ID, projectID:projectID }, update : u_data.data } }; tasks.push(task); } } if(data.create && data.create.length > 0){ for(let n_data of data.create){ let task = { insertOne :{ document:n_data } }; tasks.push(task); } } return tasks; }