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.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(yu);
- tree.calculateAll();
- return tree.getDefaultDatas();
- }
- async budgetGu(bid) {
- const yu = 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(yu);
- 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;
|