From 4b0fc08c861374d8707b7236c424efea0938f517 Mon Sep 17 00:00:00 2001 From: MayNiklas Date: Sun, 25 Jan 2026 20:36:35 +0100 Subject: [PATCH] Optimize BOM import by only calculating supplier SPN keys once --- src/Services/ImportExportSystem/BOMImporter.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Services/ImportExportSystem/BOMImporter.php b/src/Services/ImportExportSystem/BOMImporter.php index eeb509b5..33a402cb 100644 --- a/src/Services/ImportExportSystem/BOMImporter.php +++ b/src/Services/ImportExportSystem/BOMImporter.php @@ -274,6 +274,13 @@ class BOMImporter $entries_by_key = []; // Track entries by name+part combination $mapped_entries = []; // Collect all mapped entries for validation + // Fetch suppliers once for efficiency + $suppliers = $this->entityManager->getRepository(\App\Entity\Parts\Supplier::class)->findAll(); + $supplierSPNKeys = []; + foreach ($suppliers as $supplier) { + $supplierSPNKeys[] = $supplier->getName() . ' SPN'; + } + foreach ($csv->getRecords() as $offset => $entry) { // Apply field mapping to translate column names $mapped_entry = $this->applyFieldMapping($entry, $field_mapping, $field_priorities); @@ -402,10 +409,7 @@ class BOMImporter } // Add supplier part numbers dynamically - $suppliers = $this->entityManager->getRepository(\App\Entity\Parts\Supplier::class)->findAll(); - foreach ($suppliers as $supplier) { - $supplierName = $supplier->getName(); - $spnKey = $supplierName . ' SPN'; + foreach ($supplierSPNKeys as $spnKey) { if (isset($mapped_entry[$spnKey]) && !empty($mapped_entry[$spnKey])) { $comment_parts[] = $spnKey . ': ' . $mapped_entry[$spnKey]; }