<?php
namespace app\api\controller\ue;

use app\common\model\EnergyParam;
use app\hander\HelpHander;
use think\Controller;
use think\Db;

class Order extends Base {

    // 首页统计
    public function sytj(){
        $day = date('Ymd');

        $bjCount = Db::name('orders')
            ->where('create_yyyymmdd',$day)
            ->where('org_id',$this->orgId)
            ->where('del',0)
            ->where('work_type_mode',2)
            ->count(); // 今日保洁总数
        $bxCount = Db::name('orders')
            ->where('create_yyyymmdd',$day)
            ->where('org_id',$this->orgId)
            ->where('del',0)
            ->where('work_type_mode',1)
            ->count(); // 今日报修总数

        $count = Db::name('orders')
            ->where('org_id',$this->orgId)
            ->where('work_type_mode','in',[1,2])
            ->count(); // 今日报修和保洁总数

        $todo = Db::name('todo')
            ->where('create_yyyymmdd',$day)
            ->where('org_id',$this->orgId)
            ->where('del',0)
            ->where('work_type_mode','in',[1,2])
            ->count(); // 今日工单总数

        $finishtodo = Db::name('todo')
            ->where('create_yyyymmdd',$day)
            ->where('org_id',$this->orgId)
            ->where('del',0)
            ->where('todo_mode',3)
            ->where('work_type_mode','in',[1,2])
            ->count(); // 今日工单总数
        $bl = $todo > 0?round(($finishtodo/$todo)*100,1):0;

        $data = [
            'count' => $count,
            'bjCount' => $bjCount,
            'bxCount' => $bxCount,
            'todo' => $todo,
            'bl' => $bl."%",
        ];
        HelpHander::success($data);
    }

    // 今日未完成的维修单
    public function wxorders(){
        $day = date('Ymd');

        $lists = Db::name('orders')
            ->alias('a')
            ->join('order_repair b','a.id = b.order_id')
            ->join('address c','c.id = b.address_id')
            ->where('a.create_yyyymmdd',$day)
            ->where('a.org_id',$this->orgId)
            ->where('a.del',0)
            ->where('b.address_id','>',0)
            ->whereNotNull('c.ueid')
            ->field('a.id,a.order_mode,a.content,a.images,c.ueid,c.title')
            ->order('a.id desc')
            ->select();
        $ueids = [];
        $nlist = [];
        $ordermodes = Db::name('order_mode')->select();
        foreach ($lists as $k=>$v){
            if(!in_array($v['ueid'],$ueids)){
                $ueids[] = $v['ueid'];
                // 获取状态
                $ordermodetext = "";
                foreach ($ordermodes as $ok=>$ov){
                    if($ov['id'] == $v['order_mode']){
                        $ordermodetext = $ov['out_content'];
                        break;
                    }
                }
                if($v['order_mode'] == 4){
                    $todo = Db::name('todo')
                        ->alias('a')
                        ->join('user u','a.to_user_id = u.id')
                        ->join('todo_mode b','a.todo_mode = b.id')
                        ->where('a.order_id',$v['id'])
                        ->where('a.todo_mode','in',[1,2,3,4])
                        ->field('a.id,b.out_content,u.real_name')
                        ->find();
                    if($todo){
                        $ordermodetext = "[".$todo['real_name']."]".$todo['out_content'];
                    }
                }
                $v['order_mode_text'] = $ordermodetext;
                $v['images'] = empty($v['images'])?[]:explode(",",$v['images']);
                $nlist[] = $v;
            }
        }

        HelpHander::success($nlist);

    }

    // 项目任务数据分析
    public function ordertj(){
        $mode = input('mode/d',1); // 1=维修 2=保洁
        $type = input('type/d',1); // 1=日统计 2=月统计


        $eday = date("Y-m-d");
        $sday = date("Y-m-d",time() - 6*24*60*60);

        if($type == 1){
            $dates = getDateFromRange($sday, $eday);
        }else{
            $dates = get_month_last();
        }

        $x = [];
        $y1 = [];
        $y2 = [];
        foreach ($dates as $k=>$v){
            $map = [];
            $map[] = ['org_id','=',$this->orgId];
            $map[] = ['work_type_mode','=',$mode];
            if($type == 1){
                $d = date('Ymd',strtotime($v));
                $map[] = ['create_yyyymmdd','=',$d];
                $x[] = date('m-d',strtotime($v));
            }else{
                $d = date('Ym',strtotime($v));
                $map[] = ['create_yyyymm','=',$d];
                $x[] = date('Y-m',strtotime($v));
            }
            $map[] = ['del','=',0];
            $orders = Db::name('orders')->where($map)->count();
            $todos = Db::name('todo')->where($map)->count();
            $y1[] = $orders;
            $y2[] = $todos;
        }
        HelpHander::success(['x'=>$x,'y1'=>$y1,'y2'=>$y2]);
    }

    // 热点耗材数据分析
    public function mates(){
        $map[] = ['b.org_id','=',$this->orgId];
        $lists = Db::name('todo_mate_item')
            ->alias('a')
            ->join('todo_mate b','a.todo_mate_id = b.id')
            ->where($map)
            ->field('sum(a.total) as total,a.items_id')
            ->group('a.items_id')
            ->order('total desc')
            ->limit(4)
            ->select();
        $i = 1;
        foreach ($lists as $k=>$v){
            $lists[$k]['total'] = intval($v['total']);
            $title = Db::name('mate_items')->where('id',$v['items_id'])->value('title');
            $lists[$k]['title'] = $title?$title:'';
            $lists[$k]['rank'] = $i;
            $i++;
        }
        HelpHander::success($lists);
    }

    // 保洁网格化管理
    public function daily(){
        $map[] = ['enable', '=', 1];
        $map[] = ['org_id', '=', $this->orgId];
        $map[] = ['del', '=', 0];
        $lists = Db::name('daily')->where($map)->field('id,title')->orderRand()->limit(4)->select();
        $hours = model('Daily')->getTimeDaily($this->orgId);
        foreach ($lists as $k=>$v){
            $m = [];
            $m[] = ['org_id','=',$this->orgId];
            $m[] = ['daily_id','=',$v['id']];
            $m[] = ['create_time','>=',$hours['start']];
            $m[] = ['create_time','<',$hours['end']];
            $count = Db::name('daily_record')->where($m)->count();
            $lists[$k]['count'] = $count;

        }
        HelpHander::success($lists);
    }

    // 实时任务总览
    public function todos(){
        $map[] = ['org_id','=',$this->orgId];
        $map[] = ['del','=',0];
        $map[] = ['work_type_mode','in',[1,2]];
        $map[] = ['order_mode','in',[1,4]];

        $lists = Db::name('orders')->where($map)->limit(3)->order('id desc')->select();
        $nlist = [];
        foreach ($lists as $k=>$v){
            $work_text = $v['work_type_mode'] == 1?"维修任务":"保洁任务";
            $order_mode_text = "待处理";
            $users = "";
            if($v['order_mode'] == 4){
                $order_mode_text = "处理中";
                $ulist = Db::name('todo')
                    ->alias('a')
                    ->join('user b','a.to_user_id = b.id')
                    ->where('a.order_id',$v['id'])
                    ->where('a.todo_mode','in',[1,2,3,4])
                    ->column('b.real_name');
                if($ulist){
                    $users = implode(',',$ulist);
                }
            }
            $nlist[] = [
                'work_text' => $work_text,
                'order_mode_text' => $order_mode_text,
                'users' => $users,
                'content' => $v['content'],
            ];
        }
        HelpHander::success($nlist);
    }
}