<?php
namespace app\adminVue\controller;

use app\BaseController;
use think\facade\Db;
use think\facade\Cache;
use think\Request;

class Common extends TokenCheck
{   
    // 获取部门在职人员ID及姓名
    public function dptUserList(){
        $data = Db::name('admin_user')->where(array('dpt'=>input('get.dpt'),'status'=>1))->field('id,truename')->order('job')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //班长管理的班组列表
    public function aidTeamList(){
        $data = Db::name('team_list')->where(array('aid'=>session('admin')['id'],'status'=>1))->field('id,team,type,mark')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //产线列表  级联选择器
    public function lineList(){
        $data = Db::name('team_base')->where('mid','<',3)->order('mark')->lists();
        // print_r($data);die;
        foreach ($data as $k => $v) {
            if($v['mid']==1&&$v['content']>0){
                $list[$v['id']]['value'] = $v['id'];
                $list[$v['id']]['label'] = $v['title'];
                $list[$v['id']]['children'] = [];
            }
        }
        foreach ($data as $k => $v) {
            if($v['mid']==2&&isset($list[$v['mark']])){
                $res['value'] = $v['id'];
                $res['label'] = $v['title'];
                array_push($list[$v['mark']]['children'],$res);
            }
        }
        exit(json_encode(array('code'=>0,'data'=>array_values($list))));
    }
    //产线列表  级联选择器
    public function mfgLineList(){
        $data = Db::name('team_base')->where('mid','<',3)->order('mark')->lists();
        // print_r($data);die;
        foreach ($data as $k => $v) {
            if($v['mid']==1&&($v['content']==1||$v['content']==2)){
                $list[$v['id']]['value'] = $v['id'];
                $list[$v['id']]['label'] = $v['title'];
                $list[$v['id']]['children'] = [];
            }
        }
        foreach ($data as $k => $v) {
            if($v['mid']==2&&isset($list[$v['mark']])){
                $res['value'] = $v['id'];
                $res['label'] = $v['title'];
                array_push($list[$v['mark']]['children'],$res);
            }
        }
        exit(json_encode(array('code'=>0,'data'=>array_values($list))));
    }
    //所有部门人员列表
    public function allUserList(){
        $data = Db::name('admin_user')->where('status',1)->order('job')->lists();
        foreach ($data as $k => $v) {
            if(isset($user[$v['job']])==false){
                $user[$v['job']] = [];
            }
            $res['value'] = $v['id'];
            $res['label'] = $v['truename'];
            array_push($user[$v['job']],$res);
        }
        $dpt = Db::name('admin_org')->lists();
        foreach ($dpt as $k => $v) {
            if($v['mid']==0){
                $list[$v['id']]['value'] = $v['id'];
                $list[$v['id']]['label'] = $v['title'];
                $list[$v['id']]['children'] = [];
            }
        }
        foreach ($dpt as $k => $v) {
            if($v['mid']>0&&isset($user[$v['id']])&&isset($list[$v['mid']])){
                $res['value'] = $v['id'];
                $res['label'] = $v['title'];
                $res['children'] = $user[$v['id']];
                array_push($list[$v['mid']]['children'],$res);
            }
        }
        exit(json_encode(array('code'=>0,'data'=>array_values($list))));
    }
    //班组产能方案
    public function teamPlanList(){
        $line = Db::name('team_list')->where('id',input('get.tid'))->value('line');
        $data = Db::name('team_plan_capacity')->where(array('line'=>$line,'status'=>1))->lists();
        $info = Db::name('team_base')->where('mid','<',3)->column('title','id');
        foreach ($data as $key => $value) {
            $data[$key]['project'] = $info[$value['project']];
            $data[$key]['line'] = $info[$value['line']];
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //班长列表
    public function teamleaderList(){
        $aids = Db::name('team_list')->where('status',1)->column('aid');
        $data = Db::name('admin_user')->whereIn('id',array_unique($aids))->field('id,truename')->order('dpt')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //员工个人技能列表
    public function memberSkillList(){
        $data = Db::name('member_skill')->where(array('mid'=>input('get.mid'),'status'=>1))->order('skill_type desc')->lists();
        $skill_info = Db::name('quality_base')->where('mid',2)->column('content','id');
        foreach ($data as $key => $value) {
            $data[$key]['skill_name'] = $skill_info[$value['skill_id']];
            $data[$key]['eff_date'] = date('Y-m-d',$value['eff_date']);
            $data[$key]['days'] = round(($value['eff_date']-strtotime('today'))/86400,0);
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //普通岗位技能列表
    public function normalSkillList(){
        $data = Db::name('quality_base')->where(array('mid'=>2,'title'=>1,'status'=>1))->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //所有岗位技能列表
    public function allSkillList(){
        $data = Db::name('quality_base')->where(array('mid'=>2,'status'=>1))->order('title')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //班组产能方案岗位列表
    Public function teamPlanPositionList(){
        $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))->field('id,position')->order('order')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data,'plan_id'=>$plan)));
    }
    //班组考勤岗位列表
    Public function teamAttensPositionList(){
        $item = input('get.');
        $item['kq_date'] = strtotime($item['kq_date']);
        $attend = Db::name('le_attendance')->where($item)->column('mid','poid');
        $data = Db::name('team_plan_position')->where('id','>',10)->whereIn('id',array_keys($attend))->field('id,position')->order('order')->lists();
        foreach ($data as $k => $v) {
            $data[$k]['mid'] = $attend[$v['id']];
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //临时岗位原因类型
    Public function tempPositionTypeList(){
        $data = Db::name('team_base')->where('mid',11)->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //班组信息
    Public function getTeamInfo(){
        $data = Db::name('team_list')->find(input('get.id'));
        $data['aid_name'] = Db::name('admin_user')->where('id',$data['aid'])->value('truename');
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //生产部班长列表
    Public function mfgTeamleaderList(){
        $aids = Db::name('team_list')->where('status',1)->column('aid');
        $data = Db::name('admin_user')->where('dpt',1)->field('id,truename')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //获取DPN列表，关键字查询
    Public function getDpnList(){
        $line = Db::name('team_list')->where('id',input('get.tid'))->value('line');
        $familys = Db::name('team_base')->where(array('mid'=>3,'mark'=>$line))->column('title','id');
        $data = Db::name('le_product_list')->whereIn('family',array_keys($familys))->where('dpn','like','%'.input('get.kw').'%')->lists();
        $project_info = Db::name('team_base')->where('mid',1)->cache('projectName',600)->column('title','id');
        foreach ($data as $k => $v) {
            $data[$k]['project_name'] = $project_info[$v['project']];
            $data[$k]['family_name'] = $familys[$v['family']];
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //生产部班组列表
    Public function getTeamNameList(){
        $obj = Db::name('team_base')->where('mid',1);
        switch (input('get.project')) {
            case 1:
                $obj = $obj->where('content',2);
                break;
            case 2:
                $obj = $obj->whereIn('content',[1,2]);
                break;
        }
        $project = $obj->column('id');
        $data = Db::name('team_list')->where('status',1)->whereIn('project',$project)->field('team,aid,id')->order('project')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //生产部班组列表  级联选择
    Public function getTeamNameStepList(){
        $obj = Db::name('team_base')->where('mid',1);
        switch (input('get.project')) {
            case 1:
                $obj = $obj->where('content',2);
                break;
            case 2:
                $obj = $obj->whereIn('content',[1,2]);
                break;
        }
        $project = $obj->column('id');
        $data = Db::name('team_list')->where('status',1)->whereIn('project',$project)->field('project,team,aid,id')->order('project')->lists();
        $project_info = Db::name('team_base')->where('mid',1)->column('title','id');
        foreach ($data as $k => $v) {
            if(isset($list[$v['project']])==false){
                $list[$v['project']]['value'] = $v['project'];
                $list[$v['project']]['label'] = $project_info[$v['project']];
                $list[$v['project']]['children'] = [];
            }
            $res['value'] = $v['id'];
            $res['label'] = $v['team'];
            array_push($list[$v['project']]['children'],$res);
        }
        exit(json_encode(array('code'=>0,'data'=>array_values($list))));
    }
    //项目名称列表
    Public function getProjectNameList(){
        $obj = Db::name('team_base')->where('mid',1);
        switch (input('get.project')) {
            case 1:
                $obj = $obj->where('content',2);
                break;
            case 2:
                $obj = $obj->whereIn('content',[1,2]);
                break;
            case 3:
                $obj = $obj->whereIn('content',[1,2,4]);
                break;
        }
        $data = $obj->order('content')->field('id,title')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //获取FTQ异常类型列表
    Public function getFtqIssueType(){
        $data = Db::name('quality_base')->where('mid',1)->order('title')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //根据岗位找员工-实时
    public function getPositionMember(){
        $data = Db::name('member_list')->where(array('poid'=>input('get.poid'),'status'=>1))->field('id,ename')->find();
        if($data){
            exit(json_encode(array('code'=>0,'data'=>$data)));
        }else{
            http_response_code(440);
            exit(json_encode(array('code'=>1,'msg'=>'此岗位未设置人员！')));
        }
    }
    //根据岗位日期找员工
    public function getPositionMemberByDate(){
        $attance = Db::name('le_attendance')->where(array('poid'=>input('get.poid'),'kq_date'=>strtotime(input('get.date'))))->find();
        if(!$attance){
            http_response_code(440);
            exit(json_encode(array('code'=>1,'msg'=>'未查到'.input('get.date').'此岗位工作人员！')));
        }
        $data = Db::name('member_list')->find($attance['mid']);
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //获取QC巡检的问题类型
    Public function getQcDefectType(){
        $data = Db::name('quality_base')->where('mid',15)->order('title')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //班组人员列表
    Public function getTeamMemnberList(){
        $data = Db::name('member_list')->where(array('status'=>1,'tid'=>input('get.tid')))->field('id,eid,ename,poid')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //流程记录
    Public function getProcessList(){
        $data = Db::name('common_process_list')->where(array('mid'=>input('get.mid'),'item_id'=>input('get.itemId')))->lists();
        foreach ($data as $k => $v) {
            $data[$k]['time'] = date('Y-m-d H:i:s',$v['time']);
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //现场问题类型
    public function getOnsiteIssueType(){
        $data = Db::name('onsite_base')->where('mid',6)->order('title')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //获取班组Family信息
    public function getTeamFamilyList(){
        $line = Db::name('team_list')->where('id',input('get.tid'))->value('line');
        $familys = Db::name('team_base')->where(array('mid'=>3,'mark'=>$line))->lists();
        exit(json_encode(array('code'=>0,'data'=>$familys)));
    }
    //所有部门列表
    public function getDptList(){
        $data = Db::name('admin_org')->where('mid',0)->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //WIR
    public function getWirIssueFromList(){
        $data = Db::name('quality_base')->where('mid',14)->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //根据产线班别找班组ID
    public function getTidByLine(){
        $id = Db::name('team_list')->where(input('get.'))->where('status',1)->value('id');
        if($id){
            exit(json_encode(array('code'=>0,'data'=>$id)));
        }else{
            http_response_code(440);
            exit(json_encode(array('code'=>1,'msg'=>'未查到对应班组！')));
        }
        
    }
    //根据Mid查员工信息
    public function getMidInfo(){
        $data = Db::name('member_list')->find(input('get.mid'));
        if($data){
            exit(json_encode(array('code'=>0,'data'=>$data)));
        }else{
            http_response_code(440);
            exit(json_encode(array('code'=>1,'msg'=>'未查到对应员工信息！')));
        }
        
    }
    //Daily Issue 原因类型列表
    public function getWirIssueTypeList(){
        $data = Db::name('quality_base')->whereIn('mid',[5,6,2100,19])->lists();
        $type = [];
        $method = [];
        $qr = [];
        foreach ($data as $k => $v) {
            if($v['mid']==5&&$v['title']==1&&$v['mark']>0){
                $list[$v['mark']]['value'] = $v['id'];
                $list[$v['mark']]['label'] = $v['content'];
                $list[$v['mark']]['children'] = [];
            }
            if($v['mid']==6){
                array_push($type,$v);
            }
            if($v['mid']==2100){
                array_push($method,$v);
            }
            if($v['mid']==19){
                array_push($qr,$v);
            }
        }
        foreach ($data as $k => $v) {
            if($v['mid']==5&&$v['title']==2&&$v['mark']>0){
                $res['value'] = $v['id'];
                $res['label'] = $v['content'];
                array_push($list[$v['mark']]['children'],$res);
            }
        }
        exit(json_encode(array('code'=>0,'data'=>array_values($list),'type'=>$type,'method'=>$method,'qr'=>$qr)));
    }
    //获取关键岗位技能列表
    public function getKeySkillNameList(){
        $data = Db::name('quality_base')->where(array('mid'=>2,'title'=>2))->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //根据Eid查员工信息
    public function getEidInfo(){
        $data = Db::name('member_list')->where('eid',input('get.eid'))->find();
        if(!$data){
            http_response_code(440);
            exit(json_encode(array('code'=>1,'msg'=>'未查到对应员工信息！')));
        }
        $team = Db::name('team_list')->find($data['tid']);
        $data['team'] = $team['team'];
        $data['aid_name'] = Db::name('admin_user')->where('id',$team['aid'])->value('truename');
        $self = Db::name('member_skill')->where(array('mid'=>$data['id'],'on_self'=>1))->find();
        if($self){
            $data['on_self'] = Db::name('quality_base')->where('id',$self['skill_id'])->value('content');
        }else{
            $data['on_self'] = "";
        }
        if($data['poid']>0){
            $data['position'] = Db::name('team_plan_position')->where('id',$data['poid'])->value('position');
        }else{
            $data['position'] = "";
        }
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //获取量具类型列表
    public function getMeasureTypeList(){
        $data = Db::name('quality_base')->where('mid',18)->field('title,content')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //获取操作人列表
    public function getOwnerWorkerList(){
        $owners = Db::name('admin_base')->where('mid',input('get.mid'))->where('title',1)->column('content');
        exit(json_encode(array('code'=>0,'data'=>$owners)));
    }
    //功能项操作人表格
    public function getOwnerData(){
        $data = Db::name('admin_base')->where('mid',input('get.mid'))->field('id,title,content')->lists();
        $aid_info = Db::name('admin_user')->whereIn('id',array_column($data,'content'))->column('truename','id');
        foreach ($data as $k => $v) {
            $data[$k]['owner_name'] = $aid_info[$v['content']];
        }
        exit($this->lay_table($data));
    }
    //操作人员状态变更
    public function ownerStatusChange(){
        Db::name('admin_base')->where('id',input('post.id'))->update(['title'=>input('post.title')]);
        exit(json_encode(array('code'=>0,'msg'=>'设置成功')));
    }
    //操作人删除
    public function ownerDelete(){
        Db::name('admin_base')->where('id',input('post.id'))->delete();
        exit(json_encode(array('code'=>0,'msg'=>'删除成功')));
    }
    //LP工艺类型列表
    public function getLpItemList(){
        $data = Db::name('onsite_base')->where(array('mid'=>7,'mark'=>1))->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //DPN产品的具体信息
    public function getDpnInfo(){
        $data = Db::name('le_product_list')->where(array('dpn'=>input('get.dpn')))->find();
        if($data){
            $info = Db::name('team_base')->whereIn('mid',[1,3])->cache('projectAndFamilyName',900)->column('title','id');
            $data['project'] = $info[$data['project']];
            $data['family'] = isset($info[$data['family']])?$info[$data['family']]:'未设置';
            exit(json_encode(array('code'=>0,'data'=>$data)));
        }else{
            http_response_code(440);
            exit(json_encode(array('code'=>1,'msg'=>'无此DPN:'.input('get.dpn').'相关数据！')));
        }
        
    }
    //设备类型列表  级联选择器
    public function machineTypeList(){
        $data = Db::name('me_base')->where('mid','<',3)->order('mark')->where('status',1)->lists();
        // print_r($data);die;
        foreach ($data as $k => $v) {
            if($v['mid']==1){
                $list[$v['id']]['value'] = $v['id'];
                $list[$v['id']]['label'] = $v['title'];
                $list[$v['id']]['children'] = [];
            }
        }
        foreach ($data as $k => $v) {
            if($v['mid']==2){
                $res['value'] = $v['id'];
                $res['label'] = $v['title'];
                array_push($list[$v['mark']]['children'],$res);
            }
        }
        exit(json_encode(array('code'=>0,'data'=>array_values($list))));
    }
    //路由标题列表
    public function getRouteTitles(){
        $data = Db::name('admin_menus_vue')->where('condition','/')->field('frontpath,name')->lists();
        exit(json_encode(array('code'=>0,'data'=>$data)));
    }
    //电子盘点位置级联选择器
    public function invAddressCascader(){
        $data = Db::name('onsite_inventory')->field('project,line,rack')->lists();
        $info = Db::name('team_base')->where('mid','<',3)->cates('id');
        foreach ($data as $k => $v) {
            if(isset($line[$v['line']])==false){
                $line[$v['line']]['value'] = $v['line'];
                $line[$v['line']]['label'] = $info[$v['line']]['title'];
                $line[$v['line']]['children'] = [];
            }
            $line[$v['line']]['children'][$v['rack']]['value'] = $v['rack'];
            $line[$v['line']]['children'][$v['rack']]['label'] = $v['rack'];
        }
        foreach ($line as $k => $v) {
            if(isset($res[$info[$k]['mark']])==false){
                $res[$info[$k]['mark']]['value'] = $info[$k]['mark'];
                $res[$info[$k]['mark']]['label'] = $info[$info[$k]['mark']]['title'];
                $res[$info[$k]['mark']]['children'] = [];
            }
            $v['children'] = array_values($v['children']);
            array_push($res[$info[$k]['mark']]['children'],$v);
        }
        exit(json_encode(array('code'=>0,'data'=>array_values($res))));
    }
    //领餐类型
    public function getMealSignTypes(){
        $data = Db::name('admin_base')->whereIn('mid',[10,11])->field('mid,title,content')->lists();
        $types = [];
        $items = [];
        foreach ($data as $k => $v) {
            if($v['mid']===10){
                array_push($types,$v);
            }else{
                array_push($items,$v);
            }
        }
        exit(json_encode(array('code'=>0,'types'=>$types,'items'=>$items)));
    }
    
}
