Quellcode durchsuchen

报表,数据源换源相关1.0

MaiXinRong vor 2 Jahren
Ursprung
Commit
50365d71c6

+ 25 - 0
app/const/source_type.js

@@ -0,0 +1,25 @@
+'use strict';
+
+const sourceTypeData = [
+    { id: 1, name: '标段&期', key: 'tender' },
+    { id: 10, name: '预付款', key: 'advance' },
+    { id: 20, name: '变更令', key: 'change' },
+    { id: 21, name: '变更计划', key: 'change_plan' },
+    { id: 22, name: '变更项目', key: 'change_project' },
+    { id: 23, name: '变更申请', key: 'change_apply' },
+    { id: 30, name: '材料调差', key: 'material' },
+    { id: 100, name: '支付审批', key: 'payment' },
+    { id: 101, name: '安全生产费', key: 'payment_safe' },
+];
+const sourceType = (function (data){
+    const result = {};
+    for (const d of data) {
+        result[d.key] = d.id;
+    }
+})(sourceTypeData);
+
+module.exports = {
+    sourceType,
+    sourceTypeData,
+    defaultSourceType: sourceTypeData[0].id,
+};

+ 3 - 0
app/controller/report_controller.js

@@ -34,6 +34,7 @@ const STD_COMP_STAMP_SIZE_HEIGHT = STD_COMP_STAMP_SIZE_WIDTH; // 公章标准尺
 const NORMAL_SIGN_STR = 'normal_sign';
 const COMPANY_SIGN_STR = 'company_stamp';
 const PRIVATE_SIGN_STR = 'private_stamp';
+const sourceTypeConst = require('../const/source_type');
 
 module.exports = app => {
     class ReportController extends app.BaseController {
@@ -409,7 +410,9 @@ module.exports = app => {
             if (!rptTpl || rptTpl.length !== 1) {
                 throw '获取模板失败';
             }
+            const source_type = rptTpl.source_type;
             rptTpl = JSON.parse(rptTpl[0].rpt_content);
+            rptTpl.source_type = source_type || sourceTypeConst.defaultSourceType;
             rptTpl.id = params.rpt_tpl_id;
             // console.log('get the template!');
             const customSelect = rptTpl[JV.NODE_CUSTOM_DEFINE] && rptTpl[JV.NODE_CUSTOM_DEFINE][JV.NODE_CUS_AUDIT_SELECT].enable

+ 9 - 7
app/service/jpc_report.js

@@ -17,6 +17,7 @@ const needCustomTables = [
     'mem_jh_gather_im_change', 'mem_jh_im_change', 'mem_jh_gather_stage_bills_compare',
     'mem_material_sum_gl',
 ];
+const sourceTypeConst = require('../const/source_type');
 
 module.exports = app => {
 
@@ -38,7 +39,7 @@ module.exports = app => {
             const rptDataUtil = new rptDataExtractor();
             rptDataUtil.initialize(rptTpl);
             const filter = rptDataUtil.getDataRequestFilter();
-            const rawDataObj = await ctx.service.report.getReportData(params, filter.tables, filter.memFieldKeys,
+            const rawDataObj = await ctx.service.report.getReportData(rptTpl.source_type, params, filter.tables, filter.memFieldKeys,
                 rptTpl[JV.NODE_CUSTOM_DEFINE], customSelect);
             // console.log(rawDataObj);
             try {
@@ -82,9 +83,10 @@ module.exports = app => {
                 return params.rpt_ids.indexOf(rpt1.id) - params.rpt_ids.indexOf(rpt2.id);
             });
             for (let rtIdx = 0; rtIdx < rptTpls.length; rtIdx++) {
-                const id = rptTpls[rtIdx].id;
-                rptTpls[rtIdx] = JSON.parse(rptTpls[rtIdx].rpt_content);
-                rptTpls[rtIdx].id = id;
+                const newRptTpl = JSON.parse(rptTpls[rtIdx].rpt_content);
+                newRptTpl.id = rptTpls[rtIdx].id;
+                newRptTpl.source_type = rptTpls[rtIdx].source_type || sourceTypeConst.defaultSourceType;
+                rptTpls[rtIdx] = newRptTpl;
             }
 
             const rptDataUtil = new rptDataExtractor();
@@ -127,8 +129,8 @@ module.exports = app => {
                 }
 
             }
-            const rawDataObj = await ctx.service.report.getReportData(params, filterTables, memFieldKeys, customDefine, customSelect);
-            // const rawDataObj = await ctx.service.report.getReportData(params, filterTables, memFieldKeys, {}, {});
+            const rawDataObj = await ctx.service.report.getReportData(rptTpls[0].source_type, params, filterTables, memFieldKeys, customDefine, customSelect);
+            // const rawDataObj = await ctx.service.report.getReportData(rptTpls[0].source_type, params, filterTables, memFieldKeys, {}, {});
             try {
                 const rptPageRstArray = [];
                 // 2. 一个一个模板创建数据
@@ -172,7 +174,7 @@ module.exports = app => {
                                 }
                             }
                         }
-                        const customRawDataObj = await ctx.service.report.getReportData(params, cfTables, cmFieldKeys,
+                        const customRawDataObj = await ctx.service.report.getReportData(rptTpl.source_type, params, cfTables, cmFieldKeys,
                             rptTpl[JV.NODE_CUSTOM_DEFINE], customSelect);
                         for (const prop in customRawDataObj) {
                             curRawDataObj[prop] = customRawDataObj[prop];

+ 9 - 1
app/service/report.js

@@ -16,6 +16,7 @@ const bindData = {
     materialGather: ['mem_material_gather_bills', 'mem_material_gather_xmj', 'mem_material_gather_gl'],
     gatherChange: ['mem_gather_change', 'mem_gather_change_bills'],
 };
+const sourceTypeConst = require('../const/source_type');
 
 
 module.exports = app => {
@@ -68,7 +69,7 @@ module.exports = app => {
             return result;
         }
 
-        async getReportData(params, sourceFilters, memFieldKeys, customDefine, customSelect) {
+        async tender(params, sourceFilters, memFieldKeys, customDefine, customSelect) {
             const [filters, specFilters] = this.getFilter(sourceFilters);
             const service = this.ctx.service;
             await service.tender.checkTender(params.tender_id);
@@ -490,6 +491,13 @@ module.exports = app => {
             }
             return rst;
         }
+
+        async getReportData(source_type, params, sourceFilters, memFieldKeys, customDefine, customSelect) {
+            const sourceType = sourceTypeConst.sourceTypeData.find(x => { return x.id === source_type; });
+            if (!sourceType && !this[sourceType.key]) return {};
+
+            return await this[sourceType.key](params, sourceFilters, memFieldKeys, customDefine, customSelect);
+        }
     }
 
     return Report;

+ 0 - 1
app/service/report_memory.js

@@ -69,7 +69,6 @@ module.exports = app => {
         constructor(ctx) {
             super(ctx);
             const self = this;
-            this.tableName = 'report_memory';
             // 基础数据类
             // mainData
             this.pos = new Ledger.pos({

+ 2 - 1
test/app/controller/report_controller.test.js

@@ -11,6 +11,7 @@
 const { app, assert } = require('egg-mock/bootstrap');
 const mockData = {};
 const path = require('path');
+const sourceTypeConst = require('../const/source_type');
 
 describe('test/app/service/report_memory.test.js', () => {
     // 准备测试数据
@@ -43,7 +44,7 @@ describe('test/app/service/report_memory.test.js', () => {
             stage_id: stage.id,
         };
         const filters = ['change', 'change_audit_list'];
-        const result = yield ctx.service.report.getReportData(ctx, params, filters);
+        const result = yield ctx.service.report.getReportData(sourceTypeConst.defaultSourceType, params, filters);
         const savePath = path.join(ctx.app.baseDir, 'report_temp');
         yield ctx.helper.recursiveMkdirSync(savePath);
         for (const table in result) {

+ 9 - 8
test/app/lib/rpt_data_analysis.test.js

@@ -14,6 +14,7 @@ const path = require('path');
 let savePath;
 
 const reportDataAnalysis = require('../../../app/lib/rpt_data_analysis');
+const sourceTypeConst = require('../const/source_type');
 
 describe('test/app/service/report_memory.test.js', () => {
     // 准备测试数据
@@ -47,7 +48,7 @@ describe('test/app/service/report_memory.test.js', () => {
             stage_id: stage.id,
         };
         const filters = ['change', 'change_audit_list'];
-        const data = yield ctx.service.report.getReportData(params, filters);
+        const data = yield ctx.service.report.getReportData(sourceTypeConst.defaultSourceType, params, filters);
         reportDataAnalysis.analysisObj.changeSort.fun(ctx, data);
         assert(data.change[0].code === 'test7-BG-001');
         assert(data.change[2].code === 'test7-BG-003');
@@ -68,7 +69,7 @@ describe('test/app/service/report_memory.test.js', () => {
             stage_id: stage.id,
         };
         const filters = ['mem_stage_bills'];
-        const data = yield ctx.service.report.getReportData(params, filters, {
+        const data = yield ctx.service.report.getReportData(sourceTypeConst.defaultSourceType, params, filters, {
             mem_stage_bills: [
                 'id', 'tender_id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf',
                 'code', 'b_code', 'name', 'unit', 'unit_price',
@@ -122,7 +123,7 @@ describe('test/app/service/report_memory.test.js', () => {
             stage_id: stage.id,
         };
         const filters = ['mem_stage_bills', 'tender_info'];
-        const data = yield ctx.service.report.getReportData(params, filters, {
+        const data = yield ctx.service.report.getReportData(sourceTypeConst.defaultSourceType, params, filters, {
             mem_stage_bills: [
                 'id', 'tender_id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf',
                 'code', 'b_code', 'name', 'unit', 'unit_price',
@@ -160,7 +161,7 @@ describe('test/app/service/report_memory.test.js', () => {
             stage_id: stage.id,
         };
         const filters = ['mem_stage_bills', 'tender_info'];
-        const data = yield ctx.service.report.getReportData(params, filters, {
+        const data = yield ctx.service.report.getReportData(sourceTypeConst.defaultSourceType, params, filters, {
             mem_stage_bills: [
                 'id', 'tender_id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf',
                 'code', 'b_code', 'name', 'unit', 'unit_price',
@@ -195,7 +196,7 @@ describe('test/app/service/report_memory.test.js', () => {
             tender_id: stage.tid,
             stage_id: stage.id,
         };
-        const data = yield ctx.service.report.getReportData(params, ['mem_stage_bills', 'stage', 'stage_audit', 'ledger_cooperation', 'mem_stage_im_zl'], {
+        const data = yield ctx.service.report.getReportData(sourceTypeConst.defaultSourceType, params, ['mem_stage_bills', 'stage', 'stage_audit', 'ledger_cooperation', 'mem_stage_im_zl'], {
             mem_stage_bills: [
                 'id', 'tender_id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf'
             ],
@@ -213,7 +214,7 @@ describe('test/app/service/report_memory.test.js', () => {
             stage_id: stage.id,
         };
         const filters = ['mem_stage_bills', 'deal_bills'];
-        const data = yield ctx.service.report.getReportData(params, filters, {
+        const data = yield ctx.service.report.getReportData(sourceTypeConst.defaultSourceType, params, filters, {
             mem_stage_bills: [
                 'id', 'tender_id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf',
                 'code', 'b_code', 'name', 'unit', 'unit_price',
@@ -433,7 +434,7 @@ describe('test/app/service/report_memory.test.js', () => {
     //
     //     const params = {tender_id: 2072};
     //     const filters = ['mem_stage_bills', 'tender_info'];
-    //     const data = yield ctx.service.report.getReportData(params, filters, {
+    //     const data = yield ctx.service.report.getReportData(sourceTypeConst.defaultSourceType, params, filters, {
     //         mem_stage_bills: [
     //             'id', 'tender_id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf',
     //             'code', 'b_code', 'name', 'unit', 'unit_price',
@@ -523,7 +524,7 @@ describe('test/app/service/report_memory.test.js', () => {
             tender_id: 2546,
         };
         const filters = ['mem_stage_bills', 'tender_info', 'mem_stage_pos'];
-        const data = yield ctx.service.report.getReportData(params, filters, {
+        const data = yield ctx.service.report.getReportData(sourceTypeConst.defaultSourceType, params, filters, {
             mem_stage_bills: [
                 'id'
             ],

+ 2 - 1
test/app/service/report.test.js

@@ -12,6 +12,7 @@ const { app, assert } = require('egg-mock/bootstrap');
 const mockData = {};
 const path = require('path');
 const reportDataAnalysis = require('../../../app/lib/rpt_data_analysis');
+const sourceTypeConst = require('../const/source_type');
 
 describe('test/app/service/report_memory.test.js', () => {
     // 准备测试数据
@@ -47,7 +48,7 @@ describe('test/app/service/report_memory.test.js', () => {
             change: [],
             mem_stage_bills: [],
         };
-        const result = yield ctx.service.report.getReportData(params, filters, fields);
+        const result = yield ctx.service.report.getReportData(sourceTypeConst.defaultSourceType, params, filters, fields);
         reportDataAnalysis.analysisObj.changeSort.fun(ctx, result, [], {change: "change", changeBills: 'mem_change_bills'});
         const savePath = path.join(ctx.app.baseDir, 'report_temp');
         yield ctx.helper.recursiveMkdirSync(savePath);