belongsTo('App\UserWorkgroup','user_workgroup_id','id'); } public function user(){ return $this->belongsTo('App\User','group_user_id','id'); } public function userDutyCheck(){ return $this->belongsTo('App\UserDutyCheck','user_id','user_id'); } public function getIsExportGroupAttribute(){ return $this['check_out_at']? true:false; } public function getIsExportAttribute(){ $userDutyChecks=UserDutyCheck::where('user_id',$this['user_id'])->where('type','登出')->get(); $updated_at = Carbon::parse($this['updated_at'])->format('Y-m-d H:i'); foreach ($userDutyChecks as $userDutyCheck){ $checked_at = Carbon::parse($userDutyCheck['checked_at'])->format('Y-m-d H:i'); if ($updated_at == $checked_at){ return true; } // if($userDutyCheck['checked_at']==$this['updated_at']){ // return true; // } continue; } return false; } public function getIsExportReplenishAttribute() { $userDutyCheck = UserDutyCheck::where('user_id', $this['user_id'])->orderBy('id', 'desc')->first(); if ($userDutyCheck['type'] == '登出') { return $userDutyCheck['source']=='补入' ? true : false; } } //进场创建临时工报表信息 static function importToCreateLaborReportData($userDutyCheck){ $userDetail=UserDetail::find($userDutyCheck->user_id); $name=$userDetail['full_name']; $mobile_phone=$userDetail['mobile_phone']; $identity_number=$userDetail['identity_number']; $labor_company_id=UserLabor::where('user_id',$userDutyCheck->user_id)->value('labor_company_id'); $labor_company=LaborCompany::where('id',$labor_company_id)->value('name'); $laborReport=new LaborReport([ 'enter_number'=>$userDutyCheck->user_id, 'user_id'=>$userDutyCheck->user_id, 'name'=>$name, 'mobile_phone'=>$mobile_phone, 'identity_number'=>$identity_number, 'labor_company'=>$labor_company, ]); $laborReport->save(); return $laborReport; } //出场更新临时工报表信息 static function exportToCreateLaborReportData($laborReport,$userDutyCheck){ $check_in_at=$laborReport->check_in_at; $check_out_at=$userDutyCheck->checked_at; $online_duration=round(Carbon::parse($check_out_at)->diffInSeconds(Carbon::parse($check_in_at))/3600,2); $laborReport->online_duration=$online_duration; $laborReport->update(); $laborReport->is_export=$laborReport->getIsExportAttribute(); return $laborReport; } //出场更新临时工报表信息 static function exportReplenishToCreateLaborReportData($laborReport,$userDutyCheck){ $check_in_at=$laborReport->check_in_at; $check_out_at=$userDutyCheck->checked_at; $online_duration=round(Carbon::parse($check_out_at)->diffInSeconds(Carbon::parse($check_in_at))/3600,2); $laborReport->online_duration=$online_duration; $laborReport->update(); $laborReport->is_exportReplenish=$laborReport->getIsExportReplenishAttribute(); return $laborReport; } //当天第一次进工作组更新临时工报表 static function intoGroupAndUpdateLaborReportData($laborReport,$userWorkgroupID){ $laborReport->user_workgroup_id=$userWorkgroupID; $laborReport->check_in_at=date('Y-m-d H:i:s'); $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 $laborReport; } //换组添加临时工报表数据 static function changeGroupAndCreateLaborReportData($user_id,$userWorkgroupID){ $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'); $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'=>date('Y-m-d H:i:s'), ]); $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 $laborReport; } // //添加临时工报表数据 // static function createLaborReportData($userDutyCheck){ // $userDetail=UserDetail::find($userDutyCheck->user_id); // $name=$userDetail['full_name']; // $mobile_phone=$userDetail['mobile_phone']; // $identity_number=$userDetail['identity_number']; // $labor_company_id=UserLabor::where('user_id',$userDutyCheck->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'=>$userDutyCheck->workgroup_id, // 'user_id'=>$userDutyCheck->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=$userDutyCheck->workgroup_id.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 $laborReport; // } // //修改临时工报表数据 // 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; } }