rpt_tpl_data_facade.js 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /**
  2. * Created by Tony on 2017/8/9.
  3. */
  4. // let consts = require('../../../modules/main/models/project_consts');
  5. // let projectConst = consts.projectConst;
  6. let prjMdl = require('../../../modules/pm/models/project_model');
  7. let projectDataMdl = require('../../../modules/main/models/project');
  8. module.exports = {
  9. prepareProjectData: prepareProjectData,
  10. prepareMultiProjectData: prepareMultiProjectData
  11. };
  12. function prepareProjectData(userId, prjId, filter, callback) {
  13. let rawDataObj = null;
  14. let basicInformation = prjMdl.project.getBasicInfo(prjId);
  15. prjMdl.project.getUserProject(userId, prjId, function(err, msg, rst){
  16. if (!err) {
  17. rawDataObj = {};
  18. rawDataObj.prj = rst;
  19. projectDataMdl.getFilterData(prjId, filter, function (results) {
  20. if (results) {
  21. rawDataObj.prjData = results;
  22. basicInformation.then(function(basicRst) {
  23. if (basicRst !== null && basicRst !== undefined) {
  24. let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
  25. doc.property.basicInformation = basicRst;
  26. }
  27. callback(false, 'Succeeded!', rawDataObj);
  28. });
  29. // callback(false, 'Succeeded!', rawDataObj);
  30. } else {
  31. callback(true, 'No data were found!', null);
  32. }
  33. });
  34. } else {
  35. callback(err, msg, null);
  36. }
  37. });
  38. }
  39. async function prepareMultiProjectData(userId, prjIds, filter) {
  40. function getProjectPageData(prjId) {
  41. return new Promise(function(resolve, reject) {
  42. prjMdl.project.getUserProject(userId, prjId, function(err, msg, rst){
  43. if (!err) {
  44. projectDataMdl.getFilterData(prjId, filter, function (results) {
  45. if (results) {
  46. rawDataObj = {};
  47. rawDataObj.prj = rst;
  48. rawDataObj.prjData = results;
  49. /*
  50. prjMdl.project.getBasicInfo(prjId).then(function(basicRst) {
  51. if (basicRst !== null && basicRst !== undefined) {
  52. let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
  53. doc.property.basicInformation = basicRst;
  54. }
  55. resolve(rawDataObj);
  56. });
  57. /*/
  58. resolve(rawDataObj);
  59. //*/
  60. } else {
  61. return reject('No data were found!');
  62. }
  63. });
  64. } else {
  65. return reject(err);
  66. }
  67. });
  68. // let prjRst = prjMdl.project.getUserProjectAsync(userId, prjId);
  69. // rawDataObj = {};
  70. // rawDataObj.prj = prjRst;
  71. // projectDataMdl.getFilterData(prjId, filter, function (results) {
  72. // if (results) {
  73. // rawDataObj.prjData = results;
  74. // basicInformation.then(function(basicRst) {
  75. // if (basicRst !== null && basicRst !== undefined) {
  76. // let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
  77. // doc.property.basicInformation = basicRst;
  78. // }
  79. // resolve(rawDataObj);
  80. // });
  81. // } else {
  82. // return reject(rawDataObj);
  83. // }
  84. // });
  85. });
  86. }
  87. let parallelFunctions = [];
  88. for (let prjId of prjIds) {
  89. parallelFunctions.push(getProjectPageData(prjId));
  90. }
  91. let rst = await Promise.all(parallelFunctions);
  92. return rst;
  93. }