From 7ed04e9238b5fa2249da4df1690bc4e6bf527e67 Mon Sep 17 00:00:00 2001 From: wanghongjun <1445693971@qq.com> Date: Wed, 20 May 2026 15:52:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=A6=96=E9=A1=B5=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Admin/IndexController.php | 59 +++++++++++++++---- app/Models/ParkingPatternSpace.php | 5 ++ 2 files changed, 54 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/Admin/IndexController.php b/app/Http/Controllers/Admin/IndexController.php index e59817d..bcc7003 100644 --- a/app/Http/Controllers/Admin/IndexController.php +++ b/app/Http/Controllers/Admin/IndexController.php @@ -3,10 +3,13 @@ namespace App\Http\Controllers\Admin; use App\Models\AdminFloor; +use App\Models\ParkingPattern; +use App\Models\ParkingPatternSpace; use App\Models\ParkingSpace; use App\Models\ParkingSpaceType; use App\Services\AdminMenuService; use App\Services\ApiResponseService; +use App\Services\EventCalendarService; use App\Services\OperationLogService; use Exception; use Illuminate\Http\JsonResponse; @@ -33,24 +36,48 @@ class IndexController extends BaseController if ($building_floor) { $floorModel->where('building_floor', $building_floor); } - $pattern_id = $request->get('pattern_id', 1); + + // 获取当前模式下的车位编号 + $targetMode = EventCalendarService::targetModel(); + $pattern_id = $targetMode['pattern_id']; + $spaceIds = ParkingPatternSpace::getParkingSpaceIds($pattern_id); + + // 获取楼层 + $statusArr = [0, 1]; $floorData = $floorModel->select(['id', 'name'])->get()->toArray(); + foreach ($floorData as $item) { $floor_id = $item['id']; $floor_name = $item['name']; $sum_count = ParkingSpace::query()->where('floor_id', $floor_id) + ->whereIn('status', $statusArr)->whereIn('id', $spaceIds) ->count(); $vacant_count = ParkingSpace::query()->where( - ['floor_id' => $floor_id, 'status' => 0] - )->count(); + 'floor_id', + $floor_id + )->where('status', 0)->whereIn('id', $spaceIds)->count(); $repair_count = ParkingSpace::query()->where( - ['floor_id' => $floor_id, 'status' => 2] - )->count(); + 'floor_id', + $floor_id + )->where('status', 2)->whereIn('id', $spaceIds) + ->count(); - $typeData = ParkingSpaceType::getData(); + // 获取当前模式 楼层车位类型 + $typeData = []; + $spaceTypeIds = ParkingSpace::query()->where( + 'floor_id', + $floor_id + )->wherein('status', $statusArr)->whereIn('id', $spaceIds) + ->pluck('space_type_id'); + if ($spaceTypeIds) { + $typeData = ParkingSpaceType::query()->whereIn( + 'id', + $spaceTypeIds + )->select(['id', 'name'])->get()->toArray(); + } $type_list = []; foreach ($typeData as $typeItem) { $spaceWhere = [ @@ -58,6 +85,8 @@ class IndexController extends BaseController 'space_type_id' => $typeItem['id'] ]; $type_count = ParkingSpace::query()->where($spaceWhere) + ->whereIn('status', $statusArr) + ->whereIn('id', $spaceTypeIds) ->count(); $type_list[] = [ 'count' => $type_count, @@ -83,12 +112,22 @@ class IndexController extends BaseController } } - public function parkingSpaceStatistics(Request $request) + public function parkingSpaceStatistics() { try { - $pattern_id = $request->get('pattern_id', 1); - $sum = ParkingSpace::query()->count(); - $use_sum = ParkingSpace::query()->where('status', 1)->count(); + $targetMode = EventCalendarService::targetModel(); + $pattern_id = $targetMode['pattern_id']; + $spaceIds = ParkingPatternSpace::getParkingSpaceIds($pattern_id); + $sum = 0; + $use_sum = 0; + if ($spaceIds) { + $sum = ParkingSpace::query()->whereIn('status', [0, 1]) + ->whereIn('id', $spaceIds)->count(); + $use_sum = ParkingSpace::query()->where('status', 1)->whereIn( + 'id', + $spaceIds + )->count(); + } $date['proportion'] = get_ratio($sum, $use_sum); return $this->responseService->success($date); } catch (Exception $e) { diff --git a/app/Models/ParkingPatternSpace.php b/app/Models/ParkingPatternSpace.php index 92ca3b9..9ee56ba 100644 --- a/app/Models/ParkingPatternSpace.php +++ b/app/Models/ParkingPatternSpace.php @@ -36,4 +36,9 @@ class ParkingPatternSpace extends Model { return self::query()->where('pattern_id', $pattern_id)->select()->get()->toArray(); } + + public static function getParkingSpaceIds($pattern_id) + { + return self::query()->where('pattern_id', $pattern_id)->pluck('space_id'); + } }