Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Commit 0ad4178

Browse files
Use header row from uploaded excel, when creating error excel
1 parent b075b25 commit 0ad4178

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

src/common/helper.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,15 @@ async function downloadFile (objectKey) {
7979
* Function to upload error records file to S3
8080
* @param {Array} records error records
8181
* @param {String} objectKey source file s3 object key
82+
* @param {Array} header Array of strings for the header row
8283
* @returns {Promise}
8384
*/
84-
async function uploadFailedRecord (records, objectKey) {
85+
async function uploadFailedRecord (records, objectKey, header) {
8586
const extIndex = objectKey.lastIndexOf('.')
8687
const errFileName = `${objectKey.substring(0, extIndex)}_errors_${Date.now()}${objectKey.substring(extIndex)}`
8788
// new workbook
8889
const wb = XLSX.utils.book_new()
8990
const wsData = []
90-
const header = Object.keys(records[0])
9191
wsData.push(header)
9292
wsData.push(...(records.map(record => _.at(record, header))))
9393
const ws = XLSX.utils.aoa_to_sheet(wsData)
@@ -329,7 +329,7 @@ function parseExcel (file) {
329329
}
330330
}
331331
logger.info(`parsing excel file finish, the record count is ${resultData.length}`)
332-
return resultData
332+
return { header, resultData }
333333
}
334334

335335
module.exports = {

src/services/ProcessorService.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,15 +270,15 @@ async function processCreate (message) {
270270
if (status === 'pending') {
271271
try {
272272
const file = await helper.downloadFile(message.payload.objectKey)
273-
const records = helper.parseExcel(file)
273+
const { header, resultData: records } = helper.parseExcel(file)
274274
const failedRecord = []
275275
let failedRecordsObjectKey
276276
let info
277277

278278
await Promise.map(records, record => processCreateRecord(record, failedRecord, message.payload.organizationId), { concurrency: config.PROCESS_CONCURRENCY_COUNT })
279279

280280
if (failedRecord.length > 0) {
281-
failedRecordsObjectKey = await helper.uploadFailedRecord(failedRecord, message.payload.objectKey)
281+
failedRecordsObjectKey = await helper.uploadFailedRecord(failedRecord, message.payload.objectKey, header)
282282
info = 'Not all records were processed successfully'
283283
}
284284
await helper.updateProcessStatus(message.payload.id, { status: 'completed', failedRecordsObjectKey, info })

0 commit comments

Comments
 (0)