Browse Source

获取章级编号

MaiXinRong 5 years ago
parent
commit
1defc1df5c
4 changed files with 38 additions and 110 deletions
  1. 0 107
      app/controller/report_controller.js
  2. 6 0
      app/extend/helper.js
  3. 21 1
      app/lib/rpt_data_analysis.js
  4. 11 2
      app/service/report.js

+ 0 - 107
app/controller/report_controller.js

@@ -341,113 +341,6 @@ module.exports = app => {
     return ReportController;
 };
 
-async function checkStg(ctx, params) {
-    if (ctx.stage === null || ctx.stage === undefined || parseInt(ctx.stage.id) !== parseInt(params.stage_id)) {
-        await ctx.service.stage.checkStage(params.stage_id);
-        if (ctx.stage) {
-            params.stage_order = ctx.stage.curOrder;
-        }
-    }
-}
-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) {
-                case 'project' :
-                    runnableRst.push(ctx.service.project.getProjectById(params.project_id));
-                    runnableKey.push('project');
-                    break;
-                case 'tender_info' :
-                    runnableRst.push(ctx.service.tenderInfo.getTenderInfo(params.tender_id));
-                    runnableKey.push('tender_info');
-                    break;
-                case 'ledger' :
-                    runnableRst.push(ctx.service.ledger.getData(params.tender_id, 0));
-                    runnableKey.push('ledger');
-                    break;
-                case 'deal_bills' :
-                    console.log('has push deal_bills! ' + params.tender_id);
-                    runnableRst.push(ctx.service.dealBills.getDataByTenderId(params.tender_id));
-                    runnableKey.push('deal_bills');
-                    break;
-                case 'stage_bills':
-                    runnableRst.push(ctx.service.stageBills.getLastestStageData(params.tender_id, params.stage_id));
-                    runnableKey.push('stage_bills');
-                    break;
-                case 'stage_bills_final':
-                    await checkStg(ctx, params);
-                    runnableRst.push(ctx.service.stageBillsFinal.getFinalDataEx(params.tender_id, params.stage_order));
-                    runnableKey.push('stage_bills_final');
-                    break;
-                case 'stage':
-                    runnableRst.push(ctx.service.stage.getStageById(params.stage_id));
-                    runnableKey.push('stage');
-                    break;
-                case 'stage_pay':
-                    await checkStg(ctx, params);
-                    runnableRst.push(ctx.service.stagePay.getAuditorStageData(params.stage_id, params.stage_times, params.stage_order));
-                    runnableKey.push('stage_pay');
-                    break;
-                case 'mem_stage_im_zl':
-                    // memFieldKeys[filter]
-                    runnableRst.push(ctx.service.reportMemory.getStageImZlData(params.tender_id, params.stage_id, memFieldKeys[filter]));
-                    runnableKey.push(filter);
-                    break;
-                case 'mem_month_progress':
-                    runnableRst.push(ctx.service.reportMemory.getMonthProgress(params.tender_id, memFieldKeys[filter]));
-                    runnableKey.push(filter);
-                    break;
-                case 'mem_stage_bills':
-                    runnableRst.push(ctx.service.reportMemory.getStageBillsData(params.tender_id, params.stage_id, memFieldKeys[filter]));
-                    runnableKey.push(filter);
-                    break;
-                case 'mem_stage_pos':
-                    runnableRst.push(ctx.service.reportMemory.getStagePosData(params.tender_id, params.stage_id, memFieldKeys[filter]));
-                    runnableKey.push(filter);
-                    break;
-                case 'mem_stage_bills_compare':
-                    runnableRst.push(ctx.service.reportMemory.getStagePosData(params.tender_id, params.stage_id, memFieldKeys[filter]));
-                    runnableKey.push(filter);
-                    break;
-                case 'change':
-                    runnableRst.push(ctx.service.change.getListByStatus(params.tender_id, 3)); // 获取所有审核通过的变更主信息
-                    runnableKey.push('change');
-                    break;
-                case 'change_audit_list':
-                    runnableRst.push(ctx.service.changeAuditList.getChangeAuditBills(params.tender_id)); // 获取所有审核通过的变更清单
-                    runnableKey.push('change_audit_list');
-                    break;
-                default:
-                    break;
-            }
-        }
-    }
-    const queryRst = await Promise.all(runnableRst);
-    for (let idx = 0; idx < runnableKey.length; idx++) {
-        rst[runnableKey[idx]] = queryRst[idx];
-    }
-    for (const filter of filters) {
-        switch (filter) {
-            case 'mem_stage_im_tz':
-                rst[filter] = await ctx.service.reportMemory.getStageImTzData(params.tender_id, params.stage_id, memFieldKeys[filter]);
-                break;
-            case 'mem_stage_im_tz_bills':
-                rst[filter] = await ctx.service.reportMemory.getStageImTzBillsData(params.tender_id, params.stage_id, memFieldKeys[filter]);
-                break;
-            default:
-                break;
-        }
-    }
-    return rst;
-}
-
 async function getAllPagesCommon(ctx, rptTpl, params, option, outputType, baseDir) {
     // let rptTpl = null;
     const rptDataUtil = new rptDataExtractor();

+ 6 - 0
app/extend/helper.js

@@ -417,6 +417,12 @@ module.exports = {
         return aCodes.length - bCodes.length;
     },
 
+    /**
+     * 根据 清单编号 获取 章级编号
+     * @param code
+     * @param symbol
+     * @returns {string}
+     */
     getChapterCode(code, symbol = '-') {
         if (!code || code === '') return '';
         const codePath = code.split(symbol);

+ 21 - 1
app/lib/rpt_data_analysis.js

@@ -414,6 +414,25 @@ const join = {
         }
     }
 };
+const getChapterCode = {
+    name: '获取章级编号',
+    hint: '',
+    defaultSetting: {
+        table: 'mem_stage_bills',
+        b_code: 'b_code',
+        chapter: 'chapter',
+    },
+    fun: function (ctx, data, fields, options) {
+        if (!options || !options.table || !options.b_code || !options.chapter) return;
+
+        const cData = data[options.table];
+        if (!cData) return;
+
+        for (const d of cData) {
+            d[options.chapter] = ctx.helper.getChapterCode(d[options.b_code]);
+        }
+    }
+};
 
 const analysisObj = {
     changeSort,
@@ -421,12 +440,13 @@ const analysisObj = {
     sortGcl,
     gatherChapter,
     join,
+    getChapterCode,
 };
 const analysisDefine = (function (obj) {
     const result = [];
     for (const o in obj) {
         const analysis = obj[o];
-        if (analysis.name && analysis.hint && analysis.fun) {
+        if (analysis.name && analysis.fun) {
             result.push({
                 name: analysis.name,
                 key: o,

+ 11 - 2
app/service/report.js

@@ -21,6 +21,15 @@ module.exports = app => {
             super(ctx);
         }
 
+        async checkStg(ctx, params) {
+            if (ctx.stage === null || ctx.stage === undefined || parseInt(ctx.stage.id) !== parseInt(params.stage_id)) {
+                await ctx.service.stage.checkStage(params.stage_id);
+                if (ctx.stage) {
+                    params.stage_order = ctx.stage.curOrder;
+                }
+            }
+        }
+
         async getReportData(params, filters, memFieldKeys) {
             const service = this.ctx.service;
             const rst = {};
@@ -50,7 +59,7 @@ module.exports = app => {
                             runnableKey.push(filter);
                             break;
                         case 'stage_bills_final':
-                            await checkStg(this.ctx, params);
+                            await this.checkStg(this.ctx, params);
                             runnableRst.push(service.stageBillsFinal.getFinalDataEx(params.tender_id, params.stage_order));
                             runnableKey.push(filter);
                             break;
@@ -59,7 +68,7 @@ module.exports = app => {
                             runnableKey.push(filter);
                             break;
                         case 'stage_pay':
-                            await checkStg(this.ctx, params);
+                            await this.checkStg(this.ctx, params);
                             runnableRst.push(service.stagePay.getAuditorStageData(params.stage_id, params.stage_times, params.stage_order));
                             runnableKey.push(filter);
                             break;