Browse Source

20250710修改

贾小兵 2 months ago
parent
commit
7c592bb620
1 changed files with 75 additions and 20 deletions
  1. 75 20
      application/admin/controller/teacher/Exams.php

+ 75 - 20
application/admin/controller/teacher/Exams.php

@@ -53,17 +53,20 @@ class Exams extends Backend
 
     public function index()
     {
+        //查询最后一场考试id
+        $exam_collection_id = $this->model->where($this->whereExtend)->order('exam_id desc')->value('exam_collection_id');
+        $collection_name = $this->model->where(['exam_collection_id'=>$exam_collection_id])->value('exam_collection_name');
+
         //设置过滤方法
         $this->request->filter(['strip_tags', 'trim']);
         if (false === $this->request->isAjax()) {
+            $this->assignConfig('collection_name', $collection_name);
             return $this->view->fetch();
         }
         //如果发送的来源是 Selectpage,则转发到 Selectpage
         if ($this->request->request('keyField')) {
             return $this->selectpage();
         }
-        //查询最后一场考试id
-        $exam_collection_id = $this->model->where($this->whereExtend)->order('exam_id desc')->value('exam_collection_id');
         //查询考试
         $filter = $this->request->get("filter", '');
         $filter = (array)json_decode($filter, true);
@@ -503,14 +506,24 @@ class Exams extends Backend
         $op = $this->request->get("op", '');
         $op = (array)json_decode($op, true);
 
+        if(isset($filter) &&!empty($filter['exam_collection_name'])){
+            $this->whereExtend['exam_collection_name'] = $filter['exam_collection_name'];
+            $this->request->get(['filter'=>json_encode($filter),'op'=>json_encode($op)]);
+        }
         [$where, $sort, $order, $offset, $limit] = $this->buildparams();
         $list = $this->model
             ->where($where)->where($this->whereExtend)
             ->order($sort, $order)
             ->paginate($limit);
 
+        $depart_ids = [];
+        foreach ($list as $k => $v){
+            if(!in_array($v['user_depart_id'],$depart_ids)){
+                $depart_ids[] = $v['user_depart_id'];
+            }
+        }
         $xlsName = '学员成绩信息';
-        $this->exportExcel($xlsName,'Excel2007', $list);
+        $this->exportExcel($xlsName,'Excel2007', $list,$depart_ids);
     }
 
     /**
@@ -518,7 +531,7 @@ class Exams extends Backend
      * @param string $fileName 文件名
      * @param string $fileType 文件类型
      */
-    function exportExcel($fileName, $fileType,$data)
+    function exportExcel($fileName, $fileType,$data,$depart_ids)
     {
         //文件名称校验
         if (!$fileName) {
@@ -546,28 +559,55 @@ class Exams extends Backend
         $spreadsheet = new Spreadsheet();
         $worksheet = $spreadsheet->getActiveSheet();
         $worksheet->getColumnDimension('A')->setWidth(15);
-        $worksheet->getColumnDimension('B')->setWidth(15);
-        $worksheet->getColumnDimension('C')->setWidth(15);
-        $worksheet->getColumnDimension('D')->setWidth(15);
+        $worksheet->getColumnDimension('B')->setWidth(20);
+        $worksheet->getColumnDimension('C')->setWidth(20);
+        $worksheet->getColumnDimension('D')->setWidth(25);
+        $worksheet->getColumnDimension('E')->setWidth(30);
 
-        $worksheet->getRowDimension('1')->setRowHeight(25);
+        $worksheet->getRowDimension('1')->setRowHeight(40);
 
         //设置工作表标题名称
         $worksheet->setTitle('学员成绩信息');
 
-        $worksheet->setCellValue('A1',"序号");
-        $worksheet->setCellValue('B1',"学员账号");
-        $worksheet->setCellValue('C1',"学员姓名");
-        $worksheet->setCellValue('D1',"总分");
+        //1745459433
+        $kaoshi = isset($data[0]['endtime']) ? date('Y-m-d',$data[0]['endtime']) : '';
+        $a = '';
+        foreach ($depart_ids as $k1=>$v1){
+            $wu = Db::name('department')->where('id',$v1)->find();
+            $si = Db::name('department')->where('id',$wu['parent_id'])->find();
+            $san = Db::name('department')->where('id',$si['parent_id'])->find();
+            $er = Db::name('department')->where('id',$san['parent_id'])->find();
+            $yi = Db::name('department')->where('id',$er['parent_id'])->find();
+            $a = $a.$yi['name']."/".$er['name']."/".$san['name']."/".$si['name']."/".$wu['name']."\n";
+        }
+//        $a = "预选军士\n预选军士一区队";
+        $worksheet->setCellValue('A1',$a);
+        $worksheet->mergeCells('A1:D1');
+        $worksheet->setCellValue('E1',"考试日期 ".$kaoshi);
+
+        $worksheet->setCellValue('A2',"序号");
+        $worksheet->setCellValue('B2',"学员账号");
+        $worksheet->setCellValue('C2',"学员姓名");
+        $worksheet->setCellValue('D2',"模拟器类型");
+        $worksheet->setCellValue('E2',"总分");
 
 
         foreach ($data as $ky => $value)
         {
-            $lie = $ky+2;
+            $lie = $ky+3;
+            $sim_type= '';
+            if($value['sim_type'] == '0001'){
+                $sim_type = 'FZD04B型侦毒器';
+            }else if($value['sim_type'] == '0002'){
+                $sim_type = 'FZB006型毒剂报警器';
+            }else if($value['sim_type'] == '0003'){
+                $sim_type = '防化兵用毒剂报警器';
+            }
             $worksheet->setCellValue('A'.$lie,++$ky);
             $worksheet->setCellValue('B'.$lie,$value['user_username']);
             $worksheet->setCellValue('C'.$lie,$value['user_nickname']);
-            $worksheet->setCellValue('D'.$lie,$value['total_score']);
+            $worksheet->setCellValue('D'.$lie,$sim_type);
+            $worksheet->setCellValue('E'.$lie,$value['total_score']);
         }
 
 
@@ -577,12 +617,24 @@ class Exams extends Backend
                 'size' => 14
             ],
         ];
+        $titlestyleArray2 = [
+            'font' => [
+                'size' => 12
+            ],
+        ];
         $headerStyleArray = [
             'font' => [
                 'name' => '方正小标宋简体',
                 'size' => 18
             ],
         ];
+        $headStyleArray1 = [
+            'alignment' => [
+                'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
+                'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER,
+                'wrapText' => true,
+            ],
+        ];
 
         $commonStyleArray = [
             'alignment' => [
@@ -606,12 +658,15 @@ class Exams extends Backend
                 'wrapText' => true,
             ]
         ];
-        $worksheet->getStyle('A1:D1')->applyFromArray($titlestyleArray);
-        $worksheet->getStyle('A1:D1')->applyFromArray($commonStyleArray);
-        foreach ($data as $k=>$v){
-            $kk  = $k+2;
-            $worksheet->getStyle('A'.$kk.':D'.$kk)->applyFromArray($borderStyleArray);
-        }
+
+        $worksheet->getStyle('A1:E1')->applyFromArray($headStyleArray1);//换行
+        $worksheet->getStyle('A1:E1')->applyFromArray($titlestyleArray);
+        $worksheet->getStyle('A2:E2')->applyFromArray($titlestyleArray2);
+        $worksheet->getStyle('A2:E2')->applyFromArray($commonStyleArray);
+//        foreach ($data as $k=>$v){
+//            $kk  = $k+3;
+//            $worksheet->getStyle('A'.$kk.':E'.$kk)->applyFromArray($borderStyleArray);
+//        }
         // $worksheet->getStyle('A3:R3')->applyFromArray($commonStyleArray);
         // $worksheet->getStyle('A'.$footer_total.':R'.$footer_total)->applyFromArray($commonStyleArray);
         // $worksheet->getStyle('A1:C1')->applyFromArray($borderStyleArray);