|
|
@@ -14,6 +14,7 @@ module.exports = {
|
|
|
getBudgetSummayDatas: getBudgetSummayDatas,
|
|
|
getGLJSummayDatas: getGLJSummayDatas,
|
|
|
prepareMultiProjectData: prepareMultiProjectData,
|
|
|
+ prepareMultiProjectDataEx: prepareMultiProjectDataEx,
|
|
|
};
|
|
|
|
|
|
function prepareProjectData(userId, prjId, filter, callback) {
|
|
|
@@ -69,6 +70,7 @@ async function getGLJSummayDatas(prjIds) {
|
|
|
return await projectFacade.getGLJSummayDatas(prjIds);
|
|
|
}
|
|
|
|
|
|
+// prepareMultiProjectData 方法实际测试有并行问题,并行的结果有时候会乱来,弃用。以prepareMultiProjectDataEx代替
|
|
|
async function prepareMultiProjectData(userId, prjIds, filter) {
|
|
|
function getProjectPageData(prjId, basicRst) {
|
|
|
return new Promise(function(resolve, reject) {
|
|
|
@@ -86,14 +88,16 @@ async function prepareMultiProjectData(userId, prjIds, filter) {
|
|
|
rawDataObj = {};
|
|
|
rawDataObj.prj = rst;
|
|
|
rawDataObj.prjData = results;
|
|
|
- let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
|
|
|
+ // let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
|
|
|
if (basicRst !== null) {
|
|
|
doc.property.basicInformation = basicRst;
|
|
|
}
|
|
|
if (estUnitPriceFeature) {
|
|
|
estUnitPriceFeature.then( (features) => {
|
|
|
- let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
|
|
|
+ // let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
|
|
|
doc.property.estUnitPriceFeature = features.feature;
|
|
|
+ console.log(`prjId: ${prjId}`);
|
|
|
+ console.log(rawDataObj);
|
|
|
resolve(rawDataObj);
|
|
|
});
|
|
|
} else {
|
|
|
@@ -110,10 +114,32 @@ async function prepareMultiProjectData(userId, prjIds, filter) {
|
|
|
});
|
|
|
}
|
|
|
let parallelFunctions = [];
|
|
|
- for (let prjId of prjIds) {
|
|
|
- let firstBasicRst = await prjMdl.project.getBasicInfo(prjId);
|
|
|
- parallelFunctions.push(getProjectPageData(prjId, firstBasicRst));
|
|
|
+ for (let pidx = 0; pidx < prjIds.length; pidx++) {
|
|
|
+ let firstBasicRst = await prjMdl.project.getBasicInfo(prjIds[pidx]);
|
|
|
+ parallelFunctions.push(getProjectPageData(prjIds[pidx], firstBasicRst));
|
|
|
}
|
|
|
let rst = await Promise.all(parallelFunctions);
|
|
|
return rst;
|
|
|
+}
|
|
|
+
|
|
|
+async function prepareMultiProjectDataEx(userId, prjIds, filter) {
|
|
|
+ let rstData = [];
|
|
|
+ for (let pidx = 0; pidx < prjIds.length; pidx++) {
|
|
|
+ let basicRst = await prjMdl.project.getBasicInfo(prjIds[pidx]);
|
|
|
+ let prj = await prjMdl.project.getUserProjectAsync(userId, prjIds[pidx]);
|
|
|
+ let prjData = await projectDataMdl.getFilterDataSync(prjIds[pidx], filter);
|
|
|
+ let prjDoc = prj._doc ? prj._doc : prj;
|
|
|
+ if (prjDoc.property.engineeringName === '指标估算') {
|
|
|
+ //要加料
|
|
|
+ let conditions = {compilationId: prjDoc.compilation};
|
|
|
+ let estUnitPriceFeature = await billsUnitPriceFeatureModel.findOne(conditions,{_id: 0}).lean();
|
|
|
+ prjDoc.property.estUnitPriceFeature = estUnitPriceFeature.feature;
|
|
|
+ }
|
|
|
+ let rawDataObj = {};
|
|
|
+ rawDataObj.prj = prj;
|
|
|
+ rawDataObj.prjData = prjData;
|
|
|
+ prjDoc.property.basicInformation = basicRst;
|
|
|
+ rstData.push(rawDataObj);
|
|
|
+ }
|
|
|
+ return rstData;
|
|
|
}
|