haozi 5 жил өмнө
parent
commit
08808b513f

+ 19 - 61
app/Http/Controllers/LaborReportController.php

@@ -8,6 +8,7 @@ use App\Events\TeamAuditEvent;
 use App\Exports\Export;
 use App\LaborReport;
 use App\LaborReportStatus;
+use App\Services\LaborReportService;
 use App\UserDutyCheck;
 use App\UserWorkgroup;
 use Carbon\Carbon;
@@ -19,51 +20,19 @@ use Maatwebsite\Excel\Facades\Excel;
 
 class LaborReportController extends Controller
 {
-    //超15天精确查询抽离 cloumn前提:数据库字段名必须与request内字段名一致
-    public function preciseQuery(string $column,Request $request,$laborReports){
-        $today=Carbon::now()->subDays(15);
-        $laborReportsTem=clone $laborReports;
-        $laborReportsTem=$laborReportsTem->where($column,'like','%'.$request->input($column).'%')->where('created_at','>',$today->format('Y-m-d'));
-        if($laborReportsTem->count()==0
-            ||$laborReportsTem->get()[0][$column]==$request->input($column)){
-            $laborReports=$laborReports->where($column,$request->input($column));
-        }else{
-            $laborReports=$laborReportsTem;
-        }
-        return $laborReports;
-    }
-
-    public function conditionQuery(Request $request,$laborReports){
-        if ($request->input('enter_number')){
-            $laborReports=$this->preciseQuery('enter_number',$request,$laborReports);
-        }
-        if ($request->input('user_workgroup_id')){
-            $laborReports=$this->preciseQuery('user_workgroup_id',$request,$laborReports);
-        }
-        if ($request->input('created_at_start')){
-            $created_at_start=$request->input('created_at_start')." 00:00:00";
-            $laborReports=$laborReports->where('created_at','>=',$created_at_start);
-        }
-        if ($request->input('created_at_end')){
-            $created_at_end=$request->input('created_at_end')." 23:59:59";
-            $laborReports=$laborReports->where('created_at','<=',$created_at_end);
-        }
-        if ($request->input('mobile_phone')){
-            $laborReports=$laborReports->where('mobile_phone',$request->input('mobile_phone'));
-        }
-        if ($request->input('identity_number')){
-            $laborReports=$this->preciseQuery('identity_number',$request,$laborReports);
-        }
-        return $laborReports;
+    public function __construct()
+    {
+        app()->singleton('laborReportService',LaborReportService::class);
     }
     /**
      * Display a listing of the resource.
-     *@param  \Illuminate\Http\Request  $request
-     * @return \Illuminate\Http\Response
+     * @param  Request $request
+     * @return void
      * 临时工报表
      */
     public function index(Request $request)
     {
+        //if(!Gate::allows('人事管理')){ return redirect(url('/'));  }
         if(!Gate::allows('人事管理-临时工报表')){ return redirect(url('/'));  }
         $user=Auth::user();
         if (!$user)return redirect('/');
@@ -71,20 +40,13 @@ class LaborReportController extends Controller
         $permittingWorkgroups=UserWorkgroup::whereIn('id',$userWorkgroupIds)->get();
         if($permittingWorkgroups->isEmpty())$permittingWorkgroups="[]";
         $laravelEchoPrefix = config('database.redis.options.prefix');
-        if ($request->input()){
-            $laborReports=LaborReport::orderBy('id','DESC');
-            $laborReports=$this->conditionQuery($request,$laborReports);
-            $laborReportsPaginate=$laborReports->paginate($request->input('paginate')?$request->input('paginate'):50);
-            $laborReports=$laborReports->paginate($request->input('paginate')?$request->input('paginate'):50);
-            $userWorkGroups=UserWorkgroup::select('id','name')->get();
-            return view('personnel.laborReport.index',['laborReportsPaginate'=>$laborReportsPaginate,'laborReports'=>$laborReports,'userWorkGroups'=>$userWorkGroups,'request'=>$request->input(),'permittingWorkgroups'=>$permittingWorkgroups,'laravelEchoPrefix'=>$laravelEchoPrefix,]);
-        }
         $laborReportsBuilder=LaborReport::with(['user','userDutyCheck','userWorkgroup'])->whereIn('user_workgroup_id',$userWorkgroupIds);
         if(Gate::allows('人事管理-临时工报表-可见全部组')||Gate::allows('人事管理-门卫审核')){
             $laborReportsBuilder->orWhereNull('user_workgroup_id');
         }
-        $laborReports=$laborReportsBuilder->orderBy('id','DESC')->orderBy('name','desc')->paginate(50);
-        //$laborReports=$laborReportsPaginate->sortBy('name');
+        $laborReports=app('laborReportService')->paginate($request);
+//        $laborReportsPaginate = $laborReports;
+//        $laborReports=$laborReports->sortBy('name');
         foreach ($laborReports as $laborReport){
 //            if (!$laborReport->group_user_id){
 //                //三十分钟之内组长未审核实行软删除
@@ -104,20 +66,16 @@ class LaborReportController extends Controller
         $userWorkGroups=UserWorkgroup::select('id','name')->get();
         return view('personnel/laborReport/index',compact('laborReports','userWorkGroups','laravelEchoPrefix','permittingWorkgroups','request'));
     }
-    public function export($id,Request $request){
+    public function export(Request $request){
         if (!Gate::allows('人事管理-临时工报表')){return redirect(url('/')); }
         ini_set('max_execution_time',3500);
         ini_set('memory_limit','3526M');
-        if ($id==-1){
-            $id=[];
-            $laborReports=LaborReport::select('id');
-            $laborReports=$this->conditionQuery($request,$laborReports);
-            $laborReports=$laborReports->get();
-            foreach ($laborReports as $laborReports){
-                array_push($id,$laborReports->id);
-            }
-        }else $id = explode( ',',$id);
-        if (!$id)return ;
+        if ($request->checkAllSign){
+            $request->offsetUnset('checkAllSign');
+            $laborReports=app('laborReportService')->get($request);
+        }else{
+            $laborReports=app('laborReportService')->some($request);
+        }
         $row=[[
             'id'=>'ID',
             'enter_at'=>'进场时间',
@@ -138,8 +96,8 @@ class LaborReportController extends Controller
             'remark'=>'备注',
         ]];
         $list=[];
-        for ($i=0; $i<count($id);$i++){
-            $laborReport=LaborReport::with(['userWorkgroup','user'])->find($id[$i]);
+        for ($i=0; $i<count($laborReports);$i++){
+            $laborReport=$laborReports[$i];
             $w=[
                 'id'=>isset($laborReport->id)?$laborReport->id:'',
                 'enter_at'=>isset($laborReport->enter_at)?$laborReport->enter_at:'',