bill_facade.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /**
  2. * Created by zhang on 2018/1/22.
  3. */
  4. let mongoose = require('mongoose');
  5. let quantity_detail = require("./quantity_detail_facade");
  6. let Bills_Lib = mongoose.model('std_bills_lib_bills');
  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. pasteBlock : async function(data){
  59. console.log(data);
  60. }
  61. };
  62. function generateBillTasks(data) {
  63. let tasks=[];
  64. let user_id = data.user_id,projectID = data.projectID;
  65. let deleteInfo={deleted: true, deleteDateTime: new Date(), deleteBy: user_id};
  66. if(data.delete && data.delete.length > 0){
  67. for(let d_ID of data.delete){
  68. let task={
  69. updateOne:{
  70. filter:{
  71. ID:d_ID,
  72. projectID:projectID
  73. },
  74. update :{
  75. deleteInfo:deleteInfo
  76. }
  77. }
  78. };
  79. tasks.push(task);
  80. }
  81. }
  82. if(data.update && data.update.length > 0){
  83. for(let u_data of data.update){
  84. let task ={
  85. updateOne:{
  86. filter : {
  87. ID:u_data.ID,
  88. projectID:projectID
  89. },
  90. update : u_data.data
  91. }
  92. };
  93. tasks.push(task);
  94. }
  95. }
  96. if(data.create && data.create.length > 0){
  97. for(let n_data of data.create){
  98. let task = {
  99. insertOne :{
  100. document:n_data
  101. }
  102. };
  103. tasks.push(task);
  104. }
  105. }
  106. return tasks;
  107. }