alarmReportModel = $alarmReportModel; $this->sysDictDataModel = $sysDictDataModel; } /** * 列表 * @time 2021年05月27日 15:12 * @param Request $request */ public function index(Request $request) : \think\Response { return CatchResponse::paginate($this->alarmReportModel->getList()); } /** * 保存信息 * @time 2021年05月27日 15:12 * @param Request $request */ public function save(Request $request) : \think\Response { return CatchResponse::success($this->alarmReportModel->storeBy($request->post())); } /** * 读取 * @time 2021年05月27日 15:12 * @param $id */ public function read($id) : \think\Response { return CatchResponse::success($this->alarmReportModel->findBy($id)); } /** * 更新 * @time 2021年05月27日 15:12 * @param Request $request * @param $id */ public function update(Request $request, $id) : \think\Response { return CatchResponse::success($this->alarmReportModel->updateBy($id, $request->post())); } /** * 删除 * @time 2021年05月27日 15:12 * @param $id */ public function delete($id) : \think\Response { return CatchResponse::success($this->alarmReportModel->deleteBy($id)); } /** * 详情 * @time 2021年06月15日 16:12 * @param $id */ public function detail($id) : \think\Response { return CatchResponse::success($this->alarmReportModel->getDetail($id)); } /** * 告警总增长趋势 * @time 2021年06月15日 16:12 */ public function totalGrowth(Request $request) : \think\Response { $params = $request->param(); // 默认取最近15天 if (!isset($params['start_date']) || !$params['start_date']) { $start_date = date('Y-m-d', strtotime('-14 day')); } else { $start_date = $request->param('start_date'); } if (!isset($params['end_date']) || !$params['end_date']) { $end_date = date('Y-m-d'); } else { $end_date = $request->param('end_date'); } // 查出告警类型 $alarm_types = $this->sysDictDataModel->getTypesByCode('AlarmReason'); $datas = []; while ($start_date <= $end_date) { $growth_data = $this->alarmReportModel->getTotalGrowthCountByDate($start_date); foreach ($alarm_types as $type) { // 无告警数据 if ($growth_data->isEmpty()) { $datas[$type['text']][] = [ 'date' => $start_date, // 'value' => 0, 'value' => mt_rand(0,9), ]; continue; } $temp_data = [ 'date' => $start_date, 'value' => 0, ]; foreach ($growth_data as $data) { if ($data['alarm_type'] == $type['value']) { $temp_data['value'] = $data['count']; break; } } $datas[$type['text']][] = $temp_data; } $start_date = date('Y-m-d', strtotime("{$start_date} +1 day")); } return CatchResponse::success($datas); } }