فهرست منبع

复试准考证

sandm 2 سال پیش
والد
کامیت
ea0a7ca310
2فایلهای تغییر یافته به همراه194 افزوده شده و 5 حذف شده
  1. 93 2
      app/Admin/Controllers/Recruit/RecruitTicketController.php
  2. 101 3
      app/Jobs/TicketJob.php

+ 93 - 2
app/Admin/Controllers/Recruit/RecruitTicketController.php

@@ -386,13 +386,104 @@ class RecruitTicketController extends Controller
 
                 $ticket_data = [
                     'type' => 1,
-                    'auto_each_number' => $pen['auto_each_number']
+                    'auto_each_number' => $face['auto_each_number']
                 ];
-                Recruit::where('id',$data['recruit_id'])->update(['pen_ticket_status' => 1]);
+                Recruit::where('id',$data['recruit_id'])->update(['face_ticket_status' => 1]);
                 $ticket = new TicketJob($data['recruit_id'],'face',$ticket_data);
                 dispatch($ticket);
                 return response()->json(['status' => 1, 'msg' => '准考证生成成功'], 200);
                 break;
+            case 'reexamine':
+                $reexamine = $data['reexamine'];
+                //面试通知书前置检查
+                if($recruit->reexamine_ticket_type < 0){
+                    return response()->json(['status' => 0, 'msg' => '未开启设置复试准考证的功能'], 200);
+                }
+                if(empty($recruit->reexamine_ticket_content)){
+                    return response()->json(['status' => 0, 'msg' => '未设置准考证模板'], 200);
+                }
+                if($recruit->reexamine_ticket_status > 0){
+                    return response()->json(['status' => 0, 'msg' => '复试准考证正在生成中或已生成,暂不允许操作,有疑问请联系技术人员'], 200);
+                }
+                if(!array_key_exists('type',$reexamine) || !in_array($reexamine['type'],[0,1,2])){
+                    return response()->json(['status' => 0, 'msg' => '请指定正确的复试准考证生成方式'], 200);
+                }
+                if($reexamine['type'] == 2 && (!array_key_exists('data',$reexamine) || empty($reexamine['data']))){
+                    return response()->json(['status' => 0, 'msg' => '请上传复试准考证数据'], 200);
+                }
+                if(!array_key_exists('ex_start',$reexamine) || empty($reexamine['ex_start'])){
+                    return response()->json(['status' => 0, 'msg' => '准考证开启打印时间不能为空'], 200);
+                }
+                if(!array_key_exists('ex_end',$reexamine) || empty($reexamine['ex_end'])){
+                    return response()->json(['status' => 0, 'msg' => '准考证结束打印时间不能为空'], 200);
+                }
+
+                switch ($reexamine['type']){
+                    case '0':
+                        Recruit::where('id',$data['recruit_id'])->update(['reexamine_ticket_status' => 1]);
+                        $ticket = new TicketJob($data['recruit_id'],'face',['type' => '0','ex_start' => $reexamine['ex_start'], 'ex_end' => $reexamine['ex_end']]);
+                        dispatch($ticket);
+                        return response()->json(['status' => 1, 'msg' => '准考证生成成功'], 200);
+                        break;
+                    case '1':
+                        //自动生成
+                        $ticket_data = [
+                            'type' => 1,
+                            'auto_each_number' => $reexamine['auto_each_number'],
+                            'ex_start' => $reexamine['ex_start'],
+                            'ex_end' => $reexamine['ex_end']
+                        ];
+                        Recruit::where('id',$data['recruit_id'])->update(['reexamine_ticket_status' => 1]);
+                        $ticket = new TicketJob($data['recruit_id'],'reexamine',$ticket_data);
+                        dispatch($ticket);
+                        return response()->json(['status' => 1, 'msg' => '准考证生成成功'], 200);
+                        break;
+                    case '2':
+                        $ticket_url = base_path() . "/storage/app/public/recruit/ticket/" . uniqid() . '.xlsx';
+                        if(move_uploaded_file($_FILES['$reexamine']['tmp_name']['data'],$ticket_url)){
+                            $spreadsheet = IOFactory::load($ticket_url);
+                            $sheet = $spreadsheet->getActiveSheet();
+                            $rowCount = $sheet->getHighestRow();
+                            $ticket_data = [
+                                'type' => 2,
+                                'list' => [],
+                                'ex_start' => $reexamine['ex_start'],
+                                'ex_end' => $reexamine['ex_end']
+                            ];
+                            for($row = 2;$row<=$rowCount;$row++){
+                                $ticket_data['list'][$sheet->getCell("B{$row}")->getValue()] = [
+                                    'ex_number' => $sheet->getCell("D{$row}")->getValue(),
+                                    'ex_subject' => $sheet->getCell("E{$row}")->getValue(),
+                                    'ex_room' => $sheet->getCell("F{$row}")->getValue(),
+                                    'ex_seat' => $sheet->getCell("G{$row}")->getValue(),
+                                    'ex_time' => $sheet->getCell("H{$row}")->getValue(),
+                                    'ex_name' => $sheet->getCell("I{$row}")->getValue(),
+                                    'ex_address' => $sheet->getCell("J{$row}")->getValue(),
+                                    'ex_ready_time' => $sheet->getCell("K{$row}")->getValue(),
+                                    'extra1' => $sheet->getCell("L{$row}")->getValue(),
+                                    'extra2' => $sheet->getCell("M{$row}")->getValue(),
+                                    'extra3' => $sheet->getCell("N{$row}")->getValue()
+                                ];
+                            }
+                            Recruit::where('id',$data['recruit_id'])->update(['reexamine_ticket_status' => 1]);
+                            $ticket = new TicketJob($data['recruit_id'],'reexamine',$ticket_data);
+                            dispatch($ticket);
+                            return response()->json(['status' => 1, 'msg' => '准考证生成成功'], 200);
+                        }else{
+                            return response()->json(['status' => 0, 'msg' => '准考证生成失败'], 200);
+                        }
+                        break;
+                }
+
+                $ticket_data = [
+                    'type' => 1,
+                    'auto_each_number' => $reexamine['auto_each_number']
+                ];
+                Recruit::where('id',$data['recruit_id'])->update(['reexamine_ticket_status' => 1]);
+                $ticket = new TicketJob($data['recruit_id'],'reexamine',$ticket_data);
+                dispatch($ticket);
+                return response()->json(['status' => 1, 'msg' => '准考证生成成功'], 200);
+                break;
         }
 
     }

+ 101 - 3
app/Jobs/TicketJob.php

@@ -260,7 +260,7 @@ class TicketJob implements ShouldQueue
                                 'ex_subject' => array_key_exists('ex_subject',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_subject'] : '',
                                 'ex_status' => 0,
                                 'ex_start' => $interview_start,
-                                'ex_end' => $interview_start
+                                'ex_end' => $interview_end
                             ];
                             RecruitTicket::create($ticket);
                             $this->fetch($item,$recruit->face_ticket_content, 'face', $recruit);
@@ -268,7 +268,105 @@ class TicketJob implements ShouldQueue
 
                         }
                         //$this->pdf('pen',$recruit);
-                        Recruit::where('id',$this->recruit_id)->update(['pen_ticket_status' => 2]);
+                        Recruit::where('id',$this->recruit_id)->update(['face_ticket_status' => 2]);
+                        break;
+                }
+                break;
+            case 'reexamine':
+                if(!$recruit->reexamine_ticket_content){
+                    return;
+                }
+                if(empty($recruit->reexamine_start)){
+                    $reexamine_start = $this->data['ex_start'];
+                    $reexamine_end = $this->data['ex_end'];
+                }else{
+                    $reexamine_start = $recruit->reexamine_start;
+                    $reexamine_end = $recruit->reexamine_end;
+                }
+                switch ($this->data['type']){
+                    case '0'://不需要额外数据
+                        $list = RecruitAppointInfo::where('recruit_id',$this->recruit_id)->where('audit',3)->where('reexamine_audit',-1)->where(function($query){
+                            $query->where('face_audit',1)
+                                ->orWhere('face_audit',3);
+                        })->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');
+                        if($list){
+                            foreach ($list as $k => $v){
+                                $item = [
+                                    'appoint_id' => $v['id'],
+                                    'ex_type' => 3,
+                                    'realname' => $v['realname'],
+                                    'ex_title' => '',
+                                    'card' => $v['card'],
+                                    'ex_time' => '',
+                                    'ex_address' => '',
+                                    'post' => $post_data[$v['post_id']],
+                                ];
+                                $ticket = [
+                                    'appoint_id' => $v['id'],
+                                    'ex_type' => 3,
+                                    'ex_status' => 0,
+                                    'ex_start' => $reexamine_start,
+                                    'ex_end' => $reexamine_end
+                                ];
+                                RecruitTicket::create($ticket);
+                                $this->fetch($item,$recruit->reexamine_ticket_content, 'reexamine_audit', $recruit);
+                            }
+                        }
+                        break;
+                    case '2':
+                        $ticket_data_list = $this->data['list'];
+                        $list = RecruitAppointInfo::where('recruit_id',$this->recruit_id)
+                            ->where('audit',3)
+                            ->where('reexamine_audit',-1)
+                            ->where(function($query){
+                                $query->where('recruit_appoint_info.face_audit',1)
+                                    ->orWhere('recruit_appoint_info.face_audit',3);
+                            })
+                            ->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');
+
+                        foreach ($list as $k => $v){
+                            if(!array_key_exists($v['card'],$ticket_data_list)){
+                                echo "{$v['realname']}_{$v['card']}_{$post_data[$v['post_id']]} 不在准考名单内\r\n";
+                                continue;
+                            }
+
+                            $item = [
+                                'realname' => $v['realname'],
+                                'ex_number' => array_key_exists('ex_number',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_number'] : '',
+                                'card' => $v['card'],
+                                'post' => $post_data[$v['post_id']],
+                                'ex_address' => array_key_exists('ex_address',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_address'] : '',
+                                'ex_time' => array_key_exists('ex_time',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_time'] : '',
+                                'ex_subject' => array_key_exists('ex_subject',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_subject'] : '',
+                                'ex_room' => array_key_exists('ex_room',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_room'] : '',
+                                'ex_seat' => array_key_exists('ex_seat',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_seat'] : '',
+                                'ex_ready_time' => array_key_exists('ex_ready_time',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_ready_time'] : '',
+                                'extra1' => array_key_exists('extra1',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['extra1'] : '',
+                                'extra2' => array_key_exists('extra2',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['extra2'] : '',
+                                'extra3' => array_key_exists('extra3',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['extra3'] : '',
+                                'avatar' => $v['avatar']
+                            ];
+                            $ticket = [
+                                'appoint_id' => $v['id'],
+                                'ex_type' => 3,
+                                'ex_number' => $item['ex_number'],
+                                'ex_address' => array_key_exists('ex_address',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_address'] : '',
+                                'ex_time' => array_key_exists('ex_time',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_time'] : '',
+                                'ex_seat' => $item['ex_seat'],
+                                'ex_room' => $item['ex_room'],
+                                'ex_subject' => array_key_exists('ex_subject',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_subject'] : '',
+                                'ex_status' => 0,
+                                'ex_start' => $reexamine_start,
+                                'ex_end' => $reexamine_end
+                            ];
+                            RecruitTicket::create($ticket);
+                            $this->fetch($item,$recruit->reexamine_ticket_content, 'reexamine_audit', $recruit);
+
+                        }
+                        //$this->pdf('pen',$recruit);
+                        Recruit::where('id',$this->recruit_id)->update(['reexamine_ticket_status' => 2]);
                         break;
                 }
                 break;
@@ -337,7 +435,7 @@ class TicketJob implements ShouldQueue
 //            Storage::makeDirectory("public/recruit/ticket/pdf/{$date}/{$name}/{$type}");
 //        }
 
-        $filename = $date . '_' . $data['realname'] . '_' . $data['card'] . '_' . $data['post'];
+        $filename = sha1($date . '_' . $data['realname'] . '_' . $data['card'] . '_' . $data['post']);
         $word_url = base_path() . "/storage/app/public/recruit/ticket/word/{$date}/{$name}/{$type}/" . $filename . '.docx';
         $templateProcessor->saveAs($word_url);//另存为
 //        $pdf_url = base_path() . "/storage/app/public/recruit/ticket/pdf/{$date}/{$name}/{$type}";