feat(statement-processing): update StmtEntry model and optimize data processing logic
- Menambahkan relasi baru pada model `StmtEntry`: - `ft()` untuk relasi ke model `TempFundsTransfer` berdasarkan kolom `trans_reference`. - `transaction()` untuk relasi ke model `TempTransaction` berdasarkan kolom `transaction_code`. - Memperbarui `ProcessStmtEntryDataJob`: - Mengganti penggunaan model `TempStmtEntry` menjadi `StmtEntry`. - Mengubah delimiter parsing file CSV dari `/` menjadi `~`. - Menggunakan `stmt_entry_id` sebagai kunci utama dalam metode `updateOrCreate`. - Menghapus validasi kolom `_id` pada data yang diproses. Perubahan ini bertujuan untuk menyelaraskan model dan cara proses data agar lebih akurat dan sesuai dengan kebutuhan sistem.
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Modules\Webstatement\Models\StmtEntry;
|
||||
use Modules\Webstatement\Models\TempStmtEntry;
|
||||
|
||||
class ProcessStmtEntryDataJob implements ShouldQueue
|
||||
@@ -67,22 +68,20 @@
|
||||
$handle = fopen($tempFilePath, "r");
|
||||
|
||||
if ($handle !== false) {
|
||||
$headers = (new TempStmtEntry())->getFillable();
|
||||
$headers = (new StmtEntry())->getFillable();
|
||||
$rowCount = 0;
|
||||
|
||||
while (($row = fgetcsv($handle, 0, "/")) !== false) {
|
||||
while (($row = fgetcsv($handle, 0, "~")) !== false) {
|
||||
$rowCount++;
|
||||
|
||||
if (count($headers) === count($row)) {
|
||||
$data = array_combine($headers, $row);
|
||||
try {
|
||||
if (isset($data['_id']) && $data['_id'] !== '_id') {
|
||||
TempStmtEntry::updateOrCreate(
|
||||
['_id' => $data['_id']],
|
||||
$data
|
||||
);
|
||||
$processedCount++;
|
||||
}
|
||||
StmtEntry::updateOrCreate(
|
||||
['stmt_entry_id' => $data['stmt_entry_id']],
|
||||
$data
|
||||
);
|
||||
$processedCount++;
|
||||
} catch (Exception $e) {
|
||||
$errorCount++;
|
||||
Log::error("Error processing Statement Entry at row $rowCount in $filePath: " . $e->getMessage());
|
||||
|
||||
Reference in New Issue
Block a user