From d66afb36c7cb42c6992239b0d06d4d7340f4d042 Mon Sep 17 00:00:00 2001 From: daengdeni Date: Fri, 23 May 2025 07:24:01 +0700 Subject: [PATCH] fix(export): update global sequence tracking and correct formatting issues - Perbaiki penggunaan `sequence_no` dalam proses ekspor data dengan menambahkan pelacakan global sequence (`globalSequence`) di seluruh chunk, sehingga memastikan urutan yang konsisten dan tepat. - Gantikan penggunaan indeks lokal chunk dengan `globalSequence` di setiap entri dalam data proses. - Tambahkan komentar untuk menjelaskan fungsi tambahan terkait pelacakan sequence global. - Koreksi format narasi pada nilai `'FT.OUT'` yang sebelumnya salah menggunakan `'FT.IN'`. - Tambahkan pemeriksaan dan pembaruan pada logika penyimpanan data untuk meningkatkan kejelasan dan efisiensi. --- app/Jobs/ExportStatementJob.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/Jobs/ExportStatementJob.php b/app/Jobs/ExportStatementJob.php index d9e3a3f..6fab03e 100644 --- a/app/Jobs/ExportStatementJob.php +++ b/app/Jobs/ExportStatementJob.php @@ -93,16 +93,20 @@ Log::info("Processing {$totalCount} statement entries for account: {$this->account_number}"); + // Track the global sequence number across chunks + $globalSequence = 0; + // Proses data dalam chunk untuk mengurangi penggunaan memori StmtEntry::with(['ft', 'transaction']) ->where('account_number', $this->account_number) ->where('booking_date', $this->period) ->orderBy('date_time', 'ASC') ->orderBy('trans_reference', 'ASC') - ->chunk($this->chunkSize, function ($entries) use (&$runningBalance) { + ->chunk($this->chunkSize, function ($entries) use (&$runningBalance, &$globalSequence) { $processedData = []; - foreach ($entries as $index => $item) { + foreach ($entries as $item) { + $globalSequence++; // Increment the global sequence counter $runningBalance += (float) $item->amount_lcy; try { @@ -124,7 +128,7 @@ $processedData[] = [ 'account_number' => $this->account_number, 'period' => $this->period, - 'sequence_no' => $index + 1, + 'sequence_no' => $globalSequence, 'transaction_date' => $transactionDate, 'reference_number' => $item->trans_reference, 'transaction_amount' => $item->amount_lcy, @@ -136,7 +140,7 @@ 'updated_at' => now(), ]; } - + // var_dump($processedData); // Simpan data dalam batch untuk kinerja yang lebih baik if (!empty($processedData)) { DB::table('processed_statements')->insert($processedData); @@ -178,7 +182,7 @@ if ($narrParam->_id == 'FTIN') { $fmt = 'FT.IN'; } else if ($narrParam->_id == 'FTOUT') { - $fmt = 'FT.IN'; + $fmt = 'FT.OUT'; } else { $fmt = $narrParam->_id; }