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