|
|
@@ -6,10 +6,12 @@ use App\Events\ExportEvent;
|
|
|
use App\Events\ImportEvent;
|
|
|
use App\Events\TeamAuditEvent;
|
|
|
use App\LaborReport;
|
|
|
+use App\LaborReportStatus;
|
|
|
use App\ProcessDailyParticipant;
|
|
|
use App\Services\LaborReportService;
|
|
|
use App\UserDetail;
|
|
|
use App\UserDutyCheck;
|
|
|
+use App\UserLabor;
|
|
|
use App\UserWorkgroup;
|
|
|
use Carbon\Carbon;
|
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
|
@@ -34,27 +36,101 @@ class PersonnelController extends Controller
|
|
|
$checked_at=$request->input('checked_at');
|
|
|
$type=$request->input('type');
|
|
|
$remark=$request->input('remark');
|
|
|
- $userDutyCheck=new UserDutyCheck([
|
|
|
- 'user_id'=>$user_id,
|
|
|
- 'checked_at'=>$checked_at,
|
|
|
- 'type'=>$type,
|
|
|
- 'source'=>'补入',
|
|
|
- ]);
|
|
|
+ $userWorkGroup=$request->input('userWorkGroup');
|
|
|
$checkedAtDate=Carbon::parse($checked_at)->format('Y-m-d');
|
|
|
- $userDutyCheckBefore=UserDutyCheck::where('user_id',$user_id)->where('checked_at','like',$checkedAtDate.'%')->orderBy('id','desc')->first();
|
|
|
- if ($userDutyCheckBefore['type']=='登入'&&$userDutyCheck->type=='登入')return ['result'=>true,'data'=>'已存在进场记录!'];
|
|
|
- if ($userDutyCheckBefore['type']=='登出'&&$userDutyCheck->type=='登出')return ['result'=>true,'data'=>'已存在出场记录!'];
|
|
|
- if ($type=='登出')$userDutyCheck->verify_user_id=Auth::user()['id'];
|
|
|
- $userDutyCheck->save();
|
|
|
- app('LogService')->log(__METHOD__,"录入补卡".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
|
|
|
- $errorMessage=$this->makeOrUpdateLaborReport($userDutyCheck,$remark);
|
|
|
- if ($errorMessage)return $errorMessage;
|
|
|
- return ['success'=>true,'data'=>$userDutyCheck];
|
|
|
+ /** @var LaborReportService $laborReportService */
|
|
|
+ $laborReportService=app(LaborReportService::class);
|
|
|
+ switch ($type) {
|
|
|
+ case '进组':
|
|
|
+ $laborReport=LaborReport::query()->with('userDutyCheck','user.userDetail')
|
|
|
+ ->where('user_id',$user_id)
|
|
|
+ ->where('created_at','like',$checkedAtDate.'%')
|
|
|
+ ->orderBy('id','desc')->first();
|
|
|
+ if ($laborReport && !$laborReport->check_in_at && !$laborReport->user_workgroup_id){ //第一次进组
|
|
|
+ $laborReport->update([
|
|
|
+ 'check_in_at'=>$checked_at,
|
|
|
+ 'verify_at'=>$checked_at,
|
|
|
+ 'group_user_id'=>Auth::user()['id'],
|
|
|
+ 'user_workgroup_id'=>$userWorkGroup,
|
|
|
+ ]);
|
|
|
+ LaborReportStatus::query()->create([
|
|
|
+ 'labor_report_id'=>$laborReport['id'],
|
|
|
+ 'status'=>'已进组',
|
|
|
+ 'created_at'=>$checked_at,
|
|
|
+ ]);
|
|
|
+ if ($remark)$laborReportService->addOrUpdateRemark($remark,$laborReport->id);
|
|
|
+ app('LogService')->log(__METHOD__,"录入进组补卡".__FUNCTION__,json_encode($laborReport),Auth::user()['id']);
|
|
|
+ return ['success'=>true,'data'=>$laborReport->userDutyCheck];
|
|
|
+ }
|
|
|
+ if ($laborReport && $laborReport->user_workgroup_id==$userWorkGroup) return ['result'=>true,'data'=>'已存在进组记录!'];
|
|
|
+ if ($laborReport && $laborReport->user_workgroup_id!=$userWorkGroup){ //换组情况
|
|
|
+ if ($laborReport->check_in_at && !$laborReport->check_out_at) return ['result'=>true,'data'=>'该临时工记录还未退组,不可补进组卡(换组)!'];
|
|
|
+ $laborReportStatus=LaborReportStatus::query()->where('labor_report_id',$laborReport->id)
|
|
|
+ ->where('status','已退场')->first();
|
|
|
+ if ($laborReportStatus) return ['result'=>true,'data'=>'该临时工记录已退场,不可补进组卡!'];
|
|
|
+ $newReport=new LaborReport([
|
|
|
+ 'user_workgroup_id'=>$userWorkGroup,
|
|
|
+ 'user_id'=>$laborReport->user_id,
|
|
|
+ 'name'=>$laborReport->user->userDetail->full_name??'',
|
|
|
+ 'mobile_phone'=>$laborReport->user->userDetail->mobile_phone??'',
|
|
|
+ 'identity_number'=>$laborReport->user->userDetail->identity_number??'',
|
|
|
+ 'labor_company_id'=>$laborReport->labor_company_id,
|
|
|
+ 'check_in_at'=>$checked_at,
|
|
|
+ 'group_user_id'=>Auth::user()['id'],
|
|
|
+ 'user_duty_check_id'=>$laborReport->user_duty_check_id,
|
|
|
+ ]);
|
|
|
+ $newReport['enter_number']=$laborReport->enter_number??'';
|
|
|
+ $newReport->save();
|
|
|
+ $laborReportStatus=new LaborReportStatus([
|
|
|
+ 'labor_report_id'=>$newReport['id'],
|
|
|
+ 'status'=>'已换组',
|
|
|
+ ]);
|
|
|
+ $laborReportStatus->save();
|
|
|
+ $newReport=$newReport->loadMissing('userDutyCheck');
|
|
|
+ if ($remark)$laborReportService->addOrUpdateRemark($remark,$newReport->id);
|
|
|
+ app('LogService')->log(__METHOD__,"录入进组补卡".__FUNCTION__,json_encode($newReport),Auth::user()['id']);
|
|
|
+ return ['success'=>true,'data'=>$newReport->userDutyCheck];
|
|
|
+ }
|
|
|
+ case '退组':
|
|
|
+ $laborReport=LaborReport::query()->with('userDutyCheck')
|
|
|
+ ->where('user_id',$user_id)
|
|
|
+ ->where('created_at','like',$checkedAtDate.'%')
|
|
|
+ ->orderBy('id','desc')->first();
|
|
|
+ if ($laborReport && !$laborReport->check_out_at){
|
|
|
+ $laborReport->update([
|
|
|
+ 'check_out_at'=>$checked_at,
|
|
|
+ ]);
|
|
|
+ LaborReportStatus::query()->create([
|
|
|
+ 'labor_report_id'=>$laborReport['id'],
|
|
|
+ 'status'=>'已退组',
|
|
|
+ 'created_at'=>$checked_at,
|
|
|
+ ]);
|
|
|
+ if ($remark)$laborReportService->addOrUpdateRemark($remark,$laborReport->id);
|
|
|
+ app('LogService')->log(__METHOD__,"录入退组补卡".__FUNCTION__,json_encode($laborReport),Auth::user()['id']);
|
|
|
+ return ['success'=>true,'data'=>$laborReport->userDutyCheck];
|
|
|
+ }else return ['result'=>true,'data'=>'已存在退组记录!'];
|
|
|
+ default:
|
|
|
+ $userDutyCheck=new UserDutyCheck([
|
|
|
+ 'user_id'=>$user_id,
|
|
|
+ 'checked_at'=>$checked_at,
|
|
|
+ 'type'=>$type,
|
|
|
+ 'source'=>'补入',
|
|
|
+ 'verify_user_id'=>Auth::user()['id'],
|
|
|
+ ]);
|
|
|
+ $userDutyCheckBefore=UserDutyCheck::query()->where('user_id',$user_id)->where('checked_at','like',$checkedAtDate.'%')->orderBy('id','desc')->first();
|
|
|
+ if ($userDutyCheckBefore['type']=='登入'&&$userDutyCheck->type=='登入')return ['result'=>true,'data'=>'已存在进场记录!'];
|
|
|
+ if ($userDutyCheckBefore['type']=='登出'&&$userDutyCheck->type=='登出')return ['result'=>true,'data'=>'已存在出场记录!'];
|
|
|
+ $userDutyCheck->save();
|
|
|
+ app('LogService')->log(__METHOD__,"录入补卡".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
|
|
|
+ $errorMessage=$this->makeOrUpdateLaborReport($userDutyCheck,$remark);
|
|
|
+ if ($errorMessage)return $errorMessage;
|
|
|
+ return ['success'=>true,'data'=>$userDutyCheck];
|
|
|
+ }
|
|
|
}
|
|
|
//补卡创建或修改临时工报表
|
|
|
public function makeOrUpdateLaborReport($userDutyCheck,$remark){
|
|
|
$checkedAtDate=Carbon::parse($userDutyCheck->checked_at)->format('Y-m-d');
|
|
|
- $laborReport=LaborReport::where('user_id',$userDutyCheck->user_id)->where('created_at','like',$checkedAtDate.'%')->orderBy('id','desc')->first();
|
|
|
+ $laborReport=LaborReport::query()->where('user_id',$userDutyCheck->user_id)->where('created_at','like',$checkedAtDate.'%')->orderBy('id','desc')->first();
|
|
|
/** @var LaborReportService $laborReportService */
|
|
|
$laborReportService=app(LaborReportService::class);
|
|
|
if (!$laborReport&&$userDutyCheck->type=='登入'){
|
|
|
@@ -66,9 +142,9 @@ class PersonnelController extends Controller
|
|
|
else if(!$laborReport&&$userDutyCheck->type=='登出'){
|
|
|
//退场时间跨天情况
|
|
|
$yesterdayDate=Carbon::parse($userDutyCheck->checked_at.':00')->subDays(1)->format('Y-m-d');
|
|
|
- $laborReportYesterday=LaborReport::where('user_id',$userDutyCheck->user_id)->where('created_at','like',$yesterdayDate.'%')->orderBy('id','desc')->first();
|
|
|
+ $laborReportYesterday=LaborReport::query()->where('user_id',$userDutyCheck->user_id)->where('created_at','like',$yesterdayDate.'%')->orderBy('id','desc')->first();
|
|
|
if ($laborReportYesterday&&!$laborReportYesterday['check_out_at']){
|
|
|
- UserDutyCheck::where('user_id',$laborReportYesterday['user_id'])->where('type','登出')->orderBy('id','desc')->delete();
|
|
|
+ UserDutyCheck::query()->where('user_id',$laborReportYesterday['user_id'])->where('type','登出')->orderBy('id','desc')->delete();
|
|
|
return ['result'=>true,'data'=>'该临时工还未退组,暂不可补退场卡!'];
|
|
|
}
|
|
|
if ($laborReportYesterday){
|
|
|
@@ -80,7 +156,7 @@ class PersonnelController extends Controller
|
|
|
}
|
|
|
}else if($laborReport){
|
|
|
if (!$laborReport->check_out_at){
|
|
|
- UserDutyCheck::where('user_id',$laborReport->user_id)->where('type','登出')->orderBy('id','desc')->delete();
|
|
|
+ UserDutyCheck::query()->where('user_id',$laborReport->user_id)->where('type','登出')->orderBy('id','desc')->delete();
|
|
|
return ['result'=>true,'data'=>'该临时工还未退组,暂不可补退场卡!'];
|
|
|
}
|
|
|
$exportReport=$laborReportService->exportReplenishToCreateLaborReportData($laborReport,$userDutyCheck);
|
|
|
@@ -91,22 +167,21 @@ class PersonnelController extends Controller
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //搜索临时工下打卡信息
|
|
|
+ public function checkUserLabors(Request $request){
|
|
|
+ if(!Gate::allows('人事管理-录入补卡')){ return redirect(url('/')); }
|
|
|
+ $full_name=$request->input('full_name');
|
|
|
+ $userDetail=UserDetail::with(['userDutyChecks'=>function ($query){
|
|
|
+ return $query->orderBy('checked_at','DESC')->limit(5);
|
|
|
+ }])->where('full_name',$full_name)->get();
|
|
|
+ return ['success'=>true,'data'=>$userDetail];
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //任务审核
|
|
|
- public function storeMissionAudit(Request $request){
|
|
|
- if(!Gate::allows('人事管理-任务审核')){ return redirect(url('/')); }
|
|
|
- $id=$request->input('id');
|
|
|
- if (!$id)return ['error'=>'提交审核失败!'];
|
|
|
- $processDailyParticipant=ProcessDailyParticipant::find($id);
|
|
|
- if (!$id)return ['error'=>'未找到对应记录!'];
|
|
|
- $processDailyParticipant->status='已审核';
|
|
|
- $processDailyParticipant->update();
|
|
|
- app('LogService')->log(__METHOD__,"任务审核".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
|
|
|
- return;
|
|
|
+ //考勤
|
|
|
+ public function createReplenishClock(){
|
|
|
+ if(!Gate::allows('人事管理-录入补卡')){ return view('personnel/checkRelating/index'); }
|
|
|
+ $userWorkGroups=UserWorkgroup::query()->get();
|
|
|
+ return view('personnel/checking-in/createReplenishClock',compact('userWorkGroups'));
|
|
|
}
|
|
|
|
|
|
//打卡审核时判断是否异常
|
|
|
@@ -179,7 +254,7 @@ class PersonnelController extends Controller
|
|
|
$laborReportLast->delete();
|
|
|
}
|
|
|
}
|
|
|
- }else if ($laborReport){
|
|
|
+ }else{
|
|
|
LaborReport::updateLaborReportVerify($laborReport,$userDutyCheck);
|
|
|
app('LogService')->log(__METHOD__,"打卡组长审核".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
|
|
|
}
|
|
|
@@ -252,22 +327,6 @@ class PersonnelController extends Controller
|
|
|
return view('personnel/checking-in/clockAudit',['userDutyChecks'=>$userDutyChecks,'laravelEchoPrefix'=>$laravelEchoPrefix,'permittingWorkgroups'=>$permittingWorkgroups]);
|
|
|
}
|
|
|
|
|
|
- //搜索临时工下打卡信息
|
|
|
- public function checkUserLabors(Request $request){
|
|
|
- if(!Gate::allows('人事管理-录入补卡')){ return redirect(url('/')); }
|
|
|
- $full_name=$request->input('full_name');
|
|
|
- $userDetail=UserDetail::with(['userDutyChecks'=>function ($query){
|
|
|
- return $query->orderBy('checked_at','DESC')->limit(5);
|
|
|
- }])->where('full_name',$full_name)->get();
|
|
|
- return ['success'=>true,'data'=>$userDetail];
|
|
|
- }
|
|
|
-
|
|
|
- //考勤
|
|
|
- public function createReplenishClock(){
|
|
|
- if(!Gate::allows('人事管理-录入补卡')){ return view('personnel/checkRelating/index'); }
|
|
|
- return view('personnel/checking-in/createReplenishClock');
|
|
|
- }
|
|
|
-
|
|
|
public function validatorUserDutyCheck(Request $request){
|
|
|
$validator=Validator::make($request->input(),[
|
|
|
'user_id'=>'required',
|
|
|
@@ -298,4 +357,17 @@ class PersonnelController extends Controller
|
|
|
app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
|
|
|
return ['success'=>true,'data'=>$userDutyCheck];
|
|
|
}
|
|
|
+
|
|
|
+ //任务审核
|
|
|
+ public function storeMissionAudit(Request $request){
|
|
|
+ if(!Gate::allows('人事管理-任务审核')){ return redirect(url('/')); }
|
|
|
+ $id=$request->input('id');
|
|
|
+ if (!$id)return ['error'=>'提交审核失败!'];
|
|
|
+ $processDailyParticipant=ProcessDailyParticipant::find($id);
|
|
|
+ if (!$id)return ['error'=>'未找到对应记录!'];
|
|
|
+ $processDailyParticipant->status='已审核';
|
|
|
+ $processDailyParticipant->update();
|
|
|
+ app('LogService')->log(__METHOD__,"任务审核".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|