123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- <?php
- namespace catchAdmin\alarm\controller;
- use catcher\base\CatchRequest as Request;
- use catcher\CatchResponse;
- use catcher\base\CatchController;
- use catchAdmin\alarm\model\AlarmRecords as alarmRecordsModel;
- use catchAdmin\permissions\model\Department;
- use think\facade\Db;
- use function PHPSTORM_META\type;
- class AlarmRecords extends CatchController
- {
- protected $alarmRecordsModel;
-
- public function __construct(AlarmRecordsModel $alarmRecordsModel)
- {
- $this->alarmRecordsModel = $alarmRecordsModel;
- }
-
- /**
- * 列表
- * @time 2021年05月27日 11:20
- * @param Request $request
- */
- public function index(Request $request) : \think\Response
- {
- return CatchResponse::paginate($this->alarmRecordsModel->getList());
- }
-
- /**
- * 保存信息
- * @time 2021年05月27日 11:20
- * @param Request $request
- */
- public function save(Request $request) : \think\Response
- {
- return CatchResponse::success($this->alarmRecordsModel->storeBy($request->post()));
- }
-
- /**
- * 保存处理记录
- * @time 2021年05月27日 11:20
- * @param Request $request
- */
- public function handleAlarm(Request $request) : \think\Response
- {
- $params=$request->post();
- $params['end_time']=time();
- $params['state']='end';
- $params['handler_id']=$request->user()->id;
- $res=$this->alarmRecordsModel
- ->where('device_number',$params['device_number'])
- ->where('state','start')
- ->whereIn('alarm_reason',['press','fence_in','fence_out'])
- ->update($params);
-
- if($res){
- //2表示已出警'
- $count=$this->alarmRecordsModel
- ->where('device_number',$params['device_number'])
- ->where('state','start')
- ->where('alarm_reason','low_bat')
- ->count();
- if(!$count){
- Db::table('devices')->where('imei', $params['device_number'])->update(['alarm_state' => 0]);
- }
-
- }
- return CatchResponse::success($res);
- }
-
- /**
- * 读取
- * @time 2021年05月27日 11:20
- * @param $id
- */
- public function read($id) : \think\Response
- {
- return CatchResponse::success($this->alarmRecordsModel->findBy($id));
- }
-
- /**
- * 更新
- * @time 2021年05月27日 11:20
- * @param Request $request
- * @param $id
- */
- public function update(Request $request, $id) : \think\Response
- {
- $params=$request->post();
- $params['end_time']=time();
- $params['state']='end';
- $params['handler_id']=$request->user()->id;
- $res=$this->alarmRecordsModel->updateBy($id, $params);
- if($res){
- $device_number=$this->alarmRecordsModel->where('id', $id)->value('device_number');
- $where = ['device_number'=>$device_number,'state'=>'start'];
- $count=$this->alarmRecordsModel->where($where)->count();
- if(!$count){
- Db::table('devices')->where('imei', $device_number)->update(['alarm_state' => 0]);
- }
- }
- return CatchResponse::success($res);
- }
-
- /**
- * 删除
- * @time 2021年05月27日 11:20
- * @param $id
- */
- public function delete($id) : \think\Response
- {
- return CatchResponse::success($this->alarmRecordsModel->deleteBy($id));
- }
-
- /**
- * 根据用户获取设备的相关列表
- *
- * @param Request $request
- * @return void
- */
- public function getAlarmRecordsbyId(Request $request)
- {
- $data=$request->param();
- $userid=$request->param('creator_id');
- $state = $request->param('state');
- if(empty($data['limit']))
- {
- $data["limit"] = 10;
- }
- if(empty($data['page']))
- {
- $data["page"] = 1;
- }
- $type_id = Db::name("sys_dict_type")->where('code','AlarmType')->value('id');
- $where[]=['d.bind_id','=',$userid];
- //$where[]=['a.handler_id','=',0];
- $where[] = ['a.state','=',$state];
- //获取告警原因
-
-
- $list = Db::name("devices")->where($where)
- ->alias("d")->leftJoin('alarm_records a','d.imei=a.device_number')
- ->leftJoin('sys_dict_data s','s.code=a.alarm_reason')
- ->field('a.device_number as device_number,a.start_time as start_time,a.end_time as end_time,s.value as alarm_reason,a.id as id,a.result as result')
- ->limit($data['limit'])
- ->page($data["page"])
- ->select()->toArray();
-
- $total=Db::name("devices")
- ->alias("d")->leftJoin('alarm_records a','d.imei=a.device_number')
- ->where($where)->count();
- $da = [
- 'list'=>$list,
- 'total'=>$total
- ];
- return CatchResponse::success($da);
- }
- /**
- * 微信获取告警详情
- * @param Request $request
- * @return void
- */
- public function getAlarmDetail(Request $request)
- {
- //告警信息id
- $id=$request->param('id');
- $userid=$request->param('creator_id');
- $alarmRecords=Db::name('alarm_records')->where('id',$id)->find();
- $device = Db::name("devices")->where('imei',$alarmRecords["device_number"])->find();
- if(empty($device))
- {
- return CatchResponse::fail('该设备不存在');
- }
- if($device["bind_id"]!=$userid)
- {
- return CatchResponse::fail('该设备未和您的账号绑定');
- }
- //用户的详细信息
- $user = Db::name("users")->where("id",$userid)->find();
- //部门信息
- $department =Department::where('id',$user['department_id'])->find();
- if(empty($department))
- {
- $department['department_name'] = null;
- }
- //获取告警类型
- $type_id = Db::name("sys_dict_type")->where('code','AlarmType')->value('id');
- $reason = Db::name("sys_dict_data")
- ->where([["type_id","=", $type_id],['code','=',$alarmRecords['alarm_reason']]])
- ->value('value');
- $user_info = [
- 'device_name'=>$device['name'],
- 'imei'=>$device['imei'],
- 'department_name'=>$department["department_name"],
- 'realname'=>$user['realname'],
- 'phone' =>$user['phone'],
- 'last_online_time'=>$device["online_time"],
- 'status'=>$alarmRecords["state"],
- 'reason'=> $reason,
- 'comment'=>$alarmRecords["comment"],
- 'end_time'=>$alarmRecords['end_time']
- ];
- return CatchResponse::success($user_info);
- }
-
- }
|