添加设备数据接口
parent
7a892f8c86
commit
a943c3054c
|
|
@ -3,12 +3,13 @@
|
|||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Enums\BaseType;
|
||||
use App\Enums\DeviceType;
|
||||
use App\Helpers\Paginator;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\AgriculturalBase;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Http\Requestes\AgriculturalBaseRequest;
|
||||
use App\Http\Resources\AgriculturalBaseResource;
|
||||
use App\Models\AgriculturalBase;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class AgriculturalBaseController extends Controller
|
||||
{
|
||||
|
|
@ -23,7 +24,7 @@ class AgriculturalBaseController extends Controller
|
|||
$query = AgriculturalBase::with('crops')->filter($request->all())->sort();
|
||||
$list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
|
||||
|
||||
return AgriculturalBaseResource::collection($list);
|
||||
return $this->json(AgriculturalBaseResource::collection($list));
|
||||
}
|
||||
|
||||
public function store(AgriculturalBaseRequest $request)
|
||||
|
|
@ -98,4 +99,16 @@ class AgriculturalBaseController extends Controller
|
|||
|
||||
return $this->success('删除成功!');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定设备类型下有设备的基地
|
||||
*/
|
||||
public function deviceBase(Request $request){
|
||||
$deviceType = $request->input('device_type', DeviceType::Monitor);
|
||||
$list = AgriculturalBase::filter($request->all())->whereHas('devices', function($q) use ($deviceType){
|
||||
return $q->where('type', $deviceType);
|
||||
})->get();
|
||||
|
||||
return $this->json(AgriculturalBaseResource::collection($list));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,9 +93,9 @@ class DeviceController extends Controller
|
|||
$data = [];
|
||||
for ($i = 0; $i < 24; $i++){
|
||||
$_key = date('Y-m-d').' '.str_pad($i, 2, '0',STR_PAD_LEFT).':00:00';
|
||||
$data[$_key] = 0;
|
||||
$data[$_key] = null;
|
||||
if(isset($dataList[$_key])){
|
||||
$data[$_key] = $dataList[$_key][$deviceColumn] ?? 0;
|
||||
$data[$_key] = $dataList[$_key][$deviceColumn] ?? null;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -105,9 +105,9 @@ class DeviceController extends Controller
|
|||
$data = [];
|
||||
for ($i = 0; $i < 24; $i++){
|
||||
$_key = date('Y-m-d').' '.str_pad($i, 2, '0',STR_PAD_LEFT).':00:00';
|
||||
$data[$_key] = 0;
|
||||
$data[$_key] = null;
|
||||
if(isset($dataList[$_key])){
|
||||
$data[$_key] = $dataList[$_key][$deviceColumn] ?? 0;
|
||||
$data[$_key] = $dataList[$_key][$deviceColumn] ?? null;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -118,4 +118,64 @@ class DeviceController extends Controller
|
|||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定基地指定设备类型的所有设备指定维度数据
|
||||
*/
|
||||
public function baseDataStatics(Request $request)
|
||||
{
|
||||
$baseId = $request->input('base_id');
|
||||
$deviceType = $request->input('device_type');
|
||||
$deviceColumn = $request->input('device_column');//指定字段
|
||||
|
||||
//先获取基地下该类型所有设备
|
||||
$deviceData = Device::where([
|
||||
'agricultural_base_id' => $baseId,
|
||||
'type' => $deviceType
|
||||
])->get();
|
||||
|
||||
$data = [];
|
||||
switch ($deviceType){
|
||||
case DeviceType::Monitor->value://监控设备
|
||||
$data = DeviceResource::collection($deviceData);
|
||||
break;
|
||||
case DeviceType::Soil->value:
|
||||
$dataList = SoilMonitoringLog::where('agricultural_base_id', $baseId)->whereDate('monitored_at', now())->get()->groupBy('device_id');
|
||||
|
||||
foreach ($deviceData as $device){
|
||||
$_dataList = $dataList->get($device->id);
|
||||
$data[$device->monitoring_point] = [];
|
||||
if($_dataList){
|
||||
$_dataList = $_dataList->keyBy('monitored_at')->toArray();
|
||||
}
|
||||
for ($i = 0; $i < 24; $i++){
|
||||
$_key = date('Y-m-d').' '.str_pad($i, 2, '0',STR_PAD_LEFT).':00:00';
|
||||
$data[$device->monitoring_point][$_key] = null;
|
||||
if(isset($_dataList[$_key])){
|
||||
$data[$device->monitoring_point][$_key] = $_dataList[$_key][$deviceColumn] ?? null;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DeviceType::WaterQuality->value:
|
||||
$dataList = WaterQualityMonitoringLog::where('agricultural_base_id', $baseId)->whereDate('monitored_at', now())->get()->groupBy('device_id');
|
||||
|
||||
foreach ($deviceData as $device){
|
||||
$_dataList = $dataList->get($device->id);
|
||||
$data[$device->monitoring_point] = [];
|
||||
if($_dataList){
|
||||
$_dataList = $_dataList->keyBy('monitored_at')->toArray();
|
||||
}
|
||||
for ($i = 0; $i < 24; $i++){
|
||||
$_key = date('Y-m-d').' '.str_pad($i, 2, '0',STR_PAD_LEFT).':00:00';
|
||||
$data[$device->monitoring_point][$_key] = null;
|
||||
if(isset($_dataList[$_key])){
|
||||
$data[$device->monitoring_point][$_key] = $_dataList[$_key][$deviceColumn] ?? null;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return $this->json($data);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,4 +45,8 @@ class AgriculturalBase extends Model
|
|||
public function yieldLogs(){
|
||||
return $this->hasMany(CropYield::class, 'base_id');
|
||||
}
|
||||
|
||||
public function devices(){
|
||||
return $this->hasMany(Device::class, 'base_id');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ Route::group(['middleware' => 'auth:sanctum'], function () {
|
|||
Route::get('citydata-statistics', [CityDataController::class, 'statistics'])->name('citydata_statistics.index');
|
||||
//基地数据
|
||||
Route::apiResource('agricultural-basic', AgriculturalBaseController::class)->names('agricultural_basic');
|
||||
Route::get('agricultural-device-basic', [DeviceBasicController::class, 'deviceBase'])->name('agricultural_basic.device_bases');//通过设备类型查询基地
|
||||
//农作物
|
||||
Route::apiResource('crops', CropController::class)->names('crops');
|
||||
|
||||
|
|
@ -46,8 +47,8 @@ Route::group(['middleware' => 'auth:sanctum'], function () {
|
|||
Route::get('crop-yield-category-statics', [CropYieldController::class, 'categoryStaticsChart']);//行业统计产值
|
||||
Route::get('crop-yield-total-list', [CropYieldController::class, 'totalStaticsList']);//城镇统计产值
|
||||
Route::get('crop-yield-total-chart', [CropYieldController::class, 'totalStaticsChart']);//城镇统计产值
|
||||
|
||||
Route::get('device-data-statics', [DeviceController::class, 'dataStatics']);
|
||||
Route::get('device-data-statics', [DeviceController::class, 'dataStatics']);//指定设备,当天的设备数据
|
||||
Route::get('device-base-data-statics', [DeviceController::class, 'baseDataStatics']);
|
||||
|
||||
/** 系统管理 **/
|
||||
Route::apiResource('admin-users', AdminUserController::class)->names('admin_users');
|
||||
|
|
|
|||
Loading…
Reference in New Issue