belongsTo('App\UserWorkgroup','user_workgroup_id','id'); } public function user(){ return $this->belongsTo('App\User','group_user_id','id'); } //添加临时工报表数据 static function createLaborReportData($user_id,$userWorkgroupID,$userDutyCheck){ $userDetail=UserDetail::find($user_id); $name=$userDetail['full_name']; $mobile_phone=$userDetail['mobile_phone']; $identity_number=$userDetail['identity_number']; $labor_company_id=UserLabor::where('user_id',$user_id)->value('labor_company_id'); $labor_company=LaborCompany::where('id',$labor_company_id)->value('name'); if ($userDutyCheck->type=='登入'){ $check_in_at=$userDutyCheck['checked_at']; } $date=date('Y-m-d H:i:s'); $laborReport=new LaborReport([ 'enter_number'=>Uuid::uuid1(), 'user_workgroup_id'=>$userWorkgroupID, 'user_id'=>$user_id, 'name'=>$name, 'mobile_phone'=>$mobile_phone, 'identity_number'=>$identity_number, 'labor_company'=>$labor_company, 'check_in_at'=>$check_in_at, 'verify_at'=>$date, 'group_user_id'=>$userDutyCheck->group_user_id, ]); $laborReport->save(); $number_id=$laborReport->id; $enter_number=$userWorkgroupID.date ("ymd").str_pad($number_id>99999?$number_id%99999:$number_id,4,"0",STR_PAD_LEFT); $laborReport->enter_number=$enter_number; $laborReport->update(); return; } //修改临时工报表数据 static function updateLaborReportData($laborReport,$userDutyCheck){ //正常打卡情况 if($userDutyCheck->type=='登出'){ // $laborReport->check_out_at=$userDutyCheck->checked_at; $checkInDate=Carbon::parse($laborReport['check_in_at']); $checkOutDate=Carbon::parse($userDutyCheck->checked_at); $hour=($checkOutDate->diffInSeconds($checkInDate))/3600; //在线时长 $laborReport['online_duration']=$hour; $laborReport['working_duration']=$hour; $laborReport->update(); } $date=Carbon::parse($laborReport['check_in_at'])->format('Y-m-d'); $userDutyCheckOld=UserDutyCheck::where('user_id',$userDutyCheck->user_id)->orderBy('checked_at','DESC')->limit(10)->first(); //补卡情况 if ($userDutyCheck->type=='登入'&&$userDutyCheckOld->checked_at>$userDutyCheck->checked_at&&$userDutyCheck->checked_at<$date." 11:00".":00"){ $laborReport['check_in_at']=$userDutyCheck['checked_at']; $checkInDate=Carbon::parse($laborReport['check_in_at']); if ($laborReport->check_out_at){ $checkOutDate=Carbon::parse($laborReport->check_out_at); $hour=($checkOutDate->diffInSeconds($checkInDate))/3600; //在线时长 $laborReport['online_duration']=$hour; } $laborReport->update(); } if ($userDutyCheck->type=='登入'&&$userDutyCheckOld->checked_at<$userDutyCheck->checked_at){ $userDutyCheck->save(); $laborReport['working_duration']=$laborReport['online_duration']; $laborReport->update(); } if ($userDutyCheck->type=='登出'&&$userDutyCheckOld->checked_at<$userDutyCheck->checked_at){ // $laborReport->check_out_at=$userDutyCheck->checked_at; $checkInDate=Carbon::parse($laborReport['check_in_at']); $checkOutDate=Carbon::parse($userDutyCheck->checked_at); $hour=($checkOutDate->diffInSeconds($checkInDate))/3600; //在线时长 $laborReport['online_duration']=$hour; $laborReport['working_duration']=$hour; $laborReport->update(); } if ($laborReport&&$laborReport->check_out_at){ $userDutyCheckStart=UserDutyCheck::where('user_id',$laborReport->user_id)->where('workgroup_id',$laborReport->user_workgroup_id)->where('checked_at','>=',$date." 11:00".":00") ->where('checked_at','<=',$date." 14:00:00")->where('type','登出')->first(); $userDutyCheckEnd=UserDutyCheck::where('user_id',$laborReport->user_id)->where('workgroup_id',$laborReport->user_workgroup_id)->where('checked_at','>=',$date." 11:00".":00") ->where('checked_at','<=',$date." 14:00:00")->where('type','登入')->first(); $beginTime=Carbon::parse($userDutyCheckStart['checked_at']); $endTime=Carbon::parse($userDutyCheckEnd['checked_at']); $lunchHour=($endTime->diffInSeconds($beginTime))/3600; if($userDutyCheck->type=='登入'&&$userDutyCheck->checked_at<=$date." 14:00:00"){ $laborReport['working_duration']=$laborReport['online_duration']; }else if($userDutyCheck->type=='登出'&&$userDutyCheck->checked_at<=$date." 14:00:00"){ $laborReport['working_duration']=$laborReport['online_duration']; }else{ $laborReport['working_duration']=$laborReport['online_duration']-$lunchHour; } $laborReport->update(); } return; } //修改临时工报表审核时间 static function updateLaborReportVerify($laborReport,$userDutyCheck){ $date=date('Y-m-d H:i:s'); $laborReport['verify_at']=$date; $laborReport['group_user_id']=$userDutyCheck->group_user_id; $laborReport->update(); return; } }