bills_template_facade.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /**
  2. * Created by Zhang on 2018/7/13.
  3. * 清单模板,新建项目使用
  4. */
  5. import mongoose from "mongoose";
  6. const uuidV1 = require('uuid/v1');
  7. let moment = require("moment");
  8. let compilationModel = mongoose.model("compilation");
  9. let billTemplateLibModel = mongoose.model("std_bills_template_lib");
  10. let billTemplateItemsModel = mongoose.model("std_bills_template_items");
  11. let billTemplate={
  12. addLib:addLib,
  13. copyLib: copyLib,
  14. getAllLibs:getAllLibs,
  15. getLibByID:getLibByID,
  16. saveLib:saveLib,
  17. deleteLibByID:deleteLibByID,
  18. getTemplateDatasByLibID:getTemplateDatasByLibID,
  19. updateTemplateItem:updateTemplateItem,
  20. getTemplateLibByCompilationID:getTemplateLibByCompilationID
  21. };
  22. async function getTemplateLibByCompilationID(compilationID) {
  23. return await billTemplateLibModel.find({compilationId:compilationID},['ID','name']);
  24. }
  25. async function updateTemplateItem (libID, datas) {
  26. for (let data of datas) {
  27. data.data.libID = libID;
  28. let condition = {libID: libID, ID: data.data.ID}, result;
  29. if (data.type === 'update') {
  30. result = await billTemplateItemsModel.update(condition, data.data);
  31. if (result === undefined || result.ok ===undefined || !result.ok) {
  32. throw '更新数据错误';
  33. }
  34. } else if (data.type === 'new') {
  35. result = await billTemplateItemsModel.create(data.data);
  36. if (!result) {
  37. throw '新增数据错误';
  38. }
  39. } else if (data.type === 'delete') {
  40. result = await billTemplateItemsModel.deleteOne(condition);
  41. result = result.result;
  42. if (result === undefined || result.ok ===undefined || !result.ok) {
  43. throw '删除数据错误';
  44. }
  45. }
  46. }
  47. return true;
  48. }
  49. async function getTemplateDatasByLibID(libID) {
  50. return await billTemplateItemsModel.find({libID:libID});
  51. }
  52. async function deleteLibByID(ID){
  53. //删除模板详情:
  54. await billTemplateItemsModel.deleteMany({libID:ID});
  55. return billTemplateLibModel.deleteOne({ID:ID});
  56. }
  57. async function getLibByID(ID) {
  58. return await billTemplateLibModel.findOne({ID:ID});
  59. }
  60. async function getAllLibs(filter = null) {
  61. if (filter) {
  62. return await billTemplateLibModel.find(filter);
  63. }
  64. return await billTemplateLibModel.find();
  65. }
  66. async function saveLib(param) {
  67. return await billTemplateLibModel.findOneAndUpdate(param.query,param.data,{new:true});
  68. }
  69. async function addLib(data){
  70. let now = new Date().getTime();
  71. let dateStr = moment(now).format('YYYY-MM-DD HH:mm:ss');
  72. //取编办信息
  73. let compilation = await compilationModel.findOne({_id:data.compilationId});
  74. if(compilation){
  75. let newLib = {
  76. creator: data.userAccount,
  77. createDate: now,
  78. recentOpr: [{operator: data.userAccount, operateDate: dateStr}],
  79. name: data.name,
  80. compilationId: data.compilationId,
  81. compilationName: compilation.name,
  82. deleted: false
  83. };
  84. newLib.ID = uuidV1();
  85. return await billTemplateLibModel.create(newLib);
  86. }else {
  87. throw new Error("没有找到该编办!");
  88. }
  89. }
  90. async function copyLib(libID, name, userName) {
  91. const lib = await billTemplateLibModel.findOne({ID: libID}, '-_id').lean();
  92. const libItems = await billTemplateItemsModel.find({libID}, '-_id').lean();
  93. lib.creator = userName;
  94. lib.createDate = Date.now();
  95. lib.recentOpr = [{operator: userName, operator: moment(lib.createDate).format('YYYY-MM-D HH:mm:ss')}];
  96. lib.name = name;
  97. lib.ID = uuidV1();
  98. await billTemplateLibModel.create(lib);
  99. libItems.forEach(item => {
  100. item.libID = lib.ID;
  101. });
  102. if (libItems.length) {
  103. await billTemplateItemsModel.insertMany(libItems);
  104. }
  105. }
  106. export default billTemplate