Update
parent
b44d7b0055
commit
1dffa74e6f
|
|
@ -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 [];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询设备今天(按天),近一周(按天),近一个月(按天)
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
Loading…
Reference in New Issue