liugc 1 год назад
Родитель
Сommit
8c18d4030a

+ 3 - 3
app/adminapi/lists/training/TrainingWorkerCourseLists.php

@@ -38,7 +38,7 @@ class TrainingWorkerCourseLists extends BaseAdminDataLists implements ListsSearc
     public function setSearch(): array
     {
         return [
-            '=' => ['master_worker_id', 'training_task_id', 'training_course_id', 'play_time', 'exam_start_time', 'exam_end_time', 'study_status', 'question_all_score', 'question_qualified_score', 'exam_score'],
+            '=' => ['master_worker_id', 'training_task_id', 'training_course_id', 'play_time', 'exam_start_time', 'exam_end_time', 'study_status', 'exam_score'],
 
         ];
     }
@@ -55,8 +55,8 @@ class TrainingWorkerCourseLists extends BaseAdminDataLists implements ListsSearc
      */
     public function lists(): array
     {
-        return TrainingWorkerCourse::where($this->searchWhere)
-            ->field(['id', 'master_worker_id', 'training_task_id', 'training_course_id', 'play_time', 'exam_start_time', 'exam_end_time', 'study_status', 'question_all_score', 'question_qualified_score', 'exam_score'])
+        return TrainingWorkerCourse::with(['trainingCourse','masterWorker','trainingTask'])->where($this->searchWhere)
+            ->field(['id', 'master_worker_id', 'training_task_id', 'training_course_id', 'play_time', 'exam_start_time', 'exam_end_time', 'study_status', 'exam_score'])
             ->limit($this->limitOffset, $this->limitLength)
             ->order(['id' => 'desc'])
             ->select()

+ 10 - 1
app/adminapi/logic/works/ServiceWorkLogic.php

@@ -31,6 +31,7 @@ use app\common\model\performance\PerformanceRules;
 use app\common\model\recharge\OrderGoods;
 use app\common\model\recharge\RechargeOrder;
 use app\common\model\spare_part\SparePart;
+use app\common\model\training\TrainingWorkerTask;
 use app\common\model\works\ServiceWork;
 use app\common\logic\BaseLogic;
 use app\common\model\works\ServiceWorkAllocateWorkerLog;
@@ -405,8 +406,16 @@ class ServiceWorkLogic extends BaseLogic
         ])->append(['id','work_status_text','service_status_text'])
             ->where($work_where)
             ->findOrEmpty()->toArray();
+        $result['is_lead_work'] = 0;
         if(isset($params['user_id']) && $params['user_id'] && ($params['user_id'] != $result['master_worker_id'])){
-            throw new \Exception('您没有权限操作该工单');
+            // 带徒师傅的工单
+            $lead_master_worker_id = TrainingWorkerTask::where('master_worker_id',$params['user_id'])->where('training_status',2)
+                ->where('operate_status',0)->value('lead_master_worker_id');
+            if($lead_master_worker_id == $result['master_worker_id']){
+                $result['is_lead_work'] = 1;
+            }else{
+                throw new \Exception('您没有权限操作该工单');
+            }
         }
         //工程师工单按钮状态
         $work_service_status = 0;

+ 12 - 2
app/common/model/training/TrainingWorkerCourse.php

@@ -16,7 +16,7 @@ namespace app\common\model\training;
 
 
 use app\common\model\BaseModel;
-
+use app\common\model\master_worker\MasterWorker;
 
 
 /**
@@ -33,5 +33,15 @@ class TrainingWorkerCourse extends BaseModel
     {
         return $this->hasOne(TrainingCourse::class, 'id', 'training_course_id');
     }
-    
+    public function masterWorker()
+    {
+        return $this->hasOne(MasterWorker::class, 'id', 'master_worker_id');
+    }
+    public function trainingTask()
+    {
+        return $this->hasOne(TrainingTask::class, 'id', 'training_task_id');
+    }
+
+
+
 }

+ 8 - 0
app/workerapi/lists/ServiceWorkLists.php

@@ -3,6 +3,7 @@ namespace app\workerapi\lists;
 
 use app\common\lists\ListsExtendInterface;
 use app\common\model\master_worker\MasterWorker;
+use app\common\model\training\TrainingWorkerTask;
 use app\common\model\works\ServiceWork;
 use app\common\lists\ListsSearchInterface;
 use DateTime;
@@ -34,6 +35,13 @@ class ServiceWorkLists extends BaseWorkerDataLists implements ListsSearchInterfa
             'master_worker_id'=>$this->userId,
             'approval'=>1,//派单的时候默认审核了
         ];
+        // 带徒师傅的工单
+        $lead_master_worker_id = TrainingWorkerTask::where('master_worker_id',$this->userId)->where('training_status',2)
+            ->where('operate_status',0)->value('lead_master_worker_id');
+        if($lead_master_worker_id){
+            unset($where['master_worker_id']);
+            $where[] = ['master_worker_id','in',[$this->userId,$lead_master_worker_id]];
+        }
         //条件搜索
         $status = $this->params['status'] ?? 0;
         switch ($status){

+ 24 - 10
app/workerapi/logic/TrainingLogic.php

@@ -95,6 +95,10 @@ class TrainingLogic extends  BaseLogic
                 case 1:
                     $logCourse->play_time = 1;
                     $logCourse->study_status = 1;
+                    TrainingWorkerTask::where('training_task_id',$logCourse->training_task_id)
+                        ->where('master_worker_id',$logCourse->master_worker_id)
+                        ->where('training_status',0)
+                        ->update(['training_status'=>1]);
                     break;
                 case 2:
                     $logCourse->play_time = $params['play_time']??10;
@@ -139,18 +143,17 @@ class TrainingLogic extends  BaseLogic
                 TrainingWorkerQuestion::update(['worker_answer'=>'','exam_score'=>0],['worker_course_id'=>$params['worker_course_id']]);
                 $study_status = 2;
             }
-            $list = [];
             if($workerCourse['study_status'] == 2 || $study_status == 2) {
                 // 开始考试
                 self::upWorkerCourse(['id'=>$params['worker_course_id'],'status'=> 4]);
-                $list = TrainingWorkerQuestion::with(['trainingQuestions'])->where('worker_course_id',$params['worker_course_id'])->select()->toArray();
-                foreach ($list as &$item) {
-                    $item['title'] = $item['trainingQuestions']['title'];
-                    $item['question_type'] = $item['trainingQuestions']['question_type'];
-                    $item['question_selects'] = $item['trainingQuestions']['question_selects'];
-                    $item['question_answer'] = $item['trainingQuestions']['question_answer'];
-                    $item['question_analysis'] = $item['trainingQuestions']['question_analysis'];
-                }
+            }
+            $list = TrainingWorkerQuestion::with(['trainingQuestions'])->where('worker_course_id',$params['worker_course_id'])->select()->toArray();
+            foreach ($list as &$item) {
+                $item['title'] = $item['trainingQuestions']['title'];
+                $item['question_type'] = $item['trainingQuestions']['question_type'];
+                $item['question_selects'] = $item['trainingQuestions']['question_selects'];
+                $item['question_answer'] = $item['trainingQuestions']['question_answer'];
+                $item['question_analysis'] = $item['trainingQuestions']['question_analysis'];
             }
             return $list;
         } catch (\Exception $e) {
@@ -203,6 +206,18 @@ class TrainingLogic extends  BaseLogic
                 ['id' => $params['worker_course_id']]
             );
 
+            // 该工程师的课程全部完成,更新任务状态
+            $workerCourseCount = TrainingWorkerCourse::where('master_worker_id',$exam_paper_details['master_worker_id'])
+                ->where('training_task_id',$exam_paper_details['training_task_id'])
+                ->where('study_status','<',5)
+                ->count();
+            if($workerCourseCount == 0){
+                TrainingWorkerTask::where('master_worker_id',$exam_paper_details['master_worker_id'])
+                    ->where('training_task_id',$exam_paper_details['training_task_id'])
+                    ->where('training_status',1)
+                    ->update(['training_status'=>2]);
+            }
+
             Db::commit();
             return true;
         }catch(\Exception $e){
@@ -232,7 +247,6 @@ class TrainingLogic extends  BaseLogic
     }
 
 
-
     /**
      * 考试结果统计
      * @param int $teamId