<?php
namespace app\adminVue\controller;

use app\BaseController;
use think\facade\Db;
use think\facade\Cache;
use think\facade\Session;
use think\Request;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use app\admin\model\QualityFtqList;

class CsGet extends TokenCheck
{   
     //总装FTQ查询
     public function getFaFtqList(){
        $item = input('get.');
        $obj = Db::name('Quality_ftq_list')->where('status','>',0);
		if(isset($item['view_date'])==true&&$item['view_date']!==''){
			$start = strtotime(strstr($item['view_date'],'~',true));
        	$end = strtotime(substr($item['view_date'],-10));
        	$obj = $obj->whereBetween('ftq_date',[$start,$end]);
		}
		if(isset($item['project'])==true&&$item['project']!==''){
			$tid_list = Db::name('team_list')->where('project',$item['project'])->column('id');
			$obj = $obj->whereIn('tid',$tid_list);
		}
        if(isset($item['view'])&&$item['view']==1){
			$obj = $obj->where('creater|aid',session('admin')['id']);
		}
        if(isset($item['signed'])&&$item['signed']!==null&&$item['signed']<2){
			$obj = $obj->where('signed',$item['signed']==1?1:0);
		}
		$data = $obj->order('id desc')->pages($item['limit']);
        $tid_info = Db::name('team_list')->field('id,team,project')->cates('id');
        $project_info = Db::name('team_base')->where('mid',1)->column('title','id');
        $issue_info = Db::name('quality_base')->where('mid',1)->column('content','id');
        $position_info = Db::name('team_plan_position')->whereIn('id',array_merge(array_column($data['lists'],'issue_poid'),array_column($data['lists'],'find_poid')))->column('position','id');
        $mid_info = Db::name('member_list')->whereIn('id',array_unique(array_merge(array_column($data['lists'],'creater'),array_column($data['lists'],'issue_mid'),array_column($data['lists'],'find_mid'))))->column('ename','id');
        $aid_info = Db::name('admin_user')->column('truename','id');
        $img = Db::name('img_list')->where('mid',34)->whereIn('mark',array_column($data['lists'],'id'))->where('status','>',0)->lists();
        foreach ($img as $k => $v) {
            if(isset($res[$v['mark']])==false){
                $res[$v['mark']] = [];
            }
            array_push($res[$v['mark']],'http://localhost'.$v['img']);
        }
        foreach ($data['lists'] as $k => $v) {
            $data['lists'][$k]['creater_name'] = $v['creater']>0?$aid_info[$v['creater']]:'';
            $data['lists'][$k]['teamleader'] = $v['aid']>0?$aid_info[$v['aid']]:'';
            $data['lists'][$k]['ftq_date'] = date('Y-m-d',$v['ftq_date']);
            $data['lists'][$k]['create_time'] = $v['create_time']>0?date('Y-m-d H:i:s',$v['create_time']):'';
            $data['lists'][$k]['team'] = $tid_info[$v['tid']]['team'];
            $data['lists'][$k]['aid_name'] = $aid_info[$v['aid']];
            $data['lists'][$k]['project'] = $project_info[$tid_info[$v['tid']]['project']];
            $data['lists'][$k]['issue_desc'] = $v['issue_id']>0?$issue_info[$v['issue_id']]:'';
            $data['lists'][$k]['issue_mid_name'] = $v['issue_mid']>0?$mid_info[$v['issue_mid']]:'';
            $data['lists'][$k]['find_mid_name'] = $v['find_mid']>0?$mid_info[$v['find_mid']]:'';
            $data['lists'][$k]['issue_position'] = $v['issue_poid']==0?'':$position_info[$v['issue_poid']];
            $data['lists'][$k]['find_position'] = $v['find_poid']==0?'':$position_info[$v['find_poid']];
            $data['lists'][$k]['issue_img'] = isset($res[$v['id']])?$res[$v['id']]:'';
            $data['lists'][$k]['update'] = $v['update']>0?date('Y-m-d H:i:s',$v['update']):'';
            $data['lists'][$k]['due_date'] = $v['due_date']>0?date('Y-m-d',$v['due_date']):'';
            switch ($v['status']) {
                case 1:$data['lists'][$k]['status_name'] = '已关闭';break;
                case 10:$data['lists'][$k]['status_name'] = '待反馈';break;
                default:$data['lists'][$k]['status_name'] = '未知状态';break;
            }
        }
        exit($this->lay_table($data));
    }
    //FTQ 设置查询
    public function getFtqSetList(){
        $item = input('get.');
        $projects = Db::name('team_base')->whereIn('content',[1,2])->column('id');
		$obj = Db::name('team_list')->where('status',1)->whereIn('project',$projects)->where('type','<',4);
        if(isset($item['kw'])==true&&$item['kw']!==''){
			$tid_list = Db::name('team_list')->where('team','like','%'.$item['kw'].'%')->column('id');
			$obj = $obj->whereIn('id',$tid_list);
		}
        $data = $obj->order('project,team')->field('id,team,project,line,aid,qe,qc,ftq_target,ftq_ratio')->pages($item['limit']);
		$base = Db::name('team_base')->whereIn('mid',[1,2])->column('title','id');
		$user = Db::name('admin_user')->column('truename','id');
		foreach ($data['lists'] as $k => $v) {
			$data['lists'][$k]['project_name'] = $base[$v['project']];
			$data['lists'][$k]['line_name'] = $v['line']>0?$base[$v['line']]:'';
			$data['lists'][$k]['teamleader'] = $v['aid']>0?$user[$v['aid']]:'';  
            $data['lists'][$k]['qe_name'] = $v['qe']>0?$user[$v['qe']]:''; 
            $data['lists'][$k]['qc_name'] = $v['qc']>0?$user[$v['qc']]:''; 
		}
		exit($this->lay_table($data));
    }
    //FTQ 异常类型清单
    public function getFtqTypeList(){
        $item = input('get.');
		$obj = Db::name('quality_base')->where('mid',1);
        if(isset($item['title'])==true&&$item['title']!==''){
			$obj = $obj->where('title','like','%'.$item['title'].'%');
		}
        if(isset($item['content'])==true&&$item['content']!==''){
			$obj = $obj->where('content','like','%'.$item['content'].'%');
		}
        $data = $obj->order('title')->pages($item['limit']);
        foreach ($data['lists'] as $k => $v) {
            $data['lists'][$k]['mark'] = (int)$v['mark'];
            $data['lists'][$k]['status'] = (int)$v['status'];
        }
		exit($this->lay_table($data));
    }
    //FTQ查询
    public function ftqListExport(){
		$data = Db::name('quality_ftq_list')->whereBetween('ftq_date',[strtotime(input('get.start')),strtotime(input('get.end'))])->order('id desc')->lists();
        $tid_info = Db::name('team_list')->field('id,team,project')->cates('id');
        $project_info = Db::name('team_base')->where('mid',1)->column('title','id');
        $issue_info = Db::name('quality_base')->where('mid',1)->column('content','id');
        $position_info = Db::name('team_plan_position')->whereIn('id',array_merge(array_column($data,'issue_poid'),array_column($data,'find_poid')))->column('position','id');
        $mid_info = Db::name('member_list')->whereIn('id',array_unique(array_merge(array_column($data,'creater'),array_column($data,'issue_mid'),array_column($data,'find_mid'))))->column('ename','id');
        $aid_info = Db::name('admin_user')->column('truename','id');
        $list= [];
        foreach ($data as $k => $v) {
            $list[$k]['创建人'] = $v['creater']>0?$aid_info[$v['creater']]:'';
            $list[$k]['创建时间'] = $v['create_time']>0?date('Y-m-d H:i:s',$v['create_time']):'';
            $list[$k]['日期'] = date('Y-m-d',$v['ftq_date']);
            $list[$k]['项目'] = $project_info[$tid_info[$v['tid']]['project']];
            $list[$k]['班组'] = $tid_info[$v['tid']]['team'];
            $list[$k]['班长'] = $v['aid']>0?$aid_info[$v['aid']]:'';
            $list[$k]['红牌号'] = $v['rework_id'];
            $list[$k]['产品号'] = $v['product'];
            $list[$k]['塑件号'] = $v['connector'];
            $list[$k]['孔位'] = $v['hole_num'];
            $list[$k]['问题类型'] = $v['issue_id']>0?$issue_info[$v['issue_id']]:'';
            $list[$k]['生产岗位'] = $v['issue_poid']==0?'':$position_info[$v['issue_poid']];
            $list[$k]['生产员工'] = $v['issue_mid']>0?$mid_info[$v['issue_mid']]:'';
            $list[$k]['发现岗位'] = $v['find_poid']==0?'':$position_info[$v['find_poid']];
            $list[$k]['发现员工'] = $v['find_mid']>0?$mid_info[$v['find_mid']]:'';
            $list[$k]['计入FTQ'] = $v['signed']==1?'Yes':'No';
            $list[$k]['原因'] = $v['reason'];
            $list[$k]['改进措施'] = $v['action'];
            $list[$k]['完成日期'] = $v['due_date']>0?date('Y-m-d',$v['due_date']):'';
            $list[$k]['反馈日期'] = $v['update']>0?date('Y-m-d H:i:s',$v['update']):'';
            switch ($v['status']) {
                case 1:$list[$k]['状态'] = '已关闭';break;
                case 10:$list[$k]['状态'] = '待反馈';break;
                case 11:$list[$k]['状态'] = '待确认';break;
                default:$list[$k]['状态'] = '未知状态';break;
            }
        }
        exit(json_encode(array('code'=>0,'data'=>$list)));
    }
    //QC巡检问题列表
    public function getQcAuditList(){
        $item = input('get.');
        $obj = Db::name('quality_onsite_audit_list');
        if($item['view']==2){
            $obj = $obj->where('auditor|owner',session('admin')['id']);
        }
        if($item['status']==1){
            $obj = $obj->whereIn('status',[1,2]);
        }else{
            $obj = $obj->whereIn('status',$item['status']);
        }
        $data = $obj->order('audit_date desc')->pages($item['limit']);
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        $leader_info = Db::name('admin_user')->column('leader','id');
        $tid_info = Db::name('team_list')->field('id,team,project')->cates('id');
        $dpt_info = Db::name('admin_org')->where('mid',0)->cache('orgName',600)->column('title','id');
        $project_info = Db::name('team_base')->where('mid',1)->column('title','id');
        $name_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        $img_list = Db::name('img_list')->where('mid',1)->whereIn('mark',array_column($data['lists'],'id'))->where('status','>',0)->lists();
        $img = [];
        $defect_info = Db::name('quality_base')->where('mid',15)->column('title','id');
        $mid_info = Db::name('member_list')->whereIn('id',array_column($data['lists'],'mid'))->field('id,eid,ename')->cates('id');
        $poid_info = Db::name('team_plan_position')->whereIn('id',array_column($data['lists'],'poid'))->column('position','id');
        foreach ($img_list as $k => $v) {
            if(isset($img[$v['mark']]['num'])==false){
                $img[$v['mark']]['num'] = 0;
                $img[$v['mark']]['list'] = [];
            }
            $img[$v['mark']]['num'] = $img[$v['mark']]['num'] + 1;
            array_push($img[$v['mark']]['list'],'http://localhost'.$v['img']);
        }
        foreach ($data['lists'] as $k => $v) {
            $data['lists'][$k]['audit_date'] = date('Y-m-d',$v['audit_date']);
            $data['lists'][$k]['auditor_name'] = $aid_info[$v['auditor']];
            $data['lists'][$k]['team'] = $tid_info[$v['tid']]['team'];
            $data['lists'][$k]['ename'] = $v['mid']>0?($mid_info[$v['mid']]['eid'].' - '.$mid_info[$v['mid']]['ename']):'';
            $data['lists'][$k]['position'] = $v['poid']>0?$poid_info[$v['poid']]:'';
            $data['lists'][$k]['aid_name'] = $aid_info[$v['aid']];
            $data['lists'][$k]['leader'] = $leader_info[$v['auditor']];
            $data['lists'][$k]['dpt_name'] = $dpt_info[$v['dpt']];
            $data['lists'][$k]['owner_name'] = $name_info[$v['owner']];
            $data['lists'][$k]['due_date'] = $v['due_date']>0?date('Y-m-d',$v['due_date']):'';
            $data['lists'][$k]['issue_img_num'] = isset($img[$v['id']]['num'])?$img[$v['id']]['num']:0;
            $data['lists'][$k]['issue_img'] = isset($img[$v['id']]['list'])?$img[$v['id']]['list']:'';
            $data['lists'][$k]['defect_name'] = $v['defect']>0?$defect_info[$v['defect']]:'';
        }
        exit($this->lay_table($data));
    }
    //QC巡检问题导出
    public function qcAuditListExport(){
        $data = Db::name('quality_onsite_audit_list')->whereBetween('audit_date',[strtotime(input('get.start')),strtotime(input('get.end'))])->where('status','>',0)->lists();
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        $tid_info = Db::name('team_list')->field('id,team,project')->cates('id');
        $dpt_info = Db::name('admin_org')->where('mid',0)->cache('orgName',600)->column('title','id');
        $project_info = Db::name('team_base')->where('mid',1)->column('title','id');
        $name_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        $defect_info = Db::name('quality_base')->where('mid',15)->column('title','id');
        $mid_info = Db::name('member_list')->whereIn('id',array_column($data,'mid'))->field('id,eid,ename')->cates('id');
        $poid_info = Db::name('team_plan_position')->whereIn('id',array_column($data,'poid'))->column('position','id');
        $list= [];
        foreach ($data as $k => $v) {
            $list[$k]['巡检日期'] = date('Y-m-d',$v['audit_date']);
            $list[$k]['巡检人'] = $aid_info[$v['auditor']];
            $list[$k]['班组'] = $tid_info[$v['tid']]['team'];
            $list[$k]['班长'] = $aid_info[$v['aid']];
            $list[$k]['巡检工位'] = $v['poid']>0?$poid_info[$v['poid']]:'';
            $list[$k]['相关人员'] = $v['mid']>0?($mid_info[$v['mid']]['eid'].' - '.$mid_info[$v['mid']]['ename']):'';
            $list[$k]['责任部门'] = $dpt_info[$v['dpt']];
            $list[$k]['责任人'] = $name_info[$v['owner']];
            switch ($v['type']) {
                case 1:$list[$k]['问题类型'] = '人';break;
                case 2:$list[$k]['问题类型'] = '机';break;
                case 3:$list[$k]['问题类型'] = '料';break;
                case 4:$list[$k]['问题类型'] = '法';break;
                case 5:$list[$k]['问题类型'] = '环';break;
            }
            $list[$k]['缺陷类型'] = $v['defect']>0?$defect_info[$v['defect']]:'';
            $list[$k]['问题描述'] = $v['issue_desc'];
            $list[$k]['原因'] = $v['reason'];
            $list[$k]['改进措施'] = $v['action'];
            $list[$k]['完成日期'] = $v['due_date']>0?date('Y-m-d',$v['due_date']):'';
            switch ($v['status']) {
                case 1:$list[$k]['状态'] = '待反馈';break;
                case 2:$list[$k]['状态'] = '已驳回';break;
                case 3:$list[$k]['状态'] = '待确认';break;
                case 4:$list[$k]['状态'] = '已完成';break;
            }
            $list[$k]['优秀案例'] = $v['great']>0?'Yes':'';
        }
        exit(json_encode(array('code'=>0,'data'=>$list)));
    }
    //DailyIssue列表
	public function getWirList(){
		$item = input('get.');
		$obj = Db::name('quality_wir_list');
        // if(isset($item['view'])){
        //     if($item['view']==1){
        //         $obj = $obj->where('auditor|owner',session('admin')['id']);
        //     }
        // }
        // if(isset($item['status'])){
		// 	$obj = $obj->where('status',$item['status']);
		// }
		// if(isset($item['great'])&&$item['great']>0){
		// 	$obj = $obj->where('highlight',$item['great']);
		// }
		// if(isset($item['auditDate'])&&$item['auditDate']!==''){
		// 	$date = explode("~",$item['auditDate']);
		// 	if(count($date)==2){
		// 		$obj = $obj->where('duty_date','between',[strtotime($date[0]),strtotime($date[1])]);
		// 	}
		// }
		// if(isset($item['dueDept'])&&$item['dueDept']>0){
		// 	$obj = $obj->where('dpt',$item['dueDept']);
		// }



        $data = $obj->order('report_date desc')->pages($item['limit']);
		// print_r($data);die;
        $issue_from = Db::name('quality_base')->where('mid',14)->column('title','id');
		$project_info = Db::name('team_base')->where('mid','<',4)->column('title','id');
		$aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
		$quality_base = Db::name('quality_base')->where('mid','>',4)->where('mid','<',7)->column('content','id');
		$team_info = Db::name('team_list')->column('team','id');
        $dpt_info = Db::name('admin_org')->where('mid',0)->column('title','id');
		$mid_info = Db::name('member_list')->whereIn('id',array_column($data['lists'],'mid'))->field('id,eid,ename,hiredate')->cates('id');
		$poid_info = Db::name('team_plan_position')->whereIn('id',array_column($data['lists'],'position'))->cates('id');
		$hours = Db::name('quality_wir_audit_sort')->whereIn('w_id',array_column($data['lists'],'id'))->field('id,w_id,hours')->lists();
		$method_info = Db::name('quality_base')->where('mid',2100)->column('title','mark');
		if(count($hours)>0){
			foreach ($hours as $k => $v) {
				if(isset($hours_info[$v['w_id']])==false){
					$hours_info[$v['w_id']] = 0;
				}
				$hours_info[$v['w_id']] = $hours_info[$v['w_id']] + $v['hours'];
			}
		}
        // print_r($data);
		foreach ($data['lists'] as $k => $v) {
            $data['lists'][$k]['issue_from_name'] = $issue_from[$v['issue_from']];
			$data['lists'][$k]['project_name'] = $project_info[$v['project']];
			$data['lists'][$k]['report_date'] = date('Y-m-d',$v['report_date']);
			$data['lists'][$k]['issue_date'] = $v['issue_date']>0?date('Y-m-d',$v['issue_date']):'';
			$data['lists'][$k]['family_name'] = $v['family']>0?$project_info[$v['family']]:'';
			$data['lists'][$k]['line_name'] = $v['line']>0?$project_info[$v['line']]:'';
            $data['lists'][$k]['family'] = $v['family']>0?(int)$v['family']:'';
			$data['lists'][$k]['owner_name'] = $aid_info[$v['owner']];
			$data['lists'][$k]['aid_name'] = $v['aid']>0?$aid_info[$v['aid']]:null;
			$data['lists'][$k]['reportor_name'] = $v['reportor']>0?$aid_info[$v['reportor']]:'未指定';
			$data['lists'][$k]['issue_desc'] = str_replace("问题描述:","",htmlspecialchars_decode($v['issue_desc']));		
			$data['lists'][$k]['issue_reason_name'] = $v['issue_reason']>0?$quality_base[$v['issue_reason']]:'';
            $data['lists'][$k]['issue_reason'] = $v['issue_reason']>0?(int)$v['issue_reason']:'';
			$data['lists'][$k]['issue_type_name'] = $v['issue_type']>0?$quality_base[$v['issue_type']]:'';
            $data['lists'][$k]['issue_type'] = (int)$v['issue_type'];
			$data['lists'][$k]['area'] = ($v['project']>0?$project_info[$v['project']]:'').'-'.($v['line']>0?$project_info[$v['line']]:'');
			$data['lists'][$k]['team'] = $v['tid']>0?$team_info[$v['tid']]:'';
			$data['lists'][$k]['issue_dpt_name'] = $v['issue_dpt'];
			$data['lists'][$k]['issue_desc_update'] = htmlspecialchars_decode($v['issue_desc_update']);
			$data['lists'][$k]['root_reason'] = htmlspecialchars_decode($v['root_reason']);
			$data['lists'][$k]['sort_date'] = $v['sort_date']>0?date('Y-m-d',$v['sort_date']):'';
			$data['lists'][$k]['issue_dpt'] = is_numeric($v['issue_dpt'])?$dpt_info[$v['issue_dpt']]:$v['issue_dpt'];
			$data['lists'][$k]['mid_name'] = $v['mid']>0?($mid_info[$v['mid']]['eid'].'-'.$mid_info[$v['mid']]['ename']):'';
			$data['lists'][$k]['hiredate'] = $v['mid']>0?date('Y-m-d',$mid_info[$v['mid']]['hiredate']):'';
			$data['lists'][$k]['position_name'] = $v['position']>0?:'';
			$data['lists'][$k]['method_name'] = $v['method']>0?$method_info[$v['method']]:'';
            $data['lists'][$k]['method'] = $v['method']>0?(string)$v['method']:'';
            $data['lists'][$k]['qr'] = $v['qr']>0?(string)$v['qr']:'';
            $data['lists'][$k]['issue_img'] = [];
            if(strlen($v['img1'])>10){
                array_push($data['lists'][$k]['issue_img'],'http://localhost'.$v['img1']);
            }
            if(strlen($v['img2'])>10){
                array_push($data['lists'][$k]['issue_img'],'http://localhost'.$v['img2']);
            }
			if($v['position']>0){
				$data['lists'][$k]['position_name'] = $poid_info[$v['position']]['position'];
				switch($poid_info[$v['position']]['type']){
					case 1: 
						$data['lists'][$k]['position_type'] = '普通岗位';
						break;
					case 2: 
						$data['lists'][$k]['position_type'] = '关键岗位';
						break;
					case 3: 
						$data['lists'][$k]['position_type'] = '机动工';
						break;
					case 4: 
						$data['lists'][$k]['position_type'] = '外检';
						break;
				}
			}else{
				$data['lists'][$k]['position_name'] = '';
				$data['lists'][$k]['position_type'] = '';
			}
			$data['lists'][$k]['hours'] = isset($hours_info[$v['id']])?$hours_info[$v['id']]:'';
		}
		exit($this->lay_table($data));
	}
    //DailyIssue调查内容
    public function getWirSurveryList(){
        $data = Db::name('quality_wir_audit_survery')->where('w_id',input('get.id'))->cates('item');
        if($data){
            exit(json_encode(array('code'=>0,'data'=>$data)));
        }else{
            exit(json_encode(array('code'=>1)));
        }
    }
    //PPI审核记录
    public function getPpiList(){
        $item = input('get.');
        $member = Db::name('member_list')->where('status',1)->column('id');
        $obj = Db::name('member_skill')->whereIn('mid',$member)->where('status',1)->where('skill_type','>',0);
        if(isset($item['startDate'])==true&&$item['startDate']!==''){
            $obj = $obj->whereTime('eff_date', 'between', [strtotime($item['startDate']), strtotime($item['endDate'])]);
        }
        if(isset($item['kw'])&&$item['kw']!==''){
            $mids = Db::name('member_list')->whereLike('eid|ename','%'.$item['kw'].'%')->column('id');
            $obj = $obj->whereIn('mid',$mids);
        }
        if(isset($item['team'])&&$item['team']!==''){
            $tids = Db::name('team_list')->whereLike('team','%'.$item['team'].'%')->column('id');
            $mids = Db::name('member_list')->whereIn('tid',$tids)->column('id');
            $obj = $obj->whereIn('mid',$mids);
        }
        if(isset($item['leader'])&&$item['leader']!==''){
            $aids = Db::name('admin_user')->whereLike('truename','%'.$item['leader'].'%')->column('id');
            $tids = Db::name('team_list')->whereIn('aid',$aids)->column('id');
            $mids = Db::name('member_list')->whereIn('tid',$tids)->column('id');
            $obj = $obj->whereIn('mid',$mids);
        }
        if(isset($item['auditType'])&&$item['auditType'] > 0){
            $obj = $obj->where('auditType',$item['auditType']);
        }
        if(isset($item['view'])&&$item['view']==1){
            $tids = Db::name('team_list')->where('aid',session('admin')['id'])->column('id');
            $mids = Db::name('member_list')->whereIn('tid',$tids)->column('id');
            $obj = $obj->whereIn('mid',$mids)->order('eff_date');
        }else{
            $obj = $obj->order('id desc');
        }
        $data = $obj->pages($item['limit']);
        $mids = array_unique(array_column($data['lists'],'mid'));
        $mid_info = Db::name('member_list')->whereIn('id',$mids)->field('id,eid,ename,tid,poid')->cates('id');
        $tid_info = Db::name('team_list')->field('id,team,project,aid,shift')->cates('id');
        $project_info = Db::name('team_base')->where('mid',1)->column('title','id');
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        $poid_info = Db::name('team_plan_position')->column('position','id');
        $skill_info = Db::name('quality_base')->where('mid',2)->cates('id');
        $audit_type_info = Db::name('quality_base')->where('mid',3)->column('content','title');
        $on_self = Db::name('member_skill')->where('on_self',1)->column('skill_id','mid');
        foreach ($data['lists'] as $k => $v){
            $data['lists'][$k]['eid'] = $mid_info[$v['mid']]['eid'];
            $data['lists'][$k]['ename'] = $mid_info[$v['mid']]['ename'];
            $data['lists'][$k]['team'] = $tid_info[$mid_info[$v['mid']]['tid']]['team'];
            $data['lists'][$k]['shift'] = $tid_info[$mid_info[$v['mid']]['tid']]['shift']==1?'白班':'夜班';
            $data['lists'][$k]['teamleader'] = $aid_info[$tid_info[$mid_info[$v['mid']]['tid']]['aid']];
            $data['lists'][$k]['aid'] = $tid_info[$mid_info[$v['mid']]['tid']]['aid'];
            $data['lists'][$k]['position'] = $mid_info[$v['mid']]['poid']>0?$poid_info[$mid_info[$v['mid']]['poid']]:'';
            $data['lists'][$k]['skill'] = $skill_info[$v['skill_id']]['content'];
            $data['lists'][$k]['eff_date'] = date('Y-m-d',$v['eff_date']);
            $data['lists'][$k]['audit_type_name'] = ($skill_info[$v['skill_id']]['title']==1?'普通':'关键').' - '.$audit_type_info[$v['audit_type']];
            $data['lists'][$k]['audit_date'] = $v['audit_date']>0?date('m-d',$v['audit_date']):'';
            $data['lists'][$k]['on_self'] = isset($on_self[$v['mid']])?$skill_info[$on_self[$v['mid']]]['content']:'';
            $data['lists'][$k]['on_self_id'] = isset($on_self[$v['mid']])?$on_self[$v['mid']]:'';
        }
        exit($this->lay_table($data));
    }
    //PPI岗位津贴汇总
    public function ppiAllowanceSummary(){
        if(session('admin')['dpt']!==6&&session('admin')['job']!==10&&session('admin')['job']!==9&&session('admin')['id']!==2){
            http_response_code(440);
            exit(json_encode(array('code'=>1,'msg'=>'非人事部无权下载！')));
        }
        // if(date('d')<22){
        //     $start = mktime(0,0,0,date('m')-2,date('22'),date('Y'));
        //     $end = mktime(0,0,0,date('m')-1,date('21'),date('Y'));
        // }else{
        //     $start = mktime(0,0,0,date('m')-1,date('22'),date('Y'));
        //     $end = mktime(0,0,0,date('m'),date('21'),date('Y'));
        // }
        $date = explode(',',input('get.date'));
        $start = strtotime($date[0]);
        $end = strtotime($date[1]);
        $tids = explode(',',input('get.tid'));
        $work_ids = Db::name('member_list')->where('status',1)->whereIn('tid',$tids)->column('id');
        $leave_ids = Db::name('member_list')->where('status',2)->whereIn('tid',$tids)->where('leavedate','>=',$start)->where('leavedate','<=',$end)->column('id');
        $all_mids = array_merge($work_ids,$leave_ids);
        $data = Db::name('member_list')->whereIn('id',$all_mids)->field('id,tid,eid,ename,poid,status')->cates('id');
        $team_info = Db::name('team_list')->column('team','id');
        foreach ($data as $k => $v) {
            $data[$k]['tid'] = $team_info[$v['tid']];
            $data[$k]['skill'] = 0;
            $data[$k]['skills_name'] = '';
            $data[$k]['all_day'] = 0;
            $data[$k]['skill_day'] = 0;
            $data[$k]['type'] = '';
            $data[$k]['max_skill'] = '';
            $data[$k]['day_num'] = 0;
            $data[$k]['pay'] = 0;
            $data[$k]['detail'] = '';
            $data[$k]['skills'] = [];
        }
        $skills = Db::name('member_skill')->whereIn('mid',array_keys($data))->where(array('status'=>1,'skill_type'=>2))->lists();
        $skill_base = Db::name('quality_base')->where('mid',2)->lists();
        $key_skill = [];
        foreach ($skill_base as $k => $v) {
            if($v['title']==2){
                array_push($key_skill, $v['id']);
            }
            $skill_info[$v['id']] = $v['content'];
        }
        foreach ($skills as $k => $v) {
            if(isset($res[$v['mid']])==false){
                $res[$v['mid']] = [];
            }
            if($v['skill_id']==125||$v['skill_id']==2123){
                if(($v['skill_id']==125&&in_array(2123,$res[$v['mid']])==false)||($v['skill_id']==2123&&in_array(125,$res[$v['mid']])==false)){
                    array_push($res[$v['mid']], $v['skill_id']);
                }
            }else{
                array_push($res[$v['mid']], $v['skill_id']);
            }
        }
        foreach ($res as $k => $v) {
            $data[$k]['skill'] = count($v);
            $str = '';
            foreach ($v as $ke => $val) {
                $str = $str==''?$skill_info[$val]:($str.','.$skill_info[$val]);
            }
            $data[$k]['skills_name'] = $str;
        }
        
        $attendance = Db::name('le_attendance')->whereIn('mid',$all_mids)->where('kq_date','between',[$start,$end])->field('tid,mid,poid,worktime,overtime,temp_skill_id')->lists();
        $poid_skill_list = Db::name('team_plan_position_skills')->whereIn('p_id',array_unique(array_column($attendance,'poid')))->where('status',1)->lists();
        foreach ($poid_skill_list as $k => $v) {
            if(isset($poid_skills[$v['p_id']])==false){
                $poid_skills[$v['p_id']] = [];
            }
            array_push($poid_skills[$v['p_id']],$v['skill_id']);
        }
        $temp_skills = Db::name('team_plan_position_temp')->whereIn('id',array_column($attendance,'temp_skill_id'))->column('skills','id');
        $member_skills = Db::name('member_skill')->whereIn('mid',$all_mids)->where(['skill_type'=>2,'status'=>1])->field('mid,skill_id')->lists();
        foreach ($member_skills as $k => $v) {
            if(isset($mid_skills[$v['mid']])==false){
                $mid_skills[$v['mid']] = [];
            }
            array_push($mid_skills[$v['mid']],$v['skill_id']);
        }
        foreach ($attendance as $k => $v) {
            if(isset($data[$v['mid']])&&((float)$v['worktime']+(float)$v['overtime']>0)){
                $data[$v['mid']]['all_day'] = $data[$v['mid']]['all_day'] + 1;
                if(in_array($v['tid'],[156,49,280])){
                    if(isset($mid_skills[$v['mid']])){
                        foreach ($mid_skills[$v['mid']] as $ke => $val) {
                            array_push($data[$v['mid']]['skills'],$val);
                        }
                        ++$data[$v['mid']]['skill_day'];
                    }
                }else{
                    if($v['poid']==801||$v['poid']==802){
                        if(isset($temp_skills[$v['temp_skill_id']])){
                            $skills = explode(',',$temp_skills[$v['temp_skill_id']]);
                            $flag = 1;
                            foreach ($skills as $ke => $val) {
                                array_push($data[$v['mid']]['skills'],$val);
                                if($flag == 1){
                                    if(in_array($val,$key_skill)){
                                        ++$data[$v['mid']]['skill_day'];
                                        $flag = 0;
                                    }
                                }
                            }
                        }
                    }else{
                        if(isset($poid_skills[$v['poid']])){
                            $flag = 1;
                            foreach ($poid_skills[$v['poid']] as $ke => $val) {
                                array_push($data[$v['mid']]['skills'],$val);
                                if($flag == 1){
                                    if(in_array($val,$key_skill)){
                                        ++$data[$v['mid']]['skill_day'];
                                        $flag = 0;
                                    }
                                }
                            }
                        }
                    }
                }
                
            }
        }
        $list = [];
        $i = 1;
        $pay = Db::name('member_base')->where('mid',439)->column('mark','title');
        foreach ($data as $k => $v) {
            $classify = array_count_values($v['skills']);
            if(count($classify)>0){
                $max = '';
                $res = [];
                $key_num_all = 0;
                foreach ($classify as $ke => $val) {
                    if($max == ''&&$val>10){
                        $v['max_skill'] = $skill_info[$ke];
                        $v['day_num'] = $val;
                        $v['pay'] = $pay[$ke];
                        $v['type'] = in_array($ke,$key_skill)?'关键':'普通';
                        $max = $v;
                    }else{
                        if($val>10&&$pay[$ke]>$max['pay']){
                            $v['max_skill'] = $skill_info[$ke];
                            $v['day_num'] = $val;
                            $v['pay'] = $pay[$ke];
                            $v['type'] = in_array($ke,$key_skill)?'关键':'普通';
                            $max = $v;
                        }else{
                            if(in_array($ke,$key_skill)){
                                $res[$ke] = $val;
                                $key_num_all = $key_num_all + $val;
                            }
                        }
                    }
                    $str = $skill_info[$ke].$val.'天';
                    $v['detail'] = $v['detail']==''?$str:($v['detail'].','.$str);
                }
                if($v['pay']==0){
                    if($key_num_all> 10){
                        foreach ($res as $ke => $val) {
                            if($max == ''){
                                $v['max_skill'] = $skill_info[$ke];
                                $v['day_num'] = $val;
                                $v['pay'] = $pay[$ke];
                                $v['type'] = '关键';
                                $max = $v;
                            }else{
                                if($pay[$ke]>$max['pay']){
                                    $v['max_skill'] = $skill_info[$ke];
                                    $v['day_num'] = $val;
                                    $v['pay'] = $pay[$ke];
                                    $v['type'] = '关键';
                                    $max = $v;
                                }
                            }
                        }
                    }else{
                        $v['max_skill'] = '普通岗位';
                        $v['day_num'] = 0;
                        $v['pay'] = 180;
                        $v['type'] = '普通';
                    }
                }
            }
            unset($v['poid']);
            unset($v['skills']);
            $v['skill'] = $v['skill']>0?($v['skill']-1):$v['skill'];
            $v['id'] = $i;
            array_push($list,$v);
            ++$i;
        }
        foreach ($list as $k => $v) {
            $res[$k]['序号'] = $v['id'];
            $res[$k]['班组'] = $v['tid'];
            $res[$k]['工号'] = $v['eid'];
            $res[$k]['姓名'] = $v['ename'];
            $res[$k]['状态'] = $v['status']==1?'在职':'离职';
            $res[$k]['多技能数'] = $v['skill'];
            $res[$k]['技能名称'] = $v['skills_name'];
            $res[$k]['出勤天数'] = $v['all_day'];
            $res[$k]['关键岗天数'] = $v['skill_day'];
            $res[$k]['津贴技能类型'] = $v['type'];
            $res[$k]['技能名称'] = $v['max_skill'];
            $res[$k]['技能天数'] = $v['day_num'];
            $res[$k]['技能津贴'] = $v['pay'];
            $res[$k]['所有技能详情'] = $v['detail'];
        }
        exit(json_encode(array('code'=>0,'data'=>$res,'dates'=>date('Y-m-d',$start).'~'.date('Y-m-d',$end))));        
    }
    //PPI成绩列表
    public function getPpiScoreList(){
        $item = input('get.');
        $obj = Db::name('quality_ppi_score');
        if(isset($item['auditDate'])&&$item['auditDate']!==''){
            $date = explode(",",$item['auditDate']);
            $obj = $obj->where('exam_date', 'between', [strtotime($date[0]), strtotime($date[1])]);
        }
        if(isset($item['kw'])&&$item['kw']!==''&&isset($item['view'])){
            switch ($item['view']){
                case 1:
                    $mids = Db::name('member_list')->where('eid|ename','like','%'.trim($item['kw']).'%')->column('id');
                    $obj = $obj->whereIn('mid',$mids);
                    break;
                case 2:
                    $tids = Db::name('team_list')->where('team','like','%'.trim($item['kw']).'%')->column('id');
                    $obj = $obj->whereIn('tid',$tids);
                    break;
                case 3:
                    $aids = Db::name('admin_user')->where('truename','like','%'.trim($item['kw']).'%')->column('id');
                    $obj->whereIn('aid',$aids);
                    break;
            }
        }
		$data = $obj->order('exam_date desc')->pages($item['limit']);
        $mids = array_column($data['lists'],'mid');
        $poids = array_column($data['lists'],'poid');
        $mid_info = Db::name('member_list')->whereIn('id',$mids)->field('id,eid,ename')->cates('id');
        $tid_info = Db::name('team_list')->field('id,project,team')->cates('id');
        $project_info = Db::name('team_base')->where('mid',1)->column('title','id');
        $self_info = Db::name('member_skill')->whereIn('mid',$mids)->where(array('status'=>1,'on_self'=>1))->column('skill_id','mid');
        $poid_info = Db::name('team_plan_position')->whereIn('id',$poids)->column('position','id');
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        $skill_info = Db::name('quality_base')->cates('id');
        $audit_type_info = Db::name('quality_base')->where('mid',3)->cates('title');
        foreach ($data['lists'] as $k => $v) {
            $data['lists'][$k]['eid'] = $mid_info[$v['mid']]['eid'];
            $data['lists'][$k]['ename'] = $mid_info[$v['mid']]['ename'];
            $data['lists'][$k]['project'] = $project_info[$tid_info[$v['tid']]['project']];
            $data['lists'][$k]['team'] = $tid_info[$v['tid']]['team'];
            $data['lists'][$k]['aid_name'] = $aid_info[$v['aid']];
            $data['lists'][$k]['on_self'] = isset($self_info[$v['mid']])?$skill_info[$self_info[$v['mid']]]['content']:'未设置';
            $data['lists'][$k]['position'] = $v['poid']>0?$poid_info[$v['poid']]:'';
            $data['lists'][$k]['skill_name'] = $skill_info[$v['skill_id']]['content'];
            $data['lists'][$k]['skill_type'] = $skill_info[$v['skill_id']]['title']==1?'普通':'关键';
            $data['lists'][$k]['audit_type'] = $audit_type_info[$v['audit_type']]['content'];
            $data['lists'][$k]['exam_date'] = ($v['answers']==null||$v['answers']=='')&&$v['score']>0?date('y-m-d',$v['exam_date']):date('y-m-d H:i',$v['exam_date']);
            $data['lists'][$k]['item_type'] = $v['item_type']>0?$skill_info[$v['skill_id']]['content']:'手动添加';
            $data['lists'][$k]['score'] = $v['score']<85&&$v['score']>0?"<span style='color:red;font-weight:bold'>".$v['score']."</span>":$v['score'];
            $data['lists'][$k]['due_date'] = $v['due_date']>0?date('Y-m-d',$v['due_date']):'';
        }
        exit($this->lay_table($data));
    }
    //PPI考核技能列表
    public function getPpiSkillInfo(){
        $skills = Db::name('member_skill')->where('mid',input('get.mid'))->where('skill_type','>',0)->where('status',1)->field('id,skill_id,eff_date')->lists();
        $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]['eff_date'] = date('Y-m-d',$v['eff_date']);
        }
        exit(json_encode(array('code'=>0,'data'=>$skills)));
    }
    //PPI技能列表导出
    public function ppiListExport(){
        $member = Db::name('member_list')->where('status',1)->column('id');
        $data = Db::name('member_skill')->whereIn('mid',$member)->where('status',1)->where('skill_type','>',0)->where('eff_date', 'between', [strtotime($item['startDate']), strtotime($item['endDate'])])->lists();
        $mids = array_unique(array_column($data['lists'],'mid'));
        $mid_info = Db::name('member_list')->whereIn('id',$mids)->field('id,eid,ename,tid,poid')->cates('id');
        $tid_info = Db::name('team_list')->field('id,team,project,aid,shift')->cates('id');
        $project_info = Db::name('team_base')->where('mid',1)->column('title','id');
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        $poid_info = Db::name('team_plan_position')->column('position','id');
        $skill_info = Db::name('quality_base')->where('mid',2)->cates('id');
        $audit_type_info = Db::name('quality_base')->where('mid',3)->column('content','title');
        $on_self = Db::name('member_skill')->where('on_self',1)->column('skill_id','mid');
        $ht = Db::name('member_skill')->whereIn('mid',array_column($data,'mid'))->where(array('status'=>1,'skill_id'=>108))->column('skill_id','mid');
        $list= [];
        foreach ($data as $k => $v) {
            $list[$k]['ID'] = $v['id'];
            $list[$k]['工号'] = $v['eid'];
            $list[$k]['姓名'] = $v['ename'];
            $list[$k]['班组'] = $v['team'];
            $list[$k]['班别'] = $v['shift'];
            $list[$k]['班长'] = $v['teamleader'];
            $list[$k]['本岗位'] = substr($v['on_self'],0,1)=='<'?'未设置':$v['on_self'];
            $list[$k]['技能'] = $v['skill'];
            $list[$k]['审核类型'] = $v['audit_type_name'];
            $list[$k]['有效期'] = $v['eff_date'];
            $list[$k]['审核日期'] = $v['audit_date'];
            $list[$k]['备注'] = $v['delay_mark'];
            $list[$k]['热缩'] = isset($ht[$v['mid']])?'Y':'';
        }
        exit(json_encode(array('code'=>0,'data'=>$list)));
    }
    //PPI审核成绩导出
    public function ppiScoreExport(){
        $item = input('get.');
        $data = Db::name('quality_ppi_score')->where('exam_date', 'between', [strtotime($item['start']), strtotime($item['end'],-10)])->lists();
        $mids = array_column($data,'mid');
        $poids = array_column($data,'poid');
        $mid_info = Db::name('member_list')->whereIn('id',$mids)->field('id,eid,ename')->cates('id');
        $tid_info = Db::name('team_list')->field('id,project,team')->cates('id');
        $project_info = Db::name('team_base')->where('mid',1)->column('title','id');
        $self_info = Db::name('member_skill')->whereIn('mid',$mids)->where(array('status'=>1,'on_self'=>1))->column('skill_id','mid');
        $poid_info = Db::name('team_plan_position')->whereIn('id',$poids)->column('position','id');
        $aid_info = Db::name('admin_user')->cache('adminName',600)->column('truename','id');
        $skill_info = Db::name('quality_base')->cates('id');
        $audit_type_info = Db::name('quality_base')->where('mid',3)->cates('title');
        $list= [];
        foreach ($data as $k => $v) {
            $list[$k]['ID'] = $v['id'];
            $list[$k]['工号'] = $mid_info[$v['mid']]['eid'];
            $list[$k]['姓名'] = $mid_info[$v['mid']]['ename'];
            $list[$k]['班组'] = $tid_info[$v['tid']]['team'];
            $list[$k]['班长'] = $aid_info[$v['aid']];
            $list[$k]['岗位'] = $v['poid']>0?$poid_info[$v['poid']]:'';
            $list[$k]['技能'] = $skill_info[$v['skill_id']]['content'];
            $list[$k]['技能类型'] = $skill_info[$v['skill_id']]['title']==1?'普通':'关键';
            $list[$k]['审核类型'] = $audit_type_info[$v['audit_type']]['content'];
            $list[$k]['审核日期'] = ($v['answers']==null||$v['answers']=='')&&$v['score']>0?date('y-m-d',$v['exam_date']):date('y-m-d H:i',$v['exam_date']);
            $list[$k]['得分'] = $v['score'];
            $list[$k]['备注'] = $v['mark'];
        }
        exit(json_encode(array('code'=>0,'data'=>$list)));
    }
    //量具管理列表
    public function getMeasureList(){
        $item = input('get.');
        $obj = Db::name('quality_measure_list')->where('status',1);
        if(isset($item['kw'])&&$item['kw']!=''){
            $obj = $obj->where('fixed_number|s_id','like','%'.trim($item['kw']).'%');
        }
        if(isset($item['type'])&&$item['type']>0){
            $obj = $obj->where('type',$item['type']);
        }
        $data = $obj->order('eff_date desc')->pages($item['limit']);
        $aid_info = Db::name('admin_user')->column('truename','id');
        foreach ($data['lists'] as $k => $v) {
            $data['lists'][$k]['eff_date'] = date('Y-m-d',$v['eff_date']);
            $data['lists'][$k]['type'] = (string)$v['type'];
            $data['lists'][$k]['owner_name'] = $aid_info[$v['owner']];
            $data['lists'][$k]['update'] = date('Y-m-d',$v['update']);
        }
        exit($this->lay_table($data));
    }
    //量具管理列表
    public function measureListExport(){
        $item = input('get.');
        $obj = Db::name('quality_measure_list')->where('status',1);
        if(isset($item['end'])&&$item['end']!==""){
            $obj = $obj->where('eff_date','between',[strtotime($item['start']),strtotime('end')]);
        }
        $data = $obj->lists();
        $type_info = Db::name('quality_base')->where('mid',18)->column('title','content');
        $aid_info = Db::name('admin_user')->column('truename','id');
        $list= [];
        foreach ($data as $k => $v) {
            $list[$k]['ID'] = $v['id'];
            $list[$k]['固资编号'] = $v['fixed_number'];
            $list[$k]['类型'] = $type_info[$v['type']];
            $list[$k]['名称'] = $v['name'];
            $list[$k]['编号'] = $v['s_id'];
            $list[$k]['出厂编号'] = $v['com_number'];
            $list[$k]['规格/量程'] = $v['spec'];
            $list[$k]['型号'] = $v['mode'];
            $list[$k]['供应商'] = $v['supplier'];
            $list[$k]['年份价格'] = $v['year_price'];
            $list[$k]['领用部门'] = $v['use_dpt'];
            $list[$k]['领用区域'] = $v['use_area'];
            $list[$k]['领用人'] = $v['user'];
            $list[$k]['使用状态'] = $v['use_type']==1?"在用":($v['use_type']==2?"停用":($v['use_type']==3?"备用":"报废"));
            $list[$k]['使用日期'] = $v['use_date'];
            $list[$k]['校准类型'] = $v['check_type']==1?"A类":($v['check_type']==2?"B类":"C类");
            $list[$k]['校准周期'] = $v['check_freq']==1?"6个月":($v['check_freq']==2?"1年":($v['check_freq']==3?"2年":"3年"));
            $list[$k]['校准方式'] = $v['check_action']==1?"外校":($v['check_action']==2?"内校":"自检");
            $list[$k]['有效期'] = date('Y-m-d',$v['eff_date']);
            $list[$k]['校准结果'] = $v['useable'];
            $list[$k]['责任人'] = $aid_info[$v['owner']];
            $list[$k]['更新日期'] = date('Y-m-d',$v['update']);
            $list[$k]['备注'] = $v['mark'];
        }
        exit(json_encode(array('code'=>0,'data'=>$list)));
    }
}