From 45d9aa724dd8f46043fbc4cb21ba51e727b31321 Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Thu, 29 Jun 2023 15:05:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=9B=91=E6=8E=A7=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/MonitorModeController.php | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/MonitorModeController.php b/app/Http/Controllers/Api/MonitorModeController.php index 1f2e2d4..8366513 100644 --- a/app/Http/Controllers/Api/MonitorModeController.php +++ b/app/Http/Controllers/Api/MonitorModeController.php @@ -6,6 +6,7 @@ use App\Filters\MonitorModeFilter; use App\Http\Controllers\Controller; use App\Http\Resources\DeviceResource; use App\Http\Resources\MonitorModeResource; +use App\Models\MeteorologicalDailyReport; use App\Models\MonitorMode; use App\Services\Admin\DeviceService; use Illuminate\Http\Request; @@ -37,7 +38,6 @@ class MonitorModeController extends Controller $data = DeviceResource::collection($monitor->devices); break; case MonitorMode::TYPE_SOIL://土壤设备--只拿最近6小时数据 - case MonitorMode::TYPE_METEOROLOGICAL://气象设备--只拿最近6小时数据 $startTime = now()->subHours(6)->format('Y-m-d H:i:s'); $endTime = now()->format('Y-m-d H:i:s'); $data = (new DeviceService())->getMonitorModeDeviceData($monitor, $startTime, $endTime); @@ -45,6 +45,25 @@ class MonitorModeController extends Controller $data = $data[$column] ?? []; } break; + case MonitorMode::TYPE_METEOROLOGICAL://气象设备--只拿最新的一个值 + $fieldNameMap = MonitorMode::fieldMap(MonitorMode::TYPE_METEOROLOGICAL); + $fieldUnitMap = MonitorMode::fieldUnitMap(MonitorMode::TYPE_METEOROLOGICAL); + foreach($monitor->devices as $device){ + $_fields = explode(',', $device->pivot->fields); + $reportData = MeteorologicalDailyReport::where('device_id', $device->id)->orderBy('reported_at', 'desc')->first()?->toArray() ?? []; + foreach($_fields as $field){ + $data[$field] = [ + 'name' => $fieldNameMap[$field], + 'unit' => $fieldUnitMap[$field], + 'value' => $reportData[$field] ?? 0, + ]; + if($field == 'wind_direction'){//单独处理风向 + $formatData = ['北风','东北风','东风','东南风','南风','西南风','西风','西北风']; + $data[$field]['value'] = $formatData[$reportData[$field]]??'未知'; + } + } + } + break; case MonitorMode::TYPE_INSECT://虫情设备-todo break; default: