From 935613a0c930f0fbabc1e2ef54ef31f9d9d1cf0e Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Wed, 2 Nov 2022 14:29:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Enums/DeviceStatus.php | 13 ++++++++++ app/Http/Controllers/AdminUserController.php | 1 + app/Http/Controllers/DeviceController.php | 26 ++++++++++++++++++++ app/Http/Resources/AdminUserResource.php | 1 + routes/api.php | 1 + 5 files changed, 42 insertions(+) diff --git a/app/Enums/DeviceStatus.php b/app/Enums/DeviceStatus.php index 218cb7f..42f0175 100644 --- a/app/Enums/DeviceStatus.php +++ b/app/Enums/DeviceStatus.php @@ -8,4 +8,17 @@ enum DeviceStatus: int case Online = 1; // 在线 case Offline = 2; // 离线 case Broken = 3; // 故障 + + /** + * @return array + */ + public static function status(): array + { + return [ + static::Disabled->value => '禁用', + static::Online->value => '在线', + static::Offline->value => '离线', + static::Broken->value => '故障', + ]; + } } diff --git a/app/Http/Controllers/AdminUserController.php b/app/Http/Controllers/AdminUserController.php index 4ece7fa..c2256f8 100644 --- a/app/Http/Controllers/AdminUserController.php +++ b/app/Http/Controllers/AdminUserController.php @@ -50,6 +50,7 @@ class AdminUserController extends Controller public function show(AdminUser $adminUser) { + $adminUser->load(['bases', 'roles']); return $this->json(AdminUserResource::make($adminUser)); } diff --git a/app/Http/Controllers/DeviceController.php b/app/Http/Controllers/DeviceController.php index e614d74..d4fb0a9 100644 --- a/app/Http/Controllers/DeviceController.php +++ b/app/Http/Controllers/DeviceController.php @@ -5,8 +5,10 @@ namespace App\Http\Controllers; use App\Models\Device; use App\Enums\DeviceType; use App\Helpers\Paginator; +use App\Enums\DeviceStatus; use Illuminate\Http\Request; use App\Models\SoilMonitoringLog; +use Illuminate\Support\Facades\DB; use App\Http\Requestes\DeviceRequest; use App\Http\Resources\DeviceResource; use App\Models\WaterQualityMonitoringLog; @@ -68,6 +70,30 @@ class DeviceController extends Controller return $this->json(DeviceType::types()); } + /** + * 统计某个基地下所有设备状态数量 + */ + public function typeStatusNum(Request $request){ + $baseId = $request->input('base_id'); + + $query = Device::where('agricultural_base_id', $baseId)->groupBy('type')->groupBy('status'); + + $list = $query->select(DB::raw('type, status, count(1) as num '))->get(); + $resData = []; + foreach ($list as $item) { + $resData[$item->type][$item->status] = $item->num; + } + + //初始化数据; + $data = []; + foreach (DeviceType::types() as $typeKey => $typeName){ + foreach(DeviceStatus::status() as $statusKey => $statusName){ + $data[$typeKey][$statusKey] = $resData[$typeKey][$statusKey] ?? 0; + } + } + return $this->json($data); + } + /** * 设备数据 */ diff --git a/app/Http/Resources/AdminUserResource.php b/app/Http/Resources/AdminUserResource.php index 9ab6cb7..4a1bc34 100644 --- a/app/Http/Resources/AdminUserResource.php +++ b/app/Http/Resources/AdminUserResource.php @@ -16,6 +16,7 @@ class AdminUserResource extends JsonResource { return [ 'id' => $this->id, + 'roles' => AdminRoleResource::collection($this->whenloaded('roles')), 'username' => $this->username, 'name' => $this->name, 'avatar' => $this->avatar, diff --git a/routes/api.php b/routes/api.php index c6cce47..d213a0f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -41,6 +41,7 @@ Route::group(['middleware' => 'auth:sanctum'], function () { Route::apiResource('crop-flows', CropFlowController::class)->names('crops_flow'); //设备管理 Route::apiResource('devices', DeviceController::class)->names('device'); + Route::get('devices-num', [DeviceController::class, 'typeStatusNum'])->name('device.type_status_num'); //设备警报配置 Route::get('device-warning-rules', [DeviceWarningController::class, 'rules']); //预警规则 Route::put('device-warning-rules', [DeviceWarningController::class, 'updateRule']); //预警规则