Browse Source

优化首页统计逻辑

master
wanghongjun 4 weeks ago
parent
commit
7ed04e9238
  1. 59
      app/Http/Controllers/Admin/IndexController.php
  2. 5
      app/Models/ParkingPatternSpace.php

59
app/Http/Controllers/Admin/IndexController.php

@ -3,10 +3,13 @@
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Models\AdminFloor; use App\Models\AdminFloor;
use App\Models\ParkingPattern;
use App\Models\ParkingPatternSpace;
use App\Models\ParkingSpace; use App\Models\ParkingSpace;
use App\Models\ParkingSpaceType; use App\Models\ParkingSpaceType;
use App\Services\AdminMenuService; use App\Services\AdminMenuService;
use App\Services\ApiResponseService; use App\Services\ApiResponseService;
use App\Services\EventCalendarService;
use App\Services\OperationLogService; use App\Services\OperationLogService;
use Exception; use Exception;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
@ -33,24 +36,48 @@ class IndexController extends BaseController
if ($building_floor) { if ($building_floor) {
$floorModel->where('building_floor', $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(); $floorData = $floorModel->select(['id', 'name'])->get()->toArray();
foreach ($floorData as $item) { foreach ($floorData as $item) {
$floor_id = $item['id']; $floor_id = $item['id'];
$floor_name = $item['name']; $floor_name = $item['name'];
$sum_count = ParkingSpace::query()->where('floor_id', $floor_id) $sum_count = ParkingSpace::query()->where('floor_id', $floor_id)
->whereIn('status', $statusArr)->whereIn('id', $spaceIds)
->count(); ->count();
$vacant_count = ParkingSpace::query()->where( $vacant_count = ParkingSpace::query()->where(
['floor_id' => $floor_id, 'status' => 0] 'floor_id',
)->count(); $floor_id
)->where('status', 0)->whereIn('id', $spaceIds)->count();
$repair_count = ParkingSpace::query()->where( $repair_count = ParkingSpace::query()->where(
['floor_id' => $floor_id, 'status' => 2] 'floor_id',
)->count(); $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 = []; $type_list = [];
foreach ($typeData as $typeItem) { foreach ($typeData as $typeItem) {
$spaceWhere = [ $spaceWhere = [
@ -58,6 +85,8 @@ class IndexController extends BaseController
'space_type_id' => $typeItem['id'] 'space_type_id' => $typeItem['id']
]; ];
$type_count = ParkingSpace::query()->where($spaceWhere) $type_count = ParkingSpace::query()->where($spaceWhere)
->whereIn('status', $statusArr)
->whereIn('id', $spaceTypeIds)
->count(); ->count();
$type_list[] = [ $type_list[] = [
'count' => $type_count, 'count' => $type_count,
@ -83,12 +112,22 @@ class IndexController extends BaseController
} }
} }
public function parkingSpaceStatistics(Request $request) public function parkingSpaceStatistics()
{ {
try { try {
$pattern_id = $request->get('pattern_id', 1); $targetMode = EventCalendarService::targetModel();
$sum = ParkingSpace::query()->count(); $pattern_id = $targetMode['pattern_id'];
$use_sum = ParkingSpace::query()->where('status', 1)->count(); $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); $date['proportion'] = get_ratio($sum, $use_sum);
return $this->responseService->success($date); return $this->responseService->success($date);
} catch (Exception $e) { } catch (Exception $e) {

5
app/Models/ParkingPatternSpace.php

@ -36,4 +36,9 @@ class ParkingPatternSpace extends Model
{ {
return self::query()->where('pattern_id', $pattern_id)->select()->get()->toArray(); 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');
}
} }

Loading…
Cancel
Save