dev
李静 2023-05-15 21:48:58 +08:00
parent b44d7b0055
commit 1dffa74e6f
2 changed files with 77 additions and 5 deletions

View File

@ -277,6 +277,77 @@ class DeviceController extends Controller
return $this->json($data);
}
public function baseDataStaticsV2(Request $request)
{
$baseId = $request->base_id;
$deviceType = DeviceType::tryFrom($request->device_type);
$deviceColumns = $request->whenFilled(
'device_columns',
fn ($deviceColumns) => explode(',', $deviceColumns),
fn () => []
);
$devices = Device::where([
'agricultural_base_id' => $baseId,
'type' => $deviceType,
])->orderBy('sort', 'desc')->get();
switch ($deviceType) {
case DeviceType::Soil:
$end = now()->startOfHour();
$start = $end->copy()->subHours(5);
$monitoringLogGroups = SoilMonitoringLog::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)->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;
$y[] = $monitoringLog?->{$deviceColumn};
$startAt->addHours(1);
}
$series[] = [
'name' => $device->monitoring_point,
'data' => $y,
];
}
$data[$deviceColumn] = [
'x_axis' => $x,
'series' => $series,
];
}
return $data;
case DeviceType::WaterQuality:
return [];
default:
return [];
}
}
/**
* 查询设备今天(按天),近一周(按天),近一个月(按天)
*/

View File

@ -76,6 +76,7 @@ Route::group(['middleware' => 'auth:sanctum'], function () {
Route::get('crop-yield-total-chart', [CropYieldController::class, 'totalStaticsChart']); //城镇统计产值
Route::get('device-data-statics', [DeviceController::class, 'dataStatics']); //指定设备,当天的设备数据
Route::get('device-base-data-statics', [DeviceController::class, 'baseDataStatics']);
Route::get('device-base-data-statics-v2', [DeviceController::class, 'baseDataStaticsV2']);
/** 系统管理 **/
Route::apiResource('admin-users', AdminUserController::class)->names('admin_users');