where('org_id',$this->orgId)
->where('work_type_mode',1)
->where('create_yyyymmdd',date('Ymd'))
->where('del',0)
->count();
$count2 = Db::name('todo')
->where('org_id',$this->orgId)
->where('work_type_mode',1)
->where('create_yyyymmdd',date('Ymd'))
->where('del',0)
->where('todo_mode',3)
->count();
$bl = 100;
if($count > 0 ){
$bl = round($count2/$count*100,1);
}
$user = model('WorkTypeMode')->getRolesUserApp(1,$this->orgId);
$count3 = count($user);
$count4 = Db::name('todo')
->where('org_id',$this->orgId)
->where('work_type_mode',1)
->where('create_yyyymmdd',date('Ymd'))
->where('del',0)
->where('todo_mode',3)
->avg('xy_time');
$count5 = Db::name('todo')
->where('org_id',$this->orgId)
->where('work_type_mode',1)
->where('create_yyyymmdd',date('Ymd'))
->where('del',0)
->where('todo_mode',3)
->avg('wc_time');
$data = [
'count'=>$count,
'count2'=>$count3,
'count3'=>round($count4/3600,1),
'count4'=>round($count5/3600,1),
'bl'=>$bl,
];
HelpHander::success($data);
}
//维修订单数据状态分析、
public function wxOrderStatus(){
$orderMode = [
['name'=>'待派工','value'=>1],
['name'=>'已取消','value'=>[2,3]],
['name'=>'进行中','value'=>4],
['name'=>'已完成','value'=>5],
// ['name'=>'已评价','value'=>6],
];
$list = [];
foreach ($orderMode as $k=>$v){
$list[$k]['name'] = $v['name'];
$list[$k]['value'] = Db::name('orders')
->where('work_type_mode',1)
->where('org_id',$this->orgId)
->where('del',0)
// ->where('create_yyyymmdd',date('Ymd'))
->whereIn('order_mode',$v['value'])
->count();
}
HelpHander::success($list);
}
//维修工单周分析
public function wxWeekTodo(){
$dlist = [
date('Ymd',strtotime('-6 days')),
date('Ymd',strtotime('-5 days')),
date('Ymd',strtotime('-4 days')),
date('Ymd',strtotime('-3 days')),
date('Ymd',strtotime('-2 days')),
date('Ymd',strtotime('-1 days')),
date('Ymd'),
];
$title = $list = $list2 = [];
foreach ($dlist as $k=>$v){
$title[] = date('m-d',strtotime($v));
$list[] = Db::name('todo')
->where('work_type_mode',1)
->where('org_id',$this->orgId)
->where('del',0)
->where('create_yyyymmdd',$v)
->count();
$list2[] = Db::name('todo')
->where('work_type_mode',1)
->where('org_id',$this->orgId)
->where('del',0)
->where('create_yyyymmdd',$v)
->where('todo_mode',3)
->count();
}
$data = [
'title'=>$title,
'list'=>$list,
'list2'=>$list2,
];
HelpHander::success($data);
}
public function wxUserStatus(){
$lists = model('WorkTypeMode')->getRolesUserApp(1,$this->orgId);
$curday = date('Ymd');
$users = Db::name('todo')
->field('to_user_id')
->where('org_id',$this->orgId)
->whereIn('todo_mode',[1,2])
->where('work_type_mode',1)
->where('del',0)
->where('create_yyyymmdd',$curday)
->group('to_user_id')
->order('id desc')
->select();
$users = $users?$users:[];
$userIds = [];
foreach ($users as $k=>$v){
$userIds[] = $v['to_user_id'];
}
$nlists = $nlists2 = [];
foreach ($lists as $k=>$v){
if(!in_array($v['id'],$userIds)){
$nlists[] = $v;
}
}
$slist = $slist2 = [];
foreach ($nlists as $k=>$v){
$count = Db::name('todo')
->where('org_id',$this->orgId)
->where('to_user_id',$v['id'])
->whereIn('todo_mode',[1,2,3])
->where('del',0)
->where('create_yyyymmdd',$curday)
->where('work_type_mode',1)
->count();
$addr = Db::name('todo')
->alias('t')
->join('order_repair or','t.order_id=or.order_id')
->join('address a','a.id=or.address_id')
->where('t.to_user_id',$v['id'])
->whereIn('t.todo_mode',[1,2,3])
->where('t.del',0)
->where('t.create_yyyymmdd',$curday)
->where('t.work_type_mode',1)
->order('t.id desc')
->value('a.title');
$slist[$k][] = ''.$v['real_name'].'';
$slist[$k][] = ''.$count.'';
$slist[$k][] = ''.$addr.'';
}
foreach ($lists as $k=>$v){
if(in_array($v['id'],$userIds)){
$nlists2[] = $v;
}
}
foreach ($nlists2 as $k=>$v){
$count = Db::name('todo')
->where('org_id',$this->orgId)
->where('to_user_id',$v['id'])
->whereIn('todo_mode',[1,2,3])
->where('del',0)
->where('create_yyyymmdd',$curday)
->count();
$addr = Db::name('todo')
->alias('t')
->join('order_repair or','t.order_id=or.order_id')
->join('address a','a.id=or.address_id')
->where('t.to_user_id',$v['id'])
->whereIn('t.todo_mode',[1,2,3])
->where('t.del',0)
->where('t.create_yyyymmdd',$curday)
->where('t.work_type_mode',1)
->order('t.id desc')
->value('a.title');
$slist2[$k][] = ''.$v['real_name'].'';
$slist2[$k][] = ''.$count.'';
$slist2[$k][] = ''.$addr.'';
}
$data = [
'list'=>[
'list'=>$slist,
'count'=>count($slist),
],
'list2'=>[
'list'=>$slist2,
'count'=>count($slist2),
],
];
HelpHander::success($data);
}
public function wxTodoData(){
$list = Db::name('todo')
->field('id,order_id,todo_mode,create_time,to_user_id')
->where('org_id',$this->orgId)
->whereIn('todo_mode',[1,2,3])
->where('del',0)
// ->where('create_yyyymmdd',date('Ymd'))
->where('work_type_mode',1)
->limit(20)
->order('id desc')
->select();
foreach ($list as $k=>$v){
if($v['todo_mode'] == 1){
$list[$k]['status'] = '新任务';
}elseif ($v['todo_mode'] == 2){
$list[$k]['status'] = '进行中';
}elseif ($v['todo_mode'] == 3){
$list[$k]['status'] = '已完成';
}
$repair = Db::name('order_type')
->alias('ot')
->field('ot.id,ot.title,ot.parent_id')
->join('order_repair or','or.type_id=ot.id')
->where('or.order_id',$v['order_id'])
->find();
$list[$k]['cate_title'] = Db::name('order_type')->where('id',$repair['parent_id'])->value('title');
$list[$k]['address'] = Db::name('address')
->alias('a')
->join('order_repair or','or.address_id=a.id')
->where('or.order_id',$v['order_id'])
->where('a.org_id',$this->orgId)
->value('a.title');
$list[$k]['create_time'] = date('H:i',strtotime($v['create_time']));
$list[$k]['user_name'] = Db::name('user')->where('id',$v['to_user_id'])->value('real_name');
}
$data = [];
foreach ($list as $k=>$v){
if($v['todo_mode'] == 1){
$data[$k][] = $v['status'];
$data[$k][] = $v['cate_title'];
$data[$k][] = $v['address'];
$data[$k][] = $v['create_time'];
$data[$k][] = $v['user_name'];
}elseif ($v['todo_mode'] == 2){
$data[$k][] = ''.$v['status'].'';
$data[$k][] = ''.$v['cate_title'].'';
$data[$k][] = ''.$v['address'].'';
$data[$k][] = ''.$v['create_time'].'';
$data[$k][] = ''.$v['user_name'].'';
}elseif ($v['todo_mode'] == 3){
$data[$k][] = ''.$v['status'].'';
$data[$k][] = ''.$v['cate_title'].'';
$data[$k][] = ''.$v['address'].'';
$data[$k][] = ''.$v['create_time'].'';
$data[$k][] = ''.$v['user_name'].'';
}
}
HelpHander::success($data);
}
public function wxCateData(){
$type = Db::name('order_type')
->field('id,title as name')
->where('org_id',$this->orgId)
->where('del',0)
->where('enable',1)
->where('parent_id',0)
->select();
foreach ($type as $k=>$v){
//获取类型下的报修事项
$cc = Db::name('order_type')
->where('parent_id',$v['id'])
->where('del',0)
->where('enable',1)
->column('id');
$type[$k]['value'] = Db::name('todo')
->alias('t')
->join('order_repair or','or.order_id=t.order_id')
->whereIn('or.type_id',$cc)
->where('t.del',0)
->where('t.org_id',$this->orgId)
->where('t.todo_mode',3)
->where('t.work_type_mode',1)
->whereTime('t.create_time','-7days')
->count();
unset($type[$k]['id']);
}
$list = array_slice(list_sort_by($type,'value','desc'),0,6);
HelpHander::success($list);
}
public function wxMateItemData(){
$type = input('type',1); // 1=月
if($type == 1){
$where[] = ['create_time','>=',date('Y-m').'-01 00:00:00'];
$where[] = ['create_time','<=',date('Y-m').'-31 00:00:00'];
}else{
$where[] = ['create_time','>=',date('Y').'-01-01 00:00:00'];
$where[] = ['create_time','<=',date('Y').'-12-31 00:00:00'];
}
$list = Db::name('mate_goods')
->field('id,title')
->where('org_id',$this->orgId)
->where('del',0)
->where('enable',1)
->limit(6)
->select();
$title = $count = [];
foreach ($list as $k=>$v){
$title[]= $v['title'];
$nums = Db::name('todo_mate_item')
->where('items_id',$v['id'])
->where($where)
->sum('total');
$count[] = $nums;
}
$data = [
'list'=>$count,
'title'=>$title,
];
HelpHander::success($data);
}
public function wxDepData(){
$date = date('Ymd');
$edate = date('Ymd',strtotime("-1 months",strtotime($date)));
// $dep = Db::name('dep')
// ->field('id,title')
// ->where('org_id',$this->orgId)
// ->where('del',0)
// ->where('enable',1)
// ->limit(6)
// ->select();
$dep = Db::name('address')
->field('id,title')
->where('org_id',$this->orgId)
->where('del',0)
->where('enable',1)
->where('','exp',Db::raw("FIND_IN_SET(1,types)"))
->select();
$title = $count = $count2 = [];
foreach ($dep as $k=>$v){
// $title[] =$v['title'];
$dep[$k]['count'] = Db::name('orders')
->alias('o')
->join('todo t','t.order_id=o.id')
->join('order_repair or','or.order_id=o.id')
->where('or.address_id',$v['id'])
->where('t.work_type_mode',1)
->where('t.create_yyyymmdd',$date)
->where('t.del',0)
->where('t.org_id',$this->orgId)
->count();
$nums= Db::name('orders')
->alias('o')
->join('todo t','t.order_id=o.id')
->join('order_repair or','or.order_id=o.id')
->where('or.address_id',$v['id'])
->where('t.work_type_mode',1)
->where('t.create_yyyymmdd','<=',$date)
->where('t.create_yyyymmdd','>=',$edate)
->where('t.del',0)
->where('t.org_id',$this->orgId)
->count();
$dep[$k]['num'] = round($nums/30,1);
}
$newList = array_slice(list_sort_by($dep,'count','desc'),0,5);
$data =[
'title' =>array_column($newList,'title'),
'list' =>array_column($newList,'count'),
'list2' =>array_column($newList,'num'),
];
HelpHander::success($data);
}
}