You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.6 KiB
118 lines
3.6 KiB
<?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')
|
|
];
|
|
}
|
|
}
|
|
|