| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- <?php
- namespace App;
- use Carbon\Carbon;
- use DemeterChain\C;
- use Illuminate\Database\Eloquent\Model;
- use App\Traits\ModelTimeFormat;
- use Illuminate\Database\Eloquent\SoftDeletes;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Date;
- use Ramsey\Uuid\Uuid;
- class LaborReport extends Model
- {
- use ModelTimeFormat;
- use SoftDeletes;
- protected $fillable=[
- 'id','enter_number','user_workgroup_id','user_id','name','mobile_phone','identity_number','labor_company',
- 'check_in_at','verify_at','group_user_id','check_out_at','online_duration','working_duration','created_at','updated_at',
- ];
- protected $appends = [
- 'is_exportGroup','is_export','is_exportReplenish'
- ];
- public function userWorkgroup(){
- return $this->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;
- }
- }
|