<?php
namespace app\index\controller;

use think\facade\Db;
use think\facade\Cache;
use app\BaseController;
use app\admin\model\QualityWirList;
use app\admin\model\CclpUrgentList;
use app\admin\model\CclpAgvPlanning;
use mail\Send;
use wx\wxMsg;
use Bluerhinos\phpMQTT;
use think\Request;

class Index extends BaseController
{
    public function index(){
        $data['project'] = Db::name('team_base')->where(array('mid'=>1))->where('content','>',0)->where('content','<',3)->order('mark')->lists();
        return View('',$data);
    }
    public function inventoryProgress(){
        $address = Db::name('onsite_inventory')->lists();
        if(!$address){
            exit(json_encode(array('code'=>1,'msg'=>'无任何盘点记录！')));
        }
        $project_info = Db::name('team_base')->where('mid',1)->field('id,title,mark')->cates('id');
        foreach ($address as $k => $v) {
            if(isset($data[$v['project']]['project'])==false){
                $data[$v['project']]['project_id'] = $v['project'];
                $data[$v['project']]['project'] = $project_info[$v['project']]['title'];
                $data[$v['project']]['order'] = $project_info[$v['project']]['mark'];
                $data[$v['project']]['address'] = 0;
                $data[$v['project']]['one'] = 0;
                $data[$v['project']]['two'] = 0;
            }
            $data[$v['project']]['address']++;
        }
        $inv = Db::name('onsite_inventory_record')->lists();
        foreach ($inv as $k => $v) {
            $data[$v['project']]['one']++;
            if($v['status']==2){
                $data[$v['project']]['two']++;
            }
        }
        foreach ($data as $k => $v) {
            $data[$k]['inv'] = round($v['two']/$v['address']*100,3);
        }
        array_multisort(array_column($data,'order'),$data);
        exit(json_encode(array('code'=>0,'data'=>array_values($data))));
    }


    public function visitor(Request $request){
        if($request->isGet()){
            if(input('?get.show')){
                $item = input('get.');
                $obj = Db::name('common_visitor_list');
                if(isset($item['date'])&&$item['date']!=''){
                    $date = date('w',strtotime($item['date']));
                    if($date==1){
                        $start = strtotime($item['date']);
                    }else{
                        if($date==0){
                            $start = strtotime($item['date'])-86400*6;
                        }else{
                            $start = strtotime($item['date'])-86400*($date-1);
                        }
                    }
                }else{
                    if(date('w',time())==1){
                        $start = strtotime('today');
                    }else{
                        $start = strtotime('last Monday');
                    }
                }
                $end = $start+86400*7;
                $data = $obj->where('start','<',$end)->where('end','>',$start)->where('status',2)->order('start desc')->pages($item['limit']);
                $step = Db::name('common_visitor_step')->whereIn('s_id',array_column($data['lists'],'id'))->lists();
                foreach ($step as $k => $v) {
                    $orders[$v['s_id']][$v['order']] = $v['aid'];
                }
                $name_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
                $dpt_info = Db::name('admin_org')->where('mid',0)->cache('orgName',600)->column('title','id');
                foreach ($data['lists'] as $k => $v) {
                    $data['lists'][$k]['owner_name'] = $name_info[$v['owner']];
                    $data['lists'][$k]['dpt_name'] = $dpt_info[$v['dpt']];
                    $data['lists'][$k]['visit_date'] = date('Y-m-d',$v['start']).' ~ '.date('Y-m-d',$v['end']);
                    $data['lists'][$k]['reason'] = htmlspecialchars_decode($v['reason']);
                    $data['lists'][$k]['receive_name'] = '';
                    $arr = explode(',',$v['receive']);
                    foreach ($arr as $key => $val) {
                        $data['lists'][$k]['receive_name'] = $data['lists'][$k]['receive_name']==''?$name_info[$val]:$data['lists'][$k]['receive_name'].','.$name_info[$val];
                    }
                    $data['lists'][$k]['remark'] = '';
                    $arr = explode(',',$v['remark']);
                    foreach ($arr as $key => $val) {
                        if($val>0){
                            $data['lists'][$k]['remark'] = $data['lists'][$k]['remark']==''?date('Y-m-d H:i',(int)$val):$data['lists'][$k]['remark'].','.date('Y-m-d H:i',(int)$val);
                        }
                    }
                }
                exit($this->lay_table($data));
            }
            return View('');
        }
        if($request->isPost()){
            if(input('?post.remark')){
                $record = Db::name('common_visitor_list')->where('id',input('post.remark'))->find();
                $remark = $record['remark']==''?time():$record['remark'].','.time();
                Db::name('common_visitor_list')->where('id',$record['id'])->update(['remark'=>$remark]);
                exit(json_encode(array('code'=>0,'msg'=>'记录成功！')));
            }
        }
    }
    public function out_plant(Request $request){
        if($request->isGet()){
            if(input('?get.show')){
                $item = input('get.');
                if((int)$item['status']==3){
                    $obj = Db::name('common_outplant')->where('type',$item['view'])->where('status',5);
                }else{
                    $obj = Db::name('common_outplant')->where('type',$item['view'])->where('status',4);
                    if((int)$item['status']==1){
                        $obj = $obj->where('check_time',null);
                    }else{
                        $obj = $obj->where('check_time','>',0);
                    }
                }
                $data = $obj->order('id desc')->pages($item['limit']);
                $aid_info = Db::name('admin_user')->field('id,truename,dpt')->cates('id');
                $dpt_info = Db::name('admin_org')->where('mid',0)->cache('orgName',600)->column('title','id');
                $materials = Db::name('common_outplant_material')->whereIn('n_id',array_column($data['lists'],'id'))->lists();
                foreach ($materials as $k => $v) {
                    if(isset($list[$v['n_id']])==false){
                        $list[$v['n_id']] = [];
                    }
                    array_push($list[$v['n_id']],$v);
                }
                $mid_list = Db::name('member_list')->whereIn('id',array_column($data['lists'],'owner'))->column('ename','id');
                foreach ($data['lists'] as $k => $v) {
                    $data['lists'][$k]['owner'] = $v['ownerType']==1?$mid_list[$v['owner']]:$aid_info[$v['owner']]['truename'];
                    $data['lists'][$k]['dpt'] = $v['ownerType']==1?'生产部':$dpt_info[$aid_info[$v['owner']]['dpt']];
                    $data['lists'][$k]['create_time'] = date('Y-m-d H:i',$v['create_time']);
                    $data['lists'][$k]['out_time'] = date('Y-m-d H:i',$v['out_time']);
                    $data['lists'][$k]['back_time'] = $v['back_time']>0?date('Y-m-d H:i',$v['back_time']):'';
                    $data['lists'][$k]['check_time_show'] = $v['check_time']>0?date('Y-m-d H:i:s',$v['check_time']):'';
                    $data['lists'][$k]['list'] = isset($list[$v['id']])?$list[$v['id']]:[];
                }
                exit($this->lay_table($data));
            }
            return View('');
        }
        if($request->isPost()){
            if(input('?post.finish')){
                $record = Db::name('common_outplant')->find(input('post.finish'));
                if($record['check_time']==null){
                    Db::name('common_outplant')->where('id',input('post.finish'))->update(['check_time'=>time()]);
                    exit(json_encode(array('code'=>0,'msg'=>'放行完成！')));
                }else{
                    exit(json_encode(array('code'=>1,'msg'=>'已放行，无法重复放行！')));
                }   
            }
            if(input('?post.cancle')){
                Db::name('common_outplant')->where('id',input('post.cancle'))->update(['status'=>5]);
                exit(json_encode(array('code'=>0,'msg'=>'已作废！'))); 
            }
        }
    }
    public function out_plant_detail(Request $request){
        if($request->isGet()){
            if(input('?get.show')){
                $obj = Db::name('common_outplant_material')->where('n_id',input('get.id'))->lists();
                exit($this->lay_table($obj));
            }
            $data['id'] = input('get.id');
            return View('',$data);
        }
    }
    public function upload_db(){
        $list = Db::name('onsite_safe_list')->where('id','>',1000)->where('ename',null)->lists();
        foreach ($list as $k => $v) {
            $admin = Db::name('admin_user')->where('username',$v['eid'])->find();
            $res['id'] = $v['id'];
            if($admin){
                $res['ename'] = $admin['truename'];
                $info = Db::name('admin_org')->column('title','id');
                $res['team'] = $info[$admin['dpt']].' - '.$info[$admin['job']];
            }else{
                $info = Db::name('member_list')->find($v['mid']);
                $res['ename'] = $info['ename'];
                $res['team'] = Db::name('team_list')->where('id',$info['tid'])->value('team');
            }
            Db::name('onsite_safe_list')->save($res);
        }
        echo "OK";
    }
    public function per_leave_auto_cancel(Request $request){
        $data = Db::name('member_perleave')->where('perleave_date','<', strtotime('today') - 15 * 86400)->where('status',1)->update(['status'=>4,'mark'=> '超期15天，自动取消！']);
    }
}