浏览代码

更新准考证模板生成

sandm 3 年之前
父节点
当前提交
34ff988072

+ 2 - 1
app/Admin/Controllers/Recruit/RecruitController.php

@@ -586,7 +586,6 @@ class RecruitController extends Controller
                 }
             }
             foreach ($search_data as $k => $v) {
-
                 if ($k == 'realname') {
                     $where[] = [$k, 'like', "%$v%"];
                 } elseif ($k == 'id') {
@@ -616,6 +615,8 @@ class RecruitController extends Controller
             $perpage = 20;
         }
 
+
+
         $list = RecruitAppointInfo::where($where)
             ->join('recruit_post', 'recruit_appoint_info.post_id', '=', 'recruit_post.id', 'left')
             ->join('recruit_ticket', 'recruit_ticket.appoint_id', '=', 'recruit_appoint_info.id','left')

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

@@ -194,15 +194,26 @@ class RecruitTicketController extends Controller
                     return response()->json(['status' => 0, 'msg' => '请输入每间考试的人员数量'], 200);
                 }
             }
+            if(!array_key_exists('ex_start',$pen) || empty($pen['ex_start'])){
+                return response()->json(['status' => 0, 'msg' => '准考证开启打印时间不能为空'], 200);
+            }
+            if(!array_key_exists('ex_end',$pen) || empty($pen['ex_end'])){
+                return response()->json(['status' => 0, 'msg' => '准考证结束打印时间不能为空'], 200);
+            }
 
             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();
+                    //$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);
                     $ticket_data = [
                         'type' => 1,
-                        'auto_each_number' => $pen['auto_each_number']
+                        'list' => $list,
+                        'ex_start' => $pen['ex_start'],
+                        'ex_end' => $pen['ex_end']
                     ];
-                    Recruit::where('id',$data['recruit_id'])->update(['pen_ticket_status' => 1]);
+                    Recruit::where('id',$data['recruit_id'])->update(['pen_ticket_status' => 2]);
                     $ticket = new TicketJob($data['recruit_id'],'pen',$ticket_data);
                     dispatch($ticket);
                     return response()->json(['status' => 1, 'msg' => '准考证生成成功'], 200);

+ 10 - 15
app/Jobs/TicketJob.php

@@ -22,6 +22,8 @@ class TicketJob implements ShouldQueue
     private $type;
     private $data;
 
+    public $timeout = 180;
+
     /**
      * Create a new job instance.
      *
@@ -53,27 +55,20 @@ class TicketJob implements ShouldQueue
                 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();
+                        //$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 = array_chunk($list,$this->data['auto_each_number'],true);
-                        if(!empty($recruit->preliminary_start)){
-                            $preliminary_start = date("Y-m-d H:i:s",strtotime("+1 days",date("Y-m-d",time())));
-                            $preliminary_end = date("Y-m-d H:i:s",strtotime("+5 days",date("Y-m-d",time())));
-                        }else{
-                            $preliminary_start = date("Y-m-d H:i:s",strtotime("-5 days",strtotime($recruit->preliminary_start)));
-                            $preliminary_end = date("Y-m-d H:i:s",strtotime("+1 days",strtotime($recruit->preliminary_start)));
-                        }
+                        $list = $this->data['list'];//array_chunk($list,$this->data['auto_each_number'],true);
                         foreach ($list as $room => $room_list){
                             if(is_array($room_list)){
                                 foreach ($room_list as $k => $v){
                                     $seat = $k + 1;
                                     $item = [
                                         'realname' => $v['realname'],
-                                        'ex_number' => date("Y",time()) . '9' . sprintf("%03d",$v['recruit_id']) . sprintf("%04d",$seat),
+                                        '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("%03d",$seat),
+                                        'ex_seat' => sprintf("%02d",$seat),
                                         'avatar' => $v['avatar']
                                     ];
                                     $ticket = [
@@ -83,16 +78,16 @@ class TicketJob implements ShouldQueue
                                         'ex_seat' => $item['ex_seat'],
                                         'ex_room' => $item['ex_room'],
                                         'ex_status' => 0,
-                                        'ex_start' => $preliminary_start,
-                                        'ex_end' => $preliminary_end
+                                        '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]);
+                        //$this->pdf('pen',$recruit);
+                        //Recruit::where('id',$this->recruit_id)->update(['pen_ticket_status' => 2]);
                         break;
                     case '2':
                         $ticket_data_list = $this->data['list'];

+ 8 - 0
app/Models/RecruitAppointInfo.php

@@ -18,4 +18,12 @@ class RecruitAppointInfo extends Model
         '05' => '民盟盟员', '06' => '民建会员', '07' => '民进会员', '08' => '农工党党员',
         '09' => '致公党党员', '10' => '九三学社社员', '11' => '台盟盟员', '12' => '无党派人士', '13' => '群众',
     ];
+
+    public function posts() {
+        return $this->belongsTo(RecruitTicket::class);
+    }
+
+    public function ticket() {
+        return $this->belongsTo(RecruitTicket::class);
+    }
 }

+ 14 - 0
config/horizon.php

@@ -108,6 +108,13 @@ return [
                 'processes' => 1,
                 'tries' => 1,
             ],
+            'jucai-supervisor-1' => [
+                'connection' => 'redis',
+                'queue' => ['ticket'],
+                'balance' => 'auto',
+                'processes' => 10,
+                'tries' => 3,
+            ],
         ],
 
         'local' => [
@@ -132,6 +139,13 @@ return [
                 'processes' => 1,
                 'tries' => 1,
             ],
+            env('APP_NAME', 'jsaix').'-supervisor-4' => [
+                'connection' => 'redis',
+                'queue' => ['ticket'],
+                'balance' => 'auto',
+                'processes' => 10,
+                'tries' => 1,
+            ],
         ],
     ],
 ];

+ 29 - 0
resources/views/admin/recruit/ajax_ticket.blade.php

@@ -81,6 +81,26 @@
                                         </label>
                                     </div>
                                 </div>
+                                <div class="form-group  ">
+                                    <label for="apply_start" class="col-sm-2 astrisk control-label">打印时间段</label>
+                                    <div class="col-sm-8">
+                                        <div class="row" style="width: 470px">
+                                            <div class="col-lg-6">
+                                                <div class="input-group">
+                                                    <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
+                                                    <input type="text" name="pen[ex_start]" value="" class="form-control ex_start" style="width: 200px"></div>
+                                            </div>
+
+                                            <div class="col-lg-6">
+                                                <div class="input-group">
+                                                    <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
+                                                    <input type="text" name="pen[ex_end]" value="" class="form-control ex_end" style="width: 200px"></div>
+                                            </div>
+                                        </div>
+
+
+                                    </div>
+                                </div>
                                 <div id="pen_autoCreate">
                                     <div class="form-group">
                                         <label for="auto_each_number" class="col-sm-2 control-label">每间考场人数</label>
@@ -234,5 +254,14 @@
                 $("#"+ type +"_fetchCreate").css('display','none');
             }
         });
+
+        $('.ex_start').datetimepicker({"format":"YYYY-MM-DD HH:mm:ss","locale":"zh-CN"});
+        $('.ex_end').datetimepicker({"format":"YYYY-MM-DD HH:mm:ss","locale":"zh-CN","useCurrent":false});
+        $(".ex_start").on("dp.change", function (e) {
+            $('.ex_end').data("DateTimePicker").minDate(e.date);
+        });
+        $(".ex_end").on("dp.change", function (e) {
+            $('.ex_start').data("DateTimePicker").maxDate(e.date);
+        });
     });
 </script>