rpt_tpl_data_facade.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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, basicRst) {
  41. return new Promise(function(resolve, reject) {
  42. // console.log('promise prjId: ' + prjId);
  43. prjMdl.project.getUserProject(userId, prjId, function(err, msg, rst){
  44. if (!err) {
  45. projectDataMdl.getFilterData(prjId, filter, function (results) {
  46. if (results) {
  47. rawDataObj = {};
  48. rawDataObj.prj = rst;
  49. // console.log(results);
  50. rawDataObj.prjData = results;
  51. /*
  52. prjMdl.project.getBasicInfo(prjId).then(function(basicRst) {
  53. if (basicRst !== null && basicRst !== undefined) {
  54. let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
  55. doc.property.basicInformation = basicRst;
  56. }
  57. resolve(rawDataObj);
  58. });
  59. /*/
  60. if (basicRst !== null && basicRst !== undefined) {
  61. let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
  62. doc.property.basicInformation = basicRst;
  63. }
  64. resolve(rawDataObj);
  65. //*/
  66. } else {
  67. return reject('No data were found!');
  68. }
  69. });
  70. } else {
  71. return reject(err);
  72. }
  73. });
  74. // let prjRst = prjMdl.project.getUserProjectAsync(userId, prjId);
  75. // rawDataObj = {};
  76. // rawDataObj.prj = prjRst;
  77. // projectDataMdl.getFilterData(prjId, filter, function (results) {
  78. // if (results) {
  79. // rawDataObj.prjData = results;
  80. // basicInformation.then(function(basicRst) {
  81. // if (basicRst !== null && basicRst !== undefined) {
  82. // let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
  83. // doc.property.basicInformation = basicRst;
  84. // }
  85. // resolve(rawDataObj);
  86. // });
  87. // } else {
  88. // return reject(rawDataObj);
  89. // }
  90. // });
  91. });
  92. }
  93. let parallelFunctions = [];
  94. for (let pId of prjIds) {
  95. let basicRst = await prjMdl.project.getBasicInfo(pId); // 备注:项目basic info不能用.then的方式处理,否则会出现多个prjId返回相同数据的情况,只能先处理好,作为参数传递进去
  96. parallelFunctions.push(getProjectPageData(pId, basicRst));
  97. }
  98. let rst = await Promise.all(parallelFunctions);
  99. return rst;
  100. }