From 0d3e58e7af95139497246b7bfbf91e297b480e28 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Tue, 12 Aug 2025 17:18:02 +0530 Subject: [PATCH] Add EbReadingImporter and EbReadingExporter from qds branch --- app/Filament/Exports/EbReadingExporter.php | 140 ++++++++++++ app/Filament/Imports/EbReadingImporter.php | 243 +++++++++++++++++++++ 2 files changed, 383 insertions(+) create mode 100644 app/Filament/Exports/EbReadingExporter.php create mode 100644 app/Filament/Imports/EbReadingImporter.php diff --git a/app/Filament/Exports/EbReadingExporter.php b/app/Filament/Exports/EbReadingExporter.php new file mode 100644 index 0000000..0519430 --- /dev/null +++ b/app/Filament/Exports/EbReadingExporter.php @@ -0,0 +1,140 @@ +label('NO') + ->state(function ($record) use (&$rowNumber) { + // Increment and return the row number + return ++$rowNumber; + }), + ExportColumn::make('plant.name') + ->label('PLANT'), + ExportColumn::make('lcd_segment_check') + ->label('LCD SEGMENT CHECK'), + ExportColumn::make('meter_serial_no') + ->label('METER SERIAL NO'), + ExportColumn::make('eb_date_time') + ->label('EB DATE TIME'), + ExportColumn::make('ph_seq_of_volt') + ->label('PH SEQ OF VOLT'), + ExportColumn::make('ph_assoc_conn_check') + ->label('PH ASSOC CONN CHECK'), + ExportColumn::make('instantaneous_ph_volt') + ->label('INSTANTANEOUS PH VOLT'), + ExportColumn::make('instantaneous_curr') + ->label('INSTANTANEOUS CURR'), + ExportColumn::make('instantaneous_freq') + ->label('INSTANTANEOUS FREQ'), + ExportColumn::make('instantaneous_kw_with_sign') + ->label('INSTANTANEOUS KW WITH SIGN'), + ExportColumn::make('instantaneous_kva') + ->label('INSTANTANEOUS KVA'), + ExportColumn::make('instantaneous_kv_ar') + ->label('INSTANTANEOUS KV AR'), + ExportColumn::make('instantaneous_pf_with_sign') + ->label('INSTANTANEOUS PF WITH SIGN'), + ExportColumn::make('rd_with_elapsed_time_kva') + ->label('RD WITH ELAPSED TIME KVA'), + ExportColumn::make('cum_active_import_energy') + ->label('CUM ACTIVE IMPORT ENERGY'), + ExportColumn::make('tod1_active_energy_6_9') + ->label('TOD1 ACTIVE ENERGY 6-9'), + ExportColumn::make('tod2_active_energy_18_21') + ->label('TOD2 ACTIVE ENERGY 18-21'), + ExportColumn::make('tod3_active_energy_21_22') + ->label('TOD3 ACTIVE ENERGY 21-22'), + ExportColumn::make('tod4_active_energy_5_6_9_18') + ->label('TOD4 ACTIVE ENERGY 5-6-9-18'), + ExportColumn::make('tod5_active_energy_22_5') + ->label('TOD5 ACTIVE ENERGY 22-5'), + ExportColumn::make('cum_reac_lag_energy') + ->label('CUM REAC LAG ENERGY'), + ExportColumn::make('cum_reac_lead_energy') + ->label('CUM REAC LEAD ENERGY'), + ExportColumn::make('cum_appar_energy') + ->label('CUM APPAR ENERGY'), + ExportColumn::make('tod1_appar_energy_6_9') + ->label('TOD1 APPAR ENERGY 6-9'), + ExportColumn::make('tod2_appar_energy_18_21') + ->label('TOD2 APPAR ENERGY 18-21'), + ExportColumn::make('tod3_appar_energy_21_22') + ->label('TOD3 APPAR ENERGY 21-22'), + ExportColumn::make('tod4_appar_energy_5_6_9_18') + ->label('TOD4 APPAR ENERGY 5-6-9-18'), + ExportColumn::make('tod5_appar_energy_22_5') + ->label('TOD5 APPAR ENERGY 22-5'), + ExportColumn::make('avg_pow_factor') + ->label('AVG POW FACTOR'), + ExportColumn::make('avg_freq_15min_last_ip') + ->label('AVG FREQ 15MIN LAST IP'), + ExportColumn::make('net_kv_arh_high') + ->label('NET KV ARH HIGH'), + ExportColumn::make('net_kv_arh_low') + ->label('NET KV ARH LOW'), + ExportColumn::make('cum_md_kva') + ->label('CUM MD KVA'), + ExportColumn::make('present_md_kva') + ->label('PRESENT MD KVA'), + ExportColumn::make('present_md_kva_date_time') + ->label('PRESENT MD KVA DATE TIME'), + ExportColumn::make('tod1_md_kva_6_9') + ->label('TOD1 MD KVA 6-9'), + ExportColumn::make('tod2_md_kva_18_21') + ->label('TOD2 MD KVA 18-21'), + ExportColumn::make('tod3_md_kva_21_22') + ->label('TOD3 MD KVA 21-22'), + ExportColumn::make('tod4_md_kva_5_6_9_18') + ->label('TOD4 MD KVA 5-6-9-18'), + ExportColumn::make('tod5_md_kva_22_5') + ->label('TOD5 MD KVA 22-5'), + ExportColumn::make('total_pow_off_hours') + ->label('TOTAL POW OFF HOURS'), + ExportColumn::make('programming_count') + ->label('PROGRAMMING COUNT'), + ExportColumn::make('last_occ_res_event_type') + ->label('LAST OCC RES EVENT TYPE'), + ExportColumn::make('last_occ_res_event_date_time') + ->label('LAST OCC RES EVENT DATE TIME'), + ExportColumn::make('tamper_count') + ->label('TAMPER COUNT'), + ExportColumn::make('reset_count') + ->label('RESET COUNT'), + ExportColumn::make('last_md_reset_date_time') + ->label('LAST MD RESET DATE TIME'), + ExportColumn::make('electrician_sign') + ->label('ELECTRICIAN SIGN'), + ExportColumn::make('created_at') + ->label('CREATED AT'), + ExportColumn::make('updated_at') + ->label('UPDATED AT'), + ExportColumn::make('deleted_at') + ->enabledByDefault(false), + ExportColumn::make('updated_by') + ->label('UPDATED BY'), + ]; + } + + public static function getCompletedNotificationBody(Export $export): string + { + $body = 'Your eb reading export has completed and ' . number_format($export->successful_rows) . ' ' . str('row')->plural($export->successful_rows) . ' exported.'; + + if ($failedRowsCount = $export->getFailedRowsCount()) { + $body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to export.'; + } + + return $body; + } +} diff --git a/app/Filament/Imports/EbReadingImporter.php b/app/Filament/Imports/EbReadingImporter.php new file mode 100644 index 0000000..731878a --- /dev/null +++ b/app/Filament/Imports/EbReadingImporter.php @@ -0,0 +1,243 @@ +requiredMapping() + ->exampleHeader('Plant Name') + ->example('Ransar Industries-I') + ->label('Plant Name') + ->relationship(resolveUsing:'name') + ->rules(['required']), + ImportColumn::make('lcd_segment_check') + ->label('LCD Segment Check') + ->example('Ok') + ->exampleHeader('LCD Segment Check'), + ImportColumn::make('meter_serial_no') + ->label('Meter Serial No') + ->example('572880') + ->exampleHeader('Meter Serial No'), + ImportColumn::make('eb_date_time') + ->label('EB Date Time') + ->example('2025-08-05 08:32:58') + ->exampleHeader('EB Date Time') + ->requiredMapping() + ->rules(['required', 'datetime']), + ImportColumn::make('ph_seq_of_volt') + ->label('Phase Sequence of Volt') + ->example('RYB') + ->exampleHeader('Phase Sequence of Volt'), + ImportColumn::make('ph_assoc_conn_check') + ->example('GOOD') + ->exampleHeader('Phase Associated Connection Check') + ->label('Phase Associated Connection Check'), + ImportColumn::make('instantaneous_ph_volt') + ->exampleHeader('Instantaneous Phase Volt') + ->example('64.35,64.91,64.93') + ->label('Instantaneous Phase Volt'), + ImportColumn::make('instantaneous_curr') + ->exampleHeader('Instantaneous Current') + ->example('1.02,1.00,0.94') + ->label('Instantaneous Current'), + ImportColumn::make('instantaneous_freq') + ->exampleHeader('Instantaneous Frequency') + ->example('50.07') + ->label('Instantaneous Frequency'), + ImportColumn::make('instantaneous_kw_with_sign') + ->exampleHeader('Instantaneous KW with Sign') + ->example('0.176') + ->label('Instantaneous KW with Sign'), + ImportColumn::make('instantaneous_kva') + ->exampleHeader('Instantaneous KVA') + ->example('0.176') + ->label('Instantaneous KVA'), + ImportColumn::make('instantaneous_kv_ar') + ->exampleHeader('Instantaneous KV AR') + ->example('0.02') + ->label('Instantaneous KV AR'), + ImportColumn::make('instantaneous_pf_with_sign') + ->exampleHeader('Instantaneous PF with Sign') + ->example('0.99') + ->label('Instantaneous PF with Sign'), + ImportColumn::make('rd_with_elapsed_time_kva') + ->exampleHeader('RD with Elapsed Time KVA') + ->example('0.047') + ->label('RD with Elapsed Time KVA'), + ImportColumn::make('cum_active_import_energy') + ->exampleHeader('Cumulative Active Import Energy') + ->example('13246.46') + ->label('Cumulative Active Import Energy'), + ImportColumn::make('tod1_active_energy_6_9') + ->exampleHeader('TOD1 Active Energy 6-9') + ->example('1367.75') + ->label('TOD1 Active Energy 6-9'), + ImportColumn::make('tod2_active_energy_18_21') + ->exampleHeader('TOD2 Active Energy 18-21') + ->example('1759.08') + ->label('TOD2 Active Energy 18-21'), + ImportColumn::make('tod3_active_energy_21_22') + ->exampleHeader('TOD3 Active Energy 21-22') + ->example('457.67') + ->label('TOD3 Active Energy 21-22'), + ImportColumn::make('tod4_active_energy_5_6_9_18') + ->exampleHeader('TOD4 Active Energy 5-6-9-18') + ->example('6253.85') + ->label('TOD4 Active Energy 5-6-9-18'), + ImportColumn::make('tod5_active_energy_22_5') + ->exampleHeader('TOD5 Active Energy 22-5') + ->example('3408.11') + ->label('TOD5 Active Energy 22-5'), + ImportColumn::make('cum_reac_lag_energy') + ->exampleHeader('Cumulative Reactive Lag Energy') + ->example('685.11') + ->label('Cumulative Reactive Lag Energy'), + ImportColumn::make('cum_reac_lead_energy') + ->exampleHeader('Cumulative Reactive Lead Energy') + ->example('426.1') + ->label('Cumulative Reactive Lead Energy'), + ImportColumn::make('cum_appar_energy') + ->exampleHeader('Cumulative Apparent Energy') + ->example('13306.57') + ->label('Cumulative Apparent Energy'), + ImportColumn::make('tod1_appar_energy_6_9') + ->exampleHeader('TOD1 Apparent Energy 6-9') + ->example('1374.63') + ->label('TOD1 Apparent Energy 6-9'), + ImportColumn::make('tod2_appar_energy_18_21') + ->exampleHeader('TOD2 Apparent Energy 18-21') + ->example('1766.61') + ->label('TOD2 Apparent Energy 18-21'), + ImportColumn::make('tod3_appar_energy_21_22') + ->exampleHeader('TOD3 Apparent Energy 21-22') + ->example('459.47') + ->label('TOD3 Apparent Energy 21-22'), + ImportColumn::make('tod4_appar_energy_5_6_9_18') + ->exampleHeader('TOD4 Apparent Energy 5-6-9-18') + ->example('6283.28') + ->label('TOD4 Apparent Energy 5-6-9-18'), + ImportColumn::make('tod5_appar_energy_22_5') + ->exampleHeader('TOD5 Apparent Energy 22-5') + ->example('3422.56') + ->label('TOD5 Apparent Energy 22-5'), + ImportColumn::make('avg_pow_factor') + ->exampleHeader('Average Power Factor') + ->example('0.98') + ->label('Average Power Factor'), + ImportColumn::make('avg_freq_15min_last_ip') + ->exampleHeader('Average Frequency 15min Last IP') + ->example('50') + ->label('Average Frequency 15min Last IP'), + ImportColumn::make('net_kv_arh_high') + ->exampleHeader('Net KV ARH High') + ->example('2.99') + ->label('Net KV ARH High'), + ImportColumn::make('net_kv_arh_low') + ->exampleHeader('Net KV ARH Low') + ->example('143.14') + ->label('Net KV ARH Low'), + ImportColumn::make('cum_md_kva') + ->exampleHeader('Cumulative MD KVA') + ->example('43.816') + ->label('Cumulative MD KVA'), + ImportColumn::make('present_md_kva') + ->exampleHeader('Present MD KVA') + ->example('0.379') + ->label('Present MD KVA'), + ImportColumn::make('present_md_kva_date_time') + ->label('Present MD KVA Date Time') + ->exampleHeader('Present MD KVA Date Time') + ->example('2025-08-05 08:32:58') + ->requiredMapping() + ->rules(['required', 'datetime']), + ImportColumn::make('tod1_md_kva_6_9') + ->exampleHeader('TOD1 MD KVA 6-9') + ->example('0.282') + ->label('TOD1 MD KVA 6-9'), + ImportColumn::make('tod2_md_kva_18_21') + ->exampleHeader('TOD2 MD KVA 18-21') + ->example('0.268') + ->label('TOD2 MD KVA 18-21'), + ImportColumn::make('tod3_md_kva_21_22') + ->exampleHeader('TOD3 MD KVA 21-22') + ->example('0') + ->label('TOD3 MD KVA 21-22'), + ImportColumn::make('tod4_md_kva_5_6_9_18') + ->exampleHeader('TOD4 MD KVA 5-6-9-18') + ->example('0.379') + ->label('TOD4 MD KVA 5-6-9-18'), + ImportColumn::make('tod5_md_kva_22_5') + ->exampleHeader('TOD5 MD KVA 22-5') + ->example('0.379') + ->label('TOD5 MD KVA 22-5'), + ImportColumn::make('total_pow_off_hours') + ->exampleHeader('Total Power Off Hours') + ->example('6480.56') + ->label('Total Power Off Hours'), + ImportColumn::make('programming_count') + ->exampleHeader('Programming Count') + ->example('3') + ->label('Programming Count'), + ImportColumn::make('last_occ_res_event_type') + ->exampleHeader('Last Occurrence/Reset Event Type') + ->example('-') + ->label('Last Occurrence/Reset Event Type'), + ImportColumn::make('last_occ_res_event_date_time') + ->label('Last Occurrence/Reset Event Date Time') + ->example('2025-08-05 08:32:58') + ->exampleHeader('Last Occurrence/Reset Event Date Time') + ->requiredMapping() + ->rules(['required', 'datetime']), + ImportColumn::make('tamper_count') + ->exampleHeader('Tamper Count') + ->example('24') + ->label('Tamper Count'), + ImportColumn::make('reset_count') + ->exampleHeader('Reset Count') + ->example('108') + ->label('Reset Count'), + ImportColumn::make('last_md_reset_date_time') + ->exampleHeader('Last MD Reset Date Time') + ->example('2025-08-05 08:32:58') + ->label('Last MD Reset Date Time') + ->requiredMapping() + ->rules(['required', 'datetime']), + ImportColumn::make('electrician_sign') + ->exampleHeader('Electrician Sign') + ->example('Admin') + ->label('Electrician Sign'), + ]; + } + + public function resolveRecord(): ?EbReading + { + // return EbReading::firstOrNew([ + // // Update existing records, matching them by `$this->data['column_name']` + // 'email' => $this->data['email'], + // ]); + + return new EbReading(); + } + + public static function getCompletedNotificationBody(Import $import): string + { + $body = 'Your eb reading import has completed and ' . number_format($import->successful_rows) . ' ' . str('row')->plural($import->successful_rows) . ' imported.'; + + if ($failedRowsCount = $import->getFailedRowsCount()) { + $body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to import.'; + } + + return $body; + } +}