1
0
Fork 0
internet-everythings-agricu.../app/Http/Controllers/Api/MonitorModeController.php

58 lines
2.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace App\Http\Controllers\Api;
use App\Filters\MonitorModeFilter;
use App\Http\Controllers\Controller;
use App\Http\Resources\DeviceResource;
use App\Http\Resources\MonitorModeResource;
use App\Models\MonitorMode;
use App\Services\Admin\DeviceService;
use Illuminate\Http\Request;
class MonitorModeController extends Controller
{
/**
* 获取监控点列表;
*/
public function getMonitorMode(Request $request)
{
$monitors = MonitorMode::filter($request->all(), MonitorModeFilter::class)->get();//有推荐,排序字段,不过目前没开放;
return $this->json(MonitorModeResource::collection($monitors));
}
/**
* 获取监控点位数据-可指定字段
*/
public function getMonitorDeviceData(Request $request)
{
$monitorId = $request->input('monitor_id');
$column = $request->input('column'); //指定字段
//监控类型气象土壤为折线图数据虫情数据待定监控设备rtsp流其他类型无数据
$data = [];
$monitor = MonitorMode::find($monitorId);
if($monitor){
switch($monitor->type){
case MonitorMode::TYPE_MONITOR://监控视频
$data = DeviceResource::collection($monitor->devices);
break;
case MonitorMode::TYPE_SOIL://土壤设备--只拿最近6小时数据
case MonitorMode::TYPE_METEOROLOGICAL://气象设备--只拿最近6小时数据
$startTime = now()->subHours(6)->format('Y-m-d H:i:s');
$endTime = now()->format('Y-m-d H:i:s');
$data = (new DeviceService())->getMonitorModeDeviceData($monitor, $startTime, $endTime);
if($column){
$data = $data[$column] ?? [];
}
break;
case MonitorMode::TYPE_INSECT://虫情设备-todo
break;
default:
break;
}
}
return $this->json($data);
}
}