|
|
@ -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) { |
|
|
|