123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /**
- * Created by Tony on 2017/8/9.
- */
- // let consts = require('../../../modules/main/models/project_consts');
- // let projectConst = consts.projectConst;
- let prjMdl = require('../../../modules/pm/models/project_model');
- let projectDataMdl = require('../../../modules/main/models/project');
- module.exports = {
- prepareProjectData: prepareProjectData,
- prepareMultiProjectData: prepareMultiProjectData
- };
- function prepareProjectData(userId, prjId, filter, callback) {
- let rawDataObj = null;
- let basicInformation = prjMdl.project.getBasicInfo(prjId);
- prjMdl.project.getUserProject(userId, prjId, function(err, msg, rst){
- if (!err) {
- rawDataObj = {};
- rawDataObj.prj = rst;
- projectDataMdl.getFilterData(prjId, filter, function (results) {
- if (results) {
- rawDataObj.prjData = results;
- basicInformation.then(function(basicRst) {
- if (basicRst !== null && basicRst !== undefined) {
- let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
- doc.property.basicInformation = basicRst;
- }
- callback(false, 'Succeeded!', rawDataObj);
- });
- // callback(false, 'Succeeded!', rawDataObj);
- } else {
- callback(true, 'No data were found!', null);
- }
- });
- } else {
- callback(err, msg, null);
- }
- });
- }
- async function prepareMultiProjectData(userId, prjIds, filter) {
- function getProjectPageData(prjId, basicRst) {
- return new Promise(function(resolve, reject) {
- // console.log('promise prjId: ' + prjId);
- prjMdl.project.getUserProject(userId, prjId, function(err, msg, rst){
- if (!err) {
- projectDataMdl.getFilterData(prjId, filter, function (results) {
- if (results) {
- rawDataObj = {};
- rawDataObj.prj = rst;
- // console.log(results);
- rawDataObj.prjData = results;
- /*
- prjMdl.project.getBasicInfo(prjId).then(function(basicRst) {
- if (basicRst !== null && basicRst !== undefined) {
- let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
- doc.property.basicInformation = basicRst;
- }
- resolve(rawDataObj);
- });
- /*/
- if (basicRst !== null && basicRst !== undefined) {
- let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
- doc.property.basicInformation = basicRst;
- }
- resolve(rawDataObj);
- //*/
- } else {
- return reject('No data were found!');
- }
- });
- } else {
- return reject(err);
- }
- });
- // let prjRst = prjMdl.project.getUserProjectAsync(userId, prjId);
- // rawDataObj = {};
- // rawDataObj.prj = prjRst;
- // projectDataMdl.getFilterData(prjId, filter, function (results) {
- // if (results) {
- // rawDataObj.prjData = results;
- // basicInformation.then(function(basicRst) {
- // if (basicRst !== null && basicRst !== undefined) {
- // let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
- // doc.property.basicInformation = basicRst;
- // }
- // resolve(rawDataObj);
- // });
- // } else {
- // return reject(rawDataObj);
- // }
- // });
- });
- }
- let parallelFunctions = [];
- for (let pId of prjIds) {
- let basicRst = await prjMdl.project.getBasicInfo(pId); // 备注:项目basic info不能用.then的方式处理,否则会出现多个prjId返回相同数据的情况,只能先处理好,作为参数传递进去
- parallelFunctions.push(getProjectPageData(pId, basicRst));
- }
- let rst = await Promise.all(parallelFunctions);
- return rst;
- }
|