86 lines
2.3 KiB
PHP
86 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Helpers\Paginator;
|
|
use App\Http\Resources\DeviceWarningResource;
|
|
use App\Models\DeviceWarning;
|
|
use Illuminate\Http\Request;
|
|
use Peidikeji\Setting\Models\Setting;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class DeviceWarningController extends Controller
|
|
{
|
|
/**
|
|
* 预计规则
|
|
*
|
|
* @return void
|
|
*/
|
|
public function rules()
|
|
{
|
|
$settings = Setting::where('slug', 'like', 'device_warning_rule%')->get()->toArray();
|
|
|
|
return $this->json(array_map(function ($item) {
|
|
$_value = json_decode($item['value'], true);
|
|
|
|
return [
|
|
'name' => $item['name'],
|
|
'slug' => $item['slug'],
|
|
'value' => $_value,
|
|
];
|
|
}, $settings));
|
|
}
|
|
|
|
public function updateRule(Request $request)
|
|
{
|
|
$slug = $request->input(['slug']);
|
|
$ruleValue = $request->input(['value'], []);
|
|
|
|
$rule = Setting::where('slug', $slug)->first();
|
|
//获取提交的规则
|
|
if ($rule) {
|
|
$oldValue = json_decode($rule->value, true);
|
|
foreach ($oldValue as $key => $value) {
|
|
foreach ($value as $lv => $item) {
|
|
if (isset($ruleValue[$key][$lv])) {
|
|
$oldValue[$key][$lv] = $ruleValue[$key][$lv];
|
|
}
|
|
}
|
|
}
|
|
$rule->update([
|
|
'value' => json_encode($oldValue),
|
|
]);
|
|
}
|
|
|
|
return $this->success('更新成功');
|
|
}
|
|
|
|
/**
|
|
* 获取警报记录
|
|
*
|
|
* @return void
|
|
*/
|
|
public function warningLog(Request $request)
|
|
{
|
|
$query = DeviceWarning::filter($request->input())->orderBy('created_at', 'desc');
|
|
$list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
|
|
|
|
return $this->json(DeviceWarningResource::collection($list));
|
|
}
|
|
|
|
/**
|
|
* 获取预警数量
|
|
*/
|
|
public function warningLogNum(Request $request){
|
|
$list = DeviceWarning::filter($request->input())
|
|
->select(DB::raw('lv, count(1) as num'))
|
|
->groupBy('lv')
|
|
->get()
|
|
->pluck('num', 'lv')->toArray();
|
|
for($i = 1; $i <= 4; $i++) {
|
|
$data[$i] = $list[$i] ?? 0;
|
|
}
|
|
return $this->json($data);
|
|
}
|
|
}
|