| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 | 
							- <?php
 
- namespace app\admin\controller;
 
- use app\common\controller\Backend;
 
- use think\Config;
 
- use think\Db;
 
- use think\db\Connection;
 
- use think\Request;
 
- /**
 
-  * 数字大屏接口
 
-  *
 
-  * @icon fa fa-dashboard
 
-  */
 
- class Screen extends Backend
 
- {
 
-     protected $model = null;
 
-     protected $departmodel = null;
 
-     protected $adminmodel = null;
 
-     protected $faultmodel = null;
 
-     protected $layout = 'screen';
 
-     protected $noNeedRight = ['index'];
 
-     protected $whereExtend = null;
 
-     public function _initialize()
 
-     {
 
-         parent::_initialize();
 
-         $groupIds = $this->auth->getGroupIds();
 
-         $this->model = new \app\admin\model\teacher\Exams;
 
-         $this->departmodel = new \app\admin\model\department\Department;
 
-         $this->adminmodel = new \app\admin\model\Admin;
 
-         $this->faultmodel = new \app\admin\model\Fault;
 
-         //已交卷
 
-         $this->whereExtend['endtime'] = ['>', 0];
 
-         //考试
 
-         $this->whereExtend['exam_collection_type'] = 3;
 
-         $ids = $this->request->get('ids', '');
 
-         if(!empty($ids)){
 
- //            $this->whereExtend['exam_collection_id'] = ['in', $ids];
 
-             $this->whereExtend['user_depart_id'] = ['in', $ids];
 
-         }
 
-         $departmentdata = [];
 
- //        $collectionlist = Db::name('real_exam')->where('exam_collection_type',3)
 
- //            ->whereTime('starttime','year')
 
- //            ->group('exam_collection_id')
 
- //            ->field('exam_collection_id,exam_collection_name')
 
- //            ->order('exam_collection_id desc')->select();
 
- //        foreach ($collectionlist as $k => $v) {
 
- //            $departmentdata[$v['exam_collection_id']] = $v['exam_collection_name'];
 
- //        }
 
-         $departlist =  $this->departmodel->where('level',5)->select();
 
-         foreach ($departlist as $k => $v) {
 
-             $departmentdata[$v['id']] = $v['name'];
 
-         }
 
-         unset($v);
 
-         $this->view->assign('departmentdata', $departmentdata);
 
-         $this->view->assign('ids', $ids);
 
-     }
 
-     /**
 
-      * 数字大屏接口
 
-      */
 
-     public function index()
 
-     {
 
-         //区队总数
 
-         $where_depart['level'] = 5;
 
-         $qudui_total = $this->departmodel->where($where_depart)->count();
 
-         $this->assign('qudui_total', $qudui_total);
 
-         //学员总数
 
-         $where_xy['depart_id'] = ['>',0];
 
-         $xy_total = $this->adminmodel->where($where_xy)->count();
 
-         $this->assign('xy_total', $xy_total);
 
-         //最高分
 
-         $max = $this->model->where($this->whereExtend)->order('endtime desc')->max('total_score');
 
-         $this->assignconfig('max', $max);
 
-         //最低分
 
-         $min = $this->model->where($this->whereExtend)->order('endtime desc')->min('total_score');
 
-         $this->assignconfig('min',$min);
 
-         //平均分
 
-         //考试人数
 
-         $exam_xueyuan_count = $this->model->where($this->whereExtend)->count();
 
-         //考试总分
 
-         $exam_xueyuan_total = $this->model->where($this->whereExtend)->sum('total_score');
 
-         //考试总分/考试人数
 
-         $exam_pjf = $exam_xueyuan_count>0?bcdiv($exam_xueyuan_total, $exam_xueyuan_count):0;
 
-         $this->assignconfig('exam_pjf',$exam_pjf);
 
-         //平均时长
 
-         //考试总时长
 
-         $exam_shichang = $this->model->where($this->whereExtend)->sum('exam_duration');
 
-         $exam_pjsc = $exam_xueyuan_count>0? bcdiv($exam_shichang, $exam_xueyuan_count):0;
 
-         $this->assignconfig('exam_pjsc',bcdiv($exam_pjsc,60));
 
-         //学员成绩统计
 
-         $xueyuan_chengji_tongji = $this->model->where($this->whereExtend)->where('total_score>0')->order('endtime desc')->limit(50)->select();
 
-         $this->assign('xueyuan_chengji_tongji', $xueyuan_chengji_tongji);
 
-         //各区队平均分分析
 
-         $qudui_list = $this->model->where($this->whereExtend)->group('user_depart_id')->select();
 
-         $qudui = [];
 
-         foreach ($qudui_list as $k => $v) {
 
-             $qudui_list[$k]['user_depart_name'] = $this->departmodel->where('id',$v['user_depart_id'])->value('name');
 
-             //每个区队的考试人数
 
-             $qudui_exam_count = $this->model->where('user_depart_id',$v['user_depart_id'])->count();
 
-             //每个区队的总分
 
-             $qudui_exam_total = $this->model->where('user_depart_id',$v['user_depart_id'])->sum('total_score');
 
-             //每个区队的平均分
 
-             $qudui_list[$k]['user_depart_pjf'] = bcdiv($qudui_exam_total,$qudui_exam_count);
 
-         }
 
-         unset($v);
 
-         $this->assignconfig('qudui_list', $qudui_list);
 
-         //区队平均分 年份
 
-         $this->assignconfig('qudui_list_year', date('Y'));
 
-         //本年度考试成绩平均分统计
 
-         $collection_list = $this->model->where('exam_collection_type',3)->whereTime('starttime','year')->group('exam_collection_id')->order('exam_collection_id desc')->limit(6)->select();
 
-         foreach($collection_list as $k=>$v){
 
-             //每个考试的考试人数
 
-             $collection_exam_count = $this->model->where('exam_collection_id',$v['exam_collection_id'])->count();
 
-             //每个区队的总分
 
-             $collection_exam_total = $this->model->where('exam_collection_id',$v['exam_collection_id'])->sum('total_score');
 
-             //每个区队的平均分
 
-             $collection_list[$k]['collection_pjf'] = bcdiv($collection_exam_total,$collection_exam_count);
 
-         }
 
-         $this->assignconfig('collection_list', $collection_list);
 
-         //FZD048型侦毒器维修难点统计
 
-         $fault_one = $this->faultmodel->where(['sim_type'=>'0001'])->field('fault_id,name')->select();
 
-         foreach ($fault_one as $k1 => $val1){
 
- //            if(strlen($val1['name'])>15){
 
- //                $name =  mb_strcut($val1['name'],0,15,'utf8')."...";
 
- //            }else{
 
- //                $name = $val1['name'];
 
- //            }
 
- //            $fault_one[$k1]['name'] = $name;
 
-             //先查分配次数,在查错误率
 
-             $error_total = Db::name('real_exam_fault')->where(['flag'=>1,'fault_id'=>$val1['fault_id'],'answer_right'=>2])->count();
 
-             if($error_total==0){
 
-                 unset($fault_one[$k1]);
 
-                 continue;
 
-             }
 
-             $fault_one[$k1]['error_total'] = $error_total;
 
-         }
 
-         $fault_one = collection($fault_one)->toArray();
 
-         if(count($fault_one)==1){
 
-             array_push($fault_one,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_one,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_one,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_one,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-         }else if(count($fault_one)==2){
 
-             array_push($fault_one,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_one,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_one,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-         }else if(count($fault_one)==3){
 
-             array_push($fault_one,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_one,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-         }else if(count($fault_one)==4){
 
-             array_push($fault_one,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-         }
 
-         unset($val1);
 
-         $vaccineCount = array_column($fault_one, 'error_total');
 
-         array_multisort($vaccineCount,SORT_DESC,$fault_one);
 
-         $largestFour = array_slice($fault_one, 0, 5); // 获取最大的四个值
 
-         $one_static = $largestFour;
 
-         $this->assignconfig('one_static', $one_static);
 
-         //FZB006型毒剂报警器维修难点统计
 
-         $fault_two = $this->faultmodel->where(['sim_type'=>'0002'])->field('fault_id,name')->select();
 
-         foreach ($fault_two as $k1 => $val1){
 
- //            if(strlen($val1['name'])>15){
 
- //                $name =  mb_strcut($val1['name'],0,15,'utf8')."...";
 
- //            }else{
 
- //                $name = $val1['name'];
 
- //            }
 
- //            $fault_two[$k1]['name'] = $name;
 
-             //先查分配次数,在查错误率
 
-             $error_total = Db::name('real_exam_fault')->where(['flag'=>1,'fault_id'=>$val1['fault_id'],'answer_right'=>2])->count();
 
-             if($error_total==0){
 
-                 unset($fault_two[$k1]);
 
-                 continue;
 
-             }
 
-             $fault_two[$k1]['error_total'] = $error_total;
 
-         }
 
-         unset($val1);
 
-         $fault_two = collection($fault_two)->toArray();
 
-         if(count($fault_two)==1){
 
-             array_push($fault_two,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_two,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_two,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_two,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-         }else if(count($fault_two)==2){
 
-             array_push($fault_two,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_two,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_two,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-         }else if(count($fault_two)==3){
 
-             array_push($fault_two,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_two,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-         }else if(count($fault_two)==4){
 
-             array_push($fault_two,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-         }
 
-         $vaccineCount = array_column($fault_two, 'error_total');
 
-         array_multisort($vaccineCount,SORT_DESC,$fault_two);
 
-         $largestFour = array_slice($fault_two, 0, 5); // 获取最大的四个值
 
-         $two_static = $largestFour;
 
-         $this->assignconfig('two_static', $two_static);
 
-         //防化兵用毒剂报警器维修难点统计
 
-         $fault_three = $this->faultmodel->where(['sim_type'=>'0003'])->field('fault_id,name')->select();
 
-         foreach ($fault_three as $k1 => $val1){
 
- //            if(strlen($val1['name'])>15){
 
- //                $name =  mb_strcut($val1['name'],0,15,'utf8')."...";
 
- //            }else{
 
- //                $name = $val1['name'];
 
- //            }
 
- //            $fault_three[$k1]['name'] = $name;
 
-             //先查分配次数,在查错误率
 
-             $error_total = Db::name('real_exam_fault')->where(['flag'=>1,'fault_id'=>$val1['fault_id'],'answer_right'=>2])->count();
 
-             if($error_total==0){
 
-                 unset($fault_three[$k1]);
 
-                 continue;
 
-             }
 
-             $fault_three[$k1]['error_total'] = $error_total;
 
-         }
 
-         unset($val1);
 
-         $fault_three = collection($fault_three)->toArray();
 
-         if(count($fault_three)==1){
 
-             array_push($fault_three,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_three,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_three,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_three,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-         }else if(count($fault_three)==2){
 
-             array_push($fault_three,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_three,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_three,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-         }else if(count($fault_three)==3){
 
-             array_push($fault_three,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-             array_push($fault_three,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-         }else if(count($fault_three)==4){
 
-             array_push($fault_three,['fault_id'=>'','name'=>'','error_total'=>0]);
 
-         }
 
-         $vaccineCount = array_column($fault_three, 'error_total');
 
-         array_multisort($vaccineCount,SORT_DESC,$fault_three);
 
-         $largestFour = array_slice($fault_three, 0, 5); // 获取最大的四个值
 
-         $three_static = $largestFour;
 
-         $this->assignconfig('three_static', $three_static);
 
-         return $this->view->fetch();
 
-     }
 
- }
 
 
  |