| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | 
							- 'use strict';
 
- /**
 
-  *
 
-  *
 
-  * @author Mai
 
-  * @date
 
-  * @version
 
-  */
 
- const ledger = require('../ledger');
 
- class reportMemoryBudget {
 
-     constructor(ctx) {
 
-         this.ctx = ctx;
 
-         this.budget = null;
 
-         this.getBudget = false;
 
-     }
 
-     async budgetGai(bid) {
 
-         const gai = await this.ctx.service.budgetGai.getAllDataByCondition({ where: { bid } });
 
-         const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: ['total_price'] });
 
-         tree.loadDatas(gai);
 
-         tree.calculateAll();
 
-         return tree.getDefaultDatas();
 
-     }
 
-     async budgetYu(bid) {
 
-         const yu = await this.ctx.service.budgetYu.getAllDataByCondition({ where: { bid } });
 
-         const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: ['total_price'] });
 
-         tree.loadDatas(yu);
 
-         tree.calculateAll();
 
-         return tree.getDefaultDatas();
 
-     }
 
-     async budgetGu(bid) {
 
-         const gu = await this.ctx.service.budgetGu.getAllDataByCondition({ where: { bid } });
 
-         const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: ['total_price'] });
 
-         tree.loadDatas(gu);
 
-         tree.calculateAll();
 
-         return tree.getDefaultDatas();
 
-     }
 
-     async budgetFinal(bid) {
 
-         const budget = this.ctx.budget && this.ctx.budget.id === bid
 
-             ? this.ctx.budget
 
-             : await this.ctx.service.budget.getDataById(bid);
 
-         if (!budget.final_id) return [];
 
-         const final = await this.ctx.service.budgetFinal.getAllDataByCondition({ where: { final_id: budget.final_id } });
 
-         const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: [] });
 
-         tree.loadDatas(final);
 
-         return tree.getDefaultDatas();
 
-     }
 
-     async _getTenderBudget(tid) {
 
-         if (this.getBudget) return;
 
-         const budgets = await this.ctx.service.budget.getBudget(true);
 
-         this.budget = budgets.find(x => {
 
-             const relaTender = x.rela_tender.split(',');
 
-             return relaTender.indexOf(tid + '') >= 0;
 
-         });
 
-         this.getBudget = true;
 
-     }
 
-     async tenderGai(tid) {
 
-         await this._getTenderBudget(tid);
 
-         return this.budget ? await this.budgetGai(this.budget.id) : [];
 
-     }
 
-     async tenderYu(tid) {
 
-         await this._getTenderBudget(tid);
 
-         return this.budget ? await this.budgetYu(this.budget.id) : [];
 
-     }
 
-     async tenderGu(tid) {
 
-         await this._getTenderBudget(tid);
 
-         return this.budget ? await this.budgetGu(this.budget.id) : [];
 
-     }
 
-     async tenderFinal(tid) {
 
-         await this._getTenderBudget(tid);
 
-         return this.budget ? await this.budgetFinal(this.budget.id) : [];
 
-     }
 
- }
 
- module.exports = reportMemoryBudget;
 
 
  |