123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585 |
- <?php
- namespace App\Jobs;
- use App\Models\RecruitAppointInfo;
- use App\Models\RecruitPost;
- use Illuminate\Bus\Queueable;
- use Illuminate\Queue\SerializesModels;
- use Illuminate\Queue\InteractsWithQueue;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Foundation\Bus\Dispatchable;
- use App\Models\Recruit;
- use App\Models\RecruitTicket;
- use PhpOffice\PhpWord\TemplateProcessor;
- use Illuminate\Support\Facades\Storage;
- class TicketJob implements ShouldQueue
- {
- use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
- private $recruit_id;
- private $type;
- private $data;
- public $timeout = 180;
- /**
- * Create a new job instance.
- *
- * @return void
- */
- public function __construct($recruit_id, $type, $data)
- {
- $this->queue = "ticket";
- $this->recruit_id = $recruit_id;
- $this->type = $type;
- $this->data = $data;
- }
- /**
- * Execute the job.
- *
- * @return void
- */
- public function handle()
- {
- $recruit = Recruit::where('id',$this->recruit_id)->first();
- if(!$recruit->status){
- return ;
- }
- switch ($this->type){
- case 'pen':
- if(!$recruit->pen_ticket_content){
- return;
- }
- switch ($this->data['type']){
- case '1':
- //自动生成
- //$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);
- if($this->data['multiple']){
- //队列多任务
- foreach ($list as $room => $room_list){
- foreach ($room_list as $k => $v){
- $seat = ($k%30) + 1;
- $item = [
- 'realname' => $v['realname'],
- 'ex_number' => $this->data['number_prefix'] . 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);
- }
- }
- }else{
- $room = $this->data['room'];
- foreach ($list as $k => $v){
- $seat = ($k%30) + 1;
- $item = [
- 'realname' => $v['realname'],
- 'ex_number' => $this->data['number_prefix'] . 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;
- case '2':
- $ticket_data_list = $this->data['list'];
- $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')->toArray();
- if(!array_key_exists('ex_start',$this->data) || !array_key_exists('ex_end',$this->data) || empty($this->data['ex_start']) || empty($this->data['ex_end'])){
- $preliminary_start = date("Y-m-d H:i:s",strtotime("+1 days",strtotime(date("Y-m-d",time()))));
- $preliminary_end = date("Y-m-d H:i:s",strtotime("+5 days",strtotime(date("Y-m-d",time()))));
- }else{
- $preliminary_start = $this->data['ex_start'];
- $preliminary_end = $this->data['ex_end'];
- }
- foreach ($list as $k => $v){
- if(!array_key_exists($v['post_id'],$post_data)){
- echo "{$v['realname']}_{$v['card']} 取消招聘\r\n";
- continue;
- }
- if(!array_key_exists($v['card'],$ticket_data_list)){
- echo "{$v['realname']}_{$v['card']}_{$post_data[$v['post_id']]} 不在准考名单内\r\n";
- continue;
- }
- if(!$this->word_exist($recruit,'pen', ['realname' => $v['realname'],'card' => $v['card'],'post' => $post_data[$v['post_id']]])){
- $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_place' => array_key_exists('ex_place',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_place'] : '',
- 'avatar' => $v['avatar']
- ];
- $ticket = [
- 'appoint_id' => $v['id'],
- 'ex_type' => 1,
- '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_place' => array_key_exists('ex_place',$ticket_data_list[$v['card']]) ? $ticket_data_list[$v['card']]['ex_place'] : '',
- 'ex_status' => 0,
- 'ex_start' => $preliminary_start,
- 'ex_end' => $preliminary_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;
- }
- break;
- case 'face':
- if(!$recruit->face_ticket_content){
- return;
- }
- if(!array_key_exists('ex_start',$this->data) || !array_key_exists('ex_end',$this->data) || empty($this->data['ex_start']) || empty($this->data['ex_end'])){
- $interview_start = date("Y-m-d H:i:s",strtotime("+1 days",strtotime(date("Y-m-d",time()))));
- $interview_end = date("Y-m-d H:i:s",strtotime("+5 days",strtotime(date("Y-m-d",time()))));
- }else{
- $interview_start = $this->data['ex_start'];
- $interview_end = $this->data['ex_end'];
- }
- switch ($this->data['type']){
- case '0'://不需要额外数据
- $list = RecruitAppointInfo::where('recruit_id',$this->recruit_id)->where('audit',3)->where('face_audit',-1)->where(function($query){
- $query->where('pen_audit',1)
- ->orWhere('pen_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' => $interview_start,
- 'ex_end' => $interview_end
- ];
- RecruitTicket::create($ticket);
- $this->fetch($item,$recruit->face_ticket_content, 'face', $recruit);
- }
- }
- break;
- case '2':
- $ticket_data_list = $this->data['list'];
- $list = RecruitAppointInfo::where('recruit_id',$this->recruit_id)
- ->where('audit',3)
- ->where('face_audit',-1)
- ->where(function($query){
- $query->where('recruit_appoint_info.pen_audit',1)
- ->orWhere('recruit_appoint_info.pen_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' => $interview_start,
- 'ex_end' => $interview_end
- ];
- RecruitTicket::create($ticket);
- $this->fetch($item,$recruit->face_ticket_content, 'face', $recruit);
- }
- //$this->pdf('pen',$recruit);
- 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' => 4,
- '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' => 4,
- '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' => 4,
- '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', $recruit);
- }
- //$this->pdf('pen',$recruit);
- Recruit::where('id',$this->recruit_id)->update(['reexamine_ticket_status' => 2]);
- break;
- }
- break;
- case 'pen_result':
- $list = $this->data;
- foreach ($list as $k => $v){
- if(!array_key_exists('id',$v) || intval($v['id']) <= 0){
- continue;
- }
- $appoint_info = RecruitAppointInfo::where('recruit_appoint_info.id',$v['id'])->where('recruit_appoint_info.recruit_id',$this->recruit_id)->join('recruit_ticket', 'recruit_appoint_info.id', '=', 'recruit_ticket.appoint_id')->select('recruit_appoint_info.*','recruit_ticket.ex_number')->first();
- if(!$appoint_info){
- continue;
- }
- if($appoint_info->realname != $v['realname'] || $appoint_info->card != $v['card'] || $appoint_info->ex_number != $v['ex_number']){
- //数据污染,路过处理
- continue;
- }
- if($v['next'] == '是'){
- $update['pen_audit'] = 1;
- $status = -1;
- }else{
- $update['pen_audit'] = 0;
- $status = 3;
- }
- if(!is_numeric($v['record']) && empty($v['record'])){
- $update['pen_audit'] = 2;
- $status = 3;
- }
- if(in_array(4,explode(',',$recruit->step))){
- $update['computer_audit'] = $status;
- }else{
- $update['face_audit'] = $status;
- }
- RecruitAppointInfo::where('id',$v['id'])->update($update);
- }
- break;
- case 'computer':
- if(!$recruit->computer_ticket_content){
- return;
- }
- if(!array_key_exists('ex_start',$this->data) || !array_key_exists('ex_end',$this->data) || empty($this->data['ex_start']) || empty($this->data['ex_end'])){
- $computer_start = date("Y-m-d H:i:s",strtotime("+1 days",strtotime(date("Y-m-d",time()))));
- $computer_end = date("Y-m-d H:i:s",strtotime("+5 days",strtotime(date("Y-m-d",time()))));
- }else{
- $computer_start = $this->data['ex_start'];
- $computer_end = $this->data['ex_end'];
- }
- switch ($this->data['type']){
- case '0'://不需要额外数据
- $list = RecruitAppointInfo::where('recruit_id',$this->recruit_id)->where('audit',3)->where('computer_ticket_status',-1)->where(function($query){
- $query->where('pen_audit',1)
- ->orWhere('pen_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' => 2,
- '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' => $computer_start,
- 'ex_end' => $computer_end
- ];
- RecruitTicket::create($ticket);
- $this->fetch($item,$recruit->computer_ticket_content, 'computer', $recruit);
- }
- }
- break;
- case '2':
- $ticket_data_list = $this->data['list'];
- $list = RecruitAppointInfo::where('recruit_id',$this->recruit_id)
- ->where('audit',3)
- ->where('computer_audit',-1)
- ->where(function($query){
- $query->where('recruit_appoint_info.pen_audit',1)
- ->orWhere('recruit_appoint_info.pen_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' => 2,
- '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' => $computer_start,
- 'ex_end' => $computer_end
- ];
- RecruitTicket::create($ticket);
- $this->fetch($item,$recruit->computer_ticket_content, 'computer', $recruit);
- }
- //$this->pdf('pen',$recruit);
- Recruit::where('id',$this->recruit_id)->update(['computer_ticket_status' => 2]);
- break;
- }
- break;
- }
- }
- protected function fetch($data, $template, $type, $recruit = null){
- $templateProcessor = new TemplateProcessor(base_path() . $template);
- foreach ($data as $k => $v){
- if($k == 'avatar'){
- if(file_exists(base_path() . '/public/' . $v)){
- $templateProcessor->setImageValue('avatar',['path' => base_path() . '/public/' . $v, 'width' => 200, 'height' => 150]);
- }else{
- $templateProcessor->setImageValue('avatar',['path' => 'https://www.jucai.gov.cn/' . $v, 'width' => 200, 'height' => 150]);
- }
- }else{
- $templateProcessor->setValue($k, $v);
- }
- }
- if($recruit){
- $name = $recruit->name_en;
- $date = date("Y-m-d",strtotime($recruit->created_at));
- }else{
- $name = uniqid();
- $date = date("Y-m-d",time());
- }
- if(!is_dir(base_path() . "/storage/app/public/recruit/ticket/word/{$date}/{$name}/{$type}")){
- Storage::makeDirectory("public/recruit/ticket/word/{$date}/{$name}/{$type}");
- }
- // if(!is_dir(base_path() . "/storage/app/public/recruit/ticket/pdf/{$date}/{$name}/{$type}" )){
- // Storage::makeDirectory("public/recruit/ticket/pdf/{$date}/{$name}/{$type}");
- // }
- $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}";
- // shell_exec('export DISPLAY=:0.0');
- // shell_exec('libreoffice --headless --convert-to pdf:writer_pdf_Export ' . $word_url . ' --outdir ' . $pdf_url);
- }
- protected function word_exist($recruit,$type,$data)
- {
- if($recruit){
- $name = $recruit->name_en;
- $date = date("Y-m-d",strtotime($recruit->created_at));
- }else{
- $name = uniqid();
- $date = date("Y-m-d",time());
- }
- $filename = $date . '_' . $data['realname'] . '_' . $data['card'] . '_' . $data['post'];
- if(file_exists(base_path() . "/storage/app/public/recruit/ticket/word/{$date}/{$name}/{$type}/" . $filename . '.docx')){
- echo $filename . "跳过\r\n";
- return true;
- }else{
- echo $filename . "生成\r\n";
- return false;
- }
- }
- protected function pdf($type, $recruit = null){
- if($recruit){
- $name = $recruit->name_en;
- $date = date("Y-m-d",strtotime($recruit->created_at));
- }else{
- $name = uniqid();
- $date = date("Y-m-d",time());
- }
- if(!is_dir(base_path() . "/storage/app/public/recruit/ticket/pdf/{$date}/{$name}/{$type}" )){
- Storage::makeDirectory("public/recruit/ticket/pdf/{$date}/{$name}/{$type}");
- }
- $word_url = base_path() . "/storage/app/public/recruit/ticket/word/{$date}/{$name}/{$type}/*.docx";
- $pdf_url = base_path() . "/storage/app/public/recruit/ticket/pdf/{$date}/{$name}/{$type}";
- shell_exec('export DISPLAY=:0.0 && export HOME=/data/wwwroot &&libreoffice --headless --convert-to pdf:writer_pdf_Export ' . $word_url . ' --outdir ' . $pdf_url);
- }
- }
|