rpt_tpl_data_facade.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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. let projectFacade = require('../../../modules/main/facade/project_facade');
  9. let billsUnitPriceFeatureModel = mongoose.model('std_bills_unitprice_feature_lib');
  10. module.exports = {
  11. prepareProjectData: prepareProjectData,
  12. getBudgetSummayDatas: getBudgetSummayDatas,
  13. getGLJSummayDatas: getGLJSummayDatas,
  14. prepareMultiProjectData: prepareMultiProjectData,
  15. };
  16. function prepareProjectData(userId, prjId, filter, callback) {
  17. let rawDataObj = null;
  18. let basicInformation = prjMdl.project.getBasicInfo(prjId);
  19. let estUnitPriceFeature = null;
  20. prjMdl.project.getUserProject(userId, prjId, function(err, msg, rst){
  21. if (!err) {
  22. rawDataObj = {};
  23. rawDataObj.prj = rst;
  24. let doc = rst._doc? rst._doc : rst;
  25. if (doc.property.engineeringName === '指标估算') {
  26. //要加料
  27. let conditions = {compilationId: doc.compilation};
  28. estUnitPriceFeature = billsUnitPriceFeatureModel.findOne(conditions,{_id: 0}).lean();
  29. // billsUnitPriceFeatureModel
  30. }
  31. projectDataMdl.getFilterData(prjId, filter, function (results) {
  32. if (results) {
  33. rawDataObj.prjData = results;
  34. basicInformation.then(function(basicRst) {
  35. if (basicRst !== null && basicRst !== undefined) {
  36. let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
  37. doc.property.basicInformation = basicRst;
  38. }
  39. if (estUnitPriceFeature) {
  40. estUnitPriceFeature.then( (features) => {
  41. let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
  42. doc.property.estUnitPriceFeature = features.feature;
  43. // console.log(features);
  44. callback(false, 'Succeeded!', rawDataObj);
  45. });
  46. } else {
  47. callback(false, 'Succeeded!', rawDataObj);
  48. }
  49. });
  50. // callback(false, 'Succeeded!', rawDataObj);
  51. } else {
  52. callback(true, 'No data were found!', null);
  53. }
  54. });
  55. } else {
  56. callback(err, msg, null);
  57. }
  58. });
  59. }
  60. async function getBudgetSummayDatas(prjIds, userId, CompilationId, overWriteUrl) {
  61. return await projectFacade.getBudgetSummayDatas(prjIds, userId, CompilationId, overWriteUrl);
  62. }
  63. async function getGLJSummayDatas(prjIds) {
  64. return await projectFacade.getGLJSummayDatas(prjIds);
  65. }
  66. async function prepareMultiProjectData(userId, prjIds, filter) {
  67. function getProjectPageData(prjId, basicRst) {
  68. return new Promise(function(resolve, reject) {
  69. let estUnitPriceFeature = null;
  70. prjMdl.project.getUserProject(userId, prjId, function(err, msg, rst){
  71. if (!err) {
  72. projectDataMdl.getFilterData(prjId, filter, function(results) {
  73. let doc = rst._doc? rst._doc : rst;
  74. if (doc.property.engineeringName === '指标估算') {
  75. //要加料
  76. let conditions = {compilationId: doc.compilation};
  77. estUnitPriceFeature = billsUnitPriceFeatureModel.findOne(conditions,{_id: 0}).lean();
  78. }
  79. if (results) {
  80. rawDataObj = {};
  81. rawDataObj.prj = rst;
  82. rawDataObj.prjData = results;
  83. let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
  84. if (basicRst !== null) {
  85. doc.property.basicInformation = basicRst;
  86. }
  87. if (estUnitPriceFeature) {
  88. estUnitPriceFeature.then( (features) => {
  89. let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
  90. doc.property.estUnitPriceFeature = features.feature;
  91. resolve(rawDataObj);
  92. });
  93. } else {
  94. resolve(rawDataObj);
  95. }
  96. } else {
  97. return reject('No data were found!');
  98. }
  99. });
  100. } else {
  101. return reject(err);
  102. }
  103. });
  104. });
  105. }
  106. let parallelFunctions = [];
  107. for (let prjId of prjIds) {
  108. let firstBasicRst = await prjMdl.project.getBasicInfo(prjId);
  109. parallelFunctions.push(getProjectPageData(prjId, firstBasicRst));
  110. }
  111. let rst = await Promise.all(parallelFunctions);
  112. return rst;
  113. }