divide_facade.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. }
  28. }
  29. if(tasks.length > 0) await divideModel.bulkWrite(tasks);
  30. return data;
  31. }
  32. function getData(projectID, callback) {
  33. divideModel.findOne({projectID: projectID}, '-_id', async function (err, datas) {
  34. if (!err) {
  35. // 旧项目没有人工系数文件,默认给它生成一个。
  36. if (!datas) {
  37. datas = {
  38. ID: uuidV1(),
  39. projectID:projectID,
  40. divideList:[],
  41. ration_gljs:[],
  42. bills:[]
  43. }
  44. await divideModel.create(datas);
  45. callback(0, projectConsts.DIVIDE_SETTING, datas);
  46. } else {
  47. callback(0, projectConsts.DIVIDE_SETTING, datas);
  48. };
  49. } else {
  50. callback(1, projectConsts.DIVIDE_SETTING, null);
  51. };
  52. });
  53. }