瀏覽代碼

报表数据源,永久材料相关

MaiXinRong 1 年之前
父節點
當前提交
8c438141ca
共有 3 個文件被更改,包括 81 次插入0 次删除
  1. 9 0
      app/service/report.js
  2. 16 0
      app/service/report_memory.js
  3. 56 0
      app/service/rpt_gather_memory.js

+ 9 - 0
app/service/report.js

@@ -180,6 +180,10 @@ module.exports = app => {
                             runnableRst.push(service.reportMemory.getStageJgcl(params.tender_id, params.stage_id, memFieldKeys[filter]));
                             runnableKey.push(filter);
                             break;
+                        case 'mem_stage_yjcl':
+                            runnableRst.push(service.reportMemory.getStageYjcl(params.tender_id, params.stage_id, memFieldKeys[filter]));
+                            runnableKey.push(filter);
+                            break;
                         case 'mem_stage_bonus':
                             runnableRst.push(service.reportMemory.getStageBonus(params.tender_id, params.stage_id, memFieldKeys[filter]));
                             runnableKey.push(filter);
@@ -216,6 +220,11 @@ module.exports = app => {
                                 customDefine.gather_select, customSelect ? customSelect.gather_select : null));
                             runnableKey.push(filter);
                             break;
+                        case 'mem_gather_stage_yjcl':
+                            runnableRst.push(service.rptGatherMemory.getGatherStageYjcl(memFieldKeys[filter],
+                                customDefine.gather_select, customSelect ? customSelect.gather_select : null));
+                            runnableKey.push(filter);
+                            break;
                         case 'mem_gather_stage_bonus':
                             runnableRst.push(service.rptGatherMemory.getGatherStageBonus(memFieldKeys[filter],
                                 customDefine.gather_select, customSelect ? customSelect.gather_select : null));

+ 16 - 0
app/service/report_memory.js

@@ -1285,6 +1285,22 @@ module.exports = app => {
             }
         }
 
+        async getStageYjcl(tid, sid, fields) {
+            try {
+                await this.ctx.service.tender.checkTender(tid);
+                await this.ctx.service.stage.checkStage(sid);
+
+                const data = await this.ctx.service.stageYjcl.getStageData(this.ctx.stage);
+                for (const d of data) {
+                    d.end_qty = this.ctx.helper.add(d.pre_qty, qty);
+                    d.end_tp = this.ctx.helper.add(d.pre_tp, tp);
+                }
+                return data;
+            } catch (err) {
+                return [];
+            }
+        }
+
         async getStageBonus(tid, sid, fields) {
             try {
                 await this.ctx.service.tender.checkTender(tid);

+ 56 - 0
app/service/rpt_gather_memory.js

@@ -1591,6 +1591,62 @@ module.exports = app => {
             return this.resultStageJgcl;
         }
 
+        async _gatherStageYjcl(tender, stage) {
+            const data = await this.ctx.service.stageYjcl.getStageData(stage);
+            for (const d of data) {
+                d.end_qty = this.ctx.helper.add(d.pre_qty, qty);
+                d.end_tp = this.ctx.helper.add(d.pre_tp, tp);
+            }
+            this.resultStageJgcl.push(...data);
+        }
+        async _gatherMonthStageYjcl(sTender, month) {
+            const tender = await this.ctx.service.tender.getCheckTender(sTender.tid);
+            const stages = await this._getValidStages(tender.id);
+            const stage = this.ctx.helper._.find(stages, {s_time: month});
+            await this._gatherStageYjcl(tender, stage);
+        }
+        async _gatherOrderStageYjcl(sTender, order) {
+            const tender = await this.ctx.service.tender.getCheckTender(sTender.tid);
+            const stages = await this._getValidStages(tender.id);
+            const stage = this.ctx.helper._.find(stages, {order: order});
+            await this._gatherStageYjcl(tender, stage);
+        }
+        async _gatherFinalStageYjcl(sTender) {
+            const tender = await this.ctx.service.tender.getCheckTender(sTender.tid);
+            const stages = await this._getValidStages(tender.id);
+            await this._gatherStageYjcl(tender, stages[0]);
+        }
+        async _gatherCheckedFinalStageYjcl(sTender) {
+            const tender = await this.ctx.service.tender.getCheckTender(sTender.tid);
+            const stages = await this._getCheckedStages(tender.id);
+            await this._gatherStageYjcl(tender, stages[0]);
+        }
+        async getGatherStageYjcl(memFieldKeys, gsDefine, gsCustom) {
+            if (!gsDefine || !gsDefine.enable) return [];
+            if (!gsCustom || !gsCustom.tenders || gsCustom.tenders.length === 0) return [];
+
+            this.resultStageYjcl = [];
+            const gsSetting = JSON.parse(gsDefine.setting);
+            for (const tender of gsCustom.tenders) {
+                switch (gsSetting.type) {
+                    case 'month':
+                        await this._gatherMonthStageYjcl(tender, gsCustom.month);
+                        break;
+                    case 'final':
+                        await this._gatherFinalStageYjcl(tender);
+                        break;
+                    case 'checked-final':
+                        await this._gatherCheckedFinalStageYjcl(tender);
+                        break;
+                    case 'stage':
+                        await this._gatherOrderStageYjcl(tender, gsCustom.stage);
+                        break;
+                }
+            }
+
+            return this.resultStageYjcl;
+        }
+
         async _gatherStageBonus(tender, stage) {
             const data = await this.ctx.service.stageBonus.getEndStageData(tender.id, stage.order);
             for (const d of data) {