compleInstallFacade.js 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Zhong
  6. * @date 2018/10/25
  7. * @version
  8. */
  9. module.exports = {
  10. getInstallation,
  11. updateFeeItem,
  12. updateSection,
  13. batchUpdateInst,
  14. };
  15. const mongoose = require("mongoose");
  16. const counter = require('../../../public/counter/counter');
  17. const async = require('async');
  18. const deleteQuery = [{deleteInfo: null}, {'deleteInfo.deleted': false}];
  19. const complefeeItemModel = mongoose.model('complementary_ration_installation');
  20. const compleSectionModel = mongoose.model('complementary_ration_installationSection');
  21. const compleRationModel = mongoose.model('complementary_ration_items');
  22. async function getInstallation(userId, compilationId){
  23. let feeItems = await complefeeItemModel.find({userId: userId, compilationId: compilationId, $or: deleteQuery});
  24. for (let feeItem of feeItems) {
  25. let sids = [];
  26. for (let sec of feeItem.section) {
  27. sids.push(sec.ID);
  28. }
  29. if (sids.length > 0) {
  30. let sections = await compleSectionModel.find({ID: {$in: sids}, $or: deleteQuery});
  31. feeItem._doc.section = sections;
  32. }
  33. }
  34. return feeItems;
  35. }
  36. //更新费用项
  37. async function updateFeeItem(userId, compilationId, updateData){
  38. for (let data of updateData) {
  39. if (data.updateType === 'new') {
  40. data.updateData.userId = userId;
  41. data.updateData.compilationId = compilationId;
  42. await complefeeItemModel.create(data.updateData);
  43. } else if (data.updateType === 'update' && !data.updateData.deleted) {
  44. await complefeeItemModel.update({ID: data.updateData.ID}, data.updateData);
  45. } else {
  46. let deleteInfo = {
  47. deleted: true,
  48. deleteDateTime: new Date(),
  49. deleteBy: userId
  50. };
  51. data.updateData.deleteInfo = deleteInfo;
  52. delete data.updateData.deleted;
  53. await complefeeItemModel.remove({ID: data.updateData.ID});
  54. }
  55. }
  56. }
  57. //更新分册章节
  58. async function updateSection(userId, compilationId, updateData){
  59. for (let data of updateData) {
  60. if (data.updateType === 'new') {
  61. data.updateData.userId = userId;
  62. data.updateData.compilationId = compilationId;
  63. await compleSectionModel.create(data.updateData);
  64. } else if (data.updateType === 'update' && !data.updateData.deleted) {
  65. await compleSectionModel.update({ID: data.updateData.ID}, data.updateData);
  66. } else {
  67. let deleteInfo = {
  68. deleted: true,
  69. deleteDateTime: new Date(),
  70. deleteBy: userId
  71. };
  72. data.updateData.deleteInfo = deleteInfo;
  73. delete data.updateData.deleted;
  74. await compleSectionModel.remove({ID: data.updateData.ID});
  75. }
  76. }
  77. }
  78. //批量关联至定额(选择某一章节)
  79. async function batchUpdateInst(rationSection, inst){
  80. for (let sectionId of rationSection) {
  81. await compleRationModel.update({sectionId: sectionId, $or: deleteQuery},
  82. {$addToSet: {rationInstList: {feeItemId: inst.feeItemId, sectionId: inst.sectionId}}}, {multi: true});
  83. }
  84. }