with(['user','userDutyCheck','userWorkgroup','laborCompany'])->orderBy('labor_reports.id','DESC'); if (!($params["is_export"] ?? false)&&!($params['id']??null)){ $laborReports = $laborReports->whereNotIn('labor_reports.enter_number',function ($builder)use($params){ $builder->select('enter_number')->from('labor_reports') ->leftJoin('labor_report_statuses','labor_reports.id','labor_report_statuses.labor_report_id') ->where('labor_report_statuses.status','已退场'); // if (!($params['created_at_start'] ?? false) ||!($params['created_at_end'] ?? false)){ // $builder->where('labor_report_statuses.created_at','like',date('Y-m-d').'%'); // } }); }else unset($params['is_export']); // if (!($params['created_at_start'] ?? false) ||!($params['created_at_end'] ?? false)){ // $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], 'name' => ['like' => ''], 'id' => ['multi' => ','] ]; $laborReports = app(QueryService::class)->query($params,$laborReports,$columnQueryRules,'labor_reports'); 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('人事管理-临时工报表-可见全部组')):[]); } $laborReports = app(QueryService::class)->query($params,$laborReports,$columnQueryRules,'labor_reports'); return $laborReports; } public function paginate(array $params){ return $this->conditionQuery($params)->paginate($params['paginate'] ?? 50); } public function get(array $params){ // dd($this->conditionQuery($params)->without("userDutyCheck")->toSql()); 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') ->leftJoin('labor_companies','labor_reports.labor_company_id','labor_companies.id') ->selectRaw('labor_companies.name labor_company') ->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->group_user_id&&!$laborReportYesterday->verify){ LaborReport::query()->where('user_id',$userDutyCheck->user_id)->whereNull('group_user_id')->whereNull('verify_at')->orderBy('id','desc')->delete(); $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 "