with(['user','userDutyCheck','userWorkgroup'])->orderBy('id','DESC')->whereIn('user_workgroup_id', $user?$user->getPermittingWorkgroupIds(Gate::allows('人事管理-临时工报表-可见全部组')):[]); $laborStatus=LaborReportStatus::select('labor_report_id')->where('status','已退场')->get(); $enterNumbers=[]; foreach ($laborStatus as $laborId){ $enterNumber=LaborReport::where('id',$laborId['labor_report_id'])->value('enter_number'); if($enterNumber!=null) array_push($enterNumbers,$enterNumber); } if (!$request->is_export){ $laborReports->whereNotIn('enter_number',$enterNumbers); }else $request->offsetUnset('is_export'); $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($request,$laborReports,$columnQueryRules); if(Gate::allows('人事管理-临时工报表-可见全部组')||Gate::allows('人事管理-门卫审核')){ $laborReports->orWhereNull('user_workgroup_id'); } return $laborReports; } public function paginate(Request $request){ return $this->conditionQuery($request)->paginate($request->paginate ?? 50); } public function get(Request $request){ return $this->conditionQuery($request)->get(); } public function some(Request $request){ return LaborReport::query()->orderBy('id','DESC') ->whereIn('id',explode(',',$request->data))->get(); } //根据进场记录创建临时工报表 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->laborEnterCheck(); 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 "