compleCoeFacade.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Zhong
  6. * @date 2018/10/25
  7. * @version
  8. */
  9. module.exports = {
  10. getComplementaryCoes,
  11. getCoeItemsByIDs,
  12. getCoeItemsByNos,
  13. saveToCoeList,
  14. };
  15. const mongoose = require("mongoose");
  16. const counter = require('../../../public/counter/counter');
  17. const compleCoeModel = mongoose.model('complementary_ration_coe_list');
  18. const async = require('async');
  19. const deleteQuery = [{deleteInfo: null}, {'deleteInfo.deleted': false}];
  20. //获取用户总的补充子目换算
  21. async function getComplementaryCoes(userId, compilationId) {
  22. let coeData = await compleCoeModel.find({userId: userId, compilationId: compilationId, $or: deleteQuery});
  23. return coeData;
  24. }
  25. //补充子目换算增删改
  26. async function saveToCoeList(userId, compilationId, data, callback) {
  27. let bulks = [],
  28. newDatas = [];
  29. if (data.addArr && data.addArr.length > 0) {
  30. let insertOprs = await getInsertBulk(userId, compilationId, data.addArr);
  31. bulks = bulks.concat(insertOprs.insertBulk);
  32. newDatas = insertOprs.newDatas;
  33. }
  34. if (data.updateArr && data.updateArr.length > 0) {
  35. bulks = bulks.concat(getUpdateBulk(data.updateArr));
  36. }
  37. if (data.deleteArr && data.deleteArr.length > 0) {
  38. let deleteObj = {
  39. deleted: true,
  40. deleteDateTime: new Date(),
  41. deleteBy: userId
  42. };
  43. for (let delData of data.deleteArr) {
  44. delData.deleteInfo = deleteObj
  45. }
  46. bulks = bulks.concat(getUpdateBulk(data.deleteArr));
  47. }
  48. if (bulks.length > 0) {
  49. await compleCoeModel.bulkWrite(bulks);
  50. }
  51. return newDatas;
  52. }
  53. async function getInsertBulk(userId, compilationId, addArr) {
  54. let insertBulk = [],
  55. newDatas = [];
  56. let counterResult = await counter.counterDAO.getIDAfterCountSync(counter.moduleName.complementaryCoeList, addArr.length);
  57. let maxId = counterResult.sequence_value;
  58. for (let insertData of addArr) {
  59. insertData.userId = userId;
  60. insertData.compilationId = compilationId;
  61. insertData.ID = (maxId - (addArr.length - 1) + addArr.indexOf(insertData));
  62. insertData.coes = [];
  63. newDatas.push(insertData);
  64. insertBulk.push({insertOne: {document: insertData}});
  65. }
  66. return {insertBulk, newDatas};
  67. }
  68. function getUpdateBulk(updateArr) {
  69. let updateBulk = [],
  70. updateFields = ['name', 'content', 'coes', 'deleteInfo'];
  71. for (let updateData of updateArr) {
  72. let needSet = {};
  73. for (let attr in updateData){
  74. if (updateFields.includes(attr)){
  75. needSet[attr] = updateData[attr];
  76. }
  77. }
  78. updateBulk.push({updateOne:{filter: {ID: updateData.ID}, update: {$set: needSet}}});
  79. }
  80. return updateBulk;
  81. }
  82. //根据序号获取子目换算,插入子目换算时用
  83. async function getCoeItemsByNos(userId, compilationId, serialNos) {
  84. return await compleCoeModel.find({userId: userId, compilationId: compilationId, serialNo: {$in: serialNos}}, '-_id ID serialNo name content');
  85. }
  86. //根据ID获取子目换算,获取定额子目换算用
  87. async function getCoeItemsByIDs(coeIds) {
  88. return await compleCoeModel.find({ID: {$in: coeIds}}, '-_id ID serialNo name content');
  89. }