|
@@ -312,12 +312,14 @@ async function checkStg(ctx, params) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-async function getReportData(ctx, params, filters) {
|
|
|
+async function getReportData(ctx, params, filters, memFieldKeys) {
|
|
|
const rst = {};
|
|
|
const runnableRst = [];
|
|
|
const runnableKey = []; // 这个配合runnableRst用,未来考虑并行查询优化
|
|
|
// console.log('params');
|
|
|
// console.log(params);
|
|
|
+ console.log('memFieldKeys');
|
|
|
+ console.log(memFieldKeys);
|
|
|
for (const filter of filters) {
|
|
|
if (runnableKey.indexOf(filter) < 0) {
|
|
|
switch (filter) {
|
|
@@ -352,6 +354,7 @@ async function getReportData(ctx, params, filters) {
|
|
|
runnableKey.push('stage_pay');
|
|
|
break;
|
|
|
case 'mem_stage_im_zl':
|
|
|
+ // memFieldKeys[filter]
|
|
|
runnableRst.push(ctx.service.reportMemory.getStageImZlData(params.tender_id, params.stage_id));
|
|
|
runnableKey.push('mem_stage_im_zl');
|
|
|
break;
|
|
@@ -398,7 +401,7 @@ async function getAllPagesCommon(ctx, rptTpl, params, option, outputType, baseDi
|
|
|
// console.log(rptTpl);
|
|
|
const filter = rptDataUtil.getDataRequestFilter();
|
|
|
// console.log(filter.tables);
|
|
|
- const rawDataObj = await getReportData(ctx, params, filter.tables);
|
|
|
+ const rawDataObj = await getReportData(ctx, params, filter.tables, filter.memFieldKeys);
|
|
|
// console.log(rawDataObj);
|
|
|
try {
|
|
|
// console.log('before assemble');
|
|
@@ -450,6 +453,7 @@ async function getMultiRptsCommon(ctx, params, outputType, baseDir) {
|
|
|
}
|
|
|
const rptDataUtil = new rptDataExtractor();
|
|
|
const filterTables = [];
|
|
|
+ const memFieldKeys = {};
|
|
|
if (rptTpls.length > 1) {
|
|
|
rptTpls.sort(function(item1, item2) {
|
|
|
const i1 = (item1._doc) ? item1._doc : item1;
|
|
@@ -467,10 +471,21 @@ async function getMultiRptsCommon(ctx, params, outputType, baseDir) {
|
|
|
if (filterTables.indexOf(table) < 0) {
|
|
|
filterTables.push(table);
|
|
|
}
|
|
|
+ // memFieldKeys[table] = [];
|
|
|
+ }
|
|
|
+ for (const tableKeyProp in filter.memFieldKeys) {
|
|
|
+ if (!memFieldKeys.hasOwnProperty(tableKeyProp)) {
|
|
|
+ memFieldKeys[tableKeyProp] = [];
|
|
|
+ }
|
|
|
+ for (const mfKey of filter.memFieldKeys[tableKeyProp]) {
|
|
|
+ if (memFieldKeys[tableKeyProp].indexOf(mfKey) < 0) {
|
|
|
+ memFieldKeys[tableKeyProp].push(mfKey);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- const rawDataObj = await getReportData(ctx, params, filterTables);
|
|
|
+ const rawDataObj = await getReportData(ctx, params, filterTables, memFieldKeys);
|
|
|
try {
|
|
|
const rptPageRstArray = [];
|
|
|
// 1. 这里只用一份数据,根据实际应用情况,先备份
|