| 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;
 
- }
 
 
  |