where('del',0)
->where('enable',1)
->where('org_id',$this->orgId)
->where('','exp',Db::raw("FIND_IN_SET($c,types)"))
->count('id');
$user = Db::name('patrol_task_user')
->alias('ptu')
->join('patrol_task pt','pt.id=ptu.patrol_task_id')
->where('pt.del',0)
->where('pt.org_id',$this->orgId)
->where('pt.patrol_mode',$mode)
->group('ptu.user_id')
->count();
$task = Db::name('patrol_task')->where('org_id',$this->orgId)->where('del',0)->where('patrol_mode',$mode)->count();
$data = [
'addrCount'=>$addr,
'userCount'=>$user,
'taskCount'=>$task,
];
HelpHander::success($data);
}
//最新的一条巡更内容
public function patrolPath(){
$mode = input('mode');
if(!in_array($mode,[1,2,3,4])){
HelpHander::error('参数错误');
}
$record = Db::name('patrol_record')
->alias('pr')
->field('pr.*')
->join('patrol_task pt','pt.id=pr.patrol_task_id')
->where('pr.org_id',$this->orgId)
->where('pt.patrol_mode',$mode)
->where('pt.del',0)
->where('pt.status',1)
->order('pr.id desc')
->find();
if(isset($record) && !empty($record)){
$record['addr'] = Db::name('address')->where('id',$record['patrol_addr_id'])->value('title');
$record['user'] = Db::name('user')->where('id',$record['user_id'])->value('real_name');
$record['task'] = Db::name('patrol_task')->where('id',$record['patrol_task_id'])->value('title');
}
$addrList = Db::name('patrol_task_addr')
->alias('pta')
->field('a.id,a.title')
->join('patrol_addr_form paf','paf.id=pta.patrol_form_id')
->join('address a','a.id=paf.patrol_addr_id')
->where('pta.patrol_task_id',$record['patrol_task_id'])
->where('a.del',0)
->select();
foreach ($addrList as $k=>$v){
$addrList[$k]['nums'] = Db::name('patrol_record')
->where('org_id',$this->orgId)
->where('patrol_addr_id',$v['id'])
->count();
$active = 0;
if($v['id'] == $record['patrol_addr_id']){
$active = 1;
}
$addrList[$k]['active'] = $active;
$times = Db::name('patrol_record')
->field('create_time')
->where('org_id',$this->orgId)
->where('patrol_addr_id',$v['id'])
->select();
$eDate = '无';
foreach ($times as $kk=>$vv){
$date = isset($times[1]['create_time'])&&!empty($times[1]['create_time'])?$times[1]['create_time']:'';
$eDate = !empty($date)?date('H:i',strtotime($date)):'无';
}
$addrList[$k]['time'] = $eDate;
}
$data = [
'record' => $record,
'addrList' => $addrList,
];
HelpHander::success($data);
}
//实时信息总览
public function patrolRealTime(){
$mode = input('mode');
if(!in_array($mode,[1,2,3,4])){
HelpHander::error('参数错误');
}
$lists = Db::name('patrol_record')
->field('create_time,user_id,patrol_addr_form_id,patrol_mode,is_normal')
->where('patrol_mode',$mode)
->where('org_id',$this->orgId)
->order('id desc')
->select();
$data = [];
foreach ($lists as $k=>$v){
$addrForm = Db::name('patrol_addr_form')
->alias('a')
->join('patrol_task_addr b','b.patrol_form_id = a.id')
->where('b.id',$v['patrol_addr_form_id'])
->value('a.title');
$mode = Db::name('patrol_mode')
->where('id',$v['patrol_mode'])
->value('name');
$user = Db::name('user')->where('id',$v['user_id'])->value('real_name');
$is_normal = '无异常' ;
if($v['is_normal'] == 1){
$is_normal = '有异常' ;
}
$time = date('Y-m-d H:i',strtotime($v['create_time']));
$content = '员工-'.$user.'完成'.$addrForm.$mode.','.$is_normal;
$data[$k][] = $time;
$data[$k][] = $content;
}
HelpHander::success($data);
}
//异常地点数据总览
public function patrolNormalAddr(){
$mode = input('mode');
if(!in_array($mode,[1,2,3,4])){
HelpHander::error('参数错误');
}
$lists = Db::name('patrol_record')
->where('org_id',$this->orgId)
->where('is_normal',1)
->where('patrol_mode',$mode)
->order('id desc')
->select();
$data = [];
foreach ($lists as $k=>$v){
$addr = Db::name('address')->where('id',$v['patrol_addr_id'])
->value('title');
$user = Db::name('user')->where('id',$v['user_id'])->value('real_name');
$is_normal = '正常' ;
if($v['is_normal'] == 1){
$is_normal = '异常' ;
}
$data[$k][] = $addr;
$data[$k][] = $user;
$data[$k][] = $v['create_time'];
$data[$k][] = $is_normal;
$data[$k][] = $v['content'];
}
HelpHander::success($data);
}
//获取今天最新一条巡更记录
public function newestRecord(){
$info = Db::name('patrol_record')
->alias('a')
->join('patrol_task t','a.patrol_task_id = t.id')
->join('address b','a.patrol_addr_id = b.id')
->join('user c','a.user_id = c.id')
->where('a.create_yyyymmdd',date('Ymd'))
->where('a.org_id',$this->orgId)
->field('a.images,a.create_time,b.title as address,c.real_name as name,t.title as content')
->order('a.id desc')
->find();
$img = $info['images']?(explode(',',$info['images']))[0]:'';
if(!$info){
HelpHander::error('错误');
}
$info['img'] = $img;
HelpHander::success($info);
}
// 可视化轨迹展示
public function patrolRecord(){
$lists = Db::name('patrol_record')
->alias('a')
->join('patrol_task t','a.patrol_task_id = t.id')
->join('address b','a.patrol_addr_id = b.id')
->join('user c','a.user_id = c.id')
// ->where('a.create_yyyymmdd',date('Ymd'))
->where('a.org_id',$this->orgId)
->field('a.images,a.create_time,b.title as address,c.real_name as name,a.content')
->order('a.id desc')
->limit(20)
->select();
$lists = $lists?$lists:[];
$imgs = [];
$record = [];
foreach ($lists as $k=>$v){
$img = $v['images']?(explode(',',$v['images']))[0]:'';
if($img && count($imgs) < 3){
$imgs[] = [
'title' => $v['address'],
'img' => $img
];
}
$record[] = [$v['address'],$v['create_time'],$v['name'],$v['content']];
}
HelpHander::success(['imgs' => $imgs,'lists' => $record]);
}
// 巡更任务数据统计 当天及30天异常数量
public function addrRecord(){
//先取30内的巡更地点
$curDay = date('Ymd');
$start = date('Ymd',strtotime(date('Y-m-d')) - 29*24*60*60);
$lists = Db::name('patrol_record')
->alias('pr')
->join('address a','a.id = pr.patrol_addr_id')
->where('pr.org_id',$this->orgId)
->where('pr.patrol_mode',1)
->where('pr.create_yyyymmdd','<=',$curDay)
->where('pr.create_yyyymmdd','>=',$start)
->field('a.id,a.title')
->group('pr.patrol_addr_id')
->distinct(true)
->select();
$titles = [];
$y1 = [];
$y2 = [];
foreach ($lists as $k=>$v){
$titles[] = $v['title'];
$count1 = Db::name('patrol_record')
->where('org_id',$this->orgId)
->where('patrol_mode',1)
->where('create_yyyymmdd','=',$curDay)
->count();
$y1[] = $count1;
$count2 = Db::name('patrol_record')
->where('org_id',$this->orgId)
->where('patrol_mode',1)
->where('is_normal',1)
->where('create_yyyymmdd','<=',$curDay)
->where('create_yyyymmdd','>=',$start)
->count();
$y2[] = $count2;
}
HelpHander::success(['titles' => $titles,'y1' => $y1,'y2' => $y2]);
}
//巡*图片
public function patrolImg(){
$data = Db::name('patrol_record')
->field('images')
->where('images','<>','')
->where('org_id',$this->orgId)
->limit(30)
->order('id desc')
->select();
foreach ($data as $k=>$v){
$img = explode(',',$v['images']);
if($img){
$data[$k]['images'] = $img[0];
}
}
if(count($data)>3){
$key = array_rand($data,4);
$list[] = $data[$key[0]];
$list[] = $data[$key[1]];
$list[] = $data[$key[2]];
$list[] = $data[$key[3]];
}
$eList = isset($list)?$list:$data;
HelpHander::success($eList);
}
//
public function patrolRecordCount(){
$dlist = [
date('Y-m-d',strtotime('-6 days')),
date('Y-m-d',strtotime('-5 days')),
date('Y-m-d',strtotime('-4 days')),
date('Y-m-d',strtotime('-3 days')),
date('Y-m-d',strtotime('-2 days')),
date('Y-m-d',strtotime('-1 days')),
date('Y-m-d'),
];
$date = [];
$yCount = [];
$y2Count = [];
$y3Count = [];
$y4Count = [];
foreach ($dlist as $k=>$v){
$tt = date('Ymd',strtotime($v));
$count = Db::name('patrol_record')
->where('create_yyyymmdd',$tt)
->where('org_id',$this->orgId)
->where('patrol_mode',4)
->count();
$count2 =Db::name('patrol_record')
->where('create_yyyymmdd',$tt)
->where('org_id',$this->orgId)
->where('patrol_mode',2)
->count();
$count3 =Db::name('patrol_record')
->where('create_yyyymmdd',$tt)
->where('patrol_mode',3)
->where('org_id',$this->orgId)
->count();
$count4 =Db::name('patrol_record')
->where('create_yyyymmdd',$tt)
->where('patrol_mode',1)
->count();
$date[] = date('m-d',strtotime($v));
$yCount[] = $count;
$y2Count[] = $count2;
$y3Count[] = $count3;
$y4Count[] = $count4;
}
$data = [
'date'=>$date,
'count1'=>$yCount,
'count2'=>$y2Count,
'count3'=>$y3Count,
'count4'=>$y4Count,
];
HelpHander::success($data);
}
public function countData(){
$task = Db::name('patrol_task')
->where('org_id',$this->orgId)
->where('del',0)
->where('patrol_mode',2)
->where('create_yyyymmdd',date('Ymd'))
->count();
$task1 = Db::name('patrol_task')
->where('org_id',$this->orgId)
->where('del',0)
->where('patrol_mode',2)
->where('create_yyyymmdd',date('Ymd'))
->where('status',2)
->count();
$task2 = Db::name('patrol_task')
->where('org_id',$this->orgId)
->where('del',0)
->where('patrol_mode',2)
->where('create_yyyymmdd',date('Ymd'))
->where('status',0)
->count();
$task3 = Db::name('patrol_task')
->where('org_id',$this->orgId)
->where('del',0)
->where('patrol_mode',2)
->where('create_yyyymmdd',date('Ymd'))
->where('status',1)
->count();
$bl = '0';
if($task > 0 ){
$bl = round($task1/$task*100,1);
}
//$addrCount = model('Address')->getListByTypeCount(4,$this->orgId);
$addrCount = Db::name('patrol_task')
->alias('pr')
->leftJoin('patrol_task_addr b','pr.id=b.patrol_task_id')
->where('pr.org_id',$this->orgId)
->where('pr.del',0)
->where('pr.patrol_mode',2)
->where('pr.create_yyyymmdd',date('Ymd'))
->group('b.address_id')
->count();
$fg = Db::name('patrol_record')
->alias('pr')
->join('address a','a.id=pr.patrol_addr_id')
->where('pr.org_id',$this->orgId)
->where('a.del',0)
->where('a.enable',1)
->where('pr.patrol_mode',2)
->where('pr.create_yyyymmdd',date('Ymd'))
->group('pr.patrol_addr_id')
->count();
$fgbl = '0';
if($addrCount > 0 ){
$fgbl = round($fg/$addrCount*100,1);
}
$data = [
'task'=>$task,
'task1'=>$task1,
'task2'=>$task2,
'task3'=>$task3,
'bl'=>$bl,
'addr'=>$addrCount,
'addr1'=>$fg,
'addrbl'=>$fgbl,
];
HelpHander::success($data);
}
public function bjxsMonthData(){
$mode = input('mode',2);
$year = date('Y');
$month = date('m');
$t = date('t',time());
$x = $dayList = [];
for ($i=1;$i<=$t;$i++){
$d = $i;
if($i < 10){
$d = '0'.$i;
}
$dayList[] = $year.$month.$d;
$x[] = $month.'-'.$d;
}
$y = $y1 = $y2 = [];
foreach ($dayList as $k=>$v){
$count = Db::name('patrol_task')
->where('del',0)
->where('org_id',$this->orgId)
->where('patrol_mode',$mode)
->where('create_yyyymmdd',$v)
->count();
$wc = Db::name('patrol_task')
->where('del',0)
->where('org_id',$this->orgId)
->where('patrol_mode',$mode)
->where('create_yyyymmdd',$v)
->where('status',2)
->count();
$bl = 0 ;
if($count > 0){
$bl = round($wc/$count*100,1);
}
$y[] = $bl;
$y1[] = $count;
$y2[] = $wc;
}
HelpHander::success(['x'=>$x,'y'=>$y,'y1'=>$y1,'y2'=>$y2]);
}
public function bjxsTaskRecord(){
$mode = input('mode',2);
$record = Db::name('patrol_record')
->where('org_id',$this->orgId)
->where('patrol_mode',$mode)
->where('create_yyyymmdd',date('Ymd'))
->order('id desc')
->limit(20)
->select();
$rList = [];
foreach ($record as $k=>$v){
$task = Db::name('patrol_task')->where('id',$v['patrol_task_id'])->value('title');
$addr = Db::name('address')->where('id',$v['patrol_addr_id'])->value('title');
$status = $v['is_normal'] == 0 ? '正常':'异常';
$user = Db::name('user')->where('id',$v['user_id'])->value('real_name');
$time = date('H:i',strtotime($v['create_time']));
$rList[] =[$v['id'],$task,$addr,$status,$user,$time];
}
$task = Db::name('patrol_task')
->where('del',0)
->where('org_id',$this->orgId)
->where('patrol_mode',$mode)
->where('create_yyyymmdd',date('Ymd'))
->where('status','in',[0,1,2,3])
->order('id desc')
->limit(20)
->select();
$tList = [];
foreach ($task as $k=>$v){
$users = Db::name('patrol_task_user')
->alias('ptu')
->join('user u','u.id=ptu.user_id')
->where('ptu.patrol_task_id',$v['id'])
->where('u.del',0)
->column('u.real_name');
$userNames = $users ? implode(',',$users):'';
$st = date('H:i',strtotime($v['start_time']));
$et = date('H:i',strtotime($v['end_time']));
$statusTxt = $remark = '';
if($v['status'] == 0){
$statusTxt = '未执行';
$etime = strtotime($v['end_time']);
$time = time();
$xctime = $etime - $time;
$fz = round($xctime/60);
if($fz > 0 && $fz < 10){
$remark = ''.$fz.'分钟后超时';
}
if($fz > 10 && $fz < 30){
$remark = ''.$fz.'分钟后超时';
}
if($fz > 30){
$remark = ''.$fz.'分钟后超时';
}
if($fz <0){
$remark = '已超时';
}
}elseif ($v['status'] == 1){
$statusTxt = '执行中';
}elseif ($v['status'] == 2){
$statusTxt = '已完成';
}elseif ($v['status'] == 3){
$statusTxt = '未完成';
}
$tList[] = [$v['id'],$v['title'],$userNames,$st,$et,$statusTxt,$remark];
}
$wzz = Db::name('patrol_task')
->where('del',0)
->where('org_id',$this->orgId)
->where('patrol_mode',$mode)
->where('create_yyyymmdd',date('Ymd'))
->where('status',0)
->count();
$zxz = Db::name('patrol_task')
->where('del',0)
->where('org_id',$this->orgId)
->where('patrol_mode',$mode)
->where('create_yyyymmdd',date('Ymd'))
->where('status',1)
->count();
$wwc = Db::name('patrol_task')
->where('del',0)
->where('org_id',$this->orgId)
->where('patrol_mode',$mode)
->where('create_yyyymmdd',date('Ymd'))
->where('status',3)
->count();
$data = [
'rlist'=>$rList,
'tlist'=>$tList,
'wzz'=>$wzz,
'zxz'=>$zxz,
'wwc'=>$wwc,
];
HelpHander::success($data);
}
public function patrolImg2(){
$mode = input('mode',2);
$data = Db::name('patrol_record')
->field('images,patrol_addr_id')
->where('images','<>','')
->where('org_id',$this->orgId)
->where('patrol_mode',$mode)
->limit(30)
->order('id desc')
->select();
foreach ($data as $k=>$v){
$img = explode(',',$v['images']);
if($img){
$data[$k]['images'] = $img[0];
}
$data[$k]['addr'] = Db::name('address')->where('id',$v['patrol_addr_id'])->value('title');
}
if(count($data)>6){
$key = array_rand($data,6);
$list[] = $data[$key[0]];
$list[] = $data[$key[1]];
$list[] = $data[$key[2]];
$list[] = $data[$key[3]];
$list[] = $data[$key[4]];
$list[] = $data[$key[5]];
}
$eList = isset($list)?$list:$data;
HelpHander::success($eList);
}
public function zgImg(){
$orders = Db::name('orders')
->alias('a')
->join('todo b','a.id=b.order_id')
->field('a.images as oImages,b.images as tImages,a.create_time,b.done_time')
->where('a.images','<>','')
->where('b.images','<>','')
->where('a.org_id',$this->orgId)
->where('a.del',0)
->where('a.work_type_mode',2)
->where('a.order_mode','in',[5,6])
->limit(30)
->order('a.id desc')
->select();
$img = [];
foreach ($orders as $k=>$v){
$oImages = explode(',',$v['oImages']);
$tImages = explode(',',$v['tImages']);
$img[$k]= ['img'=>[$oImages[0],$tImages[0]],'time'=>[date('Y-m-d H:i',strtotime($v['create_time'])),date('Y-m-d H:i',strtotime($v['done_time']))]];
}
$list = [];
if(count($img)>3){
$key = array_rand($img,3);
foreach ($key as $k=>$v){
$list[] =['images'=>$img[$v]['img'],'time'=>$img[$v]['time']];
}
}else{
foreach ($img as $k=>$v){
$list[] =['images'=>$v['img'],'time'=>$v['time']];
}
}
$eList = $list;
HelpHander::success($eList);
}
public function zgImgbak(){
$orders = Db::name('orders')
->field('images')
->where('images','<>','')
->where('org_id',$this->orgId)
->where('del',0)
->where('work_type_mode',2)
->limit(10)
->order('id desc')
->select();
foreach ($orders as $k=>$v){
$img = explode(',',$v['images']);
if($img){
$orders[$k]['images'] = $img[0];
}
}
$todo = Db::name('todo')
->field('images')
->where('images','<>','')
->where('org_id',$this->orgId)
->where('del',0)
->where('work_type_mode',2)
->limit(10)
->order('id desc')
->select();
foreach ($todo as $k=>$v){
$img = explode(',',$v['images']);
if($img){
$todo[$k]['images'] = $img[0];
}
}
$data = array_merge($orders,$todo);
if(count($data)>3){
$key = array_rand($data,3);
$list[] = $data[$key[0]];
$list[] = $data[$key[1]];
$list[] = $data[$key[2]];
}
$eList = isset($list)?$list:$data;
HelpHander::success($eList);
}
}