'use strict'; /** * * * @author Mai * @date 2021/7/20 * @version */ module.exports = app => { class SumLoadHistory extends app.BaseService { /** * 构造函数 * * @param {Object} ctx - egg全局变量 * @return {void} */ constructor(ctx) { super(ctx); this.tableName = 'sum_load_history'; } async getHistroy(tid, lid, type) { const his = await this.db.select(this.tableName, { where: { tid, lid, type }, orders: [['load_time', 'desc']], limit: 1, offset: 0, }); const result = his.length > 0 ? his[0] : null; if (result && result.tenders) result.tenders = JSON.parse(result.tenders); if (result && result.errors) result.errors = JSON.parse(result.errors); return result; } async getLedgerHistory(tid, lid) { return await this.getHistroy(tid, lid, 'ledger'); } async getReviseHistory(tid, lid) { return await this.getHistroy(tid, lid, 'revise'); } async getStageHistory(tid, lid) { return await this.getHistroy(tid, lid, 'stage'); } async getBatchHistory(tid) { const sql = `SELECT * FROM ${this.tableName} WHERE id IN (SELECT MAX(id) FROM ${this.tableName} WHERE tid = ? GROUP by lid);`; const result = await this.db.query(sql, [tid]); result.forEach(x => { if (x && x.tenders) x.tenders = JSON.parse(x.tenders); delete x.errors; }); return result; } async saveLedgerHistory(tid, lid, tenders, errors) { const data = { tid, lid, type: 'ledger', load_time: new Date(), uid: this.ctx.session.sessionUser.accountId, tenders: JSON.stringify(tenders), errors: errors ? JSON.stringify(errors) : '', }; await this.db.insert(this.tableName, data); data.tenders = tenders; data.errors = errors; return data; } async saveReviseHistory(tid, rid, lid, tenders, errors) { const data = { tid, lid, type: 'revise', rid, load_time: new Date(), uid: this.ctx.session.sessionUser.accountId, tenders: JSON.stringify(tenders), errors: errors ? JSON.stringify(errors) : '', }; await this.db.insert(this.tableName, data); data.tenders = tenders; data.errors = errors; return data; } async saveStageHistory(tid, sid, lid, tenders, errors, cover) { const data = { tid, lid, type: 'stage', sid, load_time: new Date(), uid: this.ctx.session.sessionUser.accountId, tenders: JSON.stringify(tenders), errors: errors ? JSON.stringify(errors) : '', cover: cover, }; await this.db.insert(this.tableName, data); data.tenders = tenders; data.errors = errors; return data; } async getReviseLastestData(rid) { const sql = 'SELECT * FROM ' + this.tableName + ' WHERE id in ( SELECT top 1 id FROM ' + this.tableName + ' WHERE rid = ? order by load_time desc)'; const data = await this.db.query(sql, [rid]); if (data.tenders) data.tenders = JSON.parse(data.tenders); if (data.errors) data.errors = JSON.parse(data.errors); return data; } async getStageLastestData(sid) { const sql = 'SELECT * FROM ' + this.tableName + ' WHERE id in ( SELECT top 1 id FROM ' + this.tableName + ' WHERE sid = ? order by load_time desc)'; const data = await this.db.query(sql, [sid]); if (data.tenders) data.tenders = JSON.parse(data.tenders); if (data.errors) data.errors = JSON.parse(data.errors); return data; } } return SumLoadHistory; };