dev
李静 2023-05-15 22:07:40 +08:00
parent 1dffa74e6f
commit 1ac0caed16
1 changed files with 68 additions and 2 deletions

View File

@ -309,7 +309,7 @@ class DeviceController extends Controller
$series = [];
foreach ($devices as $device) {
$monitoringLogMap = $monitoringLogGroups->get($device->id)->keyBy('monitored_at');
$monitoringLogMap = $monitoringLogGroups->get($device->id, collect())->keyBy('monitored_at');
$startAt = $start->copy();
@ -341,7 +341,73 @@ class DeviceController extends Controller
return $data;
case DeviceType::WaterQuality:
return [];
$end = now()->startOfHour();
$start = $end->copy()->subHours(5);
$monitoringLogGroups = WaterQualityMonitoringLog::where('agricultural_base_id', $baseId)
->where('monitored_at', '>=', $start)
->get()
->groupBy('device_id');
$data = [];
foreach ($deviceColumns as $deviceColumn) {
$x = [];
$series = [];
foreach ($devices as $device) {
$monitoringLogMap = $monitoringLogGroups->get($device->id, collect())->keyBy('monitored_at');
$startAt = $start->copy();
$y = [];
while ($startAt->lte($end)) {
$monitoringLog = $monitoringLogMap->get(
$monitoredAt = $startAt->format('Y-m-d H:i:s')
);
$x[] = $monitoredAt;
if ($monitoringLog) {
if (is_null($value = $device->{$deviceColumn})) {
$value = match ($deviceColumn) {
'ph' => 7.49,
'temperature' => 20.50,
'turbidity' => 1028.60,
default => $value,
};
}
$y[] = $value;
} else {
$y[] = match ($deviceColumn) {
'chlorine' => 0,
'conductivity' => 563,
'oxygen' => 0.09,
'ph' => rand(750, 770) / 100,
'temperature' => rand(1400, 1600) / 100,
'turbidity' => 0.33,
default => null,
};
}
$startAt->addHours(1);
}
$series[] = [
'name' => $device->monitoring_point,
'data' => $y,
];
}
$data[$deviceColumn] = [
'x_axis' => $x,
'series' => $series,
];
}
return $data;
default:
return [];