Add EbReadingImporter and EbReadingExporter from qds branch
This commit is contained in:
140
app/Filament/Exports/EbReadingExporter.php
Normal file
140
app/Filament/Exports/EbReadingExporter.php
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filament\Exports;
|
||||||
|
|
||||||
|
use App\Models\EbReading;
|
||||||
|
use Filament\Actions\Exports\ExportColumn;
|
||||||
|
use Filament\Actions\Exports\Exporter;
|
||||||
|
use Filament\Actions\Exports\Models\Export;
|
||||||
|
|
||||||
|
class EbReadingExporter extends Exporter
|
||||||
|
{
|
||||||
|
protected static ?string $model = EbReading::class;
|
||||||
|
static $rowNumber = 0;
|
||||||
|
public static function getColumns(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
ExportColumn::make('no')
|
||||||
|
->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;
|
||||||
|
}
|
||||||
|
}
|
||||||
243
app/Filament/Imports/EbReadingImporter.php
Normal file
243
app/Filament/Imports/EbReadingImporter.php
Normal file
@@ -0,0 +1,243 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filament\Imports;
|
||||||
|
|
||||||
|
use App\Models\EbReading;
|
||||||
|
use Filament\Actions\Imports\ImportColumn;
|
||||||
|
use Filament\Actions\Imports\Importer;
|
||||||
|
use Filament\Actions\Imports\Models\Import;
|
||||||
|
|
||||||
|
class EbReadingImporter extends Importer
|
||||||
|
{
|
||||||
|
protected static ?string $model = EbReading::class;
|
||||||
|
|
||||||
|
public static function getColumns(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
ImportColumn::make('plant')
|
||||||
|
->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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user