<?php
namespace app\mobile\controller;

use app\BaseController;
use think\facade\Db;
use think\facade\Cache;
use think\Request;
use app\admin\model\QualityPpiExam;
use app\admin\model\MemberNewcomerExam;

class Api extends BaseController{
    //小程序端获取用户信息
    public function getUserInfo(){
        $info = Db::name('admin_user_mobile')->where('username',input('get.username'))->find();
        if($info){
            if($info['user_type'] < 3){
                if($info['user_type'] == 1){
                    $data = Db::name('member_list')->find($info['user_id']);
                    if($data['status']==2){
                        exit(json_encode(array('code' => 2, 'msg'=>'您已离职，无权使用，请退出本小程序！！！')));
                    }
                }else{
                    $aid = Db::name('admin_user')->where('username',$info['username'])->find();
                    if($aid['status']==2){
                        exit(json_encode(array('code' => 2, 'msg'=>'您已离职，无权使用，请退出本小程序！！！')));
                    }
                    $data = Db::name('member_list')->where('eid',$info['username'])->find();
                    $info['mid'] = $data['id'];
                }
                $tid_info = Db::name('team_list')->find($data['tid']);
                $info['project'] = $tid_info['project'];
                $info['line'] = $tid_info['line'];
                $info['tid'] = $data['tid'];
                $aid = $tid_info['aid'];
                $info['aid'] = Db::name('admin_user')->where('id',$aid)->value('truename');
                $info['poid'] = $data['poid'];
            }
            if($info['gzhOpenid'] == null){
                exit(json_encode(array('code' => 1)));
            }
            $info['size'] = $info['size'];
            exit(json_encode(array('code' => 0, 'data'=>$info)));
        }else{
            exit(json_encode(array('code' => 3)));
        }
    }
    public function getUserInfo1(){
        $info = Db::name('admin_user_mobile')->where('username',input('get.username'))->find();
        if($info){
            if($info['user_type'] < 3){
                if($info['user_type'] == 1){
                    $data = Db::name('member_list')->find($info['user_id']);
                    if($data['status']==2){
                        exit(json_encode(array('code' => 1, 'msg'=>'您已离职，无权使用，请退出本小程序！！！')));
                    }
                }else{
                    $aid = Db::name('admin_user')->where('username',$info['username'])->find();
                    if($aid['status']==2){
                        exit(json_encode(array('code' => 1, 'msg'=>'您已离职，无权使用，请退出本小程序！！！')));
                    }
                    $data = Db::name('member_list')->where('eid',$info['username'])->find();
                    $info['mid'] = $data['id'];
                }
                $tid_info = Db::name('team_list')->find($data['tid']);
                $info['project'] = $tid_info['project'];
                $info['line'] = $tid_info['line'];
                $info['tid'] = $data['tid'];
                $aid = $tid_info['aid'];
                $info['aid'] = Db::name('admin_user')->where('id',$aid)->value('truename');
                $info['poid'] = $data['poid'];
            }
            if($info['gzhOpenid'] == null){
                exit(json_encode(array('code' => 1)));
            }
            exit(json_encode(array('code' => 0, 'data'=>$info)));
        }else{
            exit(json_encode(array('code' => 3)));
        }
    }
    //小程序端绑定用户code关联信息
    public function login(){
        $data = input('get.');
        $info = Db::name('admin_user_mobile')->where('username',trim($data['username']))->find();
        if(isset($data['code'])){
            $openid = $this->getOpenid($data['code']);
            $res = json_decode($openid,true);
            if (!is_array($res) || !empty($res['errcode']) || empty($res['openid'])) {
                exit(json_encode(array('code' => 1, 'msg' => '微信身份认证失败，请重新认证！')));
            }
        }
        if($info){
            if(isset($res)){
                // print_r($res);die;
                if($info['openid']!=null){
                    if($info['openid']!=$res['openid']){
                        exit(json_encode(array('code' => 2 ,'msg'=>'非本人登陆!')));
                    }
                }
            }
            if(md5(trim($data['password'])) == $info['password']){
                // 密码通过后才写入微信绑定，聊天室不能信任失败登录留下的绑定。
                if (isset($res['openid']) && $info['openid']==null) {
                    Db::name('admin_user_mobile')->where('id',$info['id'])->update(['openid'=>$res['openid']]);
                    $info['openid'] = $res['openid'];
                }
                // if($info['gzhOpenid']==null){
                //     exit(json_encode(array('code' => -1, 'msg' => '登录成功！','info'=>$info)));
                // }else{
                    exit(json_encode(array('code' => 0, 'msg' => '登录成功！','info'=>$info)));
                // }
            }else{
                exit(json_encode(array('code' => 1, 'msg' => '密码验证失败，请重试！')));
            }
        }else{
            $aid = Db::name('admin_user')->where(array('username'=>$data['username'],'status'=>1))->where('status',1)->find();
            if($aid){
                if(md5(trim($data['password'])) == $aid['password']){
                    $mid = Db::name('member_list')->where(array('eid'=>$data['username'],'status'=>1))->find();
                    $data['user_type'] = $mid?2:3;
                    $data['dpt'] = $aid['dpt'];
                    $data['user_id'] = $aid['id'];
                    $data['password'] = $aid['password'];
                    if (isset($res['openid'])) $data['openid'] = $res['openid'];
                    unset($data['code']);
                    Db::name('admin_user_mobile')->insert($data);
                    // exit(json_encode(array('code' => -1, 'msg' => '登录成功！','info'=>$data)));
                    exit(json_encode(array('code' => 0, 'msg' => '登录成功！','info'=>$data)));
                }else{
                    exit(json_encode(array('code' => 1, 'msg' => '密码验证失败，请重试！')));
                }
            }else{
                $mid = Db::name('member_list')->where(array('eid'=>$data['username'],'status'=>1))->find();
                if($mid){
                    $identity = Db::name('member_interview')->where('m_id',$mid['id'])->value('identity');
                    if(strlen($identity)>14){
                        if($data['password'] == substr($identity,-6)){
                            $data['user_type'] = 1;
                            $data['password'] = md5(trim($data['password']));
                            $project = Db::name('team_list')->where('id',$mid['tid'])->value('project');
                            switch ($project) {
                                case 229:
                                    $data['dpt'] = 2;
                                    break;
                                case 18:
                                    $data['dpt'] = 4;
                                    break;
                                case 546:
                                    $data['dpt'] = 3;
                                    break;
                                default:
                                    $data['dpt'] = 1;
                                    break;
                            }
                            $data['user_id'] = $mid['id'];
                            if (isset($res['openid'])) $data['openid'] = $res['openid'];
                            unset($data['code']);
                            Db::name('admin_user_mobile')->insert($data);
                            // exit(json_encode(array('code' => -1, 'msg' => '登录成功！','info'=>$data)));
                            exit(json_encode(array('code' => 0, 'msg' => '登录成功！','info'=>$data)));
                        }else{
                            exit(json_encode(array('code' => 1, 'msg' => '身份证后6位验证失败,请重试！')));
                        }
                    }else{
                        exit(json_encode(array('code' => 1, 'msg' => '备案身份证长度异常,请联系HR修改基础信息!')));
                    }
                }else{
                    exit(json_encode(array('code' => 1, 'msg' => '无相关工号，请确认！')));
                }
            }
        }
    }
    // 版本更新信息
    public function getVersionInfo(){
        $version = Db::name('admin_base')->where('mid',3)->order('id desc')->find();
        $log = Db::name('admin_base')->where('title',$version['title'])->column('content');
        $data = Db::name('admin_update_log')->whereIn('create_date',$log)->column('content');
        $res = '';
        foreach ($data as $k => $v) {
            $res = $res==''?('1.'.$v):($res.';'.($k+1).'.'.$v);
        }
       
        exit($res);
    }
    //个人信息查询
    public function user_info(){
        $info = Db::name('admin_user_mobile')->where('username',input('get.eid'))->find();
        if($info['user_type']>1){
            $aid = Db::name('admin_user')->where(array('username'=>input('get.eid'),'status'=>1))->find();
            $aid['dpt'] = Db::name('admin_org')->where('id',$aid['dpt'])->value('title');
            $aid['job'] = Db::name('admin_org')->where('id',$aid['job'])->value('title');
            $aid['leader'] = Db::name('admin_user')->where('id',$aid['leader'])->value('truename');
            $aid['user_type'] = $info['user_type'];
            $aid['size'] = $info['size'];
            if($info['user_type'] == 2){
                $mid_info = Db::name('member_list')->where(array('eid'=>input('get.eid'),'status'=>1))->find();
                $tid_info = Db::name('team_list')->find($mid_info['tid']);
                $aid['mid'] = $mid_info['id'];
                $aid['project'] = $tid_info['project'];
                $aid['line'] = $tid_info['line'];
                $aid['tid'] = $mid_info['tid'];
                $aid['poid'] = $mid_info['poid'];
                $aid['aid'] = Db::name('admin_user')->where('id',$tid_info['aid'])->value('truename');
            }
            exit(json_encode(array('data' =>$aid)));
        }else if($info['user_type']==1){
            $data = Db::name('member_list')->where(array('eid'=>input('get.eid'),'status'=>1))->find();
            $team = Db::name('team_list')->find($data['tid']);
            $data['team'] = $team['team'];
            $data['position'] = $data['poid']>0?Db::name('team_plan_position')->where('id',$data['poid'])->value('position'):'未指定';
            $detail = Db::name('member_interview')->where('m_id',$data['id'])->field('identity,phone,edu,address,supplier,source_type,size,armoire')->find();
            $data = array_merge($data,$detail);
            switch ($data['source_type']) {
                case 1: 
                    $data['source_type'] = '小时工';
                    break;
                case 2: 
                    $data['source_type'] = '社会工';
                    break;
                case 3: 
                    $data['source_type'] = '学生工';
                    break;
            }
            switch ($data['edu']) {
                case 1:
                    $data['edu'] = '小学';
                    break;
                case 2:
                    $data['edu'] = '初中';
                    break;
                case 3:
                    $data['edu'] = '高中';
                    break;
                case 4:
                    $data['edu'] = '大专';
                    break;
                case 5:
                    $data['edu'] = '本科';
                    break;
                default:
                    $data['edu'] = '其他';
                    break;
            }
            $data['user_type'] = $info['user_type'];
            $data['project'] = $team['project'];
            $data['line'] = $team['line'];
            $data['size'] = $info['size'];
            $data['aid'] = Db::name('admin_user')->where('id',$team['aid'])->value('truename');
            if($data['armoire']==''||$data['armoire']==null){
                $in = array_column(Db::name('member_list')->where(array('sex'=>$data['sex'],'status'=>1))->lists(),'id');
                $armoire_used = Db::name('member_interview')->whereIn('m_id',$in)->column('armoire');
                $armoire = [];
                if($data['sex']==1){
                    $armoire_fix = Db::name('member_base')->where('mid',4)->column('title');
                    $armoire_used = array_merge($armoire_used,$armoire_fix);
                    for ($i=0; $i < 1069; $i++) { 
                        array_push($armoire,$i+1);
                    }
                }else{
                    $armoire_fix = Db::name('member_base')->where('mid',5)->column('title');
                    $armoire_used = array_merge($armoire_used,$armoire_fix);
                    for ($i=0; $i < 1112; $i++) { 
                        array_push($armoire,$i+1);
                    }
                }
                $armoire_unused = array_diff($armoire,$armoire_used);
                $rand = array_rand($armoire_unused);
                $data['armoire'] = $armoire_unused[$rand];
                Db::name('member_interview')->where('m_id',$data['id'])->update(['armoire'=>$data['armoire']]);
            }
            exit(json_encode(array('data' => $data)));
        }
    }
    //个人消息数 - 现场人员
    public function getMidMeg(){
        $admin = input('get.id');
        if((int)$admin==0){
            exit(json_encode(array('code'=>0,'num'=>'0','data'=>[])));
        }
        $menus = Db::name('admin_menus_mobile')->cates('id');
        $msg_num = 0;
        $lists = [];
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        //合理化建议
        $eid = Db::name('member_list')->where('id',$admin)->value('eid');
        $suggestion = Db::name('onsite_suggestion_list')->where(array('eid'=>$eid,'selfshut'=>1,'status'=>2))->lists();
        if($suggestion){
            $item = 2;
            foreach ($suggestion as $k => $v) {
                array_push($lists,['item'=>$menus[$item]['title'],'url'=>$menus[$item]['action'],'owner'=>$aid_info[$v['owner']],'msg'=>$v['reason'],'status'=>$v['status']]);
            }
            $msg_num = $msg_num + count($suggestion);
        }
        //关键岗位考试
        $key_exam = Db::name('quality_newskill_score')->where('mid',$admin)->where('exam_date','>',time()-3600)->lists();
        if($key_exam){
            $item = 17;
            $skill_info = Db::name('quality_base')->where('mid',2)->cates('id');
            $item_info = Db::name('quality_base')->where('mid',4)->column('content','id');
            foreach ($key_exam as $k => $v) {
                array_push($lists,['item'=>$menus[$item]['title'].' : '.$item_info[$v['item_type']],'url'=>$menus[$item]['action'],'owner'=>date('Y-m-d H:i:s',$v['exam_date']),'msg'=>'']);
            }
            $msg_num = $msg_num + count($key_exam);
        }
        exit(json_encode(array('code'=>0,'num'=>(string)$msg_num,'data'=>$lists)));
    }
    //个人消息数- 办公室人员
    public function getAidMeg(){
        $admin = input('get.id');
        $menus = Db::name('admin_menus_mobile')->cates('id');
        $tid_info = Db::name('team_list')->column('team','id');
        $msg_num = 0;
        $lists = [];
        if((int)$admin==0){
            exit(json_encode(array('code'=>0,'num'=>'0','data'=>[])));
        }
        $info = Db::name('admin_user')->find($admin);
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        //合理化建议
        $map1 = [
            ['status', '=', 3],
            ['eid', '=', $info['username']],
        ];
        $map2 = [
            ['status', '=', 2],
            ['owner', '=', $admin],
        ];
        $suggestion = Db::name('onsite_suggestion_list')->whereOr([$map1, $map2])->lists();
        if($suggestion){
            $item = 2;
            foreach ($suggestion as $k => $v) {
                array_push($lists,['item'=>$menus[$item]['title'].' ( 待反馈 ) ','url'=>$menus[$item]['action'],'owner'=>$v['ename'],'msg'=>$v['title'],'status'=>$v['status']]);
            }
            $msg_num = $msg_num + count($suggestion);
        }
        //出厂申请
        $out_plant = Db::name('common_outplant')->where('on_check',$admin)->where('status','>',0)->lists();
         if($out_plant){
            $item = 27;
            foreach ($out_plant as $k => $v) {
                if($v['ownerType']==1){
                    $owner = Db::name('member_list')->where('id',$v['owner'])->value('ename');
                }else{
                    $owner = $aid_info[$v['owner']];
                }
                array_push($lists,['item'=>$menus[$item]['title'].' ( 待审核 ) ','url'=>$menus[$item]['action'],'owner'=>$owner,'msg'=>$v['reason']]);
            }
            $msg_num = $msg_num + count($out_plant);
        }
        //访客申请
        $visitors = Db::name('common_visitor_list')->where('aid',$admin)->lists();
         if($visitors){
            $item = 28;
            foreach ($visitors as $k => $v) {
                array_push($lists,['item'=>$menus[$item]['title'].' ( 待审核 ) ','url'=>$menus[$item]['action'],'owner'=>$aid_info[$v['owner']],'msg'=>$v['reason']]);
            }
            $msg_num = $msg_num + count($visitors);
        }
        //安全风险反馈
        $safe = Db::name('onsite_safe_list')->where(array('owner'=>$admin,'status'=>2))->lists();
        if($safe){
            $item = 14;
            $mid_info = Db::name('member_list')->whereIn('id',array_column($safe,'mid'))->column('ename','id');
            foreach ($safe as $k => $v) {
                array_push($lists,['item'=>$menus[$item]['title'].' ( 待审核 ) ','url'=>$menus[$item]['action'],'owner'=>$v['mid']>0?$mid_info[$v['mid']]:'','msg'=>$v['issue_desc']]);
            }
            $msg_num = $msg_num + count($safe);
        }
        exit(json_encode(array('code'=>0,'num'=>(string)$msg_num,'data'=>$lists)));
    }
    //合理化建议个人明细
    public function suggestion_list(){
        $obj = Db::name('onsite_suggestion_list')->order('id desc')->limit(input('get.page')*10,10);
        if(input('get.type')==1){
            $data = $obj->where('eid',input('get.eid'))->lists();
            $total = Db::name('onsite_suggestion_list')->where('eid',input('get.eid'))->count();
        }else{
            $aid = Db::name('admin_user')->where('username',input('get.eid'))->value('id');
            if($aid){
                $data = $obj->where('owner',$aid)->lists();
                $total = Db::name('onsite_suggestion_list')->where('owner',$aid)->count();
            }else{
                $data = [];
                $total = 0;
            }
        }
        $aid_info = Db::name('admin_user')->field('id,username,truename')->cates('id');
        $imgs = Db::name("img_list")->where('mid',22)->whereIn('mark',array_column($data,'id'))->lists();
        foreach ($data as $k => $v) {
            $data[$k]['creat_date'] = date('Y-m-d',$v['creat_date']);
            $data[$k]['due_date'] = $v['due_date']>0?date('Y-m-d',$v['due_date']):'';
            $data[$k]['owner_eid'] = $v['owner']>0?$aid_info[$v['owner']]['username']:'未设置';
            $data[$k]['owner_name'] = $v['owner']>0?$aid_info[$v['owner']]['truename']:'未设置';
            $data[$k]['adopt_name'] = $v['adopt']>0?($v['adopt']==1?'采纳':'不采纳'):'未反馈';
            switch ($v['status']) {
                case 1:
                    $data[$k]['status_name'] = '待反馈';
                    break;
                case 2:
                    $data[$k]['status_name'] = '进行中';
                    break;
                case 3:
                    $data[$k]['status_name'] = '已完成';
                    break;
                default:
                    # code...
                    break;
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //合理化建议积分明细
    public function suggestion_score(){
        $in1 = Db::name('onsite_suggestion_list')->where('eid',input('get.eid'))->where('status','>',0)->lists();
        $in_score = 0;
        foreach ($in1 as $k => $v) {
            $in_score = $in_score + ($v['adopt']==1?2:1);
        }
        $aid = Db::name('admin_user')->where('username',input('get.eid'))->value('id');
        if($aid){
            $feed_score = Db::name('onsite_suggestion_list')->where(array('owner'=>$aid,'status'=>3,'adopt'=>1))->count();
        }else{
            $feed_score = 0;
        }
        $used_score = array_sum(Db::name('onsite_suggestion_score')->where('eid',input('get.eid'))->column('used'));

        exit(json_encode(array('code'=>0,'in_score'=>$in_score,'feed_score'=>$feed_score,'used_score'=>$used_score,'total'=>$in_score+$feed_score-$used_score)));
    }
    //合理化建议详情
    public function suggestionDetail(){
        $data = Db::name('onsite_suggestion_list')->find(input('get.id'));
        $data['ename'] = $data['team'].' - '.$data['ename'];
        $data['creat_date'] = date('Y-m-d',$data['creat_date']);
        $data['adopt_name'] = $data['adopt'] > 0 ? ($data['adopt']==1?'采纳':'不采纳'):'未反馈';
        $data['due_date'] = $data['due_date']>0?date('Y-m-d',$data['due_date']):'';
        $data['owner_name'] = $data['owner']>0?Db::name('admin_user')->where('id',$data['owner'])->value('truename'):'未指定';
        exit(json_encode(array('data'=>$data)));
    }
    //电子上岗证个人信息查询
    public function skillList(){
        $mid = input('get.id');
        $normal = Db::name('member_skill')->where(array('mid'=>$mid,'status'=>1,'skill_id'=>101))->value('eff_date');
        $skills = Db::name('member_skill')->where(array('mid'=>$mid,'status'=>1))->where('skill_id','>',101)->order('skill_type,skill_id')->field('id,skill_type,skill_id,eff_date,on_self,level')->lists();
        if($skills){
            $skill_info = Db::name('quality_base')->where('mid',2)->column('content','id');
            foreach ($skills as $k => $v) {
                $skills[$k]['skill_name'] = $skill_info[$v['skill_id']];
                $skills[$k]['limits'] = $v['skill_type']>0?round(($v['eff_date']-strtotime('today'))/86400,0):round(($normal-strtotime('today'))/86400,0);
                $skills[$k]['eff_date'] = $v['skill_type']>0?date('Y-m-d',$v['eff_date']):date('Y-m-d',$normal);
            }
            exit(json_encode(array('code'=>0,'data'=>$skills)));
        }else{
            exit(json_encode(array('code'=>1)));
        }
    }
    //离职类型
    public function leaveSignType(){
        $data = Db::name('member_base')->where('mid',1)->where('mark',1)->field('id,content')->order('title')->lists();
        foreach ($data as $k => $v) {
            $list[$k]['text'] = $v['content'];
            $list[$k]['value'] = $v['id'];
        }
        $mid = Db::name('member_list')->where('eid',input('get.eid'))->value('id');
        $info = Db::name('member_perleave')->where(array('mid'=>$mid,'status'=>1))->find();
        if($info){
            $info['perleave_date'] = date('Y-m-d',$info['perleave_date']);
            $info['type_name'] = Db::name('member_base')->where('id',$info['type'])->value('content');
        }
        $type = $info?1:0;
        exit(json_encode(array('data'=>$list,'type'=>$type,'info'=>$info)));
    }
    //个人功能菜单
    public function menusList(){
        $obj = Db::name('admin_menus_mobile');
        switch (input('get.userType')) {
            case 1:
                $obj = $obj->whereIn('mid',[1,2,4]);
                break;
            case 2:
                $obj = $obj->whereIn('mid',[2,3,4]);
                break;
            case 3:
                $obj = $obj->whereIn('mid',[3,4]);
                break;
        }
        $data = $obj->order('sort')->where('status',1)->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //考勤查询
    public function attendsReview(){
        $mid = Db::name('member_list')->where('eid',input('get.eid'))->value('id');
        if(input('?get.date')&&input('get.date')!==''){

            $date = explode('-',input('get.date'));
            if($date[2]<22){
                $start = mktime(0,0,0,(int)$date[1]-1,22,(int)$date[0]);
                $end = mktime(0,0,0,(int)$date[1],21,(int)$date[0]);
            }else{
                $start = mktime(0,0,0,(int)$date[1],22,(int)$date[0]);
                $end = mktime(0,0,0,(int)$date[1]+1,21,(int)$date[0]);
            }
        }else{
            $start = date('d')>22?mktime(0,0,0,date('m'),22,date('Y')):mktime(0,0,0,date('m')-1,22,date('Y'));
            $end = strtotime('yesterday');
        }
        $data = Db::name('le_attendance')->where('mid',$mid)->where('kq_date','between',[$start,$end])->order('kq_date desc')->field('kq_date,shift,kq_status,worktime,overtime,mark')->lists();
        $wt = 0;
        $ot = 0;
        $ot1 = 0;
        $ot2 = 0;
        $night = 0;
        $week = ['日','一','二','三','四','五','六'];
        foreach ($data as $k => $v) {
            $data[$k]['kq_date'] = date('m-d',$v['kq_date']).' ( '.$week[date('w',$v['kq_date'])].' )';
            $wt = $wt + $v['worktime'];
            $ot = $ot + $v['overtime'];
            if(date('w',$v['kq_date'])==0||date('w',$v['kq_date'])==6){
                $ot2 = $ot2 + $v['overtime'];
            }else{
                $ot1 = $ot1 + $v['overtime'];
            }
            $night = $night + ($v['shift']==2?1:0);
        }
        $classfiy = array_count_values(array_column($data,'kq_status'));
        $sum['wt'] = $wt;
        $sum['ot'] = $ot;
        $sum['ot1'] = $ot1;
        $sum['ot2'] = $ot2;
        $sum['night'] = $night;
        $sum['normal'] = isset($classfiy[1])?$classfiy[1]:0;
        $sum['leave'] = isset($classfiy[3])?$classfiy[3]:0;
        $sum['vacation'] = isset($classfiy[2])?$classfiy[2]:0;
        $sum['abstained'] = isset($classfiy[4])?$classfiy[4]:0;
        exit(json_encode(array('code'=>0,'data'=>$data,'sum'=>$sum)));
    }
    //PPI试题
    public function ppiExam(){
        $exam = Db::name('quality_ppi_score')->where(array('mid'=>input('get.eid'),'status'=>1))->where('exam_date','<',time())->where('exam_date','>',(time()-3600))->find();
        if($exam){
            $quality_model = new QualityPpiExam();
            $data = $quality_model->online_exam($exam['item_type']);
            $set = Db::name('quality_exam_set')->where('item_type',$exam['item_type'])->find();
            $set['item_type_name'] = Db::name('quality_base')->where('id',$exam['item_type'])->value('content');
            $set['last_time'] = ($exam['exam_date']+3600-time())*1000;
            exit(json_encode(array('code'=>0,'data'=>$data,'set'=>$set,'exam_id'=>$exam['id'])));
        }else{
            exit(json_encode(array('code'=>1)));
        }
    }
    public function keypositionExam(){
        if(input('get.type')==1){
            $exam = Db::name('quality_ppi_score')->where(array('mid'=>input('get.eid'),'status'=>1))->where('exam_date','<',time())->where('exam_date','>',(time()-3600))->find();
        }else{
            $exam = Db::name('quality_newskill_score')->where(array('mid'=>input('get.eid'),'status'=>1))->where('exam_date','<',time())->where('exam_date','>',(time()-3600))->find();
        }
        if($exam){
            $quality_model = new QualityPpiExam();
            $data = $quality_model->online_exam($exam['item_type']);
            $set = Db::name('quality_exam_set')->where('item_type',$exam['item_type'])->find();
            $set['item_type_name'] = Db::name('quality_base')->where('id',$exam['item_type'])->value('content');
            $set['last_time'] = ($exam['exam_date']+3600-time())*1000;
            exit(json_encode(array('code'=>0,'data'=>$data,'set'=>$set,'exam_id'=>$exam['id'])));
        }else{
            exit(json_encode(array('code'=>1)));
        }
    }
    //QVC记录设备参数查询
    public function qvcReportParm(){
        $data = input('get.');
        $machine = Db::name('onsite_qvc_base')->where(array('type'=>$data['type'],'s_number'=>$data['number'],'status'=>1))->find();
        if(!$machine){
            exit(json_encode(array('code'=>1,'msg'=>'输入的设备编号不存在，请重新输入')));
        }
        $memeber_info = Db::name('member_list')->find($data['mid']);
        $aid = Db::name('team_list')->where('id',$memeber_info['tid'])->value('aid');
        $record = Db::name('onsite_qvc_record')->where(array('record_date'=>strtotime($data['record_date']),'m_id'=>$machine['id'],'aid'=>$aid))->find();
        $machine['aid'] = $aid;
        if($record){
            if($record['mid']==$data['mid']){
                if($record['status']==10){
                    exit(json_encode(array('code'=>1,'msg'=>'该设备'.$data['record_date'].'的QVC记录已由你本人提交且班长已确认！')));
                }else{
                    $record['m_desc'] = $machine['desc'];
                    exit(json_encode(array('code'=>2,'data'=>$machine,'record'=>$record)));
                }
            }else{
                $memeber_name = Db::name('member_list')->where('id',$record['mid'])->value('ename');
                exit(json_encode(array('code'=>1,'msg'=>'该设备'.$data['record_date'].'本班组的QVC记录已被'.$memeber_name.'提交，请确认！')));
            }
        }else{
            exit(json_encode(array('code'=>0,'data'=>$machine,'msg'=>'选择的设备为：'.$machine['desc'])));
        }
    }
    //分层审核计划查询
    public function layerAuditPlanning(){
        $end = strtotime('monday');
        $end = date('w')==1?$end+7*86400:$end;
        $start = $end - 7*86400 + 1;
        $plan = Db::name('quality_layer_planning')->where('start','<=',time())->where('end','>=',time()-86400)->where('auditor',input('get.plan'))->where('status','>=',0)->field('id,area,start,end,content,level,location,status,planner')->lists();
        if($plan){
            $user_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
            $area_info = Db::name('quality_layer_check_list')->whereIn('id',array_column($plan,'area'))->column('content','id');
            foreach ($plan as $k => $v) {
                $plan[$k]['audit_date'] = date('Y-m-d',$v['start']).' ~ '.date('Y-m-d',$v['end']);
                $plan[$k]['planner'] = $user_info[$v['planner']];
                $plan[$k]['area'] = $area_info[$v['area']];
            }
            exit(json_encode(array('code'=>0,'data'=>$plan)));
        }else{
            exit(json_encode(array('code'=>1,'msg'=>'未查询到本周的分层审核任务！')));
        }
    }
    //分层审核条款查询
    public function layerAuditCheckList(){
        $plan_info = Db::name('quality_layer_planning')->find(input('get.pid'));
        $list = json_decode($plan_info['check_list']);
        $data = Db::name('quality_layer_check_list')->whereIn('id',$list)->lists();
        $id_list1 = array_unique(array_column($data,'mark'));
        $id_list2 = Db::name('quality_layer_check_list')->whereIn('id',$id_list1)->column('mark');
        if($id_list2){
            $id_list3 = Db::name('quality_layer_check_list')->whereIn('id',$id_list2)->column('mark');
        }else{
            $id_list3 = '';
        }
        if($id_list3){
            $id_list4 = Db::name('quality_layer_check_list')->whereIn('id',$id_list3)->column('mark');
        }else{
            $id_list4 = '';
        }
        $info = Db::name('quality_layer_check_list')->whereIn('id',array_unique(array_merge($id_list1,$id_list2,$id_list3,$id_list4)))->cates('id');
        $record = Db::name('quality_layer_record')->where(array('plan_id'=>input('get.pid'),'status'=>1))->cates('check_id');
        foreach ($data as $k => $v) {
            $data[$k]['record'] = isset($record[$v['id']]['record'])?$record[$v['id']]['record']:0;
            if($v['mid']<5){
                $data[$k]['type'] = $info[$v['mark']]['content'];
            }else{
                $data[$k]['type'] = $info[$info[$v['mark']]['mark']]['content'].'-'.$info[$v['mark']]['content'];
            }
        }
        $res['id'] = 0;
        $res['title'] = '其他';
        $res['type'] = '其他';
        $res['content'] = '其他现场发现问题';
        array_push($data,$res);
        // exit(json_encode(array('code'=>0,'msg'=>'','count'=>count($data),'data'=>$data,'level'=>$plan_info['level'],'area'=>$plan_info['content'].' - '.$plan_info['location'])));
        exit(json_encode(array('code'=>0,'data'=>$data,'level'=>$plan_info['level'])));
    }
    //分层审核我的问题列表
    public function layerAuditFinding(){
        $obj = Db::name('quality_layer_issue')->order('id desc')->limit(input('get.page')*10,10)->where('status','>',0);
        if(input('get.type')==1){
            $data = $obj->where('auditor',input('get.auditor'))->lists();
            $total = Db::name('quality_layer_issue')->where('auditor',input('get.auditor'))->count();
        }else{
            $data = $obj->where('owner',input('get.auditor'))->lists();
            $total = Db::name('quality_layer_issue')->where('owner',input('get.auditor'))->count();
        }
        $aid_info = Db::name('admin_user')->field('id,username,truename')->cates('id');
        $imgs = Db::name("img_list")->where(array('mid'=>4,'status'=>1))->whereIn('mark',array_column($data,'id'))->lists();
        $record_info = Db::name('quality_layer_record')->whereIn('id',array_column($data,'record_id'))->column('check_id','id');
        $check_info = Db::name('quality_layer_check_list')->whereIn('id',$record_info)->field('id,title,content')->cates('id');
        foreach ($data as $k => $v) {
            $data[$k]['audit_date'] = date('Y-m-d',$v['audit_date']);
            $data[$k]['due_date'] = $v['due_date']>0?date('Y-m-d',$v['due_date']):'';
            $data[$k]['owner_eid'] = $v['owner']>0?$aid_info[$v['owner']]['username']:'未设置';
            $data[$k]['owner_name'] = $v['owner']>0?$aid_info[$v['owner']]['truename']:'未设置';
            $data[$k]['check_title'] = $record_info[$v['record_id']]>0?$check_info[$record_info[$v['record_id']]]['title']:'';
            $data[$k]['check_content'] = $record_info[$v['record_id']]>0?$check_info[$record_info[$v['record_id']]]['content']:'';
            switch ($v['status']) {
                case 1:
                    $data[$k]['status_name'] = '待反馈';
                    break;
                case 2:
                    $data[$k]['status_name'] = '进行中';
                    break;
                case 3:
                    $data[$k]['status_name'] = '已驳回';
                    break;
                case 4:
                    $data[$k]['status_name'] = '待确认';
                    break;
                default:
                    $data[$k]['status_name'] = '已完成';
                    break;
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //分层审核问题详情
    public function layerAuditIssueDetail(){
        $data = Db::name('quality_layer_issue')->find(input('get.id'));
        $data['team']= Db::name('team_list')->where('id',$data['tid'])->value('team');
        $data['owner_name']= Db::name('admin_user')->where('id',$data['owner'])->value('truename');
        $record = Db::name('quality_layer_record')->find($data['record_id']);
        $level = Db::name('quality_layer_planning')->where('id',$record['plan_id'])->value('level');
        $check_id = $record['check_id'];
        if($check_id > 0){
            $check_detail = Db::name('quality_layer_check_list')->find($check_id);
            $data['check_content'] = $check_detail['content'];
            $data['check_title'] = $check_detail['title'];
            $data['owner_dpt'] = $check_detail['owner'];
        }else{
            $data['check_content'] = '其他';
            $data['check_title'] = '';
            $data['owner_dpt'] = '';
        }
        $data['imgs_issue'] = Db::name('img_list')->where(array('mid'=>4,'status'=>1))->where('mark',input('get.id'))->lists();
        $data['imgs_feedback'] = Db::name('img_list')->where(array('mid'=>4,'status'=>2))->where('mark',input('get.id'))->lists();
        $data['due_date'] = date('Y-m-d',$data['due_date']);
        exit(json_encode(array('code'=>0,'data'=>$data,'level'=>$level)));
    }
    //新员工考试题
    public function newExamList(){
        $exam_model = new MemberNewcomerExam();
        $data = $exam_model->online_exam(input('get.'));
        exit(json_encode($data));
    }
    //我的点检设备
    public function myToolsCheck(){
        $tid_info = Db::name('team_list')->find(input('get.tid'));
        $self = Db::name('me_check_position')->where('poid',input('get.poid'))->cache(true,300)->lists();
        $machine_line = Db::name('me_machine_list')->where('line',$tid_info['line'])->where('status',1)->cache(true,300)->column('id');
        $machines = Db::name('me_machine_list')->whereIn('id',array_column($self,'m_id'))->whereIn('id',$machine_line)->where('status',1)->cache(true,300)->lists();
        $type_info = Db::name('me_base')->whereIn('id',array_column($machines,'type'))->cache(true,300)->column('title','id');
        if(time() > (strtotime('today') + 1800*(11 + $tid_info['shift_type']))){
            $check_date = strtotime('today');
        }else{
            $check_date = strtotime('today') - 86400;
        }
        $record = Db::name('me_check_record')->where(array('check_date'=>$check_date,'shift'=>$tid_info['shift']))->whereIn('m_id',array_column($machines,'id'))->lists();
        foreach ($record as $k => $v) {
            if(isset($checked_num[$v['m_id']])==false){
                $checked_num[$v['m_id']] = 0;
                $checked_time[$v['m_id']] = 0;
            }
            $checked_num[$v['m_id']] = $checked_num[$v['m_id']] + 1;
            $checked_time[$v['m_id']] = date('Y-m-d H:i:s',$v['update']);
        }
        $checks = Db::name('me_check_list')->whereIn('type',array_column($machines,'type'))->where('status',1)->cache(true,300)->lists();
        foreach ($checks as $k => $v) {
            if(isset($check_num[$v['type']])==false){
                $check_num[$v['type']] = 0;
            }
            $check_num[$v['type']] = $check_num[$v['type']] + $v['num'];
        }
        foreach ($machines as $k => $v) {
            if(isset($check_num[$v['type']])){
                if(isset($checked_num[$v['id']])){
                    if($checked_num[$v['id']]>=$check_num[$v['type']]){
                        $machines[$k]['check_type'] = 3;
                        $machines[$k]['check_name'] = '已完成';
                    }else{
                        $machines[$k]['check_type'] = 2;
                        $machines[$k]['check_name'] = '进行中';
                    }
                }else{
                    $machines[$k]['check_type'] = 1;
                    $machines[$k]['check_name'] = '未进行';
                }
            }else{
                $machines[$k]['check_type'] = 0;
                $machines[$k]['check_name'] = '无点检条款';
            }
            $machines[$k]['type_name'] = $type_info[$v['type']];
            if(isset($checked_time[$v['id']])){
                $machines[$k]['check_time'] = $checked_time[$v['id']];
            }else{
                $machines[$k]['check_time'] = '';
            }
        }
        exit(json_encode(array('data'=>$machines,'check_date'=>$check_date,'shift'=>$tid_info['shift'])));
    }
    //我的点检设备
    public function myToolsChecked(){
        $tid_info = Db::name('team_list')->find(input('get.tid'));
        if(time() > (strtotime('today') + 1800*(11 + $tid_info['shift_type']))){
            $check_date = strtotime('today');
        }else{
            $check_date = strtotime('today') - 86400;
        }
        $checked = Db::name('me_check_record')->where(array('check_date'=>$check_date,'mid'=>input('get.mid')))->lists();
        $machines = Db::name('me_machine_list')->whereIn('id',array_column($checked,'m_id'))->cache(true,300)->lists();
        $type_info = Db::name('me_base')->whereIn('id',array_column($machines,'type'))->cache(true,300)->column('title','id');
        $record = Db::name('me_check_record')->whereIn('m_id',array_column($machines,'id'))->where(array('check_date'=>$check_date,'shift'=>$tid_info['shift']))->lists();
        foreach ($record as $k => $v) {
            if(isset($checked_num[$v['m_id']])==false){
                $checked_num[$v['m_id']] = 0;
                $checked_time[$v['m_id']] = 0;
            }
            $checked_num[$v['m_id']] = $checked_num[$v['m_id']] + 1;
            $checked_time[$v['m_id']] = date('Y-m-d H:i:s',$v['update']);
        }
        $checks = Db::name('me_check_list')->whereIn('type',array_column($machines,'type'))->where('status',1)->cache(true,300)->lists();
        foreach ($checks as $k => $v) {
            if(isset($check_num[$v['type']])==false){
                $check_num[$v['type']] = 0;
            }
            $check_num[$v['type']] = $check_num[$v['type']] + $v['num'];
        }
        foreach ($machines as $k => $v) {
            if(isset($check_num[$v['type']])){
                if(isset($checked_num[$v['id']])){
                    if($checked_num[$v['id']]>=$check_num[$v['type']]){
                        $machines[$k]['check_type'] = 3;
                        $machines[$k]['check_name'] = '已完成';
                    }else{
                        $machines[$k]['check_type'] = 2;
                        $machines[$k]['check_name'] = '进行中';
                    }
                }else{
                    $machines[$k]['check_type'] = 1;
                    $machines[$k]['check_name'] = '未进行';
                }
            }else{
                $machines[$k]['check_type'] = 0;
                $machines[$k]['check_name'] = '无点检条款';
            }
            $machines[$k]['type_name'] = $type_info[$v['type']];
            if(isset($checked_time[$v['id']])){
                $machines[$k]['check_time'] = $checked_time[$v['id']];
            }else{
                $machines[$k]['check_time'] = '';
            }
        }
        exit(json_encode(array('data'=>$machines,'check_date'=>$check_date,'shift'=>$tid_info['shift'])));
    }
    //我的点检异常
    public function myToolsIssue(){
        $data = Db::name('me_check_issue')->where('mid',input('get.mid'))->where('status','>',0)->order('id desc')->limit(input('get.page')*15,15)->lists();
        $check_info = Db::name('me_check_record')->whereIn('id',array_column($data,'check_id'))->cates('id');
        $m_id_info = Db::name('me_machine_list')->whereIn('id',array_column($check_info,'m_id'))->cates('id');
        foreach ($data as $k => $v) {
            $data[$k]['check_time'] = date('Y-m-d,H:i:s',$data[$k]['check_time']);
            $data[$k]['issue'] = $check_info[$v['check_id']]['mark'];
            $data[$k]['machine'] = $m_id_info[$check_info[$v['check_id']]['m_id']]['m_name'];
        }
        $total = Db::name('me_check_issue')->where('mid',input('get.mid'))->where('status','>',0)->count();
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //我的点检设备
    public function checkListDetail(){
        $tid_info = Db::name('team_list')->find(input('get.tid'));
        $machine = Db::name('me_machine_list')->find(input('get.m_id'));
        $check_list = Db::name('me_check_list')->where('type',$machine['type'])->where('status',1)->cache(true,300)->cates('id');
        $list = [];
        foreach ($check_list as $k => $v) {
            if($v['num'] > 1){
                for($i = 0; $i < $v['num'];$i++){
                    $list[$v['id'].'-'.$i] = $v;
                }
            }else{
                $list[$v['id'].'-0'] = $v;
            }
        }
        if(time() > (strtotime('today') + 1800*(11 + $tid_info['shift_type']))){
            $check_date = strtotime('today');
        }else{
            $check_date = strtotime('today') - 86400;
        }
        $record = Db::name('me_check_record')->where(array('m_id'=>input('get.m_id'),'check_date'=>$check_date,'shift'=>$tid_info['shift']))->lists();
        $tids_info = Db::name('team_list')->cache(true,300)->column('team','id');
        $mid_info = Db::name('member_list')->whereIn('id',array_column($record,'mid'))->column('ename','id');
        foreach ($record as $k => $v) {
            if($check_list[$v['check_id']]['num'] == 1){
                $list[$v['check_id'].'-0']['check_time'] = date('m-d H:i:s',$v['update']);
                $list[$v['check_id'].'-0']['result'] = $v['result'];
                $list[$v['check_id'].'-0']['tid'] = $v['tid'];
                $list[$v['check_id'].'-0']['tid_name'] = $tids_info[$v['tid']];
                $list[$v['check_id'].'-0']['mid'] = $v['mid'];
                $list[$v['check_id'].'-0']['mid_name'] = $mid_info[$v['mid']];
                $list[$v['check_id'].'-0']['mark'] = $v['mark'];
                $list[$v['check_id'].'-0']['result_id'] = $v['id'];
            }else{
                if(isset($checked[$v['check_id']])==false){
                    $checked[$v['check_id']] = 0;
                }
                $list[$v['check_id'].'-'.$checked[$v['check_id']]]['check_time'] = date('m-d H:i:s',$v['update']);
                $list[$v['check_id'].'-'.$checked[$v['check_id']]]['checktime'] = $v['update'];
                $list[$v['check_id'].'-'.$checked[$v['check_id']]]['result'] = $v['result'];
                $list[$v['check_id'].'-'.$checked[$v['check_id']]]['tid'] = $v['tid'];
                $list[$v['check_id'].'-'.$checked[$v['check_id']]]['tid_name'] = $tids_info[$v['tid']];
                $list[$v['check_id'].'-'.$checked[$v['check_id']]]['mid'] = $v['mid'];
                $list[$v['check_id'].'-'.$checked[$v['check_id']]]['mid_name'] = $mid_info[$v['mid']];
                $list[$v['check_id'].'-'.$checked[$v['check_id']]]['mark'] = $v['mark'];
                $list[$v['check_id'].'-'.$checked[$v['check_id']]]['result_id'] = $v['id'];
                $checked[$v['check_id']] = $checked[$v['check_id']] + 1;
            }
        }
        exit(json_encode(array('data'=>array_values($list),'check_date'=>$check_date,'shift'=>$tid_info['shift'],'machine_info'=>$machine['m_name'].'_'.$machine['fixed_number'])));
    }
    //点检异常详情
    public function meCheckIssueDetail(){
        $data = Db::name('me_check_issue')->find(input('get.id'));
        $data['mid_name'] = Db::name('member_list')->where('id',$data['mid'])->value('ename');
        $data['check_time'] = date('Y-m-d, H:i:s',$data['check_time']);
        $tid_info = Db::name('team_list')->find($data['tid']);
        $info = Db::name('team_base')->where('mid','<',4)->column('title','id');
        $data['project'] = $info[$tid_info['project']].' - '.$info[$tid_info['line']];
        $data['team'] = $tid_info['team'];
        $check_info = Db::name('me_check_record')->find($data['check_id']);
        $data['machine'] = Db::name('me_machine_list')->where('id',$check_info['m_id'])->value('m_name');
        $data['issue'] = $check_info['mark'];
        $check_info = Db::name('me_check_list')->where('id',$check_info['check_id'])->find();
        $data['check_info'] = $check_info['content'].' - '.$check_info['method'].' - '.$check_info['standard'];
        $data['owner_name'] = $data['owner']>0?Db::name('admin_user')->where('id',$data['owner'])->value('truename'):'';
        $data['update'] = $data['update']>0?date('Y-m-d H:i:s',$data['update']):'';
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //选择区域设备
    public function typeList(){
        $tid_info = Db::name('team_list')->find(input('get.tid'));
        $signNot = Db::name('me_check_position')->where(array('plan_id'=>$tid_info['plan_id'],'poid'=>0))->column('m_id');
        $signInfo = Db::name('me_check_position')->where('plan_id',$tid_info['plan_id'])->where('poid','>',0)->column('poid','m_id');
        $poidInfo = Db::name('team_plan_position')->whereIn('id',$signInfo)->column('position','id');
        $machines = Db::name('me_machine_list')->where(array('line'=>input('get.line'),'status'=>1,'is_check'=>1,'status'=>1))->whereNotIn('id',$signNot)->lists();
        $type_info = Db::name('me_base')->whereIn('id',array_column($machines,'type'))->column('title','id');
        if(time() > (strtotime('today') + 1800*(11 + $tid_info['shift_type']))){
            $check_date = strtotime('today');
        }else{
            $check_date = strtotime('today') - 86400;
        }
        $record = Db::name('me_check_record')->whereIn('m_id',array_column($machines,'id'))->where(array('check_date'=>$check_date,'shift'=>$tid_info['shift']))->lists();
        foreach ($record as $k => $v) {
            if(isset($checked_num[$v['m_id']])==false){
                $checked_num[$v['m_id']] = 0;
                $checked_time[$v['m_id']] = 0;
            }
            $checked_num[$v['m_id']] = $checked_num[$v['m_id']] + 1;
            $checked_time[$v['m_id']] = date('Y-m-d H:i:s',$v['update']);
        }
        $checks = Db::name('me_check_list')->whereIn('type',array_column($machines,'type'))->where('status',1)->lists();
        foreach ($checks as $k => $v) {
            if(isset($check_num[$v['type']])==false){
                $check_num[$v['type']] = 0;
            }
            $check_num[$v['type']] = $check_num[$v['type']] + $v['num'];
        }
        $types = Db::name('me_base')->where('mid',2)->whereIn('id',array_unique(array_column($machines,'type')))->cates('id');
        foreach ($machines as $k => $v) {
            if(isset($check_num[$v['type']])){
                if(isset($checked_num[$v['id']])){
                    if($checked_num[$v['id']]>=$check_num[$v['type']]){
                        $machines[$k]['check_type'] = 3;
                        $machines[$k]['check_name'] = '已完成';
                    }else{
                        $machines[$k]['check_type'] = 2;
                        $machines[$k]['check_name'] = '进行中';
                        $types[$v['type']]['content'] = $types[$v['type']]['content']>0?($types[$v['type']]['content']+1):1;
                    }
                }else{
                    $machines[$k]['check_type'] = 1;
                    $machines[$k]['check_name'] = '未进行';
                    $types[$v['type']]['content'] = $types[$v['type']]['content']>0?($types[$v['type']]['content']+1):1;
                }
            }else{
                $machines[$k]['check_type'] = 0;
                $machines[$k]['check_name'] = '无点检条款';
            }
            $machines[$k]['type_name'] = $type_info[$v['type']];
            if(isset($checked_time[$v['id']])){
                $machines[$k]['check_time'] = $checked_time[$v['id']];
            }else{
                $machines[$k]['check_time'] = '';
            }
            $machines[$k]['position'] = isset($signInfo[$v['id']])?$poidInfo[$signInfo[$v['id']]]:'';
        }
        $type = Db::name('me_base')->where('mid',1)->whereIn('id',array_unique(array_column($types,'mark')))->cates('id');
        if($type){
            foreach ($types as $k => $v) {
                if($v['content'] > 0){
                    $type[$v['mark']]['content'] = $type[$v['mark']]['content'] > 0 ?($type[$v['mark']]['content'] + $v['content']):$v['content'];
                }
            }
            foreach ($type as $k => $v) {
                $res['text'] = $v['title'].($v['content']>0?('（'.$v['content'].'）'):'');
                $res['value'] = $v['id'];
                $res['children'] = [];
                $m_type[$k] = $res;
            }
            foreach ($types as $k => $v) {
                $re['text'] = $v['title'].($v['content']>0?('（'.$v['content'].'）'):'');
                $re['value'] = $v['id'];
                array_push($m_type[$v['mark']]['children'],$re);
            }
            foreach ($machines as $k => $v) {
                if(isset($machine[$v['type']])==false){
                    $machine[$v['type']] = [];
                }
                array_push($machine[$v['type']],$v);
            }
            $m_type = array_values($m_type);
        }else{
            $m_type = [];
            $machine = [];
        }
        exit(json_encode(array('data'=>$m_type,'machine'=>$machine)));
    }
    //查询是否已经提交离职申请
    public function leaveRecord(){
        $record = Db::name('member_perleave')->where(array('mid'=>input('get.mid'),'status'=>1))->find();
        if($record){
            $record['perleave_date'] = date('Y-m-d',$record['perleave_date']);
            exit(json_encode(array('code'=>0,'data'=>$record)));
        }else{
            exit(json_encode(array('code'=>1)));
        }
    }
    //出厂申请单查询
    public function out_plant_list(){
        $data = input('get.');
        if($data['type']==1){
            $list = Db::name('common_outplant')->where(array('owner'=>$data['owner'],'ownerType'=>$data['userType']))->where('status','>=',0)->order('id desc')->limit(input('get.page')*15,15)->lists();
        }else{
            if($data['userType']>1){
                $map1 = [
                    ['apv1', '=', $data['owner']],
                    ['status', '>=', 0],
                ];
                $map2 = [
                    ['apv2', '=', $data['owner']],
                    ['status', '>=', 0],
                ];
                $map3 = [
                    ['apv3', '=', $data['owner']],
                    ['status', '>=', 0],
                ];
                $list = Db::name('common_outplant')->whereOr([$map1,$map2,$map3])->order('id desc')->limit(input('get.page')*15,15)->lists();
            }else{
                $list = [];
            }
        }
        foreach ($list as $k => $v) {
            $list[$k]['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
        }
        exit(json_encode(array('code'=>0,'data'=>$list)));
    }
    //出厂申请单明细
    public function outPlantDetail(){
        $data = Db::name('common_outplant')->find(input('get.id'));
        if($data['apv3_time'] > 0 && $data['status'] == 1){
            Db::name('common_outplant')->where('id',input('get.id'))->update(['status'=>4]);
            $data['status'] = 4;
        }
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        if($data['ownerType']==1){
            $info = Db::name('member_list')->find($data['owner']);
            $team = Db::name('team_list')->where('id',$info['tid'])->value('team');
            $data['owner_name'] = $info['eid'].' - '.$info['ename'].' - '.$team;
        }else{
            $data['owner_name'] = $aid_info[$data['owner']];
        }
        $data['create_time'] = date('Y-m-d H:i:s',$data['create_time']);
        $data['out_time'] = date('Y-m-d H:i',$data['out_time']);
        $data['back_time'] = $data['back_time']>0?date('Y-m-d H:i',$data['back_time']):'';
        $data['apv1_name'] = $data['apv1']>0?$aid_info[$data['apv1']]:'';
        $data['apv2_name'] = $data['apv2']>0?$aid_info[$data['apv2']]:'';
        $data['apv3_name'] = $data['apv3']>0?$aid_info[$data['apv3']]:'';
        $data['apv1_date'] = $data['apv1_time']>0?date('Y-m-d H:i',$data['apv1_time']):'';
        $data['apv2_date'] = $data['apv2_time']>0?date('Y-m-d H:i',$data['apv2_time']):'';
        $data['apv3_date'] = $data['apv3_time']>0?date('Y-m-d H:i',$data['apv3_time']):'';
        if($data['type']==2){
            $data['list'] = Db::name('common_outplant_material')->where('n_id',$data['id'])->lists();
            foreach ($data['list'] as $k => $v) {
                $data['list'][$k]['name'] = ($v['type']==1?'公司物资：':($v['type']==2?'供应商物资：':'废品出库：')).$v['name'];
            }
        }else{
            $data['list'] = [];
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //通讯录
    public function getContact(){
        if(input('get.type')==1){
            $data = [
                ['truename'=>'冉喻琴','phone'=>'17723159542','dpt'=>'捷仕达','job'=>'客服'],
                ['truename'=>'杨成果','phone'=>'15310904466','dpt'=>'捷仕达','job'=>'宿管'],
                ['truename'=>'彭兴蓉','phone'=>'15084396124','dpt'=>'天坤','job'=>'客服'],
                ['truename'=>'李雪','phone'=>'18996153153','dpt'=>'天坤','job'=>'宿管'],
                ['truename'=>'罗乐','phone'=>'18483666930','dpt'=>'杰成','job'=>'客服'],
                ['truename'=>'李廷昊','phone'=>'17623757030','dpt'=>'杰成','job'=>'宿管'],
                ['truename'=>'李翼驰','phone'=>'13647604248','dpt'=>'投促','job'=>'客服'],
                ['truename'=>'陈文杰','phone'=>'19122053988','dpt'=>'投促','job'=>'宿管'],
            ];
        }else{
            $data = Db::name('admin_user')->where('status',1)->order('dpt,job desc')->lists();
            $job_info = Db::name('admin_org')->column('title','id');
            foreach ($data as $k => $v) {
                $data[$k]['dpt'] = $job_info[$v['dpt']];
                $data[$k]['job'] = $job_info[$v['job']];
            }
        }
        
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //访客申请单列表
    public function visitorList(){
        if(input('get.type')==1){
            $data = Db::name('common_visitor_list')->where('owner',input('get.owner'))->order('id desc')->limit(input('get.page')*10,10)->lists();
            $total = count(Db::name('common_visitor_list')->where(array('status'=>1,'owner'=>input('get.owner')))->column('id'));
        }else{
            $data = Db::name('common_visitor_list')->where(array('status'=>1,'aid'=>input('get.owner')))->order('id desc')->limit(input('get.page')*10,10)->lists();
            $total = count(Db::name('common_visitor_list')->where(array('status'=>1,'aid'=>input('get.owner')))->column('id'));
        }
        $aid_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 as $k => $v) {
             switch($v['type']){
                case 1: $data[$k]['type'] = '政府部门'; break;
                case 2: $data[$k]['type'] = '客户'; break;
                case 3: $data[$k]['type'] = '质量问题验证和接洽'; break;
                case 4: $data[$k]['type'] = '三方分拣供应商'; break;
                case 5: $data[$k]['type'] = 'APTIV访客'; break;
                case 6: $data[$k]['type'] = '其他访客'; break;
            }
            $data[$k]['start'] = date('Y-m-d',$v['start']);
            $data[$k]['end'] = date('Y-m-d',$v['end']);
            $data[$k]['owner'] = $aid_info[$v['owner']];
            $data[$k]['dpt'] = $aid_info[$v['owner']];
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //访客审核申请明细
    public function visitorDetail(){
        $data = Db::name('common_visitor_list')->find(input('get.id'));
        $aid_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');
        switch($data['type']){
            case 1: $data['type'] = '政府部门'; break;
            case 2: $data['type'] = '客户'; break;
            case 3: $data['type'] = '质量问题验证和接洽'; break;
            case 4: $data['type'] = '三方分拣供应商'; break;
            case 5: $data['type'] = 'APTIV访客'; break;
            case 6: $data['type'] = '其他访客'; break;
        }
        $data['start'] = date('Y-m-d',$data['start']);
        $data['end'] = date('Y-m-d',$data['end']);
        $data['owner'] = Db::name('admin_user')->where('id',$data['owner'])->value('truename');
        $data['dpt'] = Db::name('admin_org')->where('id',$data['dpt'])->value('title');
        $data['receive_name'] = '';
        $receive_name = explode(',',$data['receive']);
        foreach ($receive_name as $k => $v) {
            $data['receive_name'] = $data['receive_name']==''?$aid_info[$v]:$data['receive_name'].','.$aid_info[$v];
        }
        // $data['receive_name'] = $data['receive']>0?$aid_info[$data['receive']]:'';
        $check = Db::name('common_visitor_step')->where('s_id',$data['id'])->order('order')->lists();
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        foreach ($check as $k => $v) {
            $check[$k]['aid_name'] = $aid_info[$v['aid']];
            $check[$k]['update'] = $v['update']>0?(date('Y-m-d H:i:s',$v['update']).'已通过'):($data['step_now']>$v['order']?'已通过':'');
        }
        $data['checked'] = $check;
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //电子盘点盘点地址
    public function inventoryRackList(){
        $plan_id = Db::name('onsite_base')->where(array('mid'=>260,'mark'=>1))->value('id');
        if(!$plan_id){
            exit(json_encode(array('code'=>1,'msg'=>'无盘点事件！')));
        // }else{
        //     $limit = explode('~',$plan_id['mark']);
        //     if(time()<$limit[0]||time()>$limit[1]){
        //         exit(json_encode(array('code'=>1,'msg'=>'无盘点事件！')));
        //     }
        }
        $data = Db::name('onsite_inventory')->where('line',input('get.line'))->cates('id');
        $classfiy = array_count_values(array_column($data,'rack'));
        if($classfiy){
            foreach ($classfiy as $k => $v) {
                $list[$k]['rack'] = $k;
                $list[$k]['num'] = $v;
                $list[$k]['old'] = 0;
                $list[$k]['old1'] = 0;
            }
            $record = Db::name('onsite_inventory_record')->where('plan_id',$plan_id)->whereIn('i_id',array_column($data,'id'))->lists();
            foreach ($record as $k => $v) {
                if($v['status']==2){
                    $list[$data[$v['i_id']]['rack']]['old1'] = $list[$data[$v['i_id']]['rack']]['old1'] + 1;
                }
                $list[$data[$v['i_id']]['rack']]['old'] = $list[$data[$v['i_id']]['rack']]['old'] + 1;
            }
            $res = array_values($list);
            if(input('get.order')==1){
                array_multisort(array_column($res,'rack') ,SORT_NATURAL,$res);
            }
        }else{
            $res = [];
        }
        exit(json_encode(array('code'=>0,'data'=>$res)));
    }
    //电子盘点盘点地址
    public function inventoryRackListNew(){
        $data = Db::name('onsite_inventory')->where('line',input('get.line'))->order('rack')->cates('id');
        $classfiy = array_count_values(array_column($data,'rack'));
        $plan_id = Db::name('onsite_base')->where(array('mid'=>260,'mark'=>1))->value('id');
        if(!$plan_id){
            exit(json_encode(array('code'=>1,'msg'=>'无盘点事件！')));
        }
        if($classfiy){
            foreach ($classfiy as $k => $v) {
                $list[$k]['rack'] = $k;
                $list[$k]['num'] = $v*2;
                $list[$k]['old'] = 0;
            }
            $record = Db::name('onsite_inventory_record')->where('plan_id',$plan_id)->whereIn('i_id',array_column($data,'id'))->lists();
            foreach ($record as $k => $v) {
                $list[$data[$v['i_id']]['rack']]['old'] = $list[$data[$v['i_id']]['rack']]['old'] + $v['status'];
            }
        }else{
            $list = [];
        }
        exit(json_encode(array('code'=>0,'data'=>array_values($list))));
    }
    //电子盘点我的盘点记录
    public function myInventoryList(){
        $mid = input('get.mid');
        $invId = Db::name('onsite_base')->where(array('mid'=>260,'mark'=>1))->value('id');
        $map1 = [
            ['plan_id', '=', $invId],
            ['auditor', '=', $mid],
        ];
        $map2 = [
            ['plan_id', '=', $invId],
            ['auditor1', '=', $mid],
        ];
        $data = Db::name('onsite_inventory_record')->whereOr([$map1, $map2])->limit(input('get.page')*20,20)->order('line')->lists();
        $info = Db::name('onsite_inventory')->whereIn('id',array_column($data,'i_id'))->cates('id');
        $project_info = Db::name('team_base')->where('mid','<',3)->column('title','id');
        $mid_info = Db::name('member_list')->whereIn('id',array_merge(array_column($data,'auditor'),array_column($data,'auditor1')))->column('ename','id');
        foreach ($data as $k => $v) {
            $data[$k]['line'] = $project_info[$v['project']].'-'.$project_info[$v['line']];
            $data[$k]['rack'] = $info[$v['i_id']]['rack'].'-'.$info[$v['i_id']]['location'];
            $data[$k]['type'] = $info[$v['i_id']]['type'];
            $data[$k]['record'] = $mid_info[$v['auditor']].' - '.date('m-d H:s',$v['submitdate']).' 数量：'.$v['num'];
            $data[$k]['record1'] = $v['auditor1']>0?($mid_info[$v['auditor1']].' - '.date('m-d H:s',$v['submitdate1']).' 数量：'.$v['num1']):'';
        }
        $total = Db::name('onsite_inventory_record')->whereOr([$map1, $map2])->count();
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //电子盘点架子物料详情
    public function rackDetail(){
        $mid = input('get.mid');
        $data = Db::name('onsite_inventory')->where(array('line'=>input('get.line'),'rack'=>input('get.rack')))->order('location')->field('id,location,kanban,unit_c,type,highlight')->lists();
        $invId = Db::name('onsite_base')->where(array('mid'=>260,'mark'=>1))->value('id');
        $record = Db::name('onsite_inventory_record')->where(array('plan_id'=>$invId))->whereIn('i_id',array_column($data,'id'))->cates('i_id');
        $mid_name = Db::name('member_list')->whereIn('id',array_merge(array_column($record,'auditor'),array_column($record,'auditor1')))->column('ename','id');
        foreach ($data as $k => $v) {
            if(isset($record[$v['id']])){
                $data[$k]['disable'] = 0;
                if($record[$v['id']]['auditor']==$mid){
                    $data[$k]['old_num'] = $record[$v['id']]['num'];
                    $data[$k]['num'] = $record[$v['id']]['num'];
                }else if ($record[$v['id']]['auditor1']==$mid) {
                    $data[$k]['old_num'] = $record[$v['id']]['num1'];
                    $data[$k]['num'] = $record[$v['id']]['num1'];
                }else{
                    if($record[$v['id']]['status']==2){
                        $data[$k]['disable'] = 1;
                    }else{
                        $data[$k]['old_num'] = '';
                        $data[$k]['num'] = '';
                    }
                }
                $data[$k]['mark'] = '1.'.$mid_name[$record[$v['id']]['auditor']].' , '.date('m-d H:i',$record[$v['id']]['submitdate']).' , '.$record[$v['id']]['num'].($record[$v['id']]['num1']!==''&&$record[$v['id']]['num1']!==null?(' ,2.'.$mid_name[$record[$v['id']]['auditor1']].' , '.date('m-d H:i',$record[$v['id']]['submitdate1']).' , '.$record[$v['id']]['num1']):'');
            }else{
                $data[$k]['disable'] = 0;
                $data[$k]['old_num'] = '';
                $data[$k]['num'] = '';
                $data[$k]['mark'] = '';
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //电子盘点复盘产线列表
    public function inventoryCheckLine(){
        $checkplan = Db::name('onsite_base')->where(array('mid'=>260,'mark'=>2))->find();
        if($checkplan){
            $data = Db::name('onsite_inventory_record')->where(array('recheck'=>2))->field('line,check_num1')->lists();
            if($data){
                foreach ($data as $k => $v) {
                    if(isset($res[$v['line']])==false){
                        $res[$v['line']]['all'] = 0;
                        $res[$v['line']]['record'] = 0;
                    }
                    ++$res[$v['line']]['all'];
                    $res[$v['line']]['record'] = $res[$v['line']]['record'] + ($v['check_num1']==null?0:1);
                }
                $list = Db::name('team_base')->whereIn('id',array_keys($res))->lists();
                $project_info = Db::name('team_base')->whereIn('id',array_unique(array_column($list,'mark')))->column('title','id');
                $lineList = [];
                foreach ($list as $k => $v) {
                    $re['text'] = $project_info[$v['mark']].' - '.$v['title'].'( '.$res[$v['id']]['all'].' / '.$res[$v['id']]['record'].' )';
                    $re['value'] = $v['id'];
                    array_push($lineList,$re);
                }
                // print_r($lineList);
                exit(json_encode(array('code'=>0,'data'=>$lineList)));
            }else{
                exit(json_encode(array('code'=>1,'msg'=>$checkplan['title'].'的复盘计划内无任何盘点项！')));
            }
        }else{
            exit(json_encode(array('code'=>1,'msg'=>'无任何复盘计划！')));
        }
    }
    //电子盘点复盘料架明细
    public function inventoryCheckRack(){
        $checkplan = Db::name('onsite_base')->where(array('mid'=>260,'mark'=>2))->find();
        if($checkplan){
            $data = Db::name('onsite_inventory_record')->where(array('plan_id'=>$checkplan['id'],'recheck'=>2,'line'=>input('get.line')))->field('id,i_id,num,check_num1')->lists();
            $info = Db::name('onsite_inventory')->whereIn('id',array_column($data,'i_id'))->column('rack','id');
            foreach ($data as $k => $v) {
                if(isset($res[$info[$v['i_id']]])==false){
                    $res[$info[$v['i_id']]]['all'] = 0;
                    $res[$info[$v['i_id']]]['record'] = 0;
                }
                ++$res[$info[$v['i_id']]]['all'];
                $res[$info[$v['i_id']]]['record'] = $res[$info[$v['i_id']]]['record'] + ($v['check_num1']==null?0:1);
            }
            $rackList = [];
            foreach ($res as $k => $v) {
                $re['text'] = $k.'( '.$res[$k]['all'].' / '.$res[$k]['record'].' )';
                $re['value'] = $k;
                array_push($rackList,$re);
            }
            exit(json_encode(array('code'=>0,'data'=>$rackList)));
        }else{
            exit(json_encode(array('code'=>1,'msg'=>'无任何复盘计划！')));
        }
    }
    //电子盘点复盘物料明细
    public function inventoryCheckList(){
        $checkplan = Db::name('onsite_base')->where(array('mid'=>260,'mark'=>2))->find();
        if($checkplan){
            $mList = Db::name('onsite_inventory')->where(array('rack'=>input('get.rack'),'line'=>input('get.line')))->cates('id');
            $data = Db::name('onsite_inventory_record')->where(array('plan_id'=>$checkplan['id'],'line'=>input('get.line'),'recheck'=>2))->whereIn('i_id',array_keys($mList))->field('id,i_id,num,check_num1,check_num2,check_mark')->lists();
            foreach ($data as $k => $v) {
                $data[$k]['location'] = $mList[$v['i_id']]['location'];
                $data[$k]['kanban'] = $mList[$v['i_id']]['kanban'];
                $data[$k]['unit_c'] = $mList[$v['i_id']]['unit_c'];
                $data[$k]['type'] = $mList[$v['i_id']]['type'];
                $data[$k]['disable'] = $v['check_num1']==null?0:1;
                $data[$k]['gap'] = 0;
                if($v['check_num2']!=null){
                    if((int)$v['check_num2']!=(int)$v['num']){
                        $data[$k]['gap'] = 1;
                    }else{
                        $data[$k]['check_num1'] = $v['check_num2'];
                    }
                }else{
                    if($v['check_num1']!=null){
                        if((int)$v['check_num1']!=(int)$v['num']){
                            $data[$k]['gap'] = 1;
                        }
                    }
                }
            }
            exit(json_encode(array('code'=>0,'data'=>$data)));
        }else{
            exit(json_encode(array('code'=>1,'msg'=>'无任何复盘计划！')));
        }
    }
    //无纸化审核列表
    public function paperless_list(){
        $data = input('get.');
        if($data['type']==1){
            $list = Db::name('onsite_paperless_list')->where(array('owner'=>$data['owner']))->where('status','>=',0)->order('id desc')->limit(input('get.page')*15,15)->lists();
            $total = Db::name('onsite_paperless_list')->where(array('owner'=>$data['owner']))->where('status','>=',0)->count();
        }else{
            $list = Db::name('onsite_paperless_list')->where(array('step'=>$data['owner']))->whereIn('status',[1,2])->order('id desc')->limit(input('get.page')*15,16)->lists();
            $total = Db::name('onsite_paperless_list')->where(array('step'=>$data['owner']))->whereIn('status',[1,2])->count();
        }
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        foreach ($list as $k => $v) {
            $list[$k]['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
            $list[$k]['owner_name'] = $aid_info[$v['owner']];
            $list[$k]['checker'] = $v['step']>0?$aid_info[$v['step']]:'';
        }
        exit(json_encode(array('code'=>0,'data'=>$list,'total'=>$total)));
    }
    //无纸化审核详情
    public function paperlessDetail(){
        $data = Db::name('onsite_paperless_list')->find(input('get.id'));
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        $check = Db::name('onsite_paperless_sign')->where('p_id',$data['id'])->order('update')->lists();
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        $data['owner'] = $aid_info[$data['owner']];
        $data['create_time'] = date('Y-m-d H:i:s',$data['create_time']);
        $order = 0;
        foreach ($check as $k => $v) {
            $check[$k]['aid_name'] = $aid_info[$v['aid']];
            $check[$k]['update'] = date('Y-m-d H:i:s',$v['update']);
            $order = $v['order'];
        }
        $un_sign = Db::name('onsite_paperless_step')->where(array('type'=>1,'p_id'=>$data['id']))->where('order','>',$order)->lists();
        if($un_sign){
            foreach ($un_sign as $k => $v) {
                $res['aid'] = $v['aid'];
                $res['aid_name'] = $aid_info[$v['aid']];
                $res['order'] = $v['order'];
                $res['sign'] = 0;
                array_push($check,$res);
            }
        }
        $data['checked'] = $check;
        $data['imgs'] = Db::name('img_list')->where(array('mid'=>15,'mark'=>$data['id']))->lists();
        if($data['imgs']){
            foreach ($data['imgs'] as $k => $v) {
                $img = str_replace('\\','/',$v['img']);
                $data['imgs'][$k]['img'] = 'http://10.243.226.7'.$img;
            }
        }
        $data['files'] = Db::name('img_list')->where(array('mid'=>16,'mark'=>$data['id']))->lists();
        if($data['files']){
            foreach ($data['files'] as $k => $v) {
                $img = str_replace('\\','/',$v['img']);
                $data['files'][$k]['img'] = 'http://10.243.226.7'.$img;
                $data['files'][$k]['file_name'] = substr($data['files'][$k]['img'],61);
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //PPI考试题目
    public function getPpiExam(){
        $exam = Db::name('quality_ppi_score')->where('mid',input('get.mid'))->where('exam_date','<',time())->where('exam_date','>',(time()-3600))->find();
        if($exam){
            $quality_model = new QualityPpiExam();
            $data = $quality_model->online_exam($exam['item_type']);
            $examName = Db::name('quality_base')->where('id',$exam['item_type'])->value('content');
            $limits = $exam['exam_date']+3600-time();
            $limit['min'] = floor($limits/60);
            $limit['sec'] = $limits - $limit['min']*60;
            $set = Db::name('quality_exam_set')->where('item_type',$exam['item_type'])->find();
            exit(json_encode(array('code'=>0,'data'=>$data,'set'=>$set,'name'=>$examName,'time'=>$limit,'exam_id'=>$exam['id'])));
        }else{
            exit(json_encode(array('code'=>1,'msg'=>'无PPI考试安排！')));
        }
    }
    //关键岗位考试题目
    public function getkeyPositionExam(){
        $exam = Db::name('quality_newskill_score')->where('mid',input('get.mid'))->where('exam_date','<',time())->where('exam_date','>',(time()-3600))->find();
        print_r($exam);
        if($exam){
            $quality_model = new QualityPpiExam();
            $data = $quality_model->online_exam($exam['item_type']);
            $examName = Db::name('quality_base')->where('id',$exam['item_type'])->value('content');
            $limits = $exam['exam_date']+3600-time();
            $limit['min'] = floor($limits/60);
            $limit['sec'] = $limits - $limit['min']*60;
            $set = Db::name('quality_exam_set')->where('item_type',$exam['item_type'])->find();
            exit(json_encode(array('code'=>0,'data'=>$data,'set'=>$set,'name'=>$examName,'time'=>$limit,'exam_id'=>$exam['id'])));
        }else{
            exit(json_encode(array('code'=>1,'msg'=>'无关键岗位考试安排！')));
        }
    }
    //WI列表
    public function wiList(){
        $w_ids = Db::name('onsite_wi_line')->where('l_id',input('get.line'))->column('w_id');
        $data = Db::name('onsite_wi_list')->whereIn('id',$w_ids)->where('status',3)->order('update desc')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //WI详情
    public function wiDetail(){
        $data = Db::name('onsite_wi_detail')->where(array('w_id'=>input('get.id'),'status'=>1))->lists();
        foreach ($data as $k => $v) {
            $img = str_replace('\\','/',$v['img']);
            $data[$k]['imgUrl'] = 'http://10.243.226.7'.$img;
        }
        if($data){
            exit(json_encode(array('code'=>0,'data'=>$data)));
        }else{
            exit(json_encode(array('code'=>1,'msg'=>'无相关信息！')));
        }
    }
    //新员工入职考试题目
    public function getNewComerExam(){
        $exam_model = new MemberNewcomerExam();
        $data = $exam_model->online_exam(input('get.'));
        exit(json_encode($data));
    }
    //现场问题反馈
    public function onsiteIssueList(){
        $obj = Db::name('onsite_issue_list')->order('id desc')->limit(input('get.page')*15,15)->where('status','>',0);
        if(input('get.type')==1){
            $data = $obj->where('aid',input('get.aid'))->lists();
            $total = Db::name('onsite_issue_list')->where('aid',input('get.aid'))->where('status','>',0)->count();
        }else{
            $data = $obj->where('owner',input('get.aid'))->lists();
            $total = Db::name('onsite_issue_list')->where('owner',input('get.aid'))->where('status','>',0)->count();
        }
        $tid_info = Db::name('team_list')->column('team','id');
        foreach ($data as $k => $v) {
            $data[$k]['team'] = $tid_info[$v['tid']];
            $data[$k]['issue_date'] = date('Y-m-d',$v['issue_date']);
            switch ($v['status']) {
                case 1:
                    $data[$k]['status_name'] = '待反馈';
                    break;
                case 2:
                    $data[$k]['status_name'] = '已驳回';
                    break;
                case 3:
                    $data[$k]['status_name'] = '进行中';
                    break;
                case 4:
                    $data[$k]['status_name'] = '待确认';
                    break;
                case 5:
                    $data[$k]['status_name'] = '已完成';
                    break;
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //现场问题反馈详情
    public function onsiteIssueDetail(){
        $data = Db::name('onsite_issue_list')->find(input('get.id'));
        $tid_info = Db::name('team_list')->find($data['tid']);
        $data['project'] = Db::name('team_base')->where('id',$tid_info['project'])->value('title');
        $data['team'] = $tid_info['team'];
        $data['aid_name'] = Db::name('admin_user')->where('id',$data['aid'])->value('truename');
        $data['family'] = $data['family']>0?Db::name('team_base')->where('id',$data['family'])->value('title'):'';
        $data['position'] = $data['poid']>0?Db::name('team_plan_position')->where('id',$data['poid'])->value('position'):'';
        $data['issue_date'] = date('Y-m-d H:i:s',$data['issue_date']);
        $data['due_date'] = $data['due_date']>0?date('Y-m-d',$data['due_date']):'';
        $data['dpt'] = Db::name('admin_org')->where('id',$data['dpt'])->value('title');
        $data['owner_name'] = Db::name('admin_user')->where('id',$data['owner'])->value('truename');
        switch ($data['status']) {
            case 1:
                $data['status_name'] = '待反馈';
                break;
            case 2:
                $data['status_name'] = '已驳回';
                break;
            case 3:
                $data['status_name'] = '进行中';
                break;
            case 4:
                $data['status_name'] = '待确认';
                break;
            case 5:
                $data['status_name'] = '已完成';
                break;
        }
        $data['imgs'] = Db::name('img_list')->where(array('mid'=>5,'mark'=>input('get.id'),'status'=>1))->lists();
        $data['feedback_imgs'] = Db::name('img_list')->where(array('mid'=>5,'mark'=>input('get.id'),'status'=>2))->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //FTQ列表
    public function ftqList(){
        $cc_tids = Db::name('team_list')->whereIn('project',[11,73])->where('status',1)->column('id');
        if(input('get.userType')==1){
            $mid_info = Db::name('member_list')->find(input('get.userId'));
            if(in_array($mid_info['tid'],$cc_tids)){
                $data = Db::name('quality_ftq_list')->order('id desc')->where('status',4)->lists();
            }else{
                $position = Db::name('team_plan_position')->where('id',$mid_info['poid'])->value('position');
                if(substr_count($position, "机动") > 0){
                    $map1 = [
                        ['status', '=', 3],
                        ['jumper', '=', input('get.userId')],
                    ];
                    $map2 = [
                        ['status', '=', 5],
                        ['tid', '=', $mid_info['tid']],
                    ];
                    $map3 = [
                        ['status', '=', 5],
                        ['jumper', '=', input('get.userId')],
                    ];
                    $data = Db::name('quality_ftq_list')->order('id desc')->whereOr([$map1, $map2, $map3])->lists();
                }else{
                    $data = Db::name('quality_ftq_list')->order('id desc')->where('creater',input('get.userId'))->where('status','>',1)->lists();
                    
                }
            }
        }else{
            $aid_info = Db::name('admin_user')->find(input('get.userId'));
            if($aid_info['dpt']==1){
                $tids = Db::name('team_list')->where(array('aid'=>input('get.userId'),'status'=>1))->column('id');
                $data = Db::name('quality_ftq_list')->order('id desc')->whereIn('tid',$tids)->where('status','>',1)->lists();
            }else{
                $qc_cc = Db::name('team_list')->whereIn('id',$cc_tids)->column('qc');
                $cc_qcs = array_unique($qc_cc);
                if(in_array(input('get.userId'),$cc_qcs)){
                    $data = Db::name('quality_ftq_list')->order('id desc')->where('status',6)->lists();
                }else{
                    $tids = Db::name('team_list')->where(array('qc'=>input('get.userId'),'status'=>1))->column('id');
                    $data = Db::name('quality_ftq_list')->order('id desc')->whereIn('tid',$tids)->where('status',2)->lists();
                }
            }
        }
        $creater_info = Db::name('member_list')->whereIn('id',array_column($data,'creater'))->column('ename','id');
        $tid_info = Db::name('team_list')->column('team','id');
        foreach ($data as $k => $v) {
            $data[$k]['creater_name'] = $creater_info[$v['creater']];
            $data[$k]['create_time'] = date('Y-m-d,H:i:s',$v['create_time']);
            $data[$k]['team'] = $tid_info[$v['tid']];
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //FTQ 机动工清单
    public function ftqJumperList(){
        $mid_info = Db::name('member_list')->find(input('get.userId'));
        $project = Db::name('team_list')->where('id',$mid_info['tid'])->value('project');
        $plans = Db::name('team_list')->where('project',$project)->column('plan_id','id');
        $jumper_poid = Db::name('team_plan_position')->whereIn('plan_id',array_unique($plans))->where('position','like','%机动%')->where('status',1)->column('id');
        $jumpers = Db::name('member_list')->whereIn('tid',array_keys($plans))->whereIn('poid',$jumper_poid)->where('status',1)->field('id,ename')->lists();
        $list = [];
        foreach ($jumpers as $k => $v) {
            $res['text'] = $v['ename'];
            $res['value'] = $v['id'];
            array_push($list,$res);
        }
        exit(json_encode(array('code'=>0,'data'=>$list)));
    }
    //FTQ详情
    public function ftqDetail(){
        $ftq = Db::name('quality_ftq_list')->find(input('get.id'));
        if($ftq['status'] < 5){
            $ftq['issue_type'] = Db::name('quality_base')->where(array('mid'=>1,'id'=>$ftq['issue_id']))->value('title');
            $mid_info = Db::name('member_list')->whereIn('id',[$ftq['issue_mid'],$ftq['find_mid'],$ftq['jumper'],$ftq['cc_mid']])->column('ename','id');
            $poid_info = Db::name('team_plan_position')->whereIn('id',[$ftq['issue_poid'],$ftq['find_poid']])->column('position','id');
            $ftq['issue_mid_name'] = $ftq['issue_mid']>0?$mid_info[$ftq['issue_mid']]:'';
            $ftq['find_mid_name'] = $mid_info[$ftq['find_mid']];
            $ftq['issue_poid_name'] = $poid_info[$ftq['issue_poid']];
            $ftq['find_poid_name'] = $poid_info[$ftq['find_poid']];
            $ftq['jumper_name'] = $mid_info[$ftq['jumper']];
            $ftq['cc_mid_name'] = $ftq['cc_mid']>0?$mid_info[$ftq['cc_mid']]:'';
            $ftq['repair_time'] = date('Y-m-d,H:i:s',$ftq['repair_time']);
            $ftq['cc_repair_time'] = $ftq['cc_repair_time']>0?date('Y-m-d,H:i:s',$ftq['cc_repair_time']):'';
        }
        $plan = Db::name('team_list')->where('id',$ftq['tid'])->value('plan_id');
        $data = Db::name('member_list')->where(array('tid'=>$ftq['tid'],'status'=>1))->field('id,ename,poid')->cates('poid');
        $poid = Db::name('team_plan_position')->where(array('plan_id'=>$plan,'status'=>1))->lists();
        $list = [];
        foreach ($poid as $k => $v) {
            $res['text'] = $v['position'].' - '.(isset($data[$v['id']]['ename'])?$data[$v['id']]['ename']:'未安排人员');
            $res['value'] = $v['id'];
            array_push($list,$res);
        }
        $poids = $list;
        array_push($list,['text'=>'CC/LP前道','value'=>2]);
        array_push($list,['text'=>'原材料','value'=>3]);
        $imgs = Db::name('img_list')->where(array('mid'=>34,'mark'=>input('get.id')))->lists();
        $issue_img = [];
        $repair_img = [];
        if($imgs){
            foreach ($imgs as $k => $v) {
                if($v['status']==1){
                    array_push($issue_img,'http://10.243.226.7'.$v['img']);
                }else{
                    array_push($repair_img,'http://10.243.226.7'.$v['img']);
                }
            }
        }
        $edit_type = 1;
        if(input('get.userType')==1){
            $poid = Db::name('member_list')->where('id',input('get.userId'))->value('poid');
            $position = Db::name('team_plan_position')->where('id',$poid)->value('position');
            if(substr_count($position, "机动") > 0){
                $edit_type = 2;
            }
        }
        exit(json_encode(array('data'=>$list,'poids'=>$poids,'find_poid'=>$ftq['find_poid'],'status'=>$ftq['status'],'imgs'=>$issue_img,'repair_img'=>$repair_img,'info'=>$ftq,'edit_type'=>$edit_type)));
    }
    //报餐权限校验
    public function mealViewRight(){
        if(input('get.dpt') == 6){
            exit(json_encode(array('code'=>0)));
        }else{
            $right = Db::name('common_meal_set')->where('aid',input('get.aid'))->find();
            exit(json_encode(array('code'=>$right?0:1)));
        }
    }
    //员工餐报餐记录查询 by Day
    public function mealInfo(){
        $item = input('get.');
        $data = Db::name('common_meal_list')->where(array('owner'=>$item['aid'],'meal_date'=>strtotime($item['date']),'status'=>1))->find();
        if($data){
            $data['meal_date'] = date('Y-m-d',$data['meal_date']);
            exit(json_encode(array('code'=>0,'data'=>$data)));
        }else{
            exit(json_encode(array('code'=>1)));
        }
    }
    //报餐记录查询
    public function mealList(){
        $item = input('get.');
        switch ($item['type']) {
            case 1:
                $data = Db::name('common_meal_list')->where(array('owner'=>$item['owner'],'status'=>1))->order('meal_date desc')->limit(input('get.page')*15,15)->lists();
                foreach ($data as $k => $v) {
                    $data[$k]['meal_date'] = date('Y-m-d',$v['meal_date']);
                }
                $total = Db::name('common_meal_list')->where(array('owner'=>$item['owner'],'status'=>1))->count();
                break;
            case 2:
                $data = Db::name('common_meal_custom')->where(array('owner'=>$item['owner']))->where('status','>=',0)->order('create_date desc')->limit(input('get.page')*15,15)->lists();
                foreach ($data as $k => $v) {
                    $data[$k]['meal_time'] = date('Y-m-d',$v['meal_time']);
                }
                $total = Db::name('common_meal_custom')->where(array('owner'=>$item['owner']))->where('status','>=',0)->count();
                break;
            default:
                $data = Db::name('common_meal_custom')->where(array('sign'=>$item['owner']))->whereIn('status',[1,2])->order('create_date desc')->limit(input('get.page')*15,15)->lists();
                foreach ($data as $k => $v) {
                    $data[$k]['create_date'] = date('Y-m-d',$v['create_date']);
                    $data[$k]['meal_time'] = date('Y-m-d',$v['meal_time']);
                }
                $total = Db::name('common_meal_custom')->where(array('sign'=>$item['owner']))->whereIn('status',[1,2])->count();
                break;
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //报餐汇总查询
    public function mealSummary(){
        $data = Db::name('common_meal_list')->where(array('meal_date'=>strtotime(input('get.date')),'status'=>1,'dpt'=>0))->find();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //报餐详情
    public function mealDetail(){
        $data = Db::name('common_meal_custom')->find(input('get.id'));
        $aid_name = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        $data['owner_name'] = $aid_name[$data['owner']];
        $data['dpt'] = Db::name('admin_org')->where('id',$data['dpt'])->value('title');
        $data['create_date'] = date('Y-m-d',$data['create_date']);
        $data['meal_time'] = date('Y-m-d',$data['meal_time']);
        $data['apv1_name'] = $aid_name[$data['apv1']];
        $data['apv1_time'] = $data['apv1_time']>0?date('Y-m-d H:i:s',$data['apv1_time']):'';
        $data['apv2_name'] = $aid_name[$data['apv2']];
        $data['apv2_time'] = $data['apv2_time']>0?date('Y-m-d H:i:s',$data['apv2_time']):'';
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //安全风险反馈列表
    public function safeRiskList(){
        $obj = Db::name('onsite_safe_list')->where('status','>',0)->order('id desc')->limit(input('get.page')*15,15);
        if(input('get.type')==1){
            $obj = $obj->where('eid',input('get.eid'));
            $total = Db::name('onsite_safe_list')->where('eid',input('get.eid'))->where('status','>',0)->count();
        }else{
            $owner = Db::name('admin_user')->where('username',input('get.eid'))->value('id');
            $obj = $obj->where('owner',$owner);
            $total = Db::name('onsite_safe_list')->where('owner',$owner)->where('status','>',0)->count();
        }
        $data = $obj->lists();
        foreach ($data as $k => $v) {
            $data[$k]['update'] = date('Y-m-d H:i:s',$v['update']);
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //安全风险反馈明细
    public function safeRiskDetail(){
        $data = Db::name('onsite_safe_list')->find(input('get.id'));
        $mid_info = Db::name('member_list')->find($data['mid']);
        $data['mid_name'] = $mid_info['ename'];
        $data['issue_date'] = date('Y-m-d H:i:s',$data['update']);
        $tid_info = Db::name('team_list')->find($mid_info['tid']);
        $data['team'] = $tid_info['team'];
        $data['project'] = Db::name('team_base')->where('id',$tid_info['project'])->value('title');
        $data['imgs'] = Db::name('img_list')->where(array('mid'=>6,'mark'=>$data['id'],'status'=>1))->lists();
        $data['owner_name'] = $data['owner']>0?Db::name('admin_user')->where('id',$data['owner'])->value('truename'):'';
        $data['due_date'] = $data['due_date']>0?date('Y-m-d',$data['due_date']):'';
        $data['feedback_imgs'] = Db::name('img_list')->where(array('mid'=>6,'mark'=>$data['id'],'status'=>2))->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //QC巡检问题反馈
    public function qcAuditList(){
        $obj = Db::name('quality_onsite_audit_list')->order('id desc')->limit(input('get.page')*15,15)->where('status','>',0);
        if(input('get.type')==1){
            $data = $obj->where('auditor',input('get.aid'))->lists();
            $total = Db::name('quality_onsite_audit_list')->where('auditor',input('get.aid'))->where('status','>',0)->count();
        }else{
            $data = $obj->where('owner',input('get.aid'))->lists();
            $total = Db::name('quality_onsite_audit_list')->where('owner',input('get.aid'))->where('status','>',0)->count();
        }
        $tid_info = Db::name('team_list')->column('team','id');
        foreach ($data as $k => $v) {
            $data[$k]['team'] = $tid_info[$v['tid']];
            $data[$k]['audit_date'] = date('Y-m-d',$v['audit_date']);
            switch ($v['status']) {
                case 1:
                    $data[$k]['status_name'] = '待反馈';
                    break;
                case 2:
                    $data[$k]['status_name'] = '已驳回';
                    break;
                case 3:
                    $data[$k]['status_name'] = '待确认';
                    break;
                case 4:
                    $data[$k]['status_name'] = '已完成';
                    break;
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //QC巡检问题反馈详情
    public function qcAuditDetail(){
        $data = Db::name('quality_onsite_audit_list')->find(input('get.id'));
        $tid_info = Db::name('team_list')->find($data['tid']);
        $data['project'] = Db::name('team_base')->where('id',$tid_info['project'])->value('title');
        $data['team'] = $tid_info['team'];
        $data['auditor_name'] = Db::name('admin_user')->where('id',$data['auditor'])->value('truename');
        $data['aid_name'] = Db::name('admin_user')->where('id',$data['aid'])->value('truename');
        $data['position'] = $data['poid']>0?Db::name('team_plan_position')->where('id',$data['poid'])->value('position'):'';
        $data['mid_name'] = $data['mid']>0?Db::name('member_list')->where('id',$data['mid'])->value('ename'):'';
        $data['audit_date'] = date('Y-m-d',$data['audit_date']);
        switch ($data['type']) {
            case 1:$data['type'] = '人';break;
            case 2:$data['type'] = '机';break;
            case 3:$data['type'] = '料';break;
            case 4:$data['type'] = '法';break;
            case 5:$data['type'] = '环';break;
        }
        $data['defect'] = Db::name('quality_base')->where('id',$data['defect'])->value('title');
        $data['project'] = Db::name('team_base')->where('id',$tid_info['project'])->value('title');
        $data['due_date'] = $data['due_date']>0?date('Y-m-d',$data['due_date']):'';
        $data['dpt'] = Db::name('admin_org')->where('id',$data['dpt'])->value('title');
        $data['owner_name'] = Db::name('admin_user')->where('id',$data['owner'])->value('truename');
        $data['status_name'] = $data['status']==1?'待反馈':($data['status']==2?'已驳回':($data['status']==3?'待确认':'已完成'));
        $data['imgs'] = Db::name('img_list')->where(array('mid'=>1,'mark'=>input('get.id'),'status'=>1))->lists();
        $data['feedback_imgs'] = Db::name('img_list')->where(array('mid'=>1,'mark'=>input('get.id'),'status'=>2))->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //生产部外借工时明细
    public function lentList(){
        $obj = Db::name('le_lent_order')->order('id desc')->limit(input('get.page')*15,15)->where('status','>',0);
        if(input('get.type')==1){
            $data = $obj->where('owner',input('get.aid'))->lists();
            $total = Db::name('le_lent_order')->where('owner',input('get.aid'))->where('status','>',0)->count();
        }else{
            $data = $obj->where('step',input('get.aid'))->lists();
            $total = Db::name('le_lent_order')->where('step',input('get.aid'))->where('status','>',0)->count();
        }
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        foreach ($data as $k => $v) {
            $data[$k]['owner_name'] = $aid_info[$v['owner']];
            $data[$k]['date_limit'] = date('m-d',$v['start_date']).' ~ '.date('m-d',$v['end_date']);
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //生产部外借工时详情
    public function mfgLentDetail(){
        $data = Db::name('le_lent_order')->find(input('get.id'));
        $aid_name = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        $data['owner_name'] = $aid_name[$data['owner']];
        $data['hours'] = (string)$data['hours'];
        $data['aid'] = $aid_name[$data['aid']];
        $data['dpt'] = Db::name('admin_org')->where('id',$data['dpt'])->value('title');
        $data['create_date'] = $data['create_date']>0?date('Y-m-d H:i:s',$data['create_date']):'';
        $data['date_limit'] = date('Y-m-d',$data['start_date']).' ~ '.date('Y-m-d',$data['end_date']);
        $data['apv1_name'] = $aid_name[$data['apv1']];
        $data['apv1_time'] = $data['apv1_time']>0?date('Y-m-d H:i:s',$data['apv1_time']):'';
        $data['apv2_name'] = $aid_name[$data['apv2']];
        $data['apv2_time'] = $data['apv2_time']>0?date('Y-m-d H:i:s',$data['apv2_time']):'';
        $data['apv3_name'] = $aid_name[$data['apv3']];
        $data['apv3_time'] = $data['apv3_time']>0?date('Y-m-d H:i:s',$data['apv3_time']):'';
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //端午调查查询
    public function getDuanwuGift(){
        $gift = Db::name('admin_user_mobile')->where('username',input('get.eid'))->value('temp1');
        exit(json_encode(array('code'=>0,'data'=>(int)$gift)));
    }
    //PCL来料体积记录查询
    public function cbmList(){
        $data = Db::name('pcl_cbm_record')->where('mid',input('get.mid'))->where('status','>',0)->order('id desc')->limit(input('get.page')*15,15)->lists();
        $total = Db::name('pcl_cbm_record')->where('mid',input('get.mid'))->where('status','>',0)->count();
        foreach ($data as $k => $v) {
            $data[$k]['create_date'] = date('Y-m-d H:i:s',$v['create_date']);
            $data[$k]['issuance_date'] = date('Y-m-d',$v['issuance_date']);
            $data[$k]['gap'] = round((float)$data[$k]['real_size'] - (float)$data[$k]['out_size'],2);
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //面积节约记录查询
    public function spaceSaveList(){
        $data = Db::name('design_space_save')->where('recorder',input('get.recorder'))->where('status','>',0)->order('id desc')->limit(input('get.page')*15,15)->lists();
        $total = Db::name('design_space_save')->where('recorder',input('get.recorder'))->where('status','>',0)->count();
        $info = Db::name('team_base')->where('mid','<',4)->column('title','id');
        $imgs = Db::name('img_list')->where('status','>',0)->where('mid',28)->whereIn('mark',array_column($data,'id'))->lists();
        foreach ($imgs as $k => $v) {
            if(isset($img[$v['mark']])==false){
                $img[$v['mark']] = [];
            }
            array_push($img[$v['mark']],'http://10.243.226.7'.$v['img']);
        }
        foreach ($data as $k => $v) {
            $data[$k]['area'] = $info[$v['project']].' - '.$info[$v['line']].' - '.$info[$v['family']];
            $data[$k]['due_date'] = date('Y-m-d',$v['due_date']);
            $data[$k]['imgs'] = isset($img[$v['id']])?$img[$v['id']]:'';
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //质量月活动反馈列表
    public function qualityMonthlyIssueList(){
        $data = Db::name('quality_month_terminal_risk')->where('eid',input('get.eid'))->order('id desc')->limit(input('get.page')*15,15)->where('status','>',0)->lists();
        $total = Db::name('quality_month_terminal_risk')->where('eid',input('get.eid'))->where('status','>',0)->count();
        $info = Db::name('team_base')->where('mid','<',3)->column('title','id');
        $item = Db::name('quality_base')->where('mid',16)->column('content','title');
        foreach ($data as $k => $v) {
            $data[$k]['project'] = $info[$v['project']].' - '.$info[$v['project']].' - '.$v['position'];
            $data[$k]['create_date'] = date('Y-m-d',$v['create_date']);
            $data[$k]['item'] = $item[$v['item']];
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //质量月活动反馈详情
    public function qualityMonthlyissueDetail(){
        $data = Db::name('quality_month_terminal_risk')->find(input('get.id'));
        $data['item'] = Db::name('quality_base')->where(array('mid'=>16,'title'=>$data['item']))->value('content');
        $data['project'] = Db::name('team_base')->where('id',$data['project'])->value('title');
        $data['line'] = $data['line']>0?Db::name('team_base')->where('id',$data['line'])->value('title'):'';
        $data['create_date'] = date('Y-m-d H:i:s',$data['create_date']);
        $data['due_date'] = $data['due_date']>0?date('Y-m-d',$data['due_date']):'';
        $data['owner'] = $data['owner']>0?Db::name('admin_user')->where('id',$data['owner'])->value('truename'):'';
        $data['imgs'] = Db::name('img_list')->where(array('mid'=>14,'mark'=>input('get.id'),'status'=>1))->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //KSK红区计划基础信息查询
    public function kskPlanningBase(){
        $line = Db::name('team_list')->where('id',input('get.tid'))->value('line');
        if(time()-strtotime('today')>8*3600){
            $today = date('Y-m-d',time());
        }else{
            $today = date('Y-m-d',time()-86400);
        }
        if(time()-strtotime('today')<8*3600||time()-strtotime('today')>20*3600){
            $shift = 2;
        }else{
            $shift = 1;
        }
        exit(json_encode(array('data'=>$line,'date'=>$today,'shift'=>$shift)));
    }
    //KSK红区计划
    public function kskPlanning(){
        $item = input('get.');
        if($item['item']==20||$item['item']==21){
            $pp = Db::name('le_ksk_pp')->where('date',strtotime(input('get.date')))->lists();
            if(!$pp){
                $data = [];
                $racks = [];
            }else{
                $boms = array_unique(array_column($pp,'bom_id'));
                $red_boms = Db::name('le_ksk_bom')->whereIn('bom',$boms)->where('family',$item['item'])->column('bom');
                $relation = Db::name('le_ksk_redarea_relation')->whereIn('bom_id',$red_boms)->lists();
                foreach ($relation as $k => $v) {
                    if(isset($list[$v['bom_id']])==false){
                        $list[$v['bom_id']] = [];
                    }
                    array_push($list[$v['bom_id']],$v['combined']);
                }
                $data = [];
                $combined_info = Db::name('le_ksk_redarea_combined')->cates('combined');
                foreach ($pp as $k => $v) {
                    if(in_array($v['bom_id'],$red_boms)){
                        foreach ($list[$v['bom_id']] as $ke => $val) {
                            if(isset($data[$val])==false){
                                $data[$val]['rack'] = $combined_info[$val]['rack'];
                                $data[$val]['combined'] = $val;
                                $data[$val]['num1'] = 0;
                                $data[$val]['num2'] = 0;
                            }
                            $data[$val]['num'.$v['shift']] = $data[$val]['num'.$v['shift']] + $v['num'];
                        }
                    }
                }
                array_multisort(array_column($data,'rack'),SORT_ASC,$data);
                $data = array_values($data);

                $rack = array_values(array_unique(array_column($data,'rack')));
                $racks = [];
                $res['text'] = 'All';
                $res['value'] = 'All';
                array_push($racks,$res);
                foreach ($rack as $k => $v) {
                    $res['text'] = $v;
                    $res['value'] = $v;
                    array_push($racks,$res);
                }
            }
        }else{
            $familys = Db::name('team_base')->where(array('mid'=>3,'mark'=>$item['item']))->column('id');
            $pp = Db::name('le_pp')->where('ppdate',strtotime(input('get.date')))->whereIn('family',$familys)->lists();
            // print_r($familys);
            if(!$pp){
                $data = [];
                $racks = [];
            }else{
                $pids = array_unique(array_column($pp,'pid'));
                $info = Db::name('le_redarea_base')->cates('kanban');
                $relation = Db::name('le_redarea_relation')->whereIn('pid',$pids)->lists();
                if($relation){
                    foreach ($relation as $k => $v) {
                        if(isset($list[$v['pid']])==false){
                            $list[$v['pid']] = [];
                        }
                        array_push($list[$v['pid']],$v['kanban']);
                    }
                    $data = [];
                    $kanban_info = Db::name('le_redarea_base')->cates('kanban');
                    foreach ($pp as $k => $v) {
                        if(isset($list[$v['pid']])){
                            foreach ($list[$v['pid']] as $ke => $val) {
                                if(isset($data[$val])==false){
                                    $data[$val]['rack'] = $info[$val]['position'];
                                    $data[$val]['combined'] = $val;
                                    $data[$val]['kanbans'] = $info[$val]['combie'];
                                    $data[$val]['gcsd'] = $info[$val]['gcsd'];
                                    $data[$val]['store'] = $info[$val]['store'];
                                    $data[$val]['use_position'] = $info[$val]['use_position'];
                                    $data[$val]['use_store'] = $info[$val]['use_store'];
                                    $data[$val]['mark'] = $info[$val]['mark'];
                                    $data[$val]['num1'] = 0;
                                    $data[$val]['num2'] = 0;
                                }
                                $data[$val]['num'.$v['shift']] = $data[$val]['num'.$v['shift']] + $v['out_pp'];
                            }
                        }
                    }
                    array_multisort(array_column($data,'rack'),SORT_ASC,$data);
                    $data = array_values($data);
                    $rack = array_values(array_unique(array_column($data,'rack')));
                    $racks = [];
                    $res['text'] = 'All';
                    $res['value'] = 'All';
                    array_push($racks,$res);
                    foreach ($rack as $k => $v) {
                        $res['text'] = $v;
                        $res['value'] = $v;
                        array_push($racks,$res);
                    }
                }else{
                    $data = [];
                    $racks = [];
                }
            }
        }
        exit(json_encode(array('data'=>$data,'racks'=>$racks)));
    }
    //EOS审核文件列表
    public function eosDocList(){
        $data = Db::name('quality_base')->where('mid',17)->lists();
        $list = [];
        foreach ($data as $k => $v) {
            $res['text'] = $v['content'];
            $res['value'] = $v['id'];
            array_push($list,$res);
        }
        exit(json_encode(array('data'=>$list)));
    }
    //EOS审核审核-我的问题
    public function eosAuditList(){
        $data = Db::name('quality_eos_audit')->order('id desc')->limit(input('get.page')*10,10)->where('status','>',0)->where('auditor',input('get.auditor'))->lists();
        $total = Db::name('quality_eos_audit')->where('auditor',input('get.auditor'))->count();
        $tid_info = Db::name('team_list')->column('team','id');
        foreach ($data as $k => $v) {
            $data[$k]['team'] = $tid_info[$v['tid']];
            $data[$k]['audit_date'] = date('Y-m-d',$v['audit_date']);
            switch ($v['status']) {
                case 1:
                    $data[$k]['status_name'] = '待反馈';
                    break;
                case 2:
                    $data[$k]['status_name'] = '待确认';
                    break;
                case 3:
                    $data[$k]['status_name'] = '已完成';
                    break;
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //EOS审核-问题详情
    public function eosAuditIssueDetail(){
        $data = Db::name('quality_eos_audit')->find(input('get.id'));
        $tid_info = Db::name('team_list')->find($data['tid']);
        $data['project'] = Db::name('team_base')->where('id',$tid_info['project'])->value('title');
        $data['team'] = $tid_info['team'];
        $data['family'] = $data['family']>0?Db::name('team_base')->where('id',$data['family'])->value('title'):'';
        $data['position'] = $data['poid']>0?Db::name('team_plan_position')->where('id',$data['poid'])->value('position'):'';
        $doc_info = Db::name('quality_base')->find($data['doc_name']);
        $data['doc_num'] = $doc_info['title'];
        $data['doc_title'] = $doc_info['content'];
        $data['audit_date'] = date('Y-m-d',$data['audit_date']);
        $data['due_date'] = $data['due_date']>0?date('Y-m-d',$data['due_date']):'';
        $data['dpt'] = Db::name('admin_org')->where('id',$data['dpt'])->value('title');
        $data['owner'] = Db::name('admin_user')->where('id',$data['owner'])->value('truename');
        $data['status_name'] = $data['status']==1?'待反馈':($data['status']==2?'待确认':'已完成');
        $data['imgs'] = Db::name('img_list')->where(array('mid'=>29,'mark'=>input('get.id')))->column('img');
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //经理值班-我的问题
    public function managerDutyList(){
        $obj = Db::name('common_manager_duty_list')->order('id desc')->limit(input('get.page')*15,15)->where('status','>',0);
        if(input('get.type')==1){
            $data = $obj->where('auditor',input('get.aid'))->lists();
            $total = Db::name('common_manager_duty_list')->where('auditor',input('get.aid'))->where('status','>',0)->count();
        }else{
            $data = $obj->where('owner',input('get.aid'))->lists();
            $total = Db::name('common_manager_duty_list')->where('owner',input('get.aid'))->where('status','>',0)->count();
        }
        $item_info = Db::name('team_base')->where('mid','<',3)->column('title','id');
        foreach ($data as $k => $v) {
            $data[$k]['duty_date'] = date('Y-m-d',$v['duty_date']);
            $data[$k]['location'] = $v['type']==1?($item_info[$v['project']].' - '.$item_info[$v['line']]):$v['area'];
            switch ($v['status']) {
                case 1:
                    $data[$k]['status_name'] = '待指定';
                    break;
                case 2:
                    $data[$k]['status_name'] = '待反馈';
                    break;
                case 3:
                    $data[$k]['status_name'] = '进行中';
                    break;
                case 4:
                    $data[$k]['status_name'] = '待确认';
                    break;
                case 5:
                    $data[$k]['status_name'] = '已完成';
                    break;
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //经理值班问题详情
    public function managerDutyDetail(){
        $data = Db::name('common_manager_duty_list')->find(input('get.id'));
        $item_info = Db::name('team_base')->where('mid','<',3)->column('title','id');
        $data['location'] = $data['type']==1?($item_info[$data['project']].' - '.$item_info[$data['line']]):$data['area'];
        $data['duty_date'] = date('Y-m-d',$data['duty_date']);
        $data['due_date'] = $data['due_date']>0?date('Y-m-d',$data['due_date']):'';
        $data['status_name'] = $data['status']==1?'待反馈':($data['status']==2?'待确认':'已完成');
        $data['imgs'] = Db::name('img_list')->where(array('mid'=>30,'mark'=>input('get.id'),'status'=>1))->column('img');
        $data['feedback_imgs'] = Db::name('img_list')->where(array('mid'=>30,'mark'=>input('get.id'),'status'=>2))->column('img');
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //首页值班记录查阅
    public function dutyList(){
        // print_r(input('get.date'));
        $data = Db::name('common_manager_duty_list')->where('status','>',0)->where('duty_date',strtotime(input('get.date')))->lists();
        $item_info = Db::name('team_base')->where('mid','<',3)->column('title','id');
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        foreach ($data as $k => $v) {
            $data[$k]['auditor_name'] = $aid_info[$v['auditor']];
            $data[$k]['duty_date'] = date('Y-m-d',$v['duty_date']).' - '.$aid_info[$v['auditor']];
            $data[$k]['location'] = $v['type']==1?($item_info[$v['project']].' - '.$item_info[$v['line']]):$v['area'];
            switch ($v['status']) {
                case 1:
                    $data[$k]['status_name'] = '待指定';
                    break;
                case 2:
                    $data[$k]['status_name'] = '待反馈';
                    break;
                case 3:
                    $data[$k]['status_name'] = '进行中';
                    break;
                case 4:
                    $data[$k]['status_name'] = '待确认';
                    break;
                case 5:
                    $data[$k]['status_name'] = '已完成';
                    break;
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //首页Meeting Minutes查阅
    public function minutesList(){
        $data = Db::name('common_manager_duty_list')->where('status','>',0)->where('status','<',3)->lists();
        $aid_info = Db::name('admin_user')->cates('id');
        $dpt_info = Db::name('admin_org')->column('title','id');
        foreach ($data as $k => $v) {
            $data[$k]['owner'] = $v['owner']>0?($dpt_info[$aid_info[$v['owner']]['dpt']].' - '.$aid_info[$v['owner']]['truename']):$v['due_dpt'];
            $data[$k]['due_date'] = $v['due_date']>0?date('Y-m-d',$v['due_date']):'';
            switch ($v['type']) {
                case 1:
                    $data[$k]['type_name'] = '值班记录';
                    break;
                case 2:
                    $data[$k]['type_name'] = '各部门Highlight';
                    break;
                default:
                    $data[$k]['type_name'] = '其他';
                    break;
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //QVC提报设备列表
    public function qvcMachineList(){
        $data = Db::name('onsite_qvc_base')->where(array('type'=>input('get.type'),'status'=>1))->order('s_number')->cates('id');
        $list = [];
        foreach ($data as $k => $v) {
            $res['text'] = $v['desc'];
            $res['value'] = $v['id'];
            array_push($list,$res);
        }
        exit(json_encode(array('data'=>$list,'info'=>$data)));
    }
    //QVC cpr记录查询
    public function qvcCprRelease(){
        $list = input('get.');
        $record  = Db::name('onsite_qvc_record')->where(array('mid'=>$list['mid'],'record_date'=>strtotime($list['date']),'m_id'=>$list['m_id']))->find();
        if($record){
            exit(json_encode(array('code'=>2)));
        }
        $m_id = Db::name('onsite_qvc_base')->where('id',$list['m_id'])->value('s_number');
        $cpr = Db::name('cc_cpr')->where(array('work_date'=>strtotime($list['date']),'m_id'=>$m_id,'mid'=>$list['mid']))->find();
        if($cpr){
            $data['dt'] = round(($cpr['dt_p']+$cpr['dt_up']-$cpr['c_w_a']-$cpr['c_t_a'])/($cpr['p_t']+$cpr['c_a']+$cpr['dt_p']+$cpr['dt_up'])*100,2);
            $data['num'] = round($cpr['p_num']/$cpr['w_t1']*60,0);
            $data['plan_num'] = round($cpr['p_num']/(($cpr['p_s']+$cpr['c_t']+$cpr['c_w_t']+$cpr['c_t_t'])/60*1.07),0);
            exit(json_encode(array('code'=>0,'data'=>$data)));
        }
        exit(json_encode(array('code'=>1)));
    }
    //QVC记录查询
    public function qvcRecordList(){
        $data = Db::name('onsite_qvc_record')->order('id desc')->limit(input('get.page')*20,20)->where('status','>',0)->where('mid',input('get.mid'))->lists();
        $total = Db::name('onsite_qvc_record')->where('mid',input('get.mid'))->where('status','>',0)->count();
        $machine_info = Db::name('onsite_qvc_base')->whereIn('id',array_column($data,'m_id'))->column('desc','id');
        foreach ($data as $k => $v) {
            $data[$k]['record_date'] = date('Y-m-d',$v['record_date']);
            $data[$k]['m_info'] = $machine_info[$v['m_id']];
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //QVC记录详情
    public function ccQvcRecordDetail(){
        $data = Db::name('onsite_qvc_record')->find(input('get.id'));
        $machine_info = Db::name('onsite_qvc_base')->find($data['m_id']);
        $data['type'] = $machine_info['type'];
        $data['v1_target'] = $machine_info['target1'];
        $data['c1_target'] = $machine_info['target3'];
        $data['c2_target'] = $machine_info['target4'];
        if($machine_info['type']==1){
            $cpr = Db::name('cc_cpr')->where(array('work_date'=>$data['record_date'],'m_id'=>$machine_info['s_number'],'mid'=>$data['mid']))->find();
            if($cpr){
                $data['c2'] = round(($cpr['dt_p']+$cpr['dt_up']-$cpr['c_w_a']-$cpr['c_t_a'])/($cpr['p_t']+$cpr['c_a']+$cpr['dt_p']+$cpr['dt_up'])*100,2);
                $data['v2'] = round($cpr['p_num']/$cpr['w_t1']*60,0);
                $data['v2_target'] = round($cpr['p_num']/(($cpr['p_s']+$cpr['c_t']+$cpr['c_w_t']+$cpr['c_t_t'])/60*1.07),0);
            }
        }
        $data['record_date'] = date('Y-m-d',$data['record_date']);
        $data['m_id_desc'] = $machine_info['desc'];
        switch ($machine_info['type']) {
            case 1:
                $data['m_id_type'] = 'Komax';
                break;
            case 2:
                $data['m_id_type'] = 'Mecal';
                break;
            case 3:
                $data['m_id_type'] = '三合一';
                break;
            case 4:
                $data['m_id_type'] = '端子超声波';
                break;
        }
        exit(json_encode(array('data'=>$data)));
    }
    //培训课程列表
    public function myCouresList(){
        $all = Db::name('common_trainning_course')->whereIn('status',[1,2])->column('id');
        $courses = Db::name('common_trainning_student')->whereIn('course_id',$all)->where(array('student_id'=>input('get.userId'),'student_type'=>input('get.type')==1?1:2))->where('status',1)->column('course_id');
        $data = Db::name('common_trainning_course')->whereIn('id',$courses)->lists();
        $aid_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');
        $now = time();
        foreach ($data as $k => $v) {
            if($v['status']==1&&$v['course_time']<$now){
                Db::name('common_trainning_course')->where('id',$v['id'])->update(['status'=>2]);
                $data[$k]['status'] = 2;
            }
            $data[$k]['course_time'] = date('Y-m-d H:i:s',$v['course_time']);
            if($v['teacher_type']==1){
                $data[$k]['teacher_from'] = $dpt_info[$v['teacher_dpt']];
                $data[$k]['teacher_name'] = $aid_info[$v['teacher_id']];
            }else{
                $data[$k]['teacher_from'] = $v['teacher_dpt'];
                $data[$k]['teacher_name'] = $v['teacher_id'];
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //培训反馈列表
    public function myCourseFeedback(){
        $data = Db::name('common_trainning_student')->order('id desc')->limit(input('get.page')*20,20)->where('status','>',0)->where(array('student_id'=>input('get.userId'),'student_type'=>input('get.type')>1?2:1))->lists();
        $total = Db::name('common_trainning_student')->where(array('student_id'=>input('get.userId'),'student_type'=>input('get.type')>1?2:1))->where('status','>',0)->count();
        $course_info = Db::name('common_trainning_course')->whereIn('id',array_column($data,'course_id'))->cates('id');
        foreach ($data as $k => $v) {
            $data[$k]['title'] = $course_info[$v['course_id']]['course'];
            $data[$k]['course_time'] = date('Y-m-d H:i:s',$course_info[$v['course_id']]['course_time']);
            if($course_info[$v['course_id']]['course_time'] < time()){
                if($course_info[$v['course_id']]['course_time'] + 3600*$course_info[$v['course_id']]['long'] > time()){
                    $data[$k]['start'] = 1;
                    if($v['sign_time']>0){
                        $data[$k]['signed'] = 1;
                    }else{
                        if($course_info[$v['course_id']]['course_time'] + 1800 < time()){
                            $data[$k]['signed'] = 0;
                        }else{
                            $data[$k]['signed'] = 2;
                        }
                    }
                }else{
                    $data[$k]['start'] = 2;
                }
            }else{
                $data[$k]['start'] = 0;
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //培训反馈详情
    public function courseFeedbackDetail(){
        $detail = Db::name('common_trainning_course')->find(input('get.c_id'));
        $creater = Db::name('admin_user')->where('id',$detail['creater'])->value('truename');
        $org_dpt = Db::name('admin_org')->where('id',$detail['org_dpt'])->value('title');
        $detail['creater'] = $org_dpt.' - '.$creater;
        $detail['course_time_show'] = date('Y-m-d H:i',$detail['course_time']).' ~ '.date('H:i',$detail['course_time']+3600*$detail['long']);
        $detail['type'] = Db::name('member_base')->where(array('mid'=>7,'content'=>$detail['type']))->value('title');
        $detail['center_type'] = Db::name('member_base')->where(array('mid'=>8,'content'=>$detail['center_type']))->value('title');
        $detail['trainning_type'] = $detail['trainning_type']==1?'线下':'线上';
        if($detail['teacher_type']==1){
            $dpt = Db::name('admin_org')->where('id',$detail['teacher_dpt'])->value('title');
            $name = Db::name('admin_user')->where('id',$detail['teacher_id'])->value('truename');
            $detail['teacher_name'] = $dpt.' - '.$name;
        }else{
            $detail['teacher_name'] = $detail['teacher_dpt'].' - '.$detail['teacher_id'];
        }
        $s_id = Db::name('common_trainning_student')->where(array('course_id'=>$detail['id'],'student_id'=>input('get.userId'),'student_type'=>input('get.type')>1?2:1,'status'=>1))->find();
        $detail['score'] = (string)$detail['score'];
        $detail['score_self'] = (string)$s_id['score'];
        if($s_id['sign_time']>0){
            $signed = 1;
        }else{
            if(time()<$detail['course_time']-300){
                $signed = 3;
            }else if(time()<$detail['course_time']+7800){
                $signed = 0;
            }else{
                $signed = 2;
            }
        }
        $timeOut = $detail['course_time']+7800 - time();
        $feedbackShow = ($detail['course_time']+3600*$detail['long'] -20*60) < time()?1:0;
        $feedback = Db::name('common_trainning_feedback')->where('s_id',$s_id['id'])->find();
        if(!$feedback){
            $feedback['s_id'] = $s_id['id'];
        }
        exit(json_encode(array('code'=>0,'detail'=>$detail,'feedback'=>$feedback,'student_id'=>$s_id['id'],'signed'=>$signed,'timeOut'=>$timeOut,'feedbackShow'=>$feedbackShow)));
    }
    //首页培训列表
    public function CouresListAll(){
        $data = Db::name('common_trainning_course')->whereIn('status',[1,2])->order('course_time')->lists();
        $aid_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');
        $now = time();
        $self = Db::name('common_trainning_student')->whereIn('course_id',array_column($data,'id'))->where(array('student_id'=>input('get.userId'),'student_type'=>input('get.type')==1?1:2,'status'=>1))->column('apply_type','course_id');
        foreach ($data as $k => $v) {
            if($v['status']==1&&$v['course_time']<$now){
                Db::name('common_trainning_course')->where('id',$v['id'])->update(['status'=>2]);
                $data[$k]['status'] = 2;
            }
            if($v['status']==2&&($v['course_time']+$v['long']*3600+3600)<$now){
                Db::name('common_trainning_course')->where('id',$v['id'])->update(['status'=>3]);
                $data[$k]['status'] = 3;
            }
            $data[$k]['course_time'] = date('m-d H:i',$v['course_time']);
            if($v['teacher_type']==1){
                $data[$k]['teacher_from'] = $dpt_info[$v['teacher_dpt']];
                $data[$k]['teacher_name'] = $aid_info[$v['teacher_id']];
            }else{
                $data[$k]['teacher_from'] = $v['teacher_dpt'];
                $data[$k]['teacher_name'] = $v['teacher_id'];
            }
            $data[$k]['course'] = '( '.($v['level']==1?'工厂级':($v['level']==2?'部门级':'未填级别')).' ) '.$data[$k]['course'];
            $data[$k]['plan'] = isset($self[$v['id']])?$self[$v['id']]:3;
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //首页文章列表
    public function getPaperList(){
        $data = [];
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>0)));
    }
    //首页文章详情
    public function getPaperDetail(){
        $data = Db::name('common_mini_paper')->find(input('get.id'));
        $content = htmlspecialchars_decode($data['content']);
        $data['content'] = str_replace("/storage", "http://10.243.226.7/storage", $content);
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //包装异常描述
    public function packingIssueDesc(){
        $data = Db::name('pcl_base')->where('mid',3)->lists();
        $list = [];
        foreach ($data as $k => $v) {
            $res['text'] = $v['title'];
            $res['value'] = $v['content'];
            array_push($list,$res);
        }
        exit(json_encode(array('data'=>$list)));
    }
    //包装异常列表
    public function packingIssueList(){
        $item = input('get.');
        $data = Db::name('pcl_packing_issue_list')->where(array('creater'=>$item['creater'],'creater_type'=>$item['creater_type']))->order('id desc')->limit(input('get.page')*20,20)->lists();
        $total = Db::name('pcl_packing_issue_list')->where(array('creater'=>$item['creater'],'creater_type'=>$item['creater_type']))->count();
        $type = Db::name('pcl_base')->where('mid',3)->column('title','content');
        foreach ($data as $k => $v) {
            $data[$k]['create_date'] = date('Y-m-d',$v['create_date']);
            $data[$k]['issue'] = $type[$v['issue']];
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //教师节培训师投票人员列表
    public function voteListLoad(){
        $data = Db::name('member_base')->where(array('mid'=>9,'content'=>input('get.type')))->lists();
        $info = Db::name('admin_user')->whereIn('username',array_column($data,'title'))->field('username,truename,dpt')->cates('username');
        $dpt_info = $this->AdminDpt();
        $vote_info = Db::name('admin_user_mobile')->where('username',input('get.eid'))->find();
        $voted = input('get.type')==1||input('get.type')==3?((int)$vote_info['temp1']>0?$vote_info['temp1']:0):((int)$vote_info['temp2']>0?$vote_info['temp2']:0);
        foreach ($data as $k => $v) {
            $data[$k]['name'] = $info[$v['title']]['truename'];
            $data[$k]['dpt'] = $dpt_info[$info[$v['title']]['dpt']];
        }
        switch (input('get.type')) {
            case 1:
                $all = Db::name('admin_user_mobile')->where('user_type',1)->where('temp1','<>',null)->column('temp1');
                break;
            case 2:
                $all = Db::name('admin_user_mobile')->where('user_type',1)->where('temp2','<>',null)->column('temp2');
                break;
            case 3:
                $all = Db::name('admin_user_mobile')->where('user_type','>',1)->where('temp1','<>',null)->column('temp1');
                break;
        }
        if($all){
            $classfiy = array_count_values($all);
        }else{
            $classfiy = [];
        }
        foreach ($data as $k => $v) {
            if(isset($classfiy[$v['title']])){
                $data[$k]['num'] = $classfiy[$v['title']];
                $data[$k]['rat'] = round($classfiy[$v['title']]/count($all)*100,1);
            }else{
                $data[$k]['num'] = 0;
                $data[$k]['rat'] = 0;
            }
        }
        array_multisort(array_column($data,'num'),SORT_DESC,$data);
        exit(json_encode(array('code'=>0,'data'=>$data,'voted'=>$voted)));
    }
    //教师节投票倒计时
    public function voteLimit(){
        $time = strtotime('2023/9/6 09:00:00');
        if(time()<$time){
            $data['day'] = floor(($time-time())/86400);
            $data['hour'] = floor(($time-time()-86400*$data['day'])/3600);
            $data['min'] = floor(($time-time()-86400*$data['day']-$data['hour']*3600)/60);
            $data['sec'] = $time-time()-86400*$data['day']-$data['hour']*3600-$data['min']*60;
        }else{
            $data['day'] = 0;
            $data['hour'] = 0;
            $data['min'] = 0;
            $data['sec'] = -1;
        }
        exit(json_encode(array('data'=>$data)));
    }
    //电测换型记录
    public function arloList(){
        $data = Db::name('onsite_alro_change_record')->where('mid',input('get.mid'))->order('id desc')->limit(input('get.page')*20,20)->lists();
        $total = Db::name('onsite_alro_change_record')->where('mid',input('get.mid'))->count();
        $info = Db::name('team_base')->whereIn('mid',[1,3])->column('title','id');
        $pid_info = Db::name('le_product_list')->whereIn('id',array_column($data,'pid'))->field('id,project,family')->cates('id');
        foreach ($data as $k => $v) {
            $data[$k]['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
            $data[$k]['project'] = $info[$pid_info[$v['pid']]['project']];
            $data[$k]['family'] = $pid_info[$v['pid']]['family']>0?$info[$pid_info[$v['pid']]['family']]:'无Family';
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //食堂稽核人员确认
    public function canteenAuditor(){
        $where = input('get.');
        $where['m_type'] = $where['m_type']==1?1:2;
        $where['status'] = 1;
        $auditor = Db::name('member_canteen_member')->where($where)->find();
        if($auditor){
            exit(json_encode(array('code'=>0)));
        }else{
            exit(json_encode(array('code'=>1)));
        }
    }
    //食堂稽核问题列表
    public function canteenIssueList(){
        $obj = Db::name('member_canteen_issue')->order('id desc')->limit(input('get.page')*15,15)->where('status','>',0)->lists();
        $map1 = [
            ['status', '>', 1],
        ];
        $map2 = [
            ['status', '=', 1],
            ['auditor', '=', input('get.mid')],
            ['auditor_type', '=', input('get.m_type')],
        ];
        $data = $obj->whereOr([$map1, $map2])->lists();
        $total = Db::name('member_canteen_issue')->whereOr([$map1, $map2])->count();
        $mid_info = Db::name('member_list')->whereIn('id',array_column($data,'auditor'))->field('id,tid,ename')->cates('id');
        $aid_info = Db::name('admin_user')->field('id,dpt,truename')->cates('id');
        $tid_info = Db::name('team_list')->column('team,id');
        $dpt_info = Db::name('admin_org')->where('mid',0)->column('title','id');
        foreach ($data as $k => $v) {
            $data[$k]['name'] = $v['auditor_type']==1?$mid_info[$v['auditor']]['ename']:$aid_info[$v['auditor']]['truename'];
            $data[$k]['dpt'] = $v['auditor_type']==1?$tid_info[$mid_info[$v['auditor']]['tid']]:$dpt_info[$aid_info[$v['auditor']]['dpt']];
            $data[$k]['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //现场问题反馈详情
    public function canteenIssueDetail(){
        $data = Db::name('member_canteen_issue')->find(input('get.id'));
        if($data['auditor_type']==1){
            $mid = Db::name('member_list')->find($data['auditor']);
            $data['auditor_name'] = $mid['ename'];
            $data['dpt'] = Db::name('team_list')->where('id',$mid['tid'])->value('team');
        }else{
            $aid = Db::name('admin_user')->find($data['auditor']);
            $data['auditor_name'] = $aid['truename'];
            $data['dpt'] = Db::name('admin_org')->where('id',$aid['dpt'])->value('title');
        }
        $data['due_date'] = $data['due_date']>0?date('Y-m-d',$data['due_date']):'';
        switch ($data['status']) {
            case 1:
                $data['status_name'] = '待反馈';
                break;
            case 2:
                $data['status_name'] = '进行中';
                break;
            case 3:
                $data['status_name'] = '待确认';
                break;
            case 4:
                $data['status_name'] = '已完成';
                break;
        }
        $data['imgs'] = Db::name('img_list')->where(array('mid'=>35,'mark'=>input('get.id'),'status'=>1))->lists();
        $data['feedback_imgs'] = Db::name('img_list')->where(array('mid'=>35,'mark'=>input('get.id'),'status'=>2))->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //PCN待签核列表
    public function pcn_list(){
        $data = Db::name('common_pcn_list')->where('sign',input('get.owner'))->whereIn('status',[2,5])->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //PCN详情
    public function pcnDetail(){
        $aid_info = Db::name('admin_user')->field('id,truename,dpt')->cates('id');
        $dpt_info = Db::name('admin_org')->where('mid',0)->column('title','id');
        $data = Db::name('common_pcn_list')->find(input('get.id'));
        $data['creater'] = $aid_info[$data['creater']]['truename'];
        $data['ie_name'] = $aid_info[$data['ie']]['truename'];
        $data['qe_name'] = $aid_info[$data['qe']]['truename'];
        $data['create_time'] = date('Y-m-d H:i',$data['create_time']);
        $data['plan_change_date'] = date('Y-m-d',$data['plan_change_date']);
        $data['plan_due_date'] = date('Y-m-d',$data['plan_due_date']);
        $detail = Db::name('common_pcn_detail')->where('p_id',$data['id'])->lists();
        $signs = Db::name('common_pcn_sign')->where('p_id',$data['id'])->lists();
        $sign1 = [];
        $sign2 = [];
        foreach ($signs as $k => $v) {
            $v['info'] = $dpt_info[$aid_info[$v['aid']]['dpt']].' - '.$aid_info[$v['aid']]['truename'];
            $v['sign_time'] = $v['status']>1?date('Y-m-d H:i:s',$v['update']):'待签核';
            if($v['item']==1){
                array_push($sign1,$v);
            }else{
                $sign2 = $v;
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'detail'=>$detail,'sign1'=>$sign1,'sign2'=>$sign2)));
    }
    //厂务维修申请单查询
    public function facilityRepairList(){
        $data = input('get.');
        if($data['type']==1){
            $list = Db::name('me_facility_list')->where('creater',$data['owner'])->where('status','>=',0)->order('id desc')->limit(input('get.page')*15,15)->lists();
            $all = Db::name('me_facility_list')->where('creater',$data['owner'])->where('status','>=',0)->count();
        }else{
            $list = Db::name('me_facility_list')->where('sign',$data['owner'])->lists();
            $all = count($list);
        }
        foreach ($list as $k => $v) {
            $list[$k]['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
        }
        exit(json_encode(array('code'=>0,'data'=>$list,'total'=>$all)));
    }
    //厂务维修申请单明细
    public function facilityRepairDetail(){
        $data = Db::name('me_facility_list')->find(input('get.id'));
        $aid_name = Db::name('admin_user')->column('truename','id');
        $data['creater_name'] = $aid_name[$data['creater']];
        $data['create_time'] = date('Y-m-d H:i:s',$data['create_time']);
        $data['required_date'] = date('Y-m-d',$data['required_date']);
        $data['apv_name'] = $aid_name[$data['apv']];
        $data['apv_imgs'] = Db::name('img_list')->where(array('mid'=>37,'status'=>1,'mark'=>$data['id']))->column('img');
        foreach ($data['apv_imgs'] as $k => $v) {
            $data['apv_imgs'][$k] = 'http://10.243.226.7'.$v;
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //圣诞节抽奖奖品
    public function getPrizes(){
        $item = input('get.');
        $open = Db::name('member_gift_event')->where('status',2)->find();
        // print_r(123);
        if($open){
            $data = Db::name('member_gift_list')->where(array('eid'=>$item['eid'],'g_id'=>$open['id']))->find();
            $prizelist = Db::name('member_gift_prizes')->where('g_id',$open['id'])->lists();
            $gift_date = date('Y-m-d H:i:s',$open['start']).' ~ '.date('Y-m-d H:i:s',$open['end']);
            foreach ($prizelist as $k => $v) {
                $awardList[$k]['title'] = $v['title'];
            }
            if($data){
                $code = $data['eid'].'.'.$data['id'].'.'.$data['g_id'].'.'.$data['s_num'].'.'.$data['level'];
                foreach ($prizelist as $k => $v) {
                    if($v['level']==$data['level']){
                        $prizelist[$k]['title'] = $v['title'].' ( '.date('Y-m-d, H:i:s',$data['create_date']).'已抽 )';
                    }
                }
                exit(json_encode(array('code'=>0,'gettime'=>date('m-d,H:i:s',$data['create_date']),'confirm'=>$data['confirm']>0?1:0,'confirm_date'=>$data['confirm']>0?date('Y-m-d H:i:s',$data['confirm']):'','ticketCode'=>$code,'awardList'=>$awardList,'title'=>$open['title'],'prizeList'=>$prizelist,'gift_date'=>$gift_date)));
            }else{
                exit(json_encode(array('code'=>1,'awardList'=>$awardList,'title'=>$open['title'],'prizeList'=>$prizelist,'gift_date'=>$gift_date)));
            }
        }else{
            exit(json_encode(array('code'=>2)));
        }
    }
    //幸运抽奖兑奖记录
    public function ticketCheckList(){
        $data = Db::name('member_gift_list')->order('id desc')->limit(input('get.page')*15,15)->where(array('g_id'=>input('get.g_id'),'aid'=>input('get.aid')))->where('confirm','>',0)->lists();
        $total = Db::name('member_gift_list')->where(array('g_id'=>input('get.aid'),'aid'=>input('get.aid')))->where('confirm','>',0)->count();
        $aid_name = Db::name('admin_user')->where('id',input('get.aid'))->value('truename');
        $aid_info = Db::name('admin_user')->cache('adminNameEid',60)->column('truename','username');
        $eid_info = Db::name('member_list')->cache('eidName',60)->where('status',1)->column('ename','eid');
        $gift_event = Db::name('member_gift_event')->where('id',input('get.g_id'))->value('title');
        $gift_level = Db::name('member_gift_prizes')->cache('giftLevel'.input('get.g_id'),60)->where('g_id',input('get.g_id'))->column('title','level');
        foreach ($data as $k => $v) {
            $data[$k]['ename'] = isset($eid_info[$v['eid']])?$eid_info[$v['eid']]:$aid_info[$v['eid']];
            $data[$k]['scan_date'] = date('Y-m-d H:i:s',$v['confirm']);
            $data[$k]['scan_aid'] = $aid_name;
            $data[$k]['gift_title'] = $gift_event;
            $data[$k]['gift_level'] = $gift_level[$v['level']];
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //工作调查反馈及专题巡检计划
    public function myWorkPlan(){
        $data = Db::name('common_work_list')->where('workers','like','%*'.input('get.aid').'*%')->where('status',1)->lists();
        $details = Db::name('common_work_detail')->whereIn('w_id',array_column($data,'id'))->where('status',1)->column('w_id');
        $details = array_unique($details);
        $aid_info = Db::name('admin_user')->column('truename','id');
        foreach ($data as $k=> $v) {
            $data[$k]['creater'] = $aid_info[$v['creater']];
            $data[$k]['due_date'] = $v['type']==1?date('Y-m-d',$v['due_date']):(date('Y-m-d',$v['start']).' ~ '.date('Y-m-d',$v['end']));
            if(in_array($v['id'],$details)==false){
                unset($data[$k]);
            }
        }
        exit(json_encode(array('code'=>0,'data'=>array_values($data))));
    }
    //工作调查反馈及专题巡检明细
    public function myWorkDetail(){
        $data = Db::name('common_work_list')->find(input('get.id'));
        $details = Db::name('common_work_detail')->whereIn('w_id',array_column($data,'id'))->where('status',1)->column('w_id');
        $details = array_unique($details);
        $aid_info = Db::name('admin_user')->column('truename','id');
        foreach ($data as $k=> $v) {
            $data[$k]['creater'] = $aid_info[$v['creater']];
            $data[$k]['due_date'] = $v['type']==1?date('Y-m-d',$v['due_date']):(date('Y-m-d',$v['start']).' ~ '.date('Y-m-d',$v['end']));
            if(in_array($v['id'],$details)==false){
                unset($data[$k]);
            }
        }
        exit(json_encode(array('code'=>0,'data'=>array_values($data))));
    }
    public function unSuggestionLoading (){
        $data = Db::name('onsite_suggestion_list')->where('status',1)->lists();
        foreach ($data as $k => $v) {
            $data[$k]['creat_date'] = date('Y-m-d,H:i:s',$v['creat_date']);
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    public function unSafeLoading (){
        $data = Db::name('onsite_safe_list')->where('status',1)->lists();
        foreach ($data as $k => $v) {
            $data[$k]['update'] = date('Y-m-d,H:i:s',$v['update']);
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    public function SuggestionConfirmLoading (){
        $dpt_owner = Db::name('member_base')->where(['mid'=>3,'title'=>input('get.aid')])->find();
        $data = [];
        if($dpt_owner){
            $data = Db::name('onsite_suggestion_list')->where(['status'=>3,'due_dpt'=>$dpt_owner['mark'],'selfshut'=>2])->lists();
        }else{
            $teams = Db::name('team_list')->where(['aid'=>input('get.aid')])->column('team');
            $data = Db::name('onsite_suggestion_list')->where('status',3)->whereIn('team',$teams)->lists();
        }
        foreach ($data as $k => $v) {
            $data[$k]['creat_date'] = date('Y-m-d,H:i:s',$v['creat_date']);
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    public function SafeConfirmLoading (){
        $data = Db::name('onsite_safe_list')->where('status',3)->lists();
        foreach ($data as $k => $v) {
            $data[$k]['update'] = date('Y-m-d,H:i:s',$v['update']);
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //离职列表
    public function perleaveList (){
        $data = Db::name('member_perleave')->where('status',1)->lists();
        $team_info = Db::name('team_list')->column('team','id');
        $aid_info = Db::name('admin_user')->column('truename','id');
        $mid_info = Db::name('member_list')->whereIn('id',array_column($data,'mid'))->column('ename','id');
        foreach ($data as $k => $v) {
            $data[$k]['team'] = $team_info[$v['tid']];
            $data[$k]['aid_name'] = $v['aid']>0?$aid_info[$v['aid']]:"";
            $data[$k]['name'] = $mid_info[$v['mid']];
            $data[$k]['perleave_date'] = date('Y-m-d',$v['perleave_date']);
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //加班车申请列表
    public function busReqList (){
        $data = Db::name('common_night_bus')->where('eid',input('get.eid'))->where('status','>',0)->order('eff_date desc')->limit(input('get.page')*20,20)->lists();
        $total = Db::name('common_night_bus')->where('eid',input('get.eid'))->where('status','>',0)->count();
        foreach ($data as $k => $v) {
            $data[$k]['update'] = date('Y-m-d H:i:s',$v['update']);
            $data[$k]['eff_date'] = date('Y-m-d',$v['eff_date']);
        }
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //加班车人数汇总
    public function busReqSummary (){
        $date = strtotime('today');
        $data = Db::name('common_night_bus')->where('status','>',0)->where('eff_date','between',[$date,$date+86400*6])->lists();
        // print_r($data);
        for ($i=0; $i < 7; $i++) { 
            $res[$i]['date'] = date('Y-m-d',$date+$i*86400);
            $res[$i][1] = 0;
            $res[$i][2] = 0;
        }
        foreach ($data as $k => $v) {
            $res[($v['eff_date']-$date)/86400][$v['item']]++;
        }
        exit(json_encode(array('code'=>0,'data'=>$res)));
    }
    //访客领餐清单
    public function getVisitorList(){
        $date = strtotime(input('get.date'));
        $data = Db::name('common_visitor_list')->where('owner',input('get.mid'))->where('start','<=',$date)->where('end','>=',$date)->lists();
        foreach ($data as $k => $v) {
            $data[$k]['start'] = date('Y-m-d',$v['start']);
            $data[$k]['end'] = date('Y-m-d',$v['end']);
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //领餐记录- 今天
    public function mealCheckList(){
        if(time()-strtotime('today')>8*3600){
            $start = strtotime('today') + 8*3600;
        }else{
            $start = strtotime('today') - 16*3600;
        }
        $data = Db::name('common_meal_sign')->where('status',2)->where('check_time','>=',$start)->order('check_time desc')->lists();
        $info_list = Db::name('admin_base')->whereIn('mid',[10,11])->field('mid,title,content')->lists();
        foreach ($info_list as $k => $v) {
            if($v['mid']===10){
                $type_info[$v['content']] = $v['title'];
            }else{
                $item_info[$v['content']] = $v['title'];
            }
        }
        foreach ($data as $k => $v) {
            $data[$k]['check_time'] = date('Y-m-d H:i:s',$v['check_time']);
            $data[$k]['item'] = $item_info[$v['item']];
            $data[$k]['type'] = $type_info[$v['type']];
            $data[$k]['eid'] = $v['eid'].'-'.$v['ename'];
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //领餐记录- 全部
    public function allMealList(){
        $data = Db::name('common_meal_sign')->where('status',2)->order('check_time desc')->limit(input('get.page')*15,15)->lists();
        $info_list = Db::name('admin_base')->whereIn('mid',[10,11])->field('mid,title,content')->lists();
        foreach ($info_list as $k => $v) {
            if($v['mid']===10){
                $type_info[$v['content']] = $v['title'];
            }else{
                $item_info[$v['content']] = $v['title'];
            }
        }
        foreach ($data as $k => $v) {
            $data[$k]['check_time'] = date('Y-m-d H:i:s',$v['check_time']);
            $data[$k]['item'] = $item_info[$v['item']];
            $data[$k]['type'] = $type_info[$v['type']];
            $data[$k]['eid'] = $v['eid'].'-'.$v['ename'];
        }
        $total = Db::name('common_meal_sign')->where('status',2)->count();
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //绩效条款
    public function performanceCheckList(){
        $aid = Db::name('admin_user')->where('username',input('get.eid'))->find();
        $leader = false;
        $dpt = 1;
        if($aid){
            $team_info = Db::name('team_list')->where('aid',$aid['id'])->cates('id');
            $tids = array_column($team_info,'id');
            $leader = count($team_info) > 0? true : false;
            $dpt = $aid['dpt'] > 4 ? 0 : $aid['dpt'];
        }else{
            $eid = Db::name('member_list')->where('eid',input('get.eid'))->find();
            $team_info = Db::name('team_list')->find($eid['tid']);
            switch ($team_info['project']) {
                case 229:
                    $dpt = 2;
                    break;
                case 546:
                    $dpt = 3;
                    break;
                case 18:
                    $dpt = 4;
                    break;
            }
        }
        // print_r($dpt);
        $data = Db::name('kpi_list')->where(['status'=>1,'dpt'=>$dpt])->lists();
        $res = [];
        $scores = [];
        foreach ($data as $k => $v) {
            if(isset($res[$v['job']])==false){
                $res[$v['job']]['text'] = $v['job'];
                $res[$v['job']]['value'] = 'i'.count($res);
                $res[$v['job']]['children'] = [];
            }
            if(isset($res[$v['job']]['children'][$v['item']])==false){
                $res[$v['job']]['children'][$v['item']]['text'] = $v['item'];
                $res[$v['job']]['children'][$v['item']]['value'] = $v['job'].'j'.count($res[$v['job']]['children']);
                $res[$v['job']]['children'][$v['item']]['children'] = [];
            }
            array_push($res[$v['job']]['children'][$v['item']]['children'],['text'=>$v['content'],'value'=>$v['id']]);
            $scores[$k] = array_intersect_key($v,array_flip(['id','type','scores']));
        }
        foreach ($res as $k => $v) {
            $res[$k]['children'] = array_values($v['children']);
        }
        // if($leader){
            $team_info = Db::name('team_list')->where('status',1)->lists();
            $project_info = Db::name('team_base')->where('mid',1)->column('title','id');
            foreach ($team_info as $k => $v) {
                if(isset($team[$v['project']])==false){
                    $team[$v['project']]['text'] = $project_info[$v['project']];
                    $team[$v['project']]['value'] = 'p'.$v['project'];
                    $team[$v['project']]['children'] = [];
                }
                array_push($team[$v['project']]['children'],['text'=>$v['team'],'value'=>$v['id']]);
            }
        // }else{
        //     $team = [];
        // }
        exit(json_encode(array('code'=>0,'data'=>array_values($res),'scores'=>$scores,'team'=>array_values($team))));
    }
    public function teamleaderKpiLoading(){
        $kpi_date = strtotime(input('get.kpi_date'));
        $start = strtotime("-1month", $kpi_date) + 22 * 86400;
        $end = $kpi_date + 21 * 86400;
        $data = Db::name('kpi_record')->where('aid',input('get.aid'))->where('kpi_date','between',[$start,$end])->where('status','>',0)->field('id,eid,kpi_date,score,status')->lists();
        $mid_name = Db::name('member_list')->whereIn('eid',array_column($data,'eid'))->column('ename','eid');
        foreach ($data as $k => $v) {
            $data[$k]['kpi_date'] = date('Y-m-d',$v['kpi_date']);
            $data[$k]['mid'] = $mid_name[$v['eid']];
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //绩效详情
    public function kpiDetail(){
        $data = Db::name('kpi_record')->find(input('get.id'));
        $data['aid_name'] = Db::name('admin_user')->where('id',$data['aid'])->value('truename');
        $data['kpi_date'] = date('Y-m-d',$data['kpi_date']);
        $data['mid'] = Db::name('member_list')->where('eid',$data['eid'])->value('id');
        $data['create_time'] = date('Y-m-d H:i:s',$data['create_time']);
        $item = Db::name('kpi_list')->find($data['item']);
        $data['title'] = $item['job'].' - '.$item['item'];
        $data['content'] = $item['content'];
        $data['scores'] = $item['scores'];
        $data['update'] = date('Y-m-d,H:i:s',$data['update']);
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //个人绩效清单
    public function performanceLoadList(){
        $kpi_date = strtotime(input('get.kpi_date'));
        $start = strtotime("-1month", $kpi_date) + 21 * 86400;
        $end = $kpi_date + 20 * 86400;
        $type = input('get.type');
        if ( $type == 1 ) {
            if(input('?get.mid')){
                $mid_info = Db::name('member_list')->find(input('get.mid'));
            }else{
                $mid_info = Db::name('member_list')->where('eid',input('get.eid'))->find();
            }
            $mids_stay = Db::name('member_list')->where(['tid'=>$mid_info['tid'],'status'=>1])->column('eid');
            $mids_leave = Db::name('member_list')->where(['tid'=>$mid_info['tid'],'status'=>2])->where('leavedate','>=',$start)->column('eid');
            $all_mid = array_merge($mids_stay,$mids_leave);
            $data = Db::name('kpi_record')->where('kpi_date','between',[$start,$end])->whereIn('eid',$all_mid)->where('status','>',0)->field('id,aid,item,eid,kpi_date,score,status')->lists();
        }else{
            if(input('?get.mid')){
                $mid = input('get.mid');
            }else{
                $mid = Db::name('admin_user')->where('username',input('get.eid'))->value('id');
            }
            $data = Db::name('kpi_record')->where('kpi_date','between',[$start,$end])->where('aid',input('get.mid'))->where('status','>',0)->field('id,aid,item,eid,kpi_date,score,status')->lists();
        }
        $my = [];
        $score = 100;
        $aid_info = Db::name('admin_user')->whereIn('id',array_column($data,'aid'))->column('truename','id');
        $item_info = Db::name('kpi_list')->whereIn('id',array_column($data,'item'))->cates('id');
        $mid_name = Db::name('member_list')->whereIn('eid',array_column($data,'eid'))->column('ename','eid');
        foreach ($data as $k => $v) {
            $data[$k]['kpi_date'] = date('Y-m-d',$v['kpi_date']);
            $data[$k]['aid'] = $aid_info[$v['aid']];
            $data[$k]['item'] = $item_info[$v['item']]['item'];
            $data[$k]['mid'] = $mid_name[$v['eid']];
            if($type ==1 && $v['eid'] == $mid_info['eid']){
                array_push($my,$data[$k]);
                $score = $score + $v['score'];
            }
        }
        exit(json_encode(array('code'=>0,'team'=>$data,'my'=>$my,'score'=>$score)));
    }
    //班组列表
    public function teamListLoad()
    {
        $data = Db::name('team_list')->where('status',1)->field('id,aid,team')->lists();
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        foreach ($data as $k => $v) {
            $data[$k]['aid_name'] = $aid_info[$v['aid']];
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //出厂物品返厂
    public function applyList(){
        $item = input('get.');
        $owner_info = Db::name('admin_user')->find($item['owner']);
        $aids = Db::name('admin_user')->where('dpt',$owner_info['dpt'])->column('id');
        $data = Db::name('common_outplant')->where('backType',2)->whereIn('owner',$aids)->limit(input('get.page')*10,10)->lists();
        $total = Db::name('common_outplant')->where('backType',2)->whereIn('owner',$aids)->count();
        $aid_info = Db::name('admin_user')->column('truename','id');
        foreach ($data as $k => $v) {
            $data[$k]['create_time'] = date('Y-m-d,H:i:s',$v['create_time']);
            $data[$k]['owner'] = $aid_info[$v['owner']];
        }
        return json(['code'=>0,'data'=>$data,'total'=>$total]);
    }
    //
    public function aidDptList(){
        $id = input('get.userId');
        $dpt = Db::name('admin_user')->where('id',$id)->value('dpt');
        $data = Db::name('admin_user')->where('dpt',$dpt)->where('status',1)->field('id as value, truename as text')->lists();
        return json(['code'=>0,'data'=>$data]);
    }
        //经理值班-我的问题
    public function wirApplyList(){
        $data = Db::name('quality_wir_list')->order('id desc')->limit(input('get.page')*15,15)->where('status','>',0)->where('owner',input('get.owner'))->lists();
        $total = Db::name('quality_wir_list')->where('owner',input('get.owner'))->where('status','>',0)->count();
        $item_info = Db::name('team_base')->where('mid','<',3)->column('title','id');
        exit(json_encode(array('code'=>0,'data'=>$data,'total'=>$total)));
    }
    //经理值班问题详情
    public function wirApplyDetail(){
        $data = Db::name('quality_wir_list')->find(input('get.id'));
        $data['wirDate'] = date('Y-m-d',$data['wirDate']);
        $data['issueDate'] = $data['issueDate']>0?date('Y-m-d',$data['issueDate']):'-';
        $data['create_time'] = date('Y-m-d H:i:s',$data['update']);
        $data['owner'] = Db::name('admin_user')->where('id',$data['owner'])->value('truename');
        $data['imgs'] = Db::name('img_list')->where(array('mid'=>55,'mark'=>input('get.id'),'status'=>1))->column('img');
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }



























    //以下是通用接口
    //部门列表
    public function dptList(){
        $dpts = Db::name('admin_org')->where('mid',0)->lists();
        $list = [];
        foreach ($dpts as $k => $v) {
            $re['text'] = $v['title'];
            $re['value'] = $v['id'];
            array_push($list,$re);
        }
        exit(json_encode(array('data'=>$list)));
    }

    //班级列表
    public function tidList(){
        $teams = Db::name('team_list')->where('status',1)->field('id,project,team')->lists();
        $projects = Db::name('team_base')->whereIn('id',array_unique(array_column($teams,'project')))->field('id,title')->order('mark')->cates('id');
        foreach ($projects as $k => $v) {
            $res['text'] = $v['title'];
            $res['value'] = 'p'.$v['id'];
            $res['children'] = [];
            $project[$k] = $res;
        }
        foreach ($teams as $k => $v) {
            $re['text'] = $v['team'];
            $re['value'] = $v['id'];
            array_push($project[$v['project']]['children'],$re);
        }
        exit(json_encode(array('data'=>array_values($project))));
    }
    //人员列表
    public function aidList(){
        $aids = Db::name('admin_user')->where('status',1)->field('id,truename,username,dpt')->order('job')->lists();
        $dpts = Db::name('admin_org')->whereIn('id',array_unique(array_column($aids,'dpt')))->field('id,title')->cates('id');
        foreach ($dpts as $k => $v) {
            $res['text'] = $v['title'];
            $res['value'] = 'd'.$v['id'];
            $res['children'] = [];
            $dpt[$k] = $res;
        }
        foreach ($aids as $k => $v) {
            $re['text'] = $v['truename'];
            $re['value'] = $v['id'];
            array_push($dpt[$v['dpt']]['children'],$re);
        }
        exit(json_encode(array('data'=>array_values($dpt))));
    }
    public function aidListLoad(){
        $aids = Db::name('admin_user')->where('status',1)->field('id,truename,username,dpt')->order('job')->lists();
        $list = [];
        $dpts = Db::name('admin_org')->where('mid',0)->column('title','id');
        foreach ($aids as $k => $v) {
            $re['text'] = $dpts[$v['dpt']].'-'.$v['truename'];
            $re['value'] = $v['id'];
            array_push($list,$re);
        }
        exit(json_encode(array('data'=>$list)));
    }
    //部门人员列表
    public function dptAidLoad(){
        $aids = Db::name('admin_user')->where(array('dpt'=>input('get.dpt'),'status'=>1))->field('id,truename,username,dpt')->order('job')->lists();
        $dpt = [];
        foreach ($aids as $k => $v) {
            $re['text'] = $v['truename'];
            $re['value'] = $v['id'];
            array_push($dpt,$re);
        }
        exit(json_encode(array('data'=>$dpt)));
    }
    //产线列表
    public function lineList(){
        $project = Db::name('team_base')->where('mid',1)->where('content','>',0)->field('id,title')->order('mark')->cates('id');
        $lines = Db::name('team_base')->where('mid',2)->whereIn('mark',array_keys($project))->lists();
        foreach ($project as $k => $v) {
            $res['text'] = $v['title'];
            $res['value'] = $v['id'];
            $res['children'] = [];
            $dpt[$k] = $res;
        }
        foreach ($lines as $k => $v) {
            $re['text'] = $v['title'];
            $re['value'] = $v['id'];
            array_push($dpt[$v['mark']]['children'],$re);
        }
        exit(json_encode(array('data'=>array_values($dpt))));
    }
    //Family列表
    public function familyList(){
        $project = Db::name('team_base')->where('mid',1)->where('content','>',0)->field('id,title')->order('mark')->cates('id');
        $lines = Db::name('team_base')->where('mid',2)->whereIn('mark',array_keys($project))->cates('id');
        $familys = Db::name('team_base')->where('mid',3)->whereIn('mark',array_keys($lines))->lists();
        foreach ($project as $k => $v) {
            $res['text'] = $v['title'];
            $res['value'] = $v['id'];
            $res['children'] = [];
            $list[$k] = $res;
        }
        foreach ($lines as $k => $v) {
            $res['text'] = $v['title'];
            $res['value'] = $v['id'];
            $res['children'] = [];
            $line[$k] = $res;
        }
        foreach ($familys as $k => $v) {
            $re['text'] = $v['title'];
            $re['value'] = $v['id'];
            array_push($line[$v['mark']]['children'],$re);
        }
        foreach ($line as $k => $v) {
            array_push($list[$lines[$v['value']]['mark']]['children'],$v);
        }
        exit(json_encode(array('data'=>array_values($list))));
    }
    //离职类型
    public function leaveType(){
        $data = Db::name('member_base')->where('mid',1)->where('mark',1)->where('id','>',100)->where('id','<',300)->where('mark',1)->field('id,title,content')->order('title')->lists();
        $list = [];
        foreach ($data as $k => $v) {
            $re['text'] = $v['title'].' - '.$v['content'];
            $re['value'] = $v['id'];
            array_push($list,$re);
        }
        $aid = [];
        $aids = Db::name('team_list')->where('status',1)->column('aid');
        $teamLeader = Db::name('admin_user')->whereIn('id',array_unique($aids))->lists();
        foreach ($teamLeader as $k => $v) {
            $re['text'] = $v['truename'];
            $re['value'] = $v['id'];
            array_push($aid,$re);
        }
        exit(json_encode(array('data'=>$list,'aid'=>$aid)));
    }
    //现场反馈问题类型
    public function onsiteIssueType(){
        $data = Db::name('onsite_base')->where('mid',6)->order('id asc')->lists();
        $list = [];
        foreach ($data as $k => $v) {
            $res['text'] = $v['title'].' - '.$v['content'];
            $res['value'] = $v['id'];
            array_push($list,$res);
        }
        exit(json_encode(array('data'=>$list)));
    }
    //QC巡检问题类型
    public function qcIssueType(){
        $data = Db::name('quality_base')->where('mid',15)->lists();
        $list = [];
        foreach ($data as $k => $v) {
            $res['text'] = $v['title'];
            $res['value'] = $v['id'];
            array_push($list,$res);
        }
        exit(json_encode(array('data'=>$list)));
    }
    //QC巡检岗位人员查询
    public function getQcquditMid(){
        $data = Db::name('member_list')->where(array('poid'=>input('get.poid'),'tid'=>input('get.tid'),'status'=>1))->find();
        exit(json_encode(array('data'=>$data)));
    }
    //班组岗位列表
    public function poidLoad(){
        $plan = Db::name('team_list')->where('id',input('get.tid'))->value('plan_id');
        $data = Db::name('team_plan_position')->where(array('plan_id'=>$plan,'status'=>1))->lists();
        $list = [];
        foreach ($data as $k => $v) {
            $res['text'] = $v['position'];
            $res['value'] = $v['id'];
            array_push($list,$res);
        }
        exit(json_encode(array('data'=>$list)));
    }
    //班组Family列表
    public function familyLoad(){
        $line = Db::name('team_list')->where('id',input('get.tid'))->value('line');
        $data = Db::name('team_base')->where(array('mark'=>$line,'mid'=>3))->lists();
        $list = [];
        foreach ($data as $k => $v) {
            $res['text'] = $v['title'];
            $res['value'] = $v['id'];
            array_push($list,$res);
        }
        exit(json_encode(array('data'=>$list)));
    }
    //人员列表
    public function aidLoad(){
        $aids = Db::name('admin_user')->where('status',1)->field('id,truename,username,dpt,job')->order('dpt,job')->lists();
        $info = Db::name('admin_org')->column('title','id');
        $list = [];
        foreach ($aids as $k => $v) {
            $res['text'] = $info[$v['dpt']].' - '.$info[$v['job']].' - '.$v['truename'];
            $res['value'] = $v['id'];
            array_push($list,$res);
        }
        exit(json_encode(array('data'=>$list)));
    }
    //FTQ异常类型列表
    public function ftqIssueList(){
        $data = Db::name('quality_base')->where('mid',1)->lists();
        $list = [];
        foreach ($data as $k => $v) {
            $res['text'] = $v['title'].$v['content'];
            $res['value'] = $v['id'];
            array_push($list,$res);
        }
        exit(json_encode(array('data'=>$list)));
    }
    //班长列表
    public function teamLeaderLoad(){
        $leader = Db::name('team_list')->where('status',1)->column('aid');
        $leader = array_unique($leader);
        $data = Db::name('admin_user')->whereIn('id',$leader)->where('dpt',1)->lists();
        $list = [];
        foreach ($data as $k => $v) {
            $res['text'] = $v['truename'];
            $res['value'] = $v['id'];
            array_push($list,$res);
        }
        exit(json_encode(array('data'=>$list)));
    }
    //部门人员列表
    public function dptUserLoad(){
        $data = Db::name('admin_user')->where(array('status'=>1,'dpt'=>input('get.dpt')))->order('job desc')->lists();
        $list = [];
        foreach ($data as $k => $v) {
            $res['text'] = $v['truename'];
            $res['value'] = $v['id'];
            array_push($list,$res);
        }
        exit(json_encode(array('data'=>$list)));
    }
    //访客来访类型
    public function vistorTypeLoad(){
        $data = Db::name('onsite_base')->where('mid',718)->lists();
        $list = [];
        foreach ($data as $k => $v) {
            $res['text'] = $v['title'];
            $res['value'] = $v['mark'];
            array_push($list,$res);
        }
        exit(json_encode(array('data'=>$list)));
    }
    //管理层权限察看
    public function managerCheck(){
        $info = Db::name('admin_user')->find(input('get.aid'));
        if($info['rightid'] >= 99){
            exit(json_encode(array('code'=>0)));
        }else{
            exit(json_encode(array('code'=>1)));
        }
    }
    public function getVersionKsk(){
        $version = Db::name('admin_base')->where('mid',6)->order('id desc')->find();
        $log = Db::name('admin_base')->where('title',$version['title'])->column('content');
        $data = Db::name('admin_update_log')->whereIn('create_date',$log)->column('content');
        $res = '';
        foreach ($data as $k => $v) {
            $res = $res==''?('1.'.$v):($res.';'.($k+1).'.'.$v);
        }
        exit($res);
    }
    public function kskEidCheck(){
        $mid_info = Db::name('member_list')->where('eid',input('get.eid'))->find();
        if($mid_info){
            $tid_info = Db::name('team_list')->whereIn('line',[20,21])->where('status',1)->cates('id');
            if(in_array($mid_info['tid'],array_keys($tid_info))==false){
                exit(json_encode(array('code'=>1,'msg'=>'非KSK员工！')));
            }else{
                $info['line_name'] = $tid_info[$mid_info['tid']]['line']==21?'EB':'FL';
                $start_today = strtotime('today')+6.5*1800+$tid_info[$mid_info['tid']]['shift_type']*1800; 
                if(time()>$start_today){
                    $workdate = strtotime('today');
                }else{
                    $workdate = strtotime('today')-86400;
                }
                $info['mid'] = $mid_info['id'];
                $info['ename'] = $mid_info['ename'];
                $info['eid'] = $mid_info['eid'];
                $info['workdate'] = date('Y/m/d',$workdate);
                $info['shift'] = $tid_info[$mid_info['tid']]['shift'];
                $positions = Db::name('design_base')->where(array('mid'=>4,'mark'=>$tid_info[$mid_info['tid']]['line']))->field('id,title')->lists();
                foreach ($positions as $k => $v) {
                    $poid_info[$k]['value'] = $v['id'];
                    $poid_info[$k]['text'] = $v['title'];
                }
                $order = Db::name('le_ksk_order')->where(array('scan_date'=>$workdate,'scan_shift'=>$tid_info[$mid_info['tid']]['shift']))->where('end',null)->order('scan_order')->find();
                if($order){
                    $bom_info = Db::name('le_ksk_bom')->where('bom',$order['bom'])->field('id,bom,driver,mark,desc')->find();
                    $bom['s_id'] = $order['scan_order'];
                    $bom['bom_id'] = $order['bom'];
                    $bom['order'] = $order['order'];
                    $bom['lr'] = $bom_info['driver']==1?'左舵':'右舵';
                    $bom['agv'] = $order['agv']>0?($order['agv']==1?'A车':'B车'):'未设置';
                    switch ($bom_info['desc']) {
                        case 'H':
                            $bom['desc'] = 'PHEV';
                            break;
                        case 'C':
                            $bom['desc'] = '柴油';
                            break;
                        case 'C':
                            $bom['desc'] = '48V';
                            break;
                        default:
                            $bom['desc'] = '';
                            break;
                    }
                }else{
                    $bom = [];
                }
                
            }
            exit(json_encode(array('code'=>0,'info'=>$info,'position'=>$poid_info,'bom'=>$bom)));
        }else{
            exit(json_encode(array('code'=>1,'msg'=>'工号异常！')));
        }
    }
    public function kskGetModules(){
        $data = input('get.');
        $step_info = Db::name('design_base')->find($data['position']);
        $step = $step_info['content'];
        //AGV排序
        if($step==1&&$data['click']==1){
            $now_work = Db::name('le_ksk_order')->where(array('scan_date'=>strtotime($data['date']),'scan_shift'=>$data['shift'],'scan_order'=>$data['order']))->find();
            if($now_work){
                if($now_work['start']==null){
                    Db::name('le_ksk_order')->where('id',$now_work['id'])->update(['start'=>time()]);
                }
                if($now_work['end']==null&&$step_info['status']==2){
                    Db::name('le_ksk_order')->where('id',$now_work['id'])->update(['end'=>time()]);
                }
                if($now_work['agv']>0){
                    Db::name('le_ksk_order')->where(array('scan_date'=>$now_work['scan_date'],'scan_shift'=>$now_work['scan_shift'],'scan_order'=>$now_work['scan_order']+1))->update(['agv'=>$now_work['agv']==1?2:1]);
                }
            }
        }
        $order_num = (int)$data['order']-1+(int)$step;
        $max_order = Db::name('le_ksk_order')->where(array('scan_date'=>strtotime($data['date']),'scan_shift'=>$data['shift']))->order('scan_order desc')->value('scan_order');
        if($order_num > $max_order){
            if($data['shift']==1){
                $order = Db::name('le_ksk_order')->where(array('scan_date'=>strtotime($data['date']),'scan_shift'=>2,'scan_order'=>$order_num-$max_order))->find();
            }else{
                $order = Db::name('le_ksk_order')->where(array('scan_date'=>strtotime($data['date'])+86400,'scan_shift'=>1,'scan_order'=>$order_num-$max_order))->find();
            }
        }else{
            $order = Db::name('le_ksk_order')->where(array('scan_date'=>strtotime($data['date']),'scan_shift'=>$data['shift'],'scan_order'=>$order_num))->find();
        }
        if($order){
            $bom_info = Db::name('le_ksk_bom')->where('bom',$order['bom'])->field('id,bom,driver,mark,desc')->find();
            $bom['s_id'] = (int)$data['order'];
            $bom['bom_id'] = $order['bom'];
            $bom['order'] = $order['order'];
            $bom_module = Db::name('le_ksk_relation')->where('bom_id',$order['bom'])->cache(600)->column('module_id');
            if(input('get.position')==141){
                $plag = Db::name('design_base')->where(array('mid'=>6,'title'=>1))->whereIn('mark',$bom_module)->column('content');
                sort($plag);
                $content = '';
                foreach ($plag as $k => $v) {
                    $content = $content==''?$v:($content.','.$v);
                }
                $connector = Db::name('design_base')->where(array('mid'=>7,'mark'=>$content))->value('content');
            }
            $bom['lr'] = ($bom_info['driver']==1?'左舵':'右舵').(input('get.position')==144?'( '.$connector.' )':'');
            if(input('get.position')==142){
                $plag = Db::name('design_base')->where(array('mid'=>6,'title'=>2))->whereIn('mark',$bom_module)->column('content');
                sort($plag);
                $content = '';
                foreach ($plag as $k => $v) {
                    $content = $content==''?$v:($content.','.$v);
                }
                $connector1 = Db::name('design_base')->where(array('mid'=>7,'mark'=>$content))->value('content');
                // print_r($connector1);
            }
            switch ($bom_info['desc']) {
                case 'H':
                    $bom['desc'] = 'PHEV';
                    break;
                case 'C':
                    $bom['desc'] = '柴油';
                    break;
                case 'V':
                    $bom['desc'] = '48V'.(isset($connector1)?('( '.$connector1.' )'):'');
                    break;
                default:
                    $bom['desc'] = '';
                    break;
            }
            $bom_dpns = Db::name('le_ksk_module')->whereIn('module',$bom_module)->cache(600)->column('dpn','id');
            $modules = Db::name('design_base')->where('mid',5)->where('title',$data['position'])->whereIn('content',array_keys($bom_dpns))->column('content');
            $list = [];
            foreach ($modules as $k => $v) {
                $list[$k] = $bom_dpns[$v];
            }
            if(count($list)>0){
                sort($list);
            }
            //上一个BOMID
            if($order_num==1){
                if($data['shift']==1){
                    $compare_order = Db::name('le_ksk_order')->where(array('scan_date'=>strtotime($data['date'])-86400,'scan_shift'=>2))->order('scan_order desc')->find();
                }else{
                    $compare_order = Db::name('le_ksk_order')->where(array('scan_date'=>strtotime($data['date']),'scan_shift'=>1))->order('scan_order desc')->find();
                }
            }else{
                $compare_order = Db::name('le_ksk_order')->where(array('scan_date'=>strtotime($data['date']),'scan_shift'=>$data['shift'],'scan_order'=>$order_num-1))->find();
            }
            $re = [];
            if($compare_order){
                $compare_bom_module = Db::name('le_ksk_relation')->where('bom_id',$compare_order['bom'])->cache(600)->column('module_id');
                $compare_bom_dpns = Db::name('le_ksk_module')->whereIn('module',$compare_bom_module)->cache(600)->column('dpn','id');
                $compare_modules = Db::name('design_base')->where('mid',5)->where('title',$data['position'])->whereIn('content',array_keys($compare_bom_dpns))->column('content');
                
                foreach ($compare_modules as $k => $v) {
                    $re[$k] = $compare_bom_dpns[$v];
                }
            }
            //对比
            $new = array_diff($list,$re);
            $out = array_diff($re,$list);
            rsort($out);
            $res = [];
            foreach ($list as $k => $v) {
                $res[$k]['order'] = $k+1;
                $res[$k]['module'] = $v;
                $res[$k]['mark'] = in_array($v,$new)?'新增':'';
                $res[$k]['sign'] = in_array($v,$new)?1:0;
            }
            foreach ($out as $k => $v) {
                $r['order'] = 0;
                $r['module'] = $v;
                $r['mark'] = '取消';
                $r['sign'] = 2;
                array_unshift($res,$r);
            }
            $change = $compare_order?($order['bom']==$compare_order['bom']?0:1):1;
            //AGV排序
            if($step==1){
                $now_work = Db::name('le_ksk_order')->where(array('scan_date'=>strtotime($data['date']),'scan_shift'=>$data['shift'],'scan_order'=>$data['order']))->find();
                if($now_work['agv']>0){
                    Db::name('le_ksk_order')->where(array('scan_date'=>$now_work['scan_date'],'scan_shift'=>$now_work['scan_shift'],'scan_order'=>$now_work['scan_order']+1))->update(['agv'=>$now_work['agv']==1?2:1]);
                }
            }
            $add = array_intersect_key($data,['mid'=>0,'click'=>0,'bom'=>0,'position'=>0,'order'=>0]);
            $add['update'] = time();
            Db::name('le_ksk_online_click')->insert($add);
            exit(json_encode(array('code'=>0,'data'=>$res,'bom'=>$bom,'change'=>$change)));
        }else{
            exit(json_encode(array('code'=>1,'msg'=>'未找到预排序工单，请先排序！')));
        }
    }
    public function getVersionWdr(){
        $version = Db::name('admin_base')->where('mid',6)->order('id desc')->find();
        $log = Db::name('admin_base')->where('title',$version['title'])->column('content');
        $data = Db::name('admin_update_log')->whereIn('create_date',$log)->column('content');
        $res = '';
        foreach ($data as $k => $v) {
            $res = $res==''?('1.'.$v):($res.';'.($k+1).'.'.$v);
        }
        exit($res);
    }
    public function getEidInfo(){
        $data = Db::name('member_list')->where('eid',input('get.eid'))->find();
        if($data){
            if($data['status'] == 1){
                return json(['code'=>0 , 'data'=>$data]);
            }else{
                if(time() - $data['leavedate'] < 30*86400){
                    return json(['code'=>0 ,'data'=>$data]);
                }else{
                    return json(['code'=>1 ,'msg'=>'离职超1个月！']);
                }
            }
        }else{
            return json(['code'=>1,'msg'=>'无此工号！']);
        }
    }




    //获取openid
    public function getOpenid($code) {
        $secret = "d0b07fa70190ad9ca857ceb2986448b4";
        $appid = "wx7e20ac89979b477a";
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$secret."&js_code=".$code."&grant_type=authorization_code";
        // print_r($url);die;
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_HEADER,false); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不验证证书
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //不验证证书
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10); 
        $res = curl_exec($ch);
        $info = curl_getinfo($ch);
        curl_close($ch);
        return $res;
    }
    public function get_openid_h5(){
        $data['eid'] = input('get.eid');
        return View('',$data);
    }
    public function get_openid_info(){
        //第一步：用户同意授权，获取code
        $code = $_REQUEST["code"];
        $eid = $_REQUEST["state"];
        //第二步：通过code换取网页授权access_token//
        $urlwx = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxc09a873c089683ae&secret=d0f123bf85cab46c1300d6a59325e788&code=".$code."&grant_type=authorization_code";  
        // print_r($urlwx);die;
        $ch = curl_init();
        $timeout = 10;
        curl_setopt($ch,CURLOPT_URL,$urlwx);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);         //返回结果
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);      //设置超时   
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);       //https请求不验证证书
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);       //https请求不验证hosts   
        $output = curl_exec($ch);
        curl_close($ch);




        // $output = file_get_contents($urlwx,false,stream_context_create($stream_opts));
        $jsonwx = json_decode($output,true);
        $openid = $jsonwx["openid"];
        $record = Db::name('admin_user_mobile')->where('gzhOpenid',$openid)->find();
        if($record){
            if($record['user_type']==1){
                $name = Db::name('member_list')->where('id',$record['user_id'])->value('ename');
            }else{
                $name = Db::name('admin_user')->where('id',$record['user_id'])->value('truename');
            }
            echo "<h1 style='text-decoration:none;font-size:50px'><span style='color:red'>公众号绑定失败！<br></span>此微信的《安波福CQ运营管理》服务号已被<span style='color:red'>".$name."</span>绑定！<h1><br>";
        }else{
            Db::name('admin_user_mobile')->where('username',$eid)->update(['gzhOpenid'=>$openid]);
            echo "<h1 style='text-decoration:none;color:blue;font-size:60px'>公众号绑定成功！<h1><br><h1 style='text-decoration:none;color:blue;font-size:40px'>请点击右上角三个点选择重新进入小程序<h1><br>";
        }
    }    
}
