123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- 'use strict';
- /**
- *
- *
- * @author Mai
- * @date
- * @version
- */
- const RptMemBase = require('./base');
- const bindData = {};
- const changeConst = require('../../const/change');
- class rptMemChange extends RptMemBase {
- constructor(ctx) {
- super(ctx, bindData);
- }
- _getChangeConstName(define, value) {
- for (const prop in define) {
- if (define[prop].value === value) {
- return define[prop].name;
- }
- }
- return '';
- }
- async _anaylisChange(change) {
- const self = this;
- const types = this.ctx.helper._.map(change.type.split(','), function (t) {
- return self._getChangeConstName(changeConst.type, self.ctx.helper._.toInteger(t));
- });
- change.type = types.join(';');
- change.class = this._getChangeConstName(changeConst.class, change.class);
- change.quality = this._getChangeConstName(changeConst.quality, change.quality);
- change.charge = this._getChangeConstName(changeConst.charge, change.charge);
- }
- async doCheckChange(changeId) {
- if (this.ctx.change) return;
- this.ctx.change = await this.ctx.service.change.getDataByCondition({ cid: changeId });
- this._anaylisChange(this.ctx.change);
- }
- async doCheckTender(tenderId) {
- if (this.ctx.tender) return;
- this.ctx.tender = { id: tenderId };
- this.ctx.tender.data = await this.ctx.service.tender.getTender(tenderId);
- this.ctx.tender.info = await this.ctx.service.tenderInfo.getTenderInfo(tenderId);
- }
- async doBeforeLoadReport(params) {
- await this.doCheckChange(params.change_id);
- await this.doCheckTender(this.ctx.change.tid);
- }
- async _getChangeBills() {
- const decimal = this.ctx.tender.info.decimal;
- const changeBills = await this.ctx.service.changeAuditList.getAllDataByCondition({ where: { cid: this.ctx.change.cid} });
- for (const d of changeBills) {
- d.o_qty = d.oamount;
- d.o_tp = this.ctx.helper.mul(d.o_qty, d.unit_price, decimal.tp);
- d.o_qty2 = d.oamount2;
- d.o_tp2 = this.ctx.helper.mul(d.o_qty2, d.unit_price, decimal.tp);
- d.c_qty = d.camount;
- d.c_tp = this.ctx.helper.mul(d.c_qty, d.unit_price, decimal.tp);
- d.s_qty = d.samount ? parseFloat(d.samount) : 0;
- d.s_tp = this.ctx.helper.mul(d.s_qty, d.unit_price, decimal.tp);
- d.sp_qty = d.spamount;
- d.sp_tp = this.ctx.helper.mul(d.sp_qty, d.unit_price, decimal.tp);
- const auditAmount = d.audit_amount ? d.audit_amount.split(',') : [];
- const relaChange = this.ctx.helper._.find(this.ctx.change, {cid: d.cid});
- for (const [i, aa] of auditAmount.entries()) {
- const amountField = 'qty_' + (i+1), tpField = 'tp_' + (i+1);
- d[amountField] = aa ? parseFloat(aa) : 0;
- d[tpField] = this.ctx.helper.mul(d[amountField], d.unit_price, decimal.tp);
- if (relaChange) {
- relaChange[tpField] = this.ctx.helper.add(relaChange[tpField], d[tpField]);
- }
- }
- }
- return changeBills;
- }
- async getChangeLedgerBillsData(showLevel) {
- try {
- await this.ctx.service.tender.checkTender(tid);
- const billsData = await this.ctx.service.ledger.getData(this.ctx.tender.id);
- const changeBillsData = await this.ctx.service.changeLedger.getAllDataByCondition({ where: { ccid: this.ctx.change.id } });
- billsData.push(...changeBillsData);
- const billsTree = this._getNewBillsTree();
- billsTree.loadDatas(billsData);
- billsTree.calculateAll();
- if (this._checkFieldsExist(fields, [''])) {
- this._calcLeafXmjRela(billsTree);
- }
- return showLevel ? billsTree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : billsTree.getDefaultDatas();
- } catch(err) {
- this.ctx.log(err);
- return [];
- }
- }
- async getChangeLedgerPosData() {
- try {
- const posData = await this.ctx.service.pos.getAllDataByCondition({ where: {tid: this.ctx.tender.id }});
- const changePosData = await this.ctx.service.changePos.getAllDataByCondition({ where: { ccid: this.ctx.change.id } });
- posData.push(...changePosData);
- this.pos.loadDatas(posData);
- this.pos.calculateAll();
- return this.pos.getDatas();
- } catch (err) {
- return [];
- }
- }
- getCommonData(params, tableName, fields, customDefine, customSelect) {
- switch (tableName) {
- case 'mem_change':
- return [this.ctx.change];
- case 'mem_change_bills':
- return this._getChangeBills();
- case 'mem_change_audit':
- return this.ctx.service.changeAudit.getListGroupByTimes(this.ctx.change.cid, this.ctx.change.times);
- case 'mem_change_att':
- return this.ctx.service.changeAtt.getChangeAttachment(this.ctx.change.cid);
- case 'mem_project':
- return this.ctx.service.project.getDataByCondition({ id: this.ctx.session.sessionProject.id });
- case 'mem_tender':
- return [this.ctx.tender.data];
- case 'mem_tender_info':
- return [this.ctx.tender.info];
- case 'mem_change_ledger_bills':
- return this.getChangeLedgerBillsData();
- case 'mem_change_ledger_bills_filter':
- return this.getChangeLedgerBillsData(true);
- case 'mem_change_ledger_pos':
- return this.getChangeLedgerPosData();
- default:
- return [];
- }
- }
- }
- module.exports = rptMemChange;
|