Browse Source

20250731修改调整

贾小兵 1 month ago
parent
commit
40a5e247d6
2 changed files with 129 additions and 38 deletions
  1. 128 38
      application/admin/controller/teacher/Exams.php
  2. 1 0
      composer.json

+ 128 - 38
application/admin/controller/teacher/Exams.php

@@ -751,6 +751,35 @@ class Exams extends Backend
             ->order('user_username asc')
             ->paginate($limit);
 
+        foreach ($list as $k=>$v){
+
+            $fault_list = Db::name('real_exam_fault')->where(['exam_id'=>$v['exam_id'],'flag'=>1])->select();
+            $list[$k]['fault_name_one'] = Fault::where('fault_id',$fault_list[0]['fault_id'])->value('name');
+            $list[$k]['fault_name_two'] = Fault::where('fault_id',$fault_list[1]['fault_id'])->value('name');
+            $list[$k]['fault_name_three'] = Fault::where('fault_id',$fault_list[2]['fault_id'])->value('name');
+
+            $score = Db::name('real_exam_score')->where('exam_id', $v['exam_id'])->find();
+            $list[$k]['fault_score'] = 75-$score['fault_one_score']-$score['fault_two_score']-$score['fault_three_score'];
+            $list[$k]['fault_one_score'] = $score['fault_one_score'];
+            $list[$k]['fault_two_score'] = $score['fault_two_score'];
+            $list[$k]['fault_three_score'] = $score['fault_three_score'];
+
+
+            $list[$k]['weixiu_score'] = 10-$score['overtime_score']??0;
+            $list[$k]['overtime_score'] = $score['overtime_score']??0;
+
+            $list[$k]['other_jielun'] = !empty($score['other_jielun']) ? json_decode($score['other_jielun'],true):[];
+
+            $list[$k]['user_depart_name'] = Department::where('id',$v['user_depart_id'])->value('name');
+
+
+            $diffInSeconds = $v['endtime'] - $v['starttime']; // 两个时间戳之间的差异(秒)
+            $minutes = floor($diffInSeconds / 60); // 计算分钟数
+            $seconds = $diffInSeconds % 60; // 计算剩余的秒数
+            $list[$k]['shijian'] = $minutes.'分'.$seconds.'秒';
+        }
+
+
         $languageEnGb = new \PhpOffice\PhpWord\Style\Language(\PhpOffice\PhpWord\Style\Language::ZH_CN);
         $phpWord = new \PhpOffice\PhpWord\PhpWord();
         $phpWord->getSettings()->setThemeFontLang($languageEnGb);
@@ -760,101 +789,162 @@ class Exams extends Backend
         $fancyTableFirstRowStyle = array('borderBottomSize' => 0, 'borderBottomColor' => '#ffffff', 'bgColor' => '000000');
         $fancyTableCellStyle = array('valign' => 'center');
         $fancyTableFontStyle = array('bold' => true,'alignment' => \PhpOffice\PhpWord\SimpleType\JcTable::CENTER);
+        $fancyTableFontStyle1 = array('bold' => true,'alignment' => \PhpOffice\PhpWord\SimpleType\JcTable::START);
         $phpWord-> addTableStyle($fancyTableStyleName, $fancyTableStyle, $fancyTableFirstRowStyle);
 
         //中间学员的成绩信息  start
         foreach ($list as $k=> $it) {
             $section_string = 'section'.$k;
             $section_string = $phpWord->addSection([
-                'pageSizeH' => \PhpOffice\PhpWord\Shared\Converter::inchToTwip(12.7),
-                'pageSizeW' => \PhpOffice\PhpWord\Shared\Converter::inchToTwip(8.3)
+//                'pageSizeH' => \PhpOffice\PhpWord\Shared\Converter::inchToTwip(12.7),
+//                'pageSizeW' => \PhpOffice\PhpWord\Shared\Converter::inchToTwip(8.3)
             ]);
             $section_string->addTextBreak(1);
             $table = $section_string->addTable($fancyTableStyleName);
             $section_string -> addText($it['user_nickname'].'考试详细',[
-                'size'    => 16,
+                'size'    => 14,
                 'name'=>'黑体',
             ],['alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER,
                 'spaceAfter'  => 500,                                                   //标题后部预留长度
                 'spaceBefore' => 0]);
 
-            $TableContentStyle1 = array('size'=>10,'name'=>'宋体','lineHeight'  => 1.5);
+            $TableContentStyle1 = array('size'=>10,'name'=>'宋体','lineHeight' => 2);
+            $TableContentStyle11 = array('size'=>9,'name'=>'宋体');
+            $TableContentStyle2 = array('size'=>10,'name'=>'宋体','lineHeight' => 1.5);
 
             $table = $section_string->addTable($fancyTableStyleName);
             $table->addRow();
-            $table->addCell(2000, $fancyTableCellStyle)->addText("学员账号",$TableContentStyle1, $fancyTableFontStyle);
-            $table->addCell(2000, $fancyTableCellStyle)->addText($it['user_username'],$TableContentStyle1, $fancyTableFontStyle);
-            $table->addCell(2000, $fancyTableCellStyle)->addText("学员姓名",$TableContentStyle1, $fancyTableFontStyle);
-            $table->addCell(2000, $fancyTableCellStyle)->addText($it['user_nickname'],$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(4000, $fancyTableCellStyle)->addText("学员账号",$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(5000, $fancyTableCellStyle)->addText($it['user_username'],$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(4000, $fancyTableCellStyle)->addText("学员姓名",$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(5000, $fancyTableCellStyle)->addText($it['user_nickname'],$TableContentStyle1, $fancyTableFontStyle);
             $table->addCell(2000, $fancyTableCellStyle)->addText("区队",$TableContentStyle1, $fancyTableFontStyle);
-            $table->addCell(2000, $fancyTableCellStyle)->addText($it['user_nickname'],$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(3000, $fancyTableCellStyle)->addText($it['user_depart_name'],$TableContentStyle1, $fancyTableFontStyle);
 
             $table->addRow();
-            $table->addCell(2000, $fancyTableCellStyle)->addText("考试开始时间",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table->addCell(2000, $fancyTableCellStyle)->addText("详解",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table->addCell(2000, $fancyTableCellStyle)->addText("考试结束时间",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table->addCell(2000, $fancyTableCellStyle)->addText("详解",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table->addCell(2000, $fancyTableCellStyle)->addText("成绩",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table->addCell(2000, $fancyTableCellStyle)->addText("详解",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table->addCell(4000, $fancyTableCellStyle)->addText("考试开始时间",$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(5000, $fancyTableCellStyle)->addText(date('Y/m/d H:i:s',$it['starttime']),$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(4000, $fancyTableCellStyle)->addText("考试结束时间",$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(5000, $fancyTableCellStyle)->addText(date('Y/m/d H:i:s',$it['endtime']),$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(2000, $fancyTableCellStyle)->addText("成绩",$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(3000, $fancyTableCellStyle)->addText($it['total_score'],$TableContentStyle1, $fancyTableFontStyle);
 
             $table2 = $section_string->addTable($fancyTableStyleName);
             $table2->addRow();
-            $table2->addCell(2500, $fancyTableCellStyle)->addText("序号",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table2->addCell(2500, $fancyTableCellStyle)->addText("评分标准",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table2->addCell(2000, $fancyTableCellStyle)->addText("扣分",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table2->addCell(2500, $fancyTableCellStyle)->addText("维修情况",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table2->addCell(2500, $fancyTableCellStyle)->addText("题目",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table2->addCell(3000, $fancyTableCellStyle)->addText("序号",$TableContentStyle1, $fancyTableFontStyle);
+            $table2->addCell(7000, $fancyTableCellStyle)->addText("评分标准",$TableContentStyle1, $fancyTableFontStyle);
+            $table2->addCell(3000, $fancyTableCellStyle)->addText("扣分",$TableContentStyle1, $fancyTableFontStyle);
+            $table2->addCell(3000, $fancyTableCellStyle)->addText("维修情况",$TableContentStyle1, $fancyTableFontStyle);
+            $table2->addCell(7000, $fancyTableCellStyle)->addText("题目",$TableContentStyle1, $fancyTableFontStyle);
 
             $table3 = $section_string->addTable($fancyTableStyleName);
             $table3->addRow();
-            $table3->addCell(12000, $fancyTableCellStyle)->addText("一.故障排除(75分)(本题得分:0)",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table3->addCell(23000, $fancyTableCellStyle)->addText("一.故障排除(75分)(本题得分:0)",$TableContentStyle1, $fancyTableFontStyle1);
 
             //4
             $table4 = $section_string->addTable($fancyTableStyleName);
             $table4->addRow();
+            $table4->addCell(3000, $fancyTableCellStyle)->addText("1",$TableContentStyle1, $fancyTableFontStyle);
+            $table4->addCell(7000, $fancyTableCellStyle)->addText("故障一未排除扣25分",$TableContentStyle1, $fancyTableFontStyle);
+            $table4->addCell(3000, $fancyTableCellStyle)->addText($it['fault_one_score'],$TableContentStyle1, $fancyTableFontStyle);
+            if($it['fault_one_score']==0){
+                $fault_one_result = '已排除';
+            }else{
+                $fault_one_result = '未排除';
+            }
+            $table4->addCell(3000, $fancyTableCellStyle)->addText($fault_one_result,$TableContentStyle1, $fancyTableFontStyle);
+            $table4->addCell(7000, $fancyTableCellStyle)->addText($it['fault_name_one'],$TableContentStyle1, $fancyTableFontStyle);
+
+            $table4->addRow();
+            $table4->addCell(3000, $fancyTableCellStyle)->addText("2",$TableContentStyle1, $fancyTableFontStyle);
+            $table4->addCell(7000, $fancyTableCellStyle)->addText("故障二未排除扣25分",$TableContentStyle1, $fancyTableFontStyle);
+            $table4->addCell(3000, $fancyTableCellStyle)->addText($it['fault_two_score'],$TableContentStyle1, $fancyTableFontStyle);
+            if($it['fault_two_score']==0){
+                $fault_two_result = '已排除';
+            }else{
+                $fault_two_result = '未排除';
+            }
+            $table4->addCell(3000, $fancyTableCellStyle)->addText($fault_two_result,$TableContentStyle1, $fancyTableFontStyle);
+            $table4->addCell(7000, $fancyTableCellStyle)->addText($it['fault_name_two'],$TableContentStyle1, $fancyTableFontStyle);
+
+            $table4->addRow();
+            $table4->addCell(3000, $fancyTableCellStyle)->addText("3",$TableContentStyle1, $fancyTableFontStyle);
+            $table4->addCell(7000, $fancyTableCellStyle)->addText("故障三未排除扣25分",$TableContentStyle1, $fancyTableFontStyle);
+            $table4->addCell(3000, $fancyTableCellStyle)->addText($it['fault_three_score'],$TableContentStyle1, $fancyTableFontStyle);
+            if($it['fault_three_score']==0){
+                $fault_three_result = '已排除';
+            }else{
+                $fault_three_result = '未排除';
+            }
+            $table4->addCell(3000, $fancyTableCellStyle)->addText($fault_three_result,$TableContentStyle1, $fancyTableFontStyle);
+            $table4->addCell(7000, $fancyTableCellStyle)->addText($it['fault_name_three'],$TableContentStyle1, $fancyTableFontStyle);
 
 
             $table5 = $section_string->addTable($fancyTableStyleName);
             $table5->addRow();
-            $table5->addCell(12000, $fancyTableCellStyle)->addText("二.修理报告表(15分)(本题得分:0)",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table5->addCell(23000, $fancyTableCellStyle)->addText("二.修理报告表(15分)(本题得分:".$it['fault_score'].")",$TableContentStyle1, $fancyTableFontStyle1);
             $table5->addRow();
-            $table5->addCell(12000, $fancyTableCellStyle)->addText("学员答作答情况",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table5->addCell(23000, $fancyTableCellStyle)->addText("学员答作答情况",$TableContentStyle1, $fancyTableFontStyle1);
+
 
             $table6 = $section_string->addTable($fancyTableStyleName);
             $table6->addRow();
-            $table6->addCell(600, $fancyTableCellStyle)->addText("序号",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table6->addCell(2000, $fancyTableCellStyle)->addText("故障现象",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table6->addCell(2000, $fancyTableCellStyle)->addText("可能原因",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table6->addCell(2000, $fancyTableCellStyle)->addText("故障部位",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table6->addCell(2000, $fancyTableCellStyle)->addText("排除方法",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table6->addCell(2000, $fancyTableCellStyle)->addText("扣分原因",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table6->addCell(1400, $fancyTableCellStyle)->addText("扣分情况",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table6->addCell(1000, $fancyTableCellStyle)->addText("序号",$TableContentStyle1, $fancyTableFontStyle);
+            $table6->addCell(3000, $fancyTableCellStyle)->addText("故障现象",$TableContentStyle1, $fancyTableFontStyle);
+            $table6->addCell(5000, $fancyTableCellStyle)->addText("可能原因",$TableContentStyle1, $fancyTableFontStyle);
+            $table6->addCell(3000, $fancyTableCellStyle)->addText("故障部位",$TableContentStyle1, $fancyTableFontStyle);
+            $table6->addCell(3000, $fancyTableCellStyle)->addText("排除方法",$TableContentStyle1, $fancyTableFontStyle);
+            $table6->addCell(5000, $fancyTableCellStyle)->addText("扣分原因",$TableContentStyle1, $fancyTableFontStyle);
+            $table6->addCell(3000, $fancyTableCellStyle)->addText("扣分情况",$TableContentStyle1, $fancyTableFontStyle);
 
             //7
+            $table7 = $section_string->addTable($fancyTableStyleName);
+            foreach ($it['other_jielun'] as $k1 => $v1) {
+                $table7->addRow();
+                $table7->addCell(1000, $fancyTableCellStyle)->addText(++$v1['xh_id'],$TableContentStyle11, $fancyTableFontStyle);
+                $table7->addCell(3000, $fancyTableCellStyle)->addText($v1['xx_name'],$TableContentStyle11, $fancyTableFontStyle);
+                $table7->addCell(5000, $fancyTableCellStyle)->addText($v1['yy_name'],$TableContentStyle11, $fancyTableFontStyle);
+                $table7->addCell(3000, $fancyTableCellStyle)->addText($v1['bw_name'],$TableContentStyle11, $fancyTableFontStyle);
+                $table7->addCell(3000, $fancyTableCellStyle)->addText($v1['pc_name'],$TableContentStyle11, $fancyTableFontStyle);
+                $kf_yy = '';
+                if(!empty($v1['cx_name'])){
+                    foreach ($v1['cx_name'] as $k2 => $v2) {
+                        if($v1['gzxz_id'] == $v2['gzxz_id']){
+                            $kf_yy = $v2['cx_type'].":".$v2['cx_name'];
+                        }
+                    }
+                }else{
+                    $kf_yy = $v1['cx_type'];
+                }
+                $table7->addCell(5000, $fancyTableCellStyle)->addText($kf_yy,$TableContentStyle11, $fancyTableFontStyle);
+                $table7->addCell(3000, $fancyTableCellStyle)->addText($v1['cx_score']??0,$TableContentStyle11, $fancyTableFontStyle);
+            }
+
+
             $table8 = $section_string->addTable($fancyTableStyleName);
             $table8->addRow();
-            $table8->addCell(12000, $fancyTableCellStyle)->addText("故障现象少写或错写1条扣5分;可能原因少写或错写1条扣1分;故障部位少写或错写1条扣1分;排除方法少写或错写1条扣1分。",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table8->addCell(23000, $fancyTableCellStyle)->addText("故障现象少写或错写1条扣5分;可能原因少写或错写1条扣1分;故障部位少写或错写1条扣1分;排除方法少写或错写1条扣1分。",$TableContentStyle2, $fancyTableFontStyle1);
             $table8->addRow();
-            $table8->addCell(12000, $fancyTableCellStyle)->addText("三.维修时间(10分)(本题得分:0)",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table8->addCell(23000, $fancyTableCellStyle)->addText("三.维修时间(10分)(本题得分:".$it['weixiu_score'].")",$TableContentStyle1, $fancyTableFontStyle1);
 
 
             $table9 = $section_string->addTable($fancyTableStyleName);
             $table9->addRow();
-            $table9->addCell(4500, $fancyTableCellStyle)->addText("按没超过1分钟扣1分的比例扣分",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table9->addCell(3000, $fancyTableCellStyle)->addText("考试时长:291分55秒",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table9->addCell(1500, $fancyTableCellStyle)->addText("扣分:10",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table9->addCell(8500, $fancyTableCellStyle)->addText("按没超过1分钟扣1分的比例扣分",$TableContentStyle1, $fancyTableFontStyle);
+            $table9->addCell(8500, $fancyTableCellStyle)->addText("考试时长:".$it['shijian'],$TableContentStyle1, $fancyTableFontStyle);
+            $table9->addCell(6000, $fancyTableCellStyle)->addText("扣分:".$it['overtime_score'],$TableContentStyle1, $fancyTableFontStyle);
 
 
             $table10 = $section_string->addTable($fancyTableStyleName);
             $table10->addRow();
-            $table10->addCell(6000, $fancyTableCellStyle)->addText("五.成绩",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
-            $table10->addCell(6000, $fancyTableCellStyle)->addText("",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table10->addCell(11500, $fancyTableCellStyle)->addText("五.成绩",$TableContentStyle1, $fancyTableFontStyle);
+            $table10->addCell(11500, $fancyTableCellStyle)->addText($it['total_score'],$TableContentStyle1, $fancyTableFontStyle);
         }
         //中间学员的成绩信息  end
 
         $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
 
-        $file_name = $doc_name.'.docx';//''uploads/'.date('Ymd').'/'.$userInfo['grade'].'年级'.$userInfo['classed'].'班级'.$userInfo['nickname'].'.docx';
+        $file_name = 'uploads/'.date('Ymd').'/'.$doc_name.'.docx';
 
         $tmpPath ='uploads/'.date('Ymd').'/';
         if(!file_exists($tmpPath)){

+ 1 - 0
composer.json

@@ -24,6 +24,7 @@
         "karsonzhang/fastadmin-addons": "~1.4.0",
         "overtrue/pinyin": "^3.0",
         "phpoffice/phpspreadsheet": "^1.29.1",
+        "phpoffice/phpword": "0.16.0",
         "overtrue/wechat": "^4.6",
         "ext-json": "*",
         "ext-curl": "*",