service = $service; } public function index(Request $request): JsonResponse { try { $query = $this->service->queryList($request->all()); // 分页 $page = $request->input('page', 1); $perPage = $request->input('per_page', 10); $total = $query->count(); $items = $query->latest()->forPage($page, $perPage)->select()->get( ); if ($items) { $items = $items->toArray(); $parkingSpaceType = ParkingSpaceType::getData(); foreach ($items as &$item) { $item = $this->service->getItem($item, $parkingSpaceType); } } return $this->responseService->success([ 'items' => $items, 'total' => $total, 'page' => $page, 'per_page' => $perPage, 'last_page' => ceil($total / $perPage), ]); } catch (Exception $e) { $m_prefix = __('exception.exception_handler.resource'); return $this->responseService->systemError( $m_prefix . ':' . $e->getMessage() ); } } public function search(): JsonResponse { try { $data = [ 'space_type_list' => ParkingSpaceType::getData(), 'parking_list' => Parking::getData() ]; return $this->responseService->success($data); } catch (Exception $e) { $m_prefix = __('exception.exception_handler.resource'); return $this->responseService->systemError( $m_prefix . ':' . $e->getMessage() ); } } public function chart(Request $request): JsonResponse { try { $query = $this->service->queryList($request->all(), 'chart'); $list = $query->groupBy(['time', 'time_type'])->select( ['time', 'time_type'] )->get(); $ParkingSpaceType = $this->service->getColorSpaceTypeList(); $spaceTypeName = array_column( $ParkingSpaceType, 'name', 'id' ); $spaceTypeColor = array_column( $ParkingSpaceType, 'color', 'id' ); foreach ($list as $index => &$item) { $time = $item['time']; $time_type = $item['time_type']; if ($time_type == 1) { $format = 'm-d H:i'; } else { $format = 'Y-m-d'; } $item['time'] = date($format, strtotime($time)); $ids = ParkingOccupancyRate::query()->where('time', $time) ->where('time_type', $time_type)->pluck('id'); $space_type_list = ParkingOccupancyRateInfo::query()->whereIn( 'occupancy_rate_id', $ids )->groupBy(['space_type_id'])->selectRaw( 'SUM(`occupy_count`) as sum_occupy_count, space_type_id' )->get()->toArray(); foreach ($space_type_list as $key => $value) { $space_type_list[$key]['space_type_name'] = $spaceTypeName[$value['space_type_id']]; $space_type_list[$key]['color'] = $spaceTypeColor[$value['space_type_id']]; unset($space_type_list[$key]['space_type_id']); } $item['space_type_list'] = $space_type_list; unset($item['time_type'], $item['floor_id']); } return $this->responseService->success($list); } catch (Exception $e) { $m_prefix = __('exception.exception_handler.resource'); return $this->responseService->systemError( $m_prefix . ':' . $e->getMessage() ); } } /** * @param Request $request * @return BinaryFileResponse */ public function export(Request $request): BinaryFileResponse { return Excel::download( new OccupancyRateExport($request->all()), set_space_underline(__('exports.access_record.list')) . get_datetime('date_') . '.xlsx' ); } }