停车场管理系统
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

<?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')
];
}
}