61 lines
1.7 KiB
PHP
61 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\{Device, MonitorDevice, RegionMonitor};
|
|
use DB;
|
|
|
|
class DeviceController extends Controller
|
|
{
|
|
/**
|
|
* 获取设备监控的类别列表;
|
|
*/
|
|
public function getMonitorMode(){
|
|
|
|
}
|
|
|
|
public function getMonitorData(Request $request){
|
|
$baseId = $request->input('base_id');
|
|
$deviceType = $request->input('device_type');
|
|
$deviceColumn = $request->input('device_column'); //指定字段
|
|
}
|
|
/**
|
|
* 统计某个实验田下所有设备状态数量
|
|
*/
|
|
public function typeStateNum(Request $request)
|
|
{
|
|
$regionId = $request->input('region_id', 0);
|
|
|
|
$query = Device::query();
|
|
|
|
if($regionId){
|
|
$monitorIds = RegionMonitor::where('region_id', $regionId)->pluck('id')->toArray();
|
|
|
|
if(count($monitorIds) > 0){
|
|
$deviceIds = MonitorDevice::whereIn('monitor_id', $monitorIds)->pluck('id')->toArray();
|
|
$query->whereIn('id', $deviceIds);
|
|
}
|
|
}
|
|
|
|
$query->groupBy('type')->groupBy('state');
|
|
|
|
$list = $query->select(DB::raw('type, state, count(1) as num '))->get();
|
|
$resData = [];
|
|
foreach ($list as $item) {
|
|
$resData[$item->type][$item->state] = $item->num;
|
|
}
|
|
|
|
//初始化数据;
|
|
$data = [];
|
|
foreach (Device::typeMap() as $typeKey => $typeName) {
|
|
foreach (Device::stateMap() as $statusKey => $statusName) {
|
|
$data[$typeKey][$statusKey] = $resData[$typeKey][$statusKey] ?? 0;
|
|
}
|
|
}
|
|
|
|
return $this->json($data);
|
|
}
|
|
}
|