10 changed files with 171 additions and 13 deletions
@ -0,0 +1,118 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Exports; |
||||
|
|
||||
|
use App\Models\AdminFloor; |
||||
|
use App\Models\AdminNotice; |
||||
|
use App\Models\ParkingCamera; |
||||
|
use App\Models\ParkingLicensePlate; |
||||
|
use App\Models\ParkingPattern; |
||||
|
use App\Models\ParkingPatternSpace; |
||||
|
use App\Models\ParkingSpace; |
||||
|
use App\Models\ParkingSpaceCamera; |
||||
|
use App\Models\ParkingSpaceType; |
||||
|
use Maatwebsite\Excel\Concerns\FromArray; |
||||
|
use Maatwebsite\Excel\Concerns\WithHeadings; |
||||
|
|
||||
|
class ModeSwitchingReportExport implements FromArray, WithHeadings |
||||
|
{ |
||||
|
protected string $noticeId; |
||||
|
protected array $msgTypeArr; |
||||
|
|
||||
|
public function __construct($notice_id, $msg_type_arr) |
||||
|
{ |
||||
|
$this->noticeId = $notice_id; |
||||
|
$this->msgTypeArr = $msg_type_arr; |
||||
|
} |
||||
|
|
||||
|
public function array(): array |
||||
|
{ |
||||
|
$notice = AdminNotice::query()->find($this->noticeId); |
||||
|
if (!$notice) { |
||||
|
return []; |
||||
|
} |
||||
|
$msg_type = $this->msgTypeArr[$notice['msg_type']] ?? ''; |
||||
|
$pattern_id = $notice['pattern_id']; |
||||
|
$last_update_time = get_datetime( |
||||
|
'datetime', |
||||
|
strtotime($notice['updated_at']) |
||||
|
); |
||||
|
|
||||
|
$pattern_name = ParkingPattern::getName($pattern_id); |
||||
|
$data = []; |
||||
|
$list = ParkingPatternSpace::query()->where( |
||||
|
'pattern_id', |
||||
|
$pattern_id |
||||
|
)->select()->get()->toArray(); |
||||
|
$index = 1; |
||||
|
foreach ($list as $item) { |
||||
|
$space_id = $item['space_id']; |
||||
|
$space = ParkingSpace::query()->find($space_id); |
||||
|
$spaceCamera = ParkingSpaceCamera::query()->where('space_id', $space_id)->first(); |
||||
|
$space_number = ''; |
||||
|
$camera_ip = ''; |
||||
|
$device_id = ''; |
||||
|
$floor = ''; |
||||
|
$license_plate = ''; |
||||
|
$space_type = ''; |
||||
|
if ($space) { |
||||
|
$space_number = $space['number']; |
||||
|
if ($space['floor_id']) { |
||||
|
$floor = AdminFloor::getName($space['floor_id']); |
||||
|
} |
||||
|
if ($space['license_plate_id']) { |
||||
|
$license_plate = ParkingLicensePlate::getNumber( |
||||
|
$space['license_plate_id'] |
||||
|
); |
||||
|
} |
||||
|
if ($space['space_type_id']) { |
||||
|
$license_plate = ParkingSpaceType::getName( |
||||
|
$space['space_type_id'] |
||||
|
); |
||||
|
} |
||||
|
} |
||||
|
if ($spaceCamera) { |
||||
|
$camera_id = $spaceCamera['camera_id']; |
||||
|
$ParkingCamera = ParkingCamera::query()->find($camera_id); |
||||
|
if ($ParkingCamera) { |
||||
|
$camera_ip = $ParkingCamera['camera_ip']; |
||||
|
$device_id = $ParkingCamera['number']; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$data[] = [ |
||||
|
$index, |
||||
|
$pattern_name, |
||||
|
$msg_type, |
||||
|
$camera_ip, |
||||
|
$device_id, |
||||
|
$floor, |
||||
|
$last_update_time, |
||||
|
$space_number, |
||||
|
$license_plate, |
||||
|
$space_type |
||||
|
]; |
||||
|
$index += 1; |
||||
|
} |
||||
|
return $data; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @return array |
||||
|
*/ |
||||
|
public function headings(): array |
||||
|
{ |
||||
|
return [ |
||||
|
__('exports.global.index'), |
||||
|
__('exports.notice.current_mode'), |
||||
|
__('exports.notice.msg_type'), |
||||
|
__('exports.notice.camera_ip'), |
||||
|
__('exports.notice.device_id'), |
||||
|
__('exports.notice.floor'), |
||||
|
__('exports.notice.last_update_time'), |
||||
|
__('exports.notice.space_number'), |
||||
|
__('exports.notice.license_plate'), |
||||
|
__('exports.notice.space_type') |
||||
|
]; |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue