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;