dev
vine_liutk 2022-11-02 14:29:31 +08:00
parent 98e797948d
commit 935613a0c9
5 changed files with 42 additions and 0 deletions

View File

@ -8,4 +8,17 @@ enum DeviceStatus: int
case Online = 1; // 在线
case Offline = 2; // 离线
case Broken = 3; // 故障
/**
* @return array
*/
public static function status(): array
{
return [
static::Disabled->value => '禁用',
static::Online->value => '在线',
static::Offline->value => '离线',
static::Broken->value => '故障',
];
}
}

View File

@ -50,6 +50,7 @@ class AdminUserController extends Controller
public function show(AdminUser $adminUser)
{
$adminUser->load(['bases', 'roles']);
return $this->json(AdminUserResource::make($adminUser));
}

View File

@ -5,8 +5,10 @@ namespace App\Http\Controllers;
use App\Models\Device;
use App\Enums\DeviceType;
use App\Helpers\Paginator;
use App\Enums\DeviceStatus;
use Illuminate\Http\Request;
use App\Models\SoilMonitoringLog;
use Illuminate\Support\Facades\DB;
use App\Http\Requestes\DeviceRequest;
use App\Http\Resources\DeviceResource;
use App\Models\WaterQualityMonitoringLog;
@ -68,6 +70,30 @@ class DeviceController extends Controller
return $this->json(DeviceType::types());
}
/**
* 统计某个基地下所有设备状态数量
*/
public function typeStatusNum(Request $request){
$baseId = $request->input('base_id');
$query = Device::where('agricultural_base_id', $baseId)->groupBy('type')->groupBy('status');
$list = $query->select(DB::raw('type, status, count(1) as num '))->get();
$resData = [];
foreach ($list as $item) {
$resData[$item->type][$item->status] = $item->num;
}
//初始化数据;
$data = [];
foreach (DeviceType::types() as $typeKey => $typeName){
foreach(DeviceStatus::status() as $statusKey => $statusName){
$data[$typeKey][$statusKey] = $resData[$typeKey][$statusKey] ?? 0;
}
}
return $this->json($data);
}
/**
* 设备数据
*/

View File

@ -16,6 +16,7 @@ class AdminUserResource extends JsonResource
{
return [
'id' => $this->id,
'roles' => AdminRoleResource::collection($this->whenloaded('roles')),
'username' => $this->username,
'name' => $this->name,
'avatar' => $this->avatar,

View File

@ -41,6 +41,7 @@ Route::group(['middleware' => 'auth:sanctum'], function () {
Route::apiResource('crop-flows', CropFlowController::class)->names('crops_flow');
//设备管理
Route::apiResource('devices', DeviceController::class)->names('device');
Route::get('devices-num', [DeviceController::class, 'typeStatusNum'])->name('device.type_status_num');
//设备警报配置
Route::get('device-warning-rules', [DeviceWarningController::class, 'rules']); //预警规则
Route::put('device-warning-rules', [DeviceWarningController::class, 'updateRule']); //预警规则