LaborReport.php 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace App;
  3. use Carbon\Carbon;
  4. use Illuminate\Database\Eloquent\Model;
  5. use App\Traits\ModelTimeFormat;
  6. use Illuminate\Support\Facades\Auth;
  7. use Ramsey\Uuid\Uuid;
  8. class LaborReport extends Model
  9. {
  10. use ModelTimeFormat;
  11. protected $fillable=[
  12. 'id','enter_number','user_workgroup_id','user_id','name','mobile_phone','identity_number','labor_company','check_in_at','verify_at','check_out_at','online_duration','working_duration'
  13. ];
  14. public function userWorkgroup(){
  15. return $this->belongsTo('App\UserWorkgroup','user_workgroup_id','id');
  16. }
  17. public function user(){
  18. return $this->belongsTo('App\User','group_user_id','id');
  19. }
  20. //添加临时工报表数据
  21. static function createLaborReportData($user_id,$userWorkgroupID,$userDutyCheck){
  22. $userDetail=UserDetail::find($user_id);
  23. $name=$userDetail['full_name'];
  24. $mobile_phone=$userDetail['mobile_phone'];
  25. $identity_number=$userDetail['identity_number'];
  26. $labor_company_id=UserLabor::where('user_id',$user_id)->value('labor_company_id');
  27. $labor_company=LaborCompany::where('id',$labor_company_id)->value('name');
  28. if ($userDutyCheck->type=='登入'){
  29. $check_in_at=$userDutyCheck['checked_at'];
  30. }
  31. $laborReport=new LaborReport([
  32. 'enter_number'=>Uuid::uuid1(),
  33. 'user_workgroup_id'=>$userWorkgroupID,
  34. 'user_id'=>$user_id,
  35. 'name'=>$name,
  36. 'mobile_phone'=>$mobile_phone,
  37. 'identity_number'=>$identity_number,
  38. 'labor_company'=>$labor_company,
  39. 'check_in_at'=>$check_in_at,
  40. ]);
  41. $laborReport->save();
  42. $number_id=$laborReport->id;
  43. $enter_number=$userWorkgroupID.date ("ymd").str_pad($number_id>99999?$number_id%99999:$number_id,4,"0",STR_PAD_LEFT);
  44. $laborReport->enter_number=$enter_number;
  45. $laborReport->update();
  46. //$this->log(__METHOD__,"提交临时工报表记录__".__FUNCTION__,json_encode($laborReport));
  47. return;
  48. }
  49. //修改临时工报表数据
  50. static function updateLaborReportData($laborReport,$userDutyCheck){
  51. $laborReport->check_out_at=$userDutyCheck->checked_at;
  52. $checkInDate=Carbon::parse($laborReport['check_in_at']);
  53. $checkOutDate=Carbon::parse($userDutyCheck->checked_at);
  54. $hour=($checkOutDate->diffInSeconds($checkInDate))/3600; //在线时长
  55. $laborReport['online_duration']=$hour;
  56. $laborReport['working_duration']=$hour;
  57. $laborReport->update();
  58. $date=Carbon::parse($laborReport['check_in_at'])->format('Y-m-d');
  59. if ($laborReport->check_out_at>$date." 14:00:00"){
  60. $userDutyCheckStart=UserDutyCheck::where('user_id',$laborReport->user_id)->where('workgroup_id',$laborReport->user_workgroup_id)->where('checked_at','>=',$date." 11:00".":00")
  61. ->where('checked_at','<=',$date." 14:00:00")->where('type','登出')->first();
  62. $userDutyCheckEnd=UserDutyCheck::where('user_id',$laborReport->user_id)->where('workgroup_id',$laborReport->user_workgroup_id)->where('checked_at','>=',$date." 11:00".":00")
  63. ->where('checked_at','<=',$date." 14:00:00")->where('type','登入')->first();
  64. $beginTime=Carbon::parse($userDutyCheckStart['checked_at']);
  65. $endTime=Carbon::parse($userDutyCheckEnd['checked_at']);
  66. $lunchHour=($endTime->diffInSeconds($beginTime))/3600;
  67. $laborReport['working_duration']=$hour-$lunchHour;
  68. $laborReport->update();
  69. }
  70. //$this->log(__METHOD__,__FUNCTION__,json_encode($laborReport),Auth::user()['id']);
  71. return;
  72. }
  73. }