1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 'use strict';
- /**
- *
- *
- * @author Mai
- * @date 2018/5/8
- * @version
- */
- module.exports = app => {
- class DealBills extends app.BaseService {
- /**
- * 构造函数
- * @param ctx
- */
- constructor(ctx) {
- super(ctx);
- this.tableName = 'deal_bills';
- }
- /**
- * 导入Excel数据
- *
- * @param {Array} sheet - Excel文件中的全部工作表
- * @param {Number} tenderId - 所属标段Id
- * @returns {Promise<boolean>}
- */
- async importData(sheet, tenderId) {
- let result = false;
- const transaction = await this.db.beginTransaction();
- try {
- const bills = [];
- for (const row of sheet.data) {
- if (this.ctx.helper.validBillsCode(row[0])) {
- bills.push({
- deal_id: bills.length + 1,
- tender_id: tenderId,
- code: row[0],
- name: row[1],
- unit: row[2],
- unit_price: row[3],
- quantity: row[4],
- });
- }
- }
- if (bills.length > 0) {
- await transaction.delete(this.tableName, {tender_id: tenderId});
- const billsResult = await transaction.insert(this.tableName, bills);
- if (billsResult.affectedRows !== bills.length) {
- throw '导入签约清单数据出错';
- }
- } else {
- throw 'Excel文件中无签约清单数据';
- }
- await transaction.commit();
- result = true;
- } catch (err) {
- await transaction.rollback();
- throw err;
- }
- return result;
- }
- }
- return DealBills;
- }
|