From 7a892f8c86e38396f6da883e36ec4c1ee4fcee38 Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Wed, 26 Oct 2022 16:46:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9C=8B=E6=9D=BF=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/DeviceController.php | 58 ++++++++++++++++++++- app/ModelFilters/AgriculturalBaseFilter.php | 4 ++ app/ModelFilters/DeviceFilter.php | 4 ++ routes/api.php | 2 + 4 files changed, 66 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/DeviceController.php b/app/Http/Controllers/DeviceController.php index da3bbc5..3acc40f 100644 --- a/app/Http/Controllers/DeviceController.php +++ b/app/Http/Controllers/DeviceController.php @@ -2,12 +2,15 @@ namespace App\Http\Controllers; +use App\Models\Device; use App\Enums\DeviceType; use App\Helpers\Paginator; +use Illuminate\Http\Request; +use App\Models\SoilMonitoringLog; use App\Http\Requestes\DeviceRequest; use App\Http\Resources\DeviceResource; -use App\Models\Device; -use Illuminate\Http\Request; +use App\Models\WaterQualityMonitoringLog; +use App\Models\MeteorologicalMonitoringLog; class DeviceController extends Controller { @@ -64,4 +67,55 @@ class DeviceController extends Controller { return $this->json(DeviceType::types()); } + + /** + * 设备数据 + */ + public function dataStatics(Request $request) + { + $deviceId = $request->input('device_id'); + $deviceColumn = $request->input('device_column');//指定字段 + + $device = Device::find($deviceId); + $data = null; + switch ($device->type){ + case DeviceType::Monitor://监控设备 + $data = DeviceResource::make($device); + break; + case DeviceType::Meteorological://气象设备 + //当天最新一条 + $log = MeteorologicalMonitoringLog::where('device_id', $deviceId)->orderBy('created_at', 'desc')->first(); + $data = $log->toArray(); + break; + case DeviceType::Soil://土壤设备 + //当天 + $dataList = SoilMonitoringLog::where('device_id', $deviceId)->whereDate('monitored_at', now())->get()->keyBy('monitored_at')->toArray(); + $data = []; + for ($i = 0; $i < 24; $i++){ + $_key = date('Y-m-d').' '.str_pad($i, 2, '0',STR_PAD_LEFT).':00:00'; + $data[$_key] = 0; + if(isset($dataList[$_key])){ + $data[$_key] = $dataList[$_key][$deviceColumn] ?? 0; + } + } + break; + case DeviceType::WaterQuality://水质设备 + //当天 + $dataList = WaterQualityMonitoringLog::where('device_id', $deviceId)->whereDate('monitored_at', now())->get()->keyBy('monitored_at')->toArray(); + $data = []; + for ($i = 0; $i < 24; $i++){ + $_key = date('Y-m-d').' '.str_pad($i, 2, '0',STR_PAD_LEFT).':00:00'; + $data[$_key] = 0; + if(isset($dataList[$_key])){ + $data[$_key] = $dataList[$_key][$deviceColumn] ?? 0; + } + } + break; + } + + return $this->json([ + 'list' => $data, + ]); + } + } diff --git a/app/ModelFilters/AgriculturalBaseFilter.php b/app/ModelFilters/AgriculturalBaseFilter.php index a60e2a3..4b7ab63 100644 --- a/app/ModelFilters/AgriculturalBaseFilter.php +++ b/app/ModelFilters/AgriculturalBaseFilter.php @@ -10,4 +10,8 @@ class AgriculturalBaseFilter extends ModelFilter { return $this->where('type', $type); } + + public function parentId($parentId){ + return $this->where('parent_id', $parentId); + } } diff --git a/app/ModelFilters/DeviceFilter.php b/app/ModelFilters/DeviceFilter.php index 4cc67f1..5f37d55 100644 --- a/app/ModelFilters/DeviceFilter.php +++ b/app/ModelFilters/DeviceFilter.php @@ -20,4 +20,8 @@ class DeviceFilter extends ModelFilter { return $this->where('type', $type); } + + public function status($status){ + return $this->where('status', $status); + } } diff --git a/routes/api.php b/routes/api.php index 6e1662d..719e740 100644 --- a/routes/api.php +++ b/routes/api.php @@ -47,6 +47,8 @@ Route::group(['middleware' => 'auth:sanctum'], function () { Route::get('crop-yield-total-list', [CropYieldController::class, 'totalStaticsList']);//城镇统计产值 Route::get('crop-yield-total-chart', [CropYieldController::class, 'totalStaticsChart']);//城镇统计产值 + Route::get('device-data-statics', [DeviceController::class, 'dataStatics']); + /** 系统管理 **/ Route::apiResource('admin-users', AdminUserController::class)->names('admin_users'); Route::put('admin-users/{admin_user}/enable', [AdminUserController::class, 'endable'])->name('admin_users.enable');