浏览代码

多期汇总调整

MaiXinRong 4 年之前
父节点
当前提交
5305a1db4c

+ 4 - 1
app/extend/helper.js

@@ -786,9 +786,12 @@ module.exports = {
                     }
                 }
             }
-        };
+        }
         for (const m of main) {
             index[indexPre + m.id] = m;
+            for (const r of rela) {
+                if (r.defaultData) _.assignIn(m, r.defaultData);
+            }
         }
         for (const r of rela) {
             loadFields(r.data, r.fields, r.prefix, r.relaId);

+ 3 - 0
app/lib/rpt_data_analysis.js

@@ -1364,7 +1364,9 @@ const stageSelectConverse = {
         const gsDefine = csRela.tplDefine.stage_select;
         if (!gsDefine || !gsDefine.enable || !gsDefine.setting || gsDefine.setting === '') return;
         const gsCustom = csRela.cDefine ? csRela.cDefine.stage_select : null;
+        console.log(gsCustom[0]);
 
+        console.log(data.mem_stage_sum_bills[0]);
         for (const t of options.table) {
             switch (t) {
                 case 'mem_stage_sum_bills':
@@ -1374,6 +1376,7 @@ const stageSelectConverse = {
                     break;
             }
         }
+        console.log(data.mem_stage_sum_bills[0]);
     }
 };
 

+ 3 - 1
app/service/rpt_stage_sum_memory.js

@@ -174,12 +174,14 @@ module.exports = app => {
                 calcFields.push(prefix + 'qc_tp');
                 calcFields.push(prefix + 'gather_tp');
                 calcPrefix.push(prefix);
+                const defaultData = {};
+                defaultData[prefix + 'order'] = stage.order;
 
                 const curStage = stage.readOnly
                     ? await this.ctx.service.stageBills.getAuditorStageData(this.ctx.tender.id, stage.id, stage.curTimes, stage.curOrder)
                     : await this.ctx.service.stageBills.getLastestStageData(this.ctx.tender.id, stage.id);
                 this.ctx.helper.assignRelaData(billsData, [
-                    {data: curStage, fields: ['contract_qty', 'contract_tp', 'contract_expr', 'qc_qty', 'qc_tp'], prefix: prefix, relaId: 'lid'}
+                    {data: curStage, fields: ['contract_qty', 'contract_tp', 'contract_expr', 'qc_qty', 'qc_tp'], prefix: prefix, relaId: 'lid', defaultData: defaultData}
                 ]);
             }
 

+ 6 - 6
builder_report_index_define.js

@@ -1069,12 +1069,12 @@ const stage_sum_bills = {
         { name: '总额计量', field: 'is_tp', type: dataType.int },
 
         { name: '(期)-第几期', field: 's_order', type: dataType.int },
-        { name: '(期)-合同-数量', field: 's1_contract_qty', type: dataType.currency },
-        { name: '(期)-合同-金额', field: 's1_contract_tp', type: dataType.currency },
-        { name: '(期)-变更-数量', field: 's1_qc_qty', type: dataType.currency },
-        { name: '(期)-变更-金额', field: 's1_qc_tp', type: dataType.currency },
-        { name: '(期)-完成-数量', field: 's1_gather_qty', type: dataType.currency },
-        { name: '(期)-完成-金额', field: 's1_gather_tp', type: dataType.currency },
+        { name: '(期)-合同-数量', field: 's_contract_qty', type: dataType.currency },
+        { name: '(期)-合同-金额', field: 's_contract_tp', type: dataType.currency },
+        { name: '(期)-变更-数量', field: 's_qc_qty', type: dataType.currency },
+        { name: '(期)-变更-金额', field: 's_qc_tp', type: dataType.currency },
+        { name: '(期)-完成-数量', field: 's_gather_qty', type: dataType.currency },
+        { name: '(期)-完成-金额', field: 's_gather_tp', type: dataType.currency },
 
         { name: '交叉排序', field: 'cross_index', type: dataType.int },
     ],

+ 58 - 0
test/app/service/rpt_stage_sum_memory.test.js

@@ -0,0 +1,58 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Mai
+ * @date
+ * @version
+ */
+
+const { app, assert } = require('egg-mock/bootstrap');
+const path = require('path');
+let savePath;
+const mockData = {};
+
+const testSettingStageSum = {
+    postData: {
+        account: 'zengpeiwen',
+        project: 'P1201',
+        project_password: '123456',
+    },
+    tenderId: 2438,
+    sorder: 3,
+    stage_select_define: {
+        enable: true,
+        setting: JSON.stringify({"title": "请选择", "min": 1, "max": 6})
+    },
+    stage_select_custom: {"stages":[1,2]},
+};
+
+const reportDataAnalysis = require('../../../app/lib/rpt_data_analysis');
+
+describe('test/app/service/rpt_stage_sum_memory.test.js', () => {
+    // 准备测试数据
+    before(function* () {
+        const ctx = app.mockContext();
+        savePath = path.join(ctx.app.baseDir,'report_temp');
+    });
+    it('test getStageSumBillsData & stageSelectConverse', function* () {
+        const ctx = app.mockContext();
+        const testSetting = testSettingStageSum;
+        ctx.session = {};
+        const loginResult = yield ctx.service.projectAccount.accountLogin(testSetting.postData, 2);
+        assert(loginResult);
+
+        const data = {};
+        const stage = yield ctx.service.stage.getDataByCondition({tid: testSetting.tenderId, order: testSetting.sorder});
+        data.mem_stage_sum_bills = yield ctx.service.rptStageSumMemory.getStageSumBills(stage.tid, [],
+            testSettingStageSum.stage_select_define, testSetting.stage_select_custom);
+        yield ctx.helper.saveBufferFile(JSON.stringify(data, "", "\t"), path.join(savePath, 'getStageSumBillsData.json'));
+
+        reportDataAnalysis.analysisObj.stageSelectConverse.fun(ctx, data, [], {table: ["mem_stage_sum_bills"]}, {
+            cDefine: { stage_select: testSetting.stage_select_custom },
+            tplDefine: {stage_select: testSetting.stage_select_define },
+        });
+        yield ctx.helper.saveBufferFile(JSON.stringify(data, "", "\t"), path.join(savePath, 'stageSelectConverse.json'));
+    });
+});