equipment_purchase_facade.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. module.exports={
  2. getData:getData,
  3. insertData:insertData,
  4. deleteEquipment:deleteEquipment,
  5. updateEquipments:updateEquipments
  6. };
  7. let mongoose = require('mongoose');
  8. let equipmentPurchaseModel = mongoose.model("equipment_purchase");
  9. let consts = require('../../main/models/project_consts');
  10. function getPreUpdate (pre, doc){
  11. const update = {};
  12. for (const key in doc) {
  13. update[`${pre}.${key}`] = doc[key];
  14. }
  15. return update;
  16. };
  17. async function deleteEquipment(projectID,ID){
  18. await equipmentPurchaseModel.update({projectID},{'$pull':{equipments:{ ID }}});
  19. }
  20. async function insertData (projectID,data){
  21. await equipmentPurchaseModel.update({projectID},{'$push':{equipments:{ $each: data }}});
  22. return data
  23. }
  24. async function updateEquipments (projectID,updateData,total){
  25. let tasks = [];
  26. if(total !== undefined || total !== null) tasks.push({updateOne :{filter:{projectID},update:{$set:{total:total}}}});
  27. for(let data of updateData){
  28. if(data.type === 'insert' ){
  29. tasks.push({updateOne:{ filter:{projectID},update:{'$push':{equipments:{ $each: data.documents }}}}})
  30. }else {
  31. let task = {updateOne : {
  32. filter:{projectID,'equipments.ID':data.ID},
  33. update:{$set:getPreUpdate('equipments.$',data.doc)}
  34. }}
  35. tasks.push(task)
  36. }
  37. }
  38. if(tasks.length > 0) await equipmentPurchaseModel.bulkWrite(tasks);
  39. return updateData
  40. }
  41. function getData(projectID, callback) {
  42. equipmentPurchaseModel.findOne({'projectID': projectID}).lean().exec((err, data) => {
  43. if (err) {
  44. callback(1, '', null);
  45. } else {
  46. callback(0, consts.projectConst.EQUIPMENT_PURCHASE, data);
  47. }
  48. })
  49. }