From 153e830ed36918589e51d7610a23d21426fb2f7f Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Mon, 7 Nov 2022 09:57:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=AE=BE=E5=A4=87=E6=95=B0?= =?UTF-8?q?=E6=8D=AE6=E5=B0=8F=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/DeviceController.php | 30 +++++++++++++---------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/DeviceController.php b/app/Http/Controllers/DeviceController.php index 47c1489..bf4f7f1 100644 --- a/app/Http/Controllers/DeviceController.php +++ b/app/Http/Controllers/DeviceController.php @@ -116,11 +116,12 @@ class DeviceController extends Controller $data = $log->toArray(); break; case DeviceType::Soil://土壤设备 - //当天 - $dataList = SoilMonitoringLog::where('device_id', $deviceId)->whereDate('monitored_at', now())->get()->keyBy('monitored_at')->toArray(); + //当前时间往前推6个小时; + $startTime = now()->subHours(6); + $dataList = SoilMonitoringLog::where('device_id', $deviceId)->where('monitored_at', '>=', $startTime)->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'; + for ($i = 5; $i >= 0; $i--) { + $_key = now()->subHours($i)->format('Y-m-d H').':00:00'; $data[$_key] = null; if (isset($dataList[$_key])) { $data[$_key] = $dataList[$_key][$deviceColumn] ?? null; @@ -129,10 +130,11 @@ class DeviceController extends Controller break; case DeviceType::WaterQuality://水质设备 //当天 - $dataList = WaterQualityMonitoringLog::where('device_id', $deviceId)->whereDate('monitored_at', now())->get()->keyBy('monitored_at')->toArray(); + $startTime = now()->subHours(6); + $dataList = WaterQualityMonitoringLog::where('device_id', $deviceId)->where('monitored_at', '>=', $startTime)->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'; + for ($i = 5; $i >= 0; $i--) { + $_key = now()->subHours($i)->format('Y-m-d H').':00:00'; $data[$_key] = null; if (isset($dataList[$_key])) { $data[$_key] = $dataList[$_key][$deviceColumn] ?? null; @@ -167,7 +169,8 @@ class DeviceController extends Controller $data = DeviceResource::collection($deviceData); break; case DeviceType::Soil->value: - $dataList = SoilMonitoringLog::where('agricultural_base_id', $baseId)->whereDate('monitored_at', now())->get()->groupBy('device_id'); + $startTime = now()->subHours(6); + $dataList = SoilMonitoringLog::where('agricultural_base_id', $baseId)->where('monitored_at', '>=', $startTime)->get()->groupBy('device_id'); foreach ($deviceData as $device) { $_dataList = $dataList->get($device->id); @@ -175,8 +178,8 @@ class DeviceController extends Controller if ($_dataList) { $_dataList = $_dataList->keyBy('monitored_at')->toArray(); } - for ($i = 0; $i < 24; $i++) { - $_key = date('Y-m-d').' '.str_pad($i, 2, '0', STR_PAD_LEFT).':00:00'; + for ($i = 5; $i >= 0; $i--) { + $_key = now()->subHours($i)->format('Y-m-d H').':00:00'; $data[$device->monitoring_point][$_key] = null; if (isset($_dataList[$_key])) { $data[$device->monitoring_point][$_key] = $_dataList[$_key][$deviceColumn] ?? null; @@ -185,7 +188,8 @@ class DeviceController extends Controller } break; case DeviceType::WaterQuality->value: - $dataList = WaterQualityMonitoringLog::where('agricultural_base_id', $baseId)->whereDate('monitored_at', now())->get()->groupBy('device_id'); + $startTime = now()->subHours(6); + $dataList = WaterQualityMonitoringLog::where('agricultural_base_id', $baseId)->where('monitored_at', '>=', $startTime)->get()->groupBy('device_id'); foreach ($deviceData as $device) { $_dataList = $dataList->get($device->id); @@ -193,8 +197,8 @@ class DeviceController extends Controller if ($_dataList) { $_dataList = $_dataList->keyBy('monitored_at')->toArray(); } - for ($i = 0; $i < 24; $i++) { - $_key = date('Y-m-d').' '.str_pad($i, 2, '0', STR_PAD_LEFT).':00:00'; + for ($i = 5; $i >= 0; $i--) { + $_key = now()->subHours($i)->format('Y-m-d H').':00:00'; $data[$device->monitoring_point][$_key] = null; if (isset($_dataList[$_key])) { $data[$device->monitoring_point][$_key] = $_dataList[$_key][$deviceColumn] ?? null;