bill_facade.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /**
  2. * Created by zhang on 2018/1/22.
  3. */
  4. let quantity_detail = require("./quantity_detail_facade");
  5. let model = require("../../bills_lib/models/bills_lib_model");
  6. let Bills_Lib = model.billsMod;
  7. let bill_Model = require('../models/bills').model;
  8. let _ = require("lodash");
  9. module.exports={
  10. getSectionInfo : async function (data) {
  11. let conditions=[];
  12. let fxList=[];
  13. let sectionInfo ={};
  14. for(let libID in data){
  15. let codes=[];
  16. let temp={};
  17. codes= _.keys(data[libID]);
  18. temp['billsLibId']=libID;
  19. temp['code'] = {"$in": codes};
  20. conditions.push(temp);
  21. }
  22. if(conditions.length>0){
  23. fxList = await Bills_Lib.find({"$or":conditions});
  24. }
  25. if(fxList.length>0){
  26. let sectionIDs = {};
  27. for(let f of fxList){
  28. if(f._doc.sectionInfo){
  29. f._doc.sectionInfo.first?sectionIDs[f._doc.sectionInfo.first]=true:"";
  30. f._doc.sectionInfo.second?sectionIDs[f._doc.sectionInfo.second]=true:"";
  31. f._doc.sectionInfo.third?sectionIDs[f._doc.sectionInfo.third]=true:"";
  32. }
  33. }
  34. let IDList = _.keys(sectionIDs);
  35. let sectionList = await Bills_Lib.find({'ID':{'$in':IDList}});
  36. let sectionMap = _.mapKeys(sectionList,'ID');
  37. let fxMap = _.mapKeys(fxList,'code');
  38. sectionInfo={
  39. fxMap:fxMap,
  40. sectionMap :sectionMap
  41. }
  42. return sectionInfo;
  43. }
  44. return null;
  45. },
  46. reorganizeFBFX:async function(data){
  47. let result = {};
  48. let tasks = generateBillTasks(data);
  49. if(data.delete && data.delete.length > 0){
  50. let qd_query={projectID: data.projectID, billID: {"$in": data.delete}};
  51. await quantity_detail.deleteByQuery(qd_query) ;
  52. }
  53. if(tasks.length > 0){
  54. result =await bill_Model.bulkWrite(tasks);
  55. }
  56. return result;
  57. }
  58. }
  59. function generateBillTasks(data) {
  60. let tasks=[];
  61. let user_id = data.user_id,projectID = data.projectID;
  62. let deleteInfo={deleted: true, deleteDateTime: new Date(), deleteBy: user_id};
  63. if(data.delete && data.delete.length > 0){
  64. for(let d_ID of data.delete){
  65. let task={
  66. updateOne:{
  67. filter:{
  68. ID:d_ID,
  69. projectID:projectID
  70. },
  71. update :{
  72. deleteInfo:deleteInfo
  73. }
  74. }
  75. };
  76. tasks.push(task);
  77. }
  78. }
  79. if(data.update && data.update.length > 0){
  80. for(let u_data of data.update){
  81. let task ={
  82. updateOne:{
  83. filter : {
  84. ID:u_data.ID,
  85. projectID:projectID
  86. },
  87. update : u_data.data
  88. }
  89. };
  90. tasks.push(task);
  91. }
  92. }
  93. if(data.create && data.create.length > 0){
  94. for(let n_data of data.create){
  95. let task = {
  96. insertOne :{
  97. document:n_data
  98. }
  99. };
  100. tasks.push(task);
  101. }
  102. }
  103. return tasks;
  104. }