input('id'); if (!$id)return ['error'=>'提交审核失败!']; $processDailyParticipant=ProcessDailyParticipant::find($id); if (!$id)return ['error'=>'未找到对应记录!']; $processDailyParticipant->status='已审核'; $processDailyParticipant->update(); $this->log(__METHOD__,"任务审核".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']); return; } //打卡审核时判断是否异常 public function isException(Request $request){ $id=$request->input('id'); $checked_at=$request->input('checked_at'); $type=$request->input('type'); $user_id=$request->input('user_id'); if (!$id || !$checked_at || !$type || !$user_id)return ['exception'=>'数据异常!','duration_man_hour'=>'']; $userDutyCheck=UserDutyCheck::where('user_id',$user_id)->where('checked_at','<',$checked_at)->first(); if (!$userDutyCheck)return ['exception'=>'','duration_man_hour'=>'']; $dateStart=Carbon::parse($userDutyCheck->checked_at); $dateEnd=Carbon::parse($checked_at); $minute=($dateEnd->diffInMinutes($dateStart)); if ($type=="登入"&&$userDutyCheck->type=="登入"&&$minute>30){ return ['exception'=>'无出场纪录!','duration_man_hour'=>'']; } if ($type=="登出"&&$userDutyCheck->type=="登出"&&$minute>30){ return ['exception'=>'无入场纪录!','duration_man_hour'=>'']; } if ($type=="登出"&&$userDutyCheck->type=="登入"&&$minute>=720){ return ['exception'=>'时间异常!','duration_man_hour'=>'']; } if ($type=="登出"&&$userDutyCheck->type=="登入"){ return ['exception'=>'','duration_man_hour'=>$minute/60]; } return ['exception'=>'','duration_man_hour'=>'']; } //打卡审核 public function storeClockAudit(Request $request){ if(!Gate::allows('人事管理-打卡审核')){ return ["success"=>false,"data"=>"您无此权限操作!!!"]; } $id=$request->input('id'); $type=$request->input('type'); $userDutyCheck=UserDutyCheck::find($id); $userDutyCheck->type=$type; $userDutyCheck->verify_user_id=Auth::user()['id']; $userDutyCheck->update(); $this->log(__METHOD__,"打卡审核".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']); return ["success"=>true,"data"=>$userDutyCheck->verify_user_id]; } //打卡组长审核 public function storeGroupAudit(Request $request){ if(!Gate::allows('人事管理')){ return ["success"=>false,"data"=>"您无此权限操作!!!"]; } $id=$request->input('id'); $userDutyCheck=UserDutyCheck::find($id); $workgroup=UserWorkgroup::find($userDutyCheck['workgroup_id']); if ($workgroup){ if(!Gate::allows($workgroup->name)){ return ["success"=>false,"data"=>"您无此权限操作!!!"]; } } $type=$request->input('type'); $userDutyCheck->type=$type; $userDutyCheck->group_user_id=Auth::user()['id']; $userDutyCheck->update(); $checkInDate=Carbon::parse($userDutyCheck->checked_at)->format('Y-m-d'); $laborReport=LaborReport::where('user_id',$userDutyCheck->user_id)->where('user_workgroup_id',$workgroup->id)->where('created_at','like',$checkInDate."%")->first(); if (!$laborReport){ $laborReportNew=LaborReport::createLaborReportData($userDutyCheck->user_id,$userDutyCheck->workgroup_id,$userDutyCheck); $this->log(__METHOD__,"提交临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck->user_id,$userDutyCheck->workgroup_id,$userDutyCheck])); //验证五分钟之内重新换组情况 $checkInDateNow=Carbon::parse($laborReportNew->created_at)->format('Y-m-d H'); $laborReports=LaborReport::where('user_id',$userDutyCheck->user_id)->where('created_at','like',$checkInDateNow."%")->orderBy('created_at','DESC')->limit(2)->get(); if (count($laborReports)>1){ $laborReportLast=LaborReport::where('user_id',$userDutyCheck->user_id)->where('created_at','like',$checkInDateNow."%")->orderBy('created_at','ASC')->limit(2)->first(); $lastDate=Carbon::parse($laborReportLast->created_at); $thisDate=Carbon::parse($laborReportNew->created_at); $diffDate=$thisDate->diffInMinutes($lastDate); if ($diffDate<=5){ $laborReportLast->delete(); } } }else if ($laborReport){ LaborReport::updateLaborReportVerify($laborReport,$userDutyCheck); $this->log(__METHOD__,"打卡组长审核".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']); } event(new TeamAuditEvent($userDutyCheck)); return ["success"=>true,"data"=>$userDutyCheck->group_user_id]; } //去往任务审核 public function missionAudit(Request $request){ if(!Gate::allows('人事管理-任务审核')){ return redirect(url('/')); } $processDailyParticipants=ProcessDailyParticipant::with(['processDaily','user_detail'=>function($builder){ return $builder->with(['user'=>function($builder){return $builder->with(['userWorkgroups']);},'user_labor'=>function($builder){return $builder->with(['laborCompany']);}]); }])->orderBy('id','DESC'); $start_date=$request->input('start_date'); $end_date=$request->input('end_date'); $full_name=$request->input('full_name'); $mobile_phone=$request->input('mobile_phone'); if ($start_date) { $processDailyParticipants->whereHas('processDaily',function (Builder $builder)use($start_date){ $start_date=$start_date." 00:00:00"; $builder->where('date','>=',$start_date); }); } if ($end_date) { $processDailyParticipants->whereHas('processDaily',function (Builder $builder)use($end_date){ $end_date=$end_date." 23:59:59"; $builder->where('date','<=',$end_date); }); } if ($full_name){ $processDailyParticipants->whereHas('user_detail',function (Builder $builder)use($full_name){ $builder->where('full_name',$full_name); }); } if ($mobile_phone){ $processDailyParticipants->whereHas('user_detail',function (Builder $builder)use($mobile_phone){ $builder->where('mobile_phone',$mobile_phone); }); } $processDailyParticipants=$processDailyParticipants->paginate($request->input('paginate')?$request->input('paginate'):50); foreach ($processDailyParticipants as $processDailyParticipant){ if ($processDailyParticipant->processDaily){ $processController=new ProcessController(); $processDailyParticipant=$processController->countParticipantManHour($processDailyParticipant,$processDailyParticipant->processDaily->date); } } // 前往任务审核 return view('personnel/checking-in/missionAudit',['processDailyParticipants'=>$processDailyParticipants,'request'=>$request->input()]); } //去往打卡审核 public function clockAudit(){ if(!Gate::allows('人事管理')){ return redirect(url('/')); } $user=Auth::user(); if (!$user)return redirect('/'); $result=$user->getPermittingWorkgroupIdsAttribute(); $userWorkgroupIds=$result['workgroupIds']; $users=User::whereHas("userWorkgroups",function (Builder $query)use(&$userWorkgroupIds){ $query->whereIn("id",$userWorkgroupIds); })->get(); $user_ids=array_column($users->toArray(),'id'); $dateNow=Carbon::now()->addDays(1)->format('Y-m-d'); $beforeYesterdayDate=Carbon::now()->addDays(-2)->format('Y-m-d'); $userDutyChecks=UserDutyCheck::with(['userWorkgroup','userLabor.laborCompany','userDetail'])->whereIn("user_id",$user_ids) ->whereBetween('checked_at',[$beforeYesterdayDate,$dateNow])->orderBy('checked_at','DESC')->get(); // where('type','登入')-> $laravelEchoPrefix = config('database.redis.options.prefix'); return view('personnel/checking-in/clockAudit',['userDutyChecks'=>$userDutyChecks,'laravelEchoPrefix'=>$laravelEchoPrefix,'workgroupSign'=>$result['workgroupSign']]); } //录入补卡 public function storeReplenishClock(Request $request){ if(!Gate::allows('人事管理-录入补卡')){ return redirect(url('/')); } $errors=$this->validatorUserDutyCheck($request)->errors(); if (count($errors)>0)return ['success'=>false,'data'=>$errors]; $user_id=$request->input('user_id'); $checked_at=$request->input('checked_at'); $type=$request->input('type'); $userWorkgroupID=DB::table('user_workgroup_user')->where('user_id',$user_id)->value('user_workgroup_id'); $userDutyCheck=new UserDutyCheck([ 'user_id'=>$user_id, 'checked_at'=>$checked_at, 'type'=>$type, 'source'=>'补入', 'workgroup_id'=>$userWorkgroupID ]); if ($type=='登出')$userDutyCheck->verify_user_id=0; $userDutyCheck->save(); if ($userDutyCheck&&$userDutyCheck->type=='登入'){ event(new ClockinEvent($userDutyCheck)); }else if ($userDutyCheck&&$userDutyCheck->type=='登出'){ event(new ClockoutEvent($userDutyCheck)); } $checkInDate=Carbon::parse($userDutyCheck->checked_at)->format('Y-m-d'); $laborReport=LaborReport::where('user_workgroup_id',$userWorkgroupID)->where('check_in_at','like',$checkInDate."%")->where('user_id',$user_id)->first(); if ($laborReport&&$userDutyCheck->type){ LaborReport::updateLaborReportData($laborReport,$userDutyCheck); $this->log(__METHOD__,"更新临时工报表记录__".__FUNCTION__,json_encode([$laborReport,$userDutyCheck])); } $this->log(__METHOD__,"录入补卡".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']); return ['success'=>true,'data'=>$userDutyCheck]; } //搜索临时工下打卡信息 public function checkUserLabors(Request $request){ if(!Gate::allows('人事管理-录入补卡')){ return redirect(url('/')); } $full_name=$request->input('full_name'); $userDetail=UserDetail::with(['userDutyChecks'=>function ($query){ return $query->orderBy('checked_at','DESC')->limit(5); }])->where('full_name',$full_name)->get(); return ['success'=>true,'data'=>$userDetail]; } //考勤 public function createReplenishClock(){ if(!Gate::allows('人事管理-录入补卡')){ return redirect(url('/')); } return view('personnel/checking-in/createReplenishClock'); } public function validatorUserDutyCheck(Request $request){ $validator=Validator::make($request->input(),[ 'user_id'=>'required', 'checked_at'=>'required|date_format:Y-m-d H:i', 'type'=>'required', ],[ 'date_format'=>':attribute 格式错误', ],['checked_at'=>'日期']); return $validator; } }