浏览代码

单标段多期汇总表,新增计量单元指标

MaiXinRong 1 年之前
父节点
当前提交
cef251dee8
共有 3 个文件被更改,包括 41 次插入0 次删除
  1. 1 0
      app/lib/rpt_data_analysis.js
  2. 5 0
      app/service/report.js
  3. 35 0
      app/service/rpt_stage_sum_memory.js

+ 1 - 0
app/lib/rpt_data_analysis.js

@@ -1435,6 +1435,7 @@ const stageSelectConverse = {
             for (const t of options.table) {
                 switch (t) {
                     case 'mem_stage_sum_bills':
+                    case 'mem_stage_sum_pos':
                     case 'mem_stage_sum_pay':
                     case 'mem_union_data':
                         data[t] = this._commonConverse(ctx.helper, data[t], gsCustom.stages);

+ 5 - 0
app/service/report.js

@@ -278,6 +278,11 @@ module.exports = app => {
                                 customDefine.stage_select, customSelect ? customSelect.stage_select : null, true));
                             runnableKey.push(filter);
                             break;
+                        case 'mem_stage_sum_pos':
+                            runnableRst.push(service.rptStageSumMemory.getStageSumPos(params.tender_id, memFieldKeys[filter],
+                                customDefine.stage_select, customSelect ? customSelect.stage_select : null));
+                            runnableKey.push(filter);
+                            break;
                         case 'mem_stage_sum_pay':
                             runnableRst.push(service.rptStageSumMemory.getStageSumPay(params.tender_id, memFieldKeys[filter],
                                 customDefine.stage_select, customSelect ? customSelect.stage_select : null));

+ 35 - 0
app/service/rpt_stage_sum_memory.js

@@ -81,6 +81,41 @@ module.exports = app => {
             return showLevel ? billsTree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : billsTree.getDefaultDatas();
         }
 
+
+        async getStageSumBills(tid, memFieldKeys, gsDefine, gsCustom) {
+            const self = this;
+            if (!gsDefine || !gsDefine.enable) return [];
+            if (!gsCustom || !gsCustom.stages || gsCustom.stages.length === 0) return [];
+
+            await this.ctx.service.tender.checkTender(tid);
+            const posData = await this.ctx.service.pos.getAllDataByCondition({ where: { tid: tender.id} });
+            const calcPrefix = [];
+            for (const s of gsCustom.stages) {
+                const stage = await this.db.get(this.ctx.service.stage.tableName, { tid: this.ctx.tender.id, order: s });
+                if (!stage) continue;
+                await this.ctx.service.stage.doCheckStage(stage);
+
+                const prefix = 's_' + stage.order + '_';
+                calcPrefix.push(prefix);
+                const defaultData = {};
+                defaultData[prefix + 'order'] = stage.order;
+
+                const curStage = stage.readOnly
+                    ? await this.ctx.service.stagePos.getAuditorStageData2(this.ctx.tender.id, stage.id, stage.curTimes, stage.curOrder)
+                    : await this.ctx.service.stagePos.getLastestStageData2(this.ctx.tender.id, stage.id);
+                this.ctx.helper.assignRelaData(posData, [
+                    {data: curStage, fields: ['contract_qty', 'qc_qty'], prefix: prefix, relaId: 'lid', defaultData},
+                ]);
+            }
+            posData.forEach(x => {
+                for (const cp of calcPrefix) {
+                    x[cp + 'gather_qty'] = self.helper.add(x[cp + 'contract_qty'], x[cp + 'qc_qty']);
+                }
+            });
+
+            return posData;
+        }
+
         /**
          * 合同支付
          */