divide_facade.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. module.exports = {
  2. getData: getData,
  3. updateItem:updateItem
  4. };
  5. let mongoose = require('mongoose');
  6. let divideModel = mongoose.model("divide_setting");
  7. let consts = require('../models/project_consts');
  8. let projectConsts = consts.projectConst;
  9. const uuidV1 = require('uuid/v1');
  10. async function updateItem(data){
  11. let ID = data.ID;
  12. let tasks= [];
  13. for(let u of data.updateDatas){
  14. if(u.type == 'add'){
  15. tasks.push({updateOne: {filter: {ID: ID}, update: {"$push":{divideList:u.doc} }}});
  16. }
  17. if(u.type == "update"){
  18. let ndoc = {};
  19. let pre = "divideList.$."
  20. for(let key in u.doc){
  21. ndoc[pre+key] = u.doc[key]
  22. }
  23. tasks.push({updateOne: {filter: {"ID": ID,"divideList.ID":u.ID}, update: ndoc}});
  24. }
  25. if(u.type == "delete"){
  26. tasks.push({updateOne: {filter: {ID: ID}, update: {"$pull":{divideList:{ID:u.ID}} }}});
  27. if(u.itemType == "定额"){
  28. await divideModel.update(
  29. {ID:ID},
  30. { $pull: {ration_gljs:{rationID:u.ID},ration_coes:{rationID:u.ID}}},
  31. { multi: true })
  32. }
  33. }
  34. }
  35. if(tasks.length > 0) await divideModel.bulkWrite(tasks);
  36. return data;
  37. }
  38. function getData(projectID, callback) {
  39. divideModel.findOne({projectID: projectID}, '-_id', async function (err, datas) {
  40. if (!err) {
  41. // 旧项目没有人工系数文件,默认给它生成一个。
  42. if (!datas) {
  43. datas = {
  44. ID: uuidV1(),
  45. projectID:projectID,
  46. divideList:[],
  47. ration_gljs:[],
  48. ration_coes:[],
  49. bills:[]
  50. }
  51. await divideModel.create(datas);
  52. callback(0, projectConsts.DIVIDE_SETTING, datas);
  53. } else {
  54. callback(0, projectConsts.DIVIDE_SETTING, datas);
  55. };
  56. } else {
  57. callback(1, projectConsts.DIVIDE_SETTING, null);
  58. };
  59. });
  60. }