sandm 3 лет назад
Родитель
Сommit
9088e5c3f2
2 измененных файлов с 55 добавлено и 8 удалено
  1. 22 3
      app/Admin/Controllers/Recruit/RecruitTicketController.php
  2. 33 5
      app/Jobs/TicketJob.php

+ 22 - 3
app/Admin/Controllers/Recruit/RecruitTicketController.php

@@ -204,15 +204,19 @@ class RecruitTicketController extends Controller
             switch ($pen['type']){
                 case '1':
                     //自动生成
-                    $list = RecruitAppointInfo::where('recruit_id',$data['recruit_id'])->where('audit',3)->where('pen_audit',-1)->orderBy('post_id','asc')->orderBy('created_at','asc')->get()->toArray();
+                    $list = RecruitAppointInfo::where('recruit_id',$data['recruit_id'])->where('audit',3)->where('pen_audit',-1)->select('id','realname','card','post_id','avatar')->orderBy('post_id','asc')->orderBy('created_at','asc')->get()->toArray();
+                    if(!$list || count($list) == 0){
+                        return response()->json(['status' => 0, 'msg' => '无数据可生成'], 200);
+                    }
                     //$post_data = RecruitPost::where('recruit_id',$data['recruit_id'])->where('status',1)->selectRaw('id, CONCAT(code," ",name) as post')->pluck('post', 'id');
                     $list = array_chunk($list,$pen['auto_each_number'],true);
-
-                    if($list){
+                    if(count($list) <= 10){
+                        //小于10个队列数直接处理
                         foreach ($list as $room => $room_list){
                             if(is_array($room_list)){
                                 $ticket_data = [
                                     'type' => 1,
+                                    'multiple' => 0,
                                     'list' => $room_list,
                                     'room' => $room,
                                     'ex_start' => $pen['ex_start'],
@@ -222,6 +226,21 @@ class RecruitTicketController extends Controller
                                 dispatch($ticket);
                             }
                         }
+                    }else{
+                        //划分10个队列任务
+                        $number = count($list) / 10 +1;
+                        $list = array_chunk($list,$number,true);
+                        foreach ($list as $k => $v){
+                            $ticket_data = [
+                                'type' => 1,
+                                'multiple' => 1,
+                                'list' => $v,
+                                'ex_start' => $pen['ex_start'],
+                                'ex_end' => $pen['ex_end']
+                            ];
+                            $ticket = new TicketJob($data['recruit_id'],'pen',$ticket_data);
+                            dispatch($ticket);
+                        }
                     }
 
                     Recruit::where('id',$data['recruit_id'])->update(['pen_ticket_status' => 2]);

+ 33 - 5
app/Jobs/TicketJob.php

@@ -59,10 +59,10 @@ class TicketJob implements ShouldQueue
                         //$list = RecruitAppointInfo::where('recruit_id',$this->recruit_id)->where('audit',3)->where('pen_audit',-1)->orderBy('post_id','asc')->orderBy('created_at','asc')->get()->toArray();
                         $post_data = RecruitPost::where('recruit_id',$this->recruit_id)->where('status',1)->selectRaw('id, CONCAT(code," ",name) as post')->pluck('post', 'id');
                         $list = $this->data['list'];//array_chunk($list,$this->data['auto_each_number'],true);
-                        //foreach ($list as $room => $room_list){
-                            if(is_array($list)){
-                                $room = $this->data['room'];
-                                foreach ($list as $k => $v){
+                        if($this->data['multiple']){
+                            //队列多任务
+                            foreach ($list as $room => $room_list){
+                                foreach ($room_list as $k => $v){
                                     $seat = ($k%30) + 1;
                                     $item = [
                                         'realname' => $v['realname'],
@@ -87,7 +87,35 @@ class TicketJob implements ShouldQueue
                                     $this->fetch($item,$recruit->pen_ticket_content, 'pen', $recruit);
                                 }
                             }
-                        //}
+                        }else{
+                            $room = $this->data['room'];
+                            foreach ($list as $k => $v){
+                                $seat = ($k%30) + 1;
+                                $item = [
+                                    'realname' => $v['realname'],
+                                    'ex_number' => date("Y",time()) . '0101101' . sprintf("%02d",($room+1)) . sprintf("%02d",$seat),
+                                    'card' => $v['card'],
+                                    'post' => $post_data[$v['post_id']],
+                                    'ex_room' => sprintf("%02d",($room+1)),
+                                    'ex_seat' => sprintf("%02d",$seat),
+                                    'avatar' => $v['avatar']
+                                ];
+                                $ticket = [
+                                    'appoint_id' => $v['id'],
+                                    'ex_type' => 1,
+                                    'ex_number' => $item['ex_number'],
+                                    'ex_seat' => $item['ex_seat'],
+                                    'ex_room' => $item['ex_room'],
+                                    'ex_status' => 0,
+                                    'ex_start' => $this->data['ex_start'],
+                                    'ex_end' => $this->data['ex_end']
+                                ];
+                                RecruitTicket::create($ticket);
+                                $this->fetch($item,$recruit->pen_ticket_content, 'pen', $recruit);
+                            }
+
+                        }
+
                         //$this->pdf('pen',$recruit);
                         //Recruit::where('id',$this->recruit_id)->update(['pen_ticket_status' => 2]);
                         break;