diff --git a/app/Exports/ModeSwitchingReportExport.php b/app/Exports/ModeSwitchingReportExport.php new file mode 100644 index 0000000..3a0ef36 --- /dev/null +++ b/app/Exports/ModeSwitchingReportExport.php @@ -0,0 +1,118 @@ +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') + ]; + } +} diff --git a/app/Http/Controllers/Admin/NoticeController.php b/app/Http/Controllers/Admin/NoticeController.php index a492d7a..eafa013 100644 --- a/app/Http/Controllers/Admin/NoticeController.php +++ b/app/Http/Controllers/Admin/NoticeController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Admin; use App\Exports\AdminNoticeExport; +use App\Exports\ModeSwitchingReportExport; use App\Models\AdminConfigs; use App\Models\AdminNotice; use App\Services\AdminNoticeService; @@ -231,6 +232,22 @@ class NoticeController extends BaseController ); } + /** + * 模式切换报告 + * @return BinaryFileResponse + */ + public function modeSwitchingReport(Request $request): BinaryFileResponse + { + $id = $request->get('id', ''); + + return Excel::download( + new ModeSwitchingReportExport($id, AdminNoticeService::getMsgType()), + set_space_underline(__('exports.notice.mode_switching_report')) + . get_datetime('date_') + . '.xlsx' + ); + } + public function message(): JsonResponse { try { diff --git a/database/seeders/AdminMenuSeeder.php b/database/seeders/AdminMenuSeeder.php index 63eae28..dc4cf8c 100644 --- a/database/seeders/AdminMenuSeeder.php +++ b/database/seeders/AdminMenuSeeder.php @@ -253,7 +253,8 @@ class AdminMenuSeeder extends Seeder 'read_only' => 'notice.index', 'view_details' => 'notice.show', 'export' => 'notice.export', - 'alarm_settings' => 'notice.setting' + 'alarm_settings' => 'notice.setting', + 'mode_export' => 'notice.modeSwitchingReport' ] ], 'alarm_information' => [ diff --git a/resources/lang/en/exports.php b/resources/lang/en/exports.php index 67fd2d4..f035e92 100644 --- a/resources/lang/en/exports.php +++ b/resources/lang/en/exports.php @@ -71,8 +71,14 @@ return [ 'msg_type' => 'Information Content', 'space_number' => 'Parking Number', 'license_plate' => 'License Plate Number', - 'camera_ip' => 'IP', - 'msg_content' => 'Information Content Details' + 'camera_ip' => 'Camera IP', + 'msg_content' => 'Information Details', + 'current_mode' => 'Current Mode', + 'device_id' => 'Device Number', + 'floor' => 'Floor', + 'last_update_time' => 'Last Update Time', + 'space_type' => 'Parking Space Type', + 'mode_switching_report' => 'Mode Switching Report' ], 'parking_behavior' => [ 'list' => 'Parking Behavior', diff --git a/resources/lang/en/menu.php b/resources/lang/en/menu.php index c31925e..7433b73 100644 --- a/resources/lang/en/menu.php +++ b/resources/lang/en/menu.php @@ -104,5 +104,6 @@ return [ 'save' => 'save', 'update_attr' => 'Modify parking space type', 'update_type' => 'Modify parking space type', - 'download_history' => 'Download History' + 'download_history' => 'Download History', + 'mode_export' => 'Mode Switching Report' ]; diff --git a/resources/lang/zh-CN/exports.php b/resources/lang/zh-CN/exports.php index cb6d5bb..46a919b 100644 --- a/resources/lang/zh-CN/exports.php +++ b/resources/lang/zh-CN/exports.php @@ -71,8 +71,14 @@ return [ 'msg_type' => '信息内容', 'space_number' => '车位号码', 'license_plate' => '车牌号码', - 'camera_ip' => 'IP', - 'msg_content' => '信息内容详情' + 'camera_ip' => '相机IP', + 'msg_content' => '信息内容详情', + 'current_mode' => '当前模式', + 'device_id' => '设备编号', + 'floor' => '楼层', + 'last_update_time' => '最后更新时间', + 'space_type' => '车位类型', + 'mode_switching_report' => '模式切换报告' ], 'parking_behavior' => [ 'list' => '停车行为', diff --git a/resources/lang/zh-CN/menu.php b/resources/lang/zh-CN/menu.php index a18520d..4e269ba 100644 --- a/resources/lang/zh-CN/menu.php +++ b/resources/lang/zh-CN/menu.php @@ -104,5 +104,6 @@ return [ 'save' => '保存', 'update_attr' => '修改车位属性', 'update_type' => '修改车位类型', - 'download_history' => '下载记录' + 'download_history' => '下载记录', + 'mode_export' => '模式切换报告' ]; diff --git a/resources/lang/zh-TW/exports.php b/resources/lang/zh-TW/exports.php index 4560f56..9f088c3 100644 --- a/resources/lang/zh-TW/exports.php +++ b/resources/lang/zh-TW/exports.php @@ -66,13 +66,19 @@ return [ ], 'notice' => [ 'list' => '警報通知', - 'alarm_time' => '資訊時間', - 'alarm_type' => '資訊類型', - 'msg_type' => '資訊內容', + 'alarm_time' => '信息時間', + 'alarm_type' => '信息類型', + 'msg_type' => '信息內容', 'space_number' => '車位號碼', 'license_plate' => '車牌號碼', - 'camera_ip' => 'IP', - 'msg_content' => '資訊內容詳情' + 'camera_ip' => '相機IP', + 'msg_content' => '信息內容詳情', + 'current_mode' => '當前模式', + 'device_id' => '設備編號', + 'floor' => '樓層', + 'last_update_time' => '最後更新時間', + 'space_type' => '車位類型', + 'mode_switching_report' => '模式切換報告' ], 'parking_behavior' => [ 'list' => '停車行為', diff --git a/resources/lang/zh-TW/menu.php b/resources/lang/zh-TW/menu.php index 154a610..42ecd96 100644 --- a/resources/lang/zh-TW/menu.php +++ b/resources/lang/zh-TW/menu.php @@ -104,5 +104,6 @@ return [ 'save' => '保存', 'update_attr' => '修改車位屬性', 'update_type' => '修改車位類型', - 'download_history' => '下載記錄' + 'download_history' => '下載記錄', + 'mode_export' => '模式切換報告' ]; diff --git a/routes/admin/api.php b/routes/admin/api.php index b076d73..0b6c0de 100644 --- a/routes/admin/api.php +++ b/routes/admin/api.php @@ -226,6 +226,7 @@ Route::group(['prefix' => 'admin'], function () { Route::get('/notice/show/{id}', [NoticeController::class, 'show']); Route::get('/notice/export', [NoticeController::class, 'export']); Route::get('/notice/rule', [NoticeController::class, 'rule']); + Route::get('/notice/modeSwitchingReport', [NoticeController::class, 'modeSwitchingReport']); // 告警信息管理 Route::get('/alarmInformation', [ParkingAlarmInformationController::class, 'index']); Route::get('/alarmInformation/search', [ParkingAlarmInformationController::class, 'search']);