| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | 
							- 'use strict';
 
- /**
 
-  *
 
-  *
 
-  * @author Mai
 
-  * @date
 
-  * @version
 
-  */
 
- const RptMemBase = require('./base');
 
- const bindData = {};
 
- const Ledger = require('../ledger');
 
- class rptMemPaymentSafe extends RptMemBase {
 
-     constructor(ctx) {
 
-         super(ctx, bindData);
 
-     }
 
-     async doCheckTender(tenderId) {
 
-         if (this.ctx.paymentTender) return;
 
-         this.ctx.paymentTender = await this.ctx.service.paymentTender.doCheckTender(tenderId);
 
-     }
 
-     async doCheckDetail(detailId) {
 
-         if (this.ctx.detail) return;
 
-         this.ctx.detail = await this.ctx.service.paymentDetail.doCheckDetail(detailId);
 
-     }
 
-     async doBeforeLoadReport(params) {
 
-         await this.doCheckTender(params.tender_id);
 
-         await this.doCheckDetail(params.detail_id);
 
-     }
 
-     async getSafeBills() {
 
-         const bills = this.ctx.detail.readOnly
 
-             ? await this.ctx.service.paymentSafeBills.getReadData(this.ctx.detail)
 
-             : await this.ctx.service.paymentSafeBills.getEditData(this.ctx.detail);
 
-         const setting = {
 
-             id: 'tree_id',
 
-             pid: 'tree_pid',
 
-             order: 'tree_order',
 
-             level: 'tree_level',
 
-             isLeaf: 'tree_is_leaf',
 
-             fullPath: 'tree_full_path',
 
-             rootId: -1,
 
-             calcFields: ['pre_tp', 'cur_tp', 'end_tp'],
 
-         };
 
-         const billsTree = new Ledger.billsTree(this.ctx, setting);
 
-         billsTree.loadDatas(bills);
 
-         billsTree.calculateAll();
 
-         return billsTree.getDefaultDatas();
 
-     }
 
-     _analysisCompareData(datas, roles){
 
-         const findHis = function (role, history) {
 
-             let his = null;
 
-             for (const h of history) {
 
-                 if (h.times < role.times || (h.times === role.times && h.order <= role.order)) {
 
-                     his = h;
 
-                 } else {
 
-                     break;
 
-                 }
 
-             }
 
-             return his;
 
-         };
 
-         for (const d of datas) {
 
-             if (!d.tree_is_leaf) continue;
 
-             d.his_qty = [];
 
-             d.his_tp = [];
 
-             d.cur_his.sort((x, y) => { return x.times === y.times ? x.order - y.order : x.times - y.times; });
 
-             for (const r of roles) {
 
-                 if (r.latest) {
 
-                     d[`r_qty_${r.order}`] = d.cur_qty;
 
-                     d[`r_tp_${r.order}`] = d.cur_tp;
 
-                     d.his_qty.push(d.cur_qty);
 
-                     d.his_tp.push(d.cur_tp);
 
-                 } else {
 
-                     const rHis = findHis(r, d.cur_his);
 
-                     if (rHis) {
 
-                         d[`r_qty_${r.order}`] = rHis.qty;
 
-                         d[`r_tp_${r.order}`] = rHis.tp;
 
-                     }
 
-                     d.his_qty.push(rHis ? rHis.qty : 0);
 
-                     d.his_tp.push(rHis ? rHis.tp : 0);
 
-                 }
 
-             }
 
-         }
 
-     }
 
-     async getSafeBillsCompare() {
 
-         const bills = await this.ctx.service.paymentSafeBills.getCompareData(this.ctx.detail);
 
-         const roles = await this.ctx.service.paymentDetailAudit.getViewFlow(this.ctx.detail);
 
-         this._analysisCompareData(bills, roles);
 
-         const setting = {
 
-             id: 'tree_id',
 
-             pid: 'tree_pid',
 
-             order: 'tree_order',
 
-             level: 'tree_level',
 
-             isLeaf: 'tree_is_leaf',
 
-             fullPath: 'tree_full_path',
 
-             rootId: -1,
 
-         };
 
-         setting.calcFields = roles.map(x => { return `r_tp_${x.order}`});
 
-         setting.calcFields.push('pre_tp');
 
-         const compareTree = new Ledger.billsTree(this.ctx, setting);
 
-         compareTree.loadDatas(bills);
 
-         compareTree.calculateAll();
 
-         return compareTree.getDefaultDatas();
 
-     }
 
-     getCommonData(params, tableName, fields, customDefine, customSelect) {
 
-         switch (tableName) {
 
-             case 'mem_payment_tender':
 
-                 return [this.ctx.paymentTender];
 
-             case 'mem_payment_tender_info':
 
-                 return this.ctx.service.paymentTenderInfo.getTenderInfo(params.tender_id);
 
-             case 'mem_payment_detail':
 
-                 return [this.ctx.detail];
 
-             case 'mem_payment_safe_bills':
 
-                 return this.getSafeBills();
 
-             case 'mem_payment_safe_bills_compare':
 
-                 return this.getSafeBillsCompare();
 
-             default:
 
-                 return [];
 
-         }
 
-     }
 
- }
 
- module.exports = rptMemPaymentSafe;
 
 
  |