Bläddra i källkod

20250207 优化调整

贾小兵 2 månader sedan
förälder
incheckning
508060b58a
1 ändrade filer med 115 tillägg och 113 borttagningar
  1. 115 113
      application/admin/controller/student/Collection.php

+ 115 - 113
application/admin/controller/student/Collection.php

@@ -240,132 +240,134 @@ class Collection extends Backend
                     if($fault_right_list[2]['answer_right']==1){
                         $fault_three_score = 0;
                     }
+                }
 
-                    //根据故障部位 数组
-                    $fault_arr = [$fault_right_list[0]['fault_id'],$fault_right_list[1]['fault_id'],$fault_right_list[2]['fault_id']];
-                    
-                    //根据故障部位查找,匹配的排除方法
-                    $paichu_arr = Report::where(['bw_id'=>['in',$fault_arr]])->column('pc_id');
-                    //根据故障部位查找,匹配可能原因
-                    $yy_arr = Report::where(['bw_id'=>['in',$fault_arr]])->column('yy_id');
-
-                    //查找故障现象 数组
-                    $partent_fault_id = Fault::where(['fault_id'=>['in',$fault_arr]])->column('parent_fault_id');
-
-                    //获取数组
-                    $other_report = json_decode($params['other_report'],true);
-                    if(!empty($other_report)){
-                        foreach ($other_report as $key => $em){
-                            //故障现象
-                            $xianxian_arr[] = $em['xx_id'];
-                            //故障部位
-                            $buwei_arr[] = $em['bw_id'];
-                            //可能原因
-                            $yuanyin_arr[] = $em['yy_id'];
-                            //排除方法
-                            $fangfa_arr[] = $em['pc_id'];
-                        }
+                $fault_right_list = Db::name('real_exam_fault')->where(['exam_id'=>$ids,'flag'=>1])->select();
+                //根据故障部位 数组
+                $fault_arr = [$fault_right_list[0]['fault_id'],$fault_right_list[1]['fault_id'],$fault_right_list[2]['fault_id']];
+                
+                //根据故障部位查找,匹配的排除方法
+                $paichu_arr = Report::where(['bw_id'=>['in',$fault_arr]])->column('pc_id');
+                //根据故障部位查找,匹配可能原因
+                $yy_arr = Report::where(['bw_id'=>['in',$fault_arr]])->column('yy_id');
+
+                //查找故障现象 数组
+                $partent_fault_id = Fault::where(['fault_id'=>['in',$fault_arr]])->column('parent_fault_id');
+
+                //获取数组
+                $other_report = json_decode($params['other_report'],true);
+                if(!empty($other_report)){
+                    foreach ($other_report as $key => $em){
+                        //故障现象
+                        $xianxian_arr[] = $em['xx_id'];
+                        //故障部位
+                        $buwei_arr[] = $em['bw_id'];
+                        //可能原因
+                        $yuanyin_arr[] = $em['yy_id'];
+                        //排除方法
+                        $fangfa_arr[] = $em['pc_id'];
                     }
-                    
-                    //故障现象 分数 start
-                    foreach ($partent_fault_id as $k1 =>$t){
-                        if(!in_array($t,$xianxian_arr)){
-                            $xianxian_score = 1+$xianxian_score;
-                            $xianxian_content[] = [
-                                'cx_id'=>$t,
-                                'cx_type'=>'少写',
-                                'cx_name'=>Fault::where(['fault_id'=>$t])->value('name'),
-                            ];
-                        }
+                }
+                
+                //故障现象 分数 start
+                foreach ($partent_fault_id as $k1 =>$t){
+                    if(!in_array($t,$xianxian_arr)){
+                        $xianxian_score = 1+$xianxian_score;
+                        $xianxian_content[] = [
+                            'cx_id'=>$t,
+                            'cx_type'=>'少写',
+                            'cx_name'=>Fault::where(['fault_id'=>$t])->value('name'),
+                        ];
                     }
-                    foreach ($xianxian_arr as $k2 =>$t2){
-                        if(!in_array($t2,$partent_fault_id)){
-                            $xianxian_score = 1+$xianxian_score;
-                            $xianxian_content[] = [
-                                'cx_id'=>$t2,
-                                'cx_type'=>'错写',
-                                'cx_name'=>Fault::where(['fault_id'=>$t2])->value('name'),
-                            ];
-                        }
+                }
+                foreach ($xianxian_arr as $k2 =>$t2){
+                    if(!in_array($t2,$partent_fault_id)){
+                        $xianxian_score = 1+$xianxian_score;
+                        $xianxian_content[] = [
+                            'cx_id'=>$t2,
+                            'cx_type'=>'错写',
+                            'cx_name'=>Fault::where(['fault_id'=>$t2])->value('name'),
+                        ];
                     }
-                    //故障现象 end
+                }
+                //故障现象 end
 
 
-                    //故障部位 start
-                    foreach ($fault_arr as $k11 =>$t11){
-                        if(!in_array($t11,$buwei_arr)){
-                            $buwei_score = 1+$buwei_score;
-                            $buwei_content[] = [
-                                'cx_id'=>$t11,
-                                'cx_type'=>'少写',
-                                'cx_name'=>Fault::where(['fault_id'=>$t11])->value('name'),
-                            ];
-                        }
+                //故障部位 start
+                foreach ($fault_arr as $k11 =>$t11){
+                    if(!in_array($t11,$buwei_arr)){
+                        $buwei_score = 1+$buwei_score;
+                        $buwei_content[] = [
+                            'cx_id'=>$t11,
+                            'cx_type'=>'少写',
+                            'cx_name'=>Fault::where(['fault_id'=>$t11])->value('name'),
+                        ];
                     }
-                    foreach ($buwei_arr as $k12 =>$t12){
-                        if(!empty($t12) && !in_array($t12,$fault_arr)){
-                            //错写
-                            $buwei_score = 1+$buwei_score;
-                            $buwei_content[] = [
-                                'cx_id'=>$t12,
-                                'cx_type'=>'错写',
-                                'cx_name'=>Fault::where(['fault_id'=>$t12])->value('name'),
-                            ];
-                        }
+                }
+                foreach ($buwei_arr as $k12 =>$t12){
+                    if(!empty($t12) && !in_array($t12,$fault_arr)){
+                        //错写
+                        $buwei_score = 1+$buwei_score;
+                        $buwei_content[] = [
+                            'cx_id'=>$t12,
+                            'cx_type'=>'错写',
+                            'cx_name'=>Fault::where(['fault_id'=>$t12])->value('name'),
+                        ];
                     }
-                    //故障部位 end
-                    
-
-                    //排除方法 start
-                    //循环固定的排除方法,匹配作答的排除方法
-                    foreach ($paichu_arr as $k21 =>$t21){
-                        if(!in_array($t21,$fangfa_arr)){
-                            $fangfa_score = 1+$fangfa_score;
-                            $fangfa_content[] = [
-                                'cx_id'=>$t21,
-                                'cx_type'=>'少写',
-                                'cx_name'=>Fault::where(['fault_id'=>$t21])->value('name'),
-                            ];
-                        }
+                }
+                //故障部位 end
+                
+
+                //排除方法 start
+                //循环固定的排除方法,匹配作答的排除方法
+                foreach ($paichu_arr as $k21 =>$t21){
+                    if(!in_array($t21,$fangfa_arr)){
+                        $fangfa_score = 1+$fangfa_score;
+                        $fangfa_content[] = [
+                            'cx_id'=>$t21,
+                            'cx_type'=>'少写',
+                            'cx_name'=>Fault::where(['fault_id'=>$t21])->value('name'),
+                        ];
                     }
-                    //循环作答的排除方法,,匹配固定的排除方法
-                    foreach ($fangfa_arr as $k22 =>$t22){
-                        if(!empty($t22) && !in_array($t22,$paichu_arr)){
-                            $fangfa_score = 1+$fangfa_score;
-                            $fangfa_content[] = [
-                                'cx_id'=>$t22,
-                                'cx_type'=>'错写',
-                                'cx_name'=>Fault::where(['fault_id'=>$t22])->value('name'),
-                            ];
-                        }
+                }
+                //循环作答的排除方法,,匹配固定的排除方法
+                foreach ($fangfa_arr as $k22 =>$t22){
+                    if(!empty($t22) && !in_array($t22,$paichu_arr)){
+                        $fangfa_score = 1+$fangfa_score;
+                        $fangfa_content[] = [
+                            'cx_id'=>$t22,
+                            'cx_type'=>'错写',
+                            'cx_name'=>Fault::where(['fault_id'=>$t22])->value('name'),
+                        ];
                     }
-                    //排除方法 end
-
-                    //可能原因 start
-                    //循环固定的可能原因,匹配作答的可能原因
-                    foreach ($yy_arr as $k31 =>$t31){
-                        if(!in_array($t31,$yuanyin_arr)){
-                            $yuanyin_socre = 1+$yuanyin_socre;
-                            $yuanyin_content[] = [
-                                'cx_id'=>$t31,
-                                'cx_type'=>'少写',
-                                'cx_name'=>Fault::where(['fault_id'=>$t31])->value('name'),
-                            ];
-                        }
+                }
+                //排除方法 end
+
+                //可能原因 start
+                //循环固定的可能原因,匹配作答的可能原因
+                foreach ($yy_arr as $k31 =>$t31){
+                    if(!in_array($t31,$yuanyin_arr)){
+                        $yuanyin_socre = 1+$yuanyin_socre;
+                        $yuanyin_content[] = [
+                            'cx_id'=>$t31,
+                            'cx_type'=>'少写',
+                            'cx_name'=>Fault::where(['fault_id'=>$t31])->value('name'),
+                        ];
                     }
-                    //循环作答的排除方法,,匹配固定的排除方法
-                    foreach ($yuanyin_arr as $k32 =>$t32){
-                        if(!empty($t32) && !in_array($t32,$yy_arr)){
-                            $yuanyin_socre = 1+$yuanyin_socre;
-                            $yuanyin_content[] = [
-                                'cx_id'=>$t32,
-                                'cx_type'=>'错写',
-                                'cx_name'=>Fault::where(['fault_id'=>$t32])->value('name'),
-                            ];
-                        }
+                }
+                //循环作答的排除方法,,匹配固定的排除方法
+                foreach ($yuanyin_arr as $k32 =>$t32){
+                    if(!empty($t32) && !in_array($t32,$yy_arr)){
+                        $yuanyin_socre = 1+$yuanyin_socre;
+                        $yuanyin_content[] = [
+                            'cx_id'=>$t32,
+                            'cx_type'=>'错写',
+                            'cx_name'=>Fault::where(['fault_id'=>$t32])->value('name'),
+                        ];
                     }
-                    //可能原因 end
                 }
+                //可能原因 end
+                
                 $weixiu_score = $xianxian_score+$yuanyin_socre+$buwei_score+$fangfa_score;
                 if($weixiu_score>15){
                     $weixiu_score = 15;