with(['user','userDutyCheck','userWorkgroup'])->orderBy('labor_reports.id','DESC'); if (!($params["is_export"] ?? false)){ $laborReports = $laborReports->whereNotIn('labor_reports.id',function ($builder){ $builder->select('labor_report_id')->from('labor_report_statuses')->where('status','已退场') ->where('created_at','like',date('Y-m-d').'%'); }); }else unset($params['is_export']); $laborReports->where('labor_reports.created_at','like',date('Y-m-d').'%'); $columnQueryRules=[ 'enter_number' => ['timeLimit' => 15], 'created_at_start' => ['alias' => 'created_at' , 'startDate' => ' 00:00:00'], 'created_at_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'], 'identity_number' => ['timeLimit' => 15] ]; $laborReports = app(QueryService::class)->query($params,$laborReports,$columnQueryRules); if((Gate::allows('人事管理-临时工报表-可见全部组')||Gate::allows('人事管理-门卫审核')) && !($params["user_workgroup_id"] ?? false)){ $laborReports->where(function ($query)use($user){ $query->whereIn('labor_reports.user_workgroup_id',$user?$user->getPermittingWorkgroupIds(Gate::allows('人事管理-临时工报表-可见全部组')):[]) ->orWhereNull('labor_reports.user_workgroup_id'); }); }else{ $laborReports->whereIn('labor_reports.user_workgroup_id', $user?$user->getPermittingWorkgroupIds(Gate::allows('人事管理-临时工报表-可见全部组')):[]); } return $laborReports; } public function paginate(array $params){ return $this->conditionQuery($params)->paginate($request->paginate ?? 50); } public function get(array $params){ return $this->conditionQuery($params)->without("userDutyCheck")->get(); } public function getSql(array $params){ return $this->conditionQuery($params)->selectRaw("labor_reports.*") ->leftJoin('user_workgroups','labor_reports.user_workgroup_id','user_workgroups.id') ->selectRaw('user_workgroups.name user_workgroup_name') ->sql(); } //根据进场记录创建临时工报表 public function makeLaborReportByUserDutyCheck($userDutyCheck){ $dateNow=Carbon::now()->format('Y-m-d'); $laborReport=LaborReport::where('user_id',$userDutyCheck->user_id)->where('created_at','like',$dateNow.'%')->orderBy('id','desc')->first(); if (!$laborReport){ $newReport=$userDutyCheck->makeEnteringRecord(); Controller::logS(__METHOD__,"进场创建临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck])); if ($newReport){ event(new ImportEvent($newReport)); } } } //根据进出场打卡记录 创建或者更新临时工报表记录 public function makeOrChangeLaborReportByUserDutyCheck($userDutyCheck,$importAndExportQRCodeType){ $dateNow=Carbon::now()->format('Y-m-d'); $laborReport=LaborReport::where('user_id',$userDutyCheck->user_id)->where('created_at','like',$dateNow.'%')->orderBy('id','desc')->first(); //判断当前日期下临时工是否有临时工报表记录并且是进场打卡 if ($userDutyCheck->type=='登入'&&$importAndExportQRCodeType=='import'){ $newReport=$userDutyCheck->makeEnteringRecord(); Controller::logS(__METHOD__,"进场创建临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck])); if ($newReport) event(new ImportEvent($newReport)); } if(!$laborReport&&$importAndExportQRCodeType=='export'){ //退场时间跨天情况 $yesterdayDate=Carbon::now()->subDays(1)->format('Y-m-d'); $laborReportYesterday=LaborReport::where('user_id',$userDutyCheck->user_id)->where('created_at','like',$yesterdayDate.'%')->orderBy('id','desc')->first(); if (!$laborReportYesterday->check_out_at&&$laborReportYesterday['user_workgroup_id']){ UserDutyCheck::where('user_id',$laborReportYesterday->user_id)->where('type','登出')->where('checked_at','like',Carbon::now()->format('Y-m-d H:i').'%')->orderBy('id','desc')->delete(); return "