|
|
@@ -8,6 +8,8 @@ use App\Events\ExportEvent;
|
|
|
use App\Events\ImportEvent;
|
|
|
use App\LaborCompany;
|
|
|
use App\LaborReport;
|
|
|
+use App\Services\LaborReportService;
|
|
|
+use App\Services\UserDutyCheckService;
|
|
|
use App\User;
|
|
|
use App\UserDetail;
|
|
|
use App\UserDutyCheck;
|
|
|
@@ -22,394 +24,309 @@ use Ramsey\Uuid\Uuid;
|
|
|
|
|
|
class UserDutyCheckController extends Controller
|
|
|
{
|
|
|
-
|
|
|
+ function __construct()
|
|
|
+ {
|
|
|
+ app()->bind('LaborReportService', LaborReportService::class);
|
|
|
+ }
|
|
|
|
|
|
//校验二维码进入进出场打卡页面
|
|
|
- public function importAndExportClock(Request $request){
|
|
|
- $importAndExportQRCodeType=$request->input('importAndExportQRCodeType');
|
|
|
- $qrCode_refresh_everyday=config('hr.qrCode_refresh_everyday');
|
|
|
- $qrCode_refresh=config('hr.qrCode_refresh');
|
|
|
- if ($qrCode_refresh_everyday){
|
|
|
- $key=$request->input('key');
|
|
|
+ public function importAndExportClock(Request $request)
|
|
|
+ {
|
|
|
+ $importAndExportQRCodeType = $request->input('importAndExportQRCodeType');
|
|
|
+ $qrCode_refresh_everyday = config('hr.qrCode_refresh_everyday');
|
|
|
+ $qrCode_refresh = config('hr.qrCode_refresh');
|
|
|
+ if ($qrCode_refresh_everyday) {
|
|
|
+ $key = $request->input('key');
|
|
|
if (!$key) return "<h1 style='color: red;text-align:center'>当前二维码失效,请重新扫码!</h1>";
|
|
|
- $date=md5(date('Y-m-d'));
|
|
|
- if ($key!=$date) return "<h1 style='color: red;text-align:center'>当前二维码失效,请重新扫码!</h1>";
|
|
|
+ $date = md5(date('Y-m-d'));
|
|
|
+ if ($key != $date) return "<h1 style='color: red;text-align:center'>当前二维码失效,请重新扫码!</h1>";
|
|
|
}
|
|
|
- if ($qrCode_refresh){
|
|
|
- $key=$request->input('key');
|
|
|
+ if ($qrCode_refresh) {
|
|
|
+ $key = $request->input('key');
|
|
|
if (!$key) return "<h1 style='color: red;text-align:center'>当前二维码失效,请重新扫码!</h1>";
|
|
|
- $date=date('Y-m-d H:i:s');
|
|
|
- if ($key<$date) return "<h1 style='color: red;text-align:center'>当前二维码失效,请重新扫码!</h1>";
|
|
|
+ $date = date('Y-m-d H:i:s');
|
|
|
+ if ($key < $date) return "<h1 style='color: red;text-align:center'>当前二维码失效,请重新扫码!</h1>";
|
|
|
}
|
|
|
- $userLaborToken=$request->cookie('userLaborToken');
|
|
|
- if ($userLaborToken && Cache::has('dutyCheckTokenStr_'.$userLaborToken)) {
|
|
|
- $user_id=Cache::get('dutyCheckTokenStr_'.$userLaborToken);
|
|
|
- $userDetail=UserDetail::find($user_id);
|
|
|
- if (!$userDetail) return redirect('personnel/checking-in/userDutyCheck/createUserDetail/'.$userDetail->mobile_phone)->with("importAndExportQRCodeType",$importAndExportQRCodeType);
|
|
|
- $userDutyCheck=$this->importAndExportDutyCheck($user_id,$importAndExportQRCodeType);
|
|
|
- if ($userDutyCheck&&$userDutyCheck->isNotImport==true)return "<h1 style='color: darkred;text-align:center'>当前还未入场,不可出场!</h1>";
|
|
|
- if ($userDutyCheck&&$userDutyCheck->import==true)return "<h1 style='color: darkred;text-align:center'>您已入场,不可再次入场!</h1>";
|
|
|
- if ($userDutyCheck&&$userDutyCheck->export==true)return "<h1 style='color: darkred;text-align:center'>您已出场,不可再次出场!!</h1>";
|
|
|
- if (!$userDutyCheck)return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
- $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=LaborReport::importToCreateLaborReportData($userDutyCheck);
|
|
|
- $this->log(__METHOD__,"进场创建临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck]));
|
|
|
- if ($newReport) event(new ImportEvent($userDutyCheck));
|
|
|
- }
|
|
|
- else 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){
|
|
|
- UserDutyCheck::where('user_id',$laborReportYesterday->user_id)->where('type','登出')->orderBy('id','desc')->where('checked_at','like',Carbon::now()->format('Y-m-d H:i').'%')->delete();
|
|
|
- return "<h1 style='color: darkred;text-align:center'>您还未退组,暂不可退场,请联系组长!</h1>";
|
|
|
- }
|
|
|
- if ($laborReportYesterday){
|
|
|
- $exportReport=LaborReport::exportToCreateLaborReportData($laborReportYesterday,$userDutyCheck);
|
|
|
- $this->log(__METHOD__,"退场建临时工报表记录__".__FUNCTION__,json_encode([$laborReportYesterday,$userDutyCheck]));
|
|
|
- if ($exportReport) event(new ExportEvent($userDutyCheck));
|
|
|
- }
|
|
|
- }else if($laborReport&&$importAndExportQRCodeType=='export'){
|
|
|
- if (!$laborReport->check_out_at){
|
|
|
- UserDutyCheck::where('user_id',$laborReport->user_id)->where('type','登出')->where('checked_at','like',Carbon::now()->format('Y-m-d H:i').'%')->orderBy('id','desc')->delete();
|
|
|
- return "<h1 style='color: darkred;text-align:center'>您还未退组,暂不可退场,请联系组长!</h1>";
|
|
|
- }
|
|
|
- $exportReport=LaborReport::exportToCreateLaborReportData($laborReport,$userDutyCheck);
|
|
|
- $this->log(__METHOD__,"退场建临时工报表记录__".__FUNCTION__,json_encode([$laborReport,$userDutyCheck]));
|
|
|
- if ($exportReport) event(new ExportEvent($userDutyCheck));
|
|
|
- }
|
|
|
+ $userLaborToken = $request->cookie('userLaborToken');
|
|
|
+ if ($userLaborToken && Cache::has('dutyCheckTokenStr_' . $userLaborToken)) {
|
|
|
+ $user_id = Cache::get('dutyCheckTokenStr_' . $userLaborToken);
|
|
|
+ $userDetail = UserDetail::find($user_id);
|
|
|
+ if (!$userDetail) return redirect('personnel/checking-in/userDutyCheck/createUserDetail/' . $userDetail->mobile_phone)->with("importAndExportQRCodeType", $importAndExportQRCodeType);
|
|
|
+ $userDutyCheck = $this->importAndExportDutyCheck($user_id, $importAndExportQRCodeType);
|
|
|
+ if ($userDutyCheck && $userDutyCheck->isNotImport == true) return "<h1 style='color: darkred;text-align:center'>当前还未入场,不可出场!</h1>";
|
|
|
+ if ($userDutyCheck && $userDutyCheck->import == true) return "<h1 style='color: darkred;text-align:center'>您已入场,不可再次入场!</h1>";
|
|
|
+ if ($userDutyCheck && $userDutyCheck->export == true) return "<h1 style='color: darkred;text-align:center'>您已出场,不可再次出场!!</h1>";
|
|
|
+ if (!$userDutyCheck) return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
+ $laborReportService = app('LaborReportService');
|
|
|
+ $errorMessage = $laborReportService->makeOrChangeLaborReportByUserDutyCheck($userDutyCheck, $importAndExportQRCodeType);
|
|
|
+ if ($errorMessage) return $errorMessage;
|
|
|
$laravelEchoPrefix = config('database.redis.options.prefix');
|
|
|
- return response()->view('personnel/checking-in/importAndExportSuccess',['full_name'=>$userDetail->full_name,'checked_at'=>$userDutyCheck->checked_at,'type'=>$userDutyCheck->type,'laravelEchoPrefix'=>$laravelEchoPrefix]);
|
|
|
+ return response()->view('personnel/checking-in/importAndExportSuccess', ['full_name' => $userDetail->full_name, 'checked_at' => $userDutyCheck->checked_at, 'type' => $userDutyCheck->type, 'laravelEchoPrefix' => $laravelEchoPrefix]);
|
|
|
}
|
|
|
- return view("personnel/checking-in/importAndExportClock",compact('importAndExportQRCodeType'));
|
|
|
+ return view("personnel/checking-in/importAndExportClock", compact('importAndExportQRCodeType'));
|
|
|
}
|
|
|
|
|
|
//提交进出场打卡
|
|
|
- public function storeClock(Request $request){
|
|
|
- $importAndExportQRCodeType=$request->input('importAndExportQRCodeType');
|
|
|
- $mobile_phone=$request->input('mobile_phone');
|
|
|
+ public function storeClock(Request $request)
|
|
|
+ {
|
|
|
+ $importAndExportQRCodeType = $request->input('importAndExportQRCodeType');
|
|
|
+ $mobile_phone = $request->input('mobile_phone');
|
|
|
$this->validator($request)->validate();
|
|
|
- $userDetail=UserDetail::where('mobile_phone',$mobile_phone)->first();
|
|
|
- if (!$userDetail) return redirect('personnel/checking-in/userDutyCheck/createUserDetail/'.$mobile_phone)->with("importAndExportQRCodeType",$importAndExportQRCodeType);
|
|
|
- if (Cache::has('dutyCheckTokenUser_'.$userDetail->user_id))return "<h1 style='color: red;text-align:center'>请使用原有设备进行打卡,如无法使用原有设备请联系管理人员解绑设备!</h1>";
|
|
|
- $userDutyCheckOld=UserDutyCheck::where('user_id',$userDetail->user_id)->orderBy('checked_at','DESC')->limit(10)->first();
|
|
|
- $date=date('Y-m-d H:i:s');
|
|
|
- $lastDate=Carbon::parse($userDutyCheckOld['checked_at']);
|
|
|
- $thisDate=Carbon::parse($date);
|
|
|
- $diffDate=$thisDate->diffInMinutes($lastDate);
|
|
|
+ $userDetail = UserDetail::where('mobile_phone', $mobile_phone)->first();
|
|
|
+ if (!$userDetail) return redirect('personnel/checking-in/userDutyCheck/createUserDetail/' . $mobile_phone)->with("importAndExportQRCodeType", $importAndExportQRCodeType);
|
|
|
+ if (Cache::has('dutyCheckTokenUser_' . $userDetail->user_id)) return "<h1 style='color: red;text-align:center'>请使用原有设备进行打卡,如无法使用原有设备请联系管理人员解绑设备!</h1>";
|
|
|
+ $userDutyCheckOld = UserDutyCheck::where('user_id', $userDetail->user_id)->orderBy('checked_at', 'DESC')->limit(10)->first();
|
|
|
+ $date = date('Y-m-d H:i:s');
|
|
|
+ $lastDate = Carbon::parse($userDutyCheckOld['checked_at']);
|
|
|
+ $thisDate = Carbon::parse($date);
|
|
|
+ $diffDate = $thisDate->diffInMinutes($lastDate);
|
|
|
//七天未登录从新选择劳务所
|
|
|
- if ($diffDate>7*1440){
|
|
|
- return redirect('personnel/checking-in/userDutyCheck/updateUserDetail/'.$mobile_phone)->with("importAndExportQRCodeType",$importAndExportQRCodeType);
|
|
|
- }
|
|
|
- $userDutyCheck=$this->importAndExportDutyCheck($userDetail->user_id,$importAndExportQRCodeType);
|
|
|
- if ($userDutyCheck&&$userDutyCheck->isNotImport==true)return "<h1 style='color: darkred;text-align:center'>当前还未入场,不可出场!</h1>";
|
|
|
- if ($userDutyCheck&&$userDutyCheck->import==true)return "<h1 style='color: darkred;text-align:center'>您已入场,不可再次入场!</h1>";
|
|
|
- if ($userDutyCheck&&$userDutyCheck->export==true)return "<h1 style='color: darkred;text-align:center'>您已出场,不可再次出场!!</h1>";
|
|
|
- if (!$userDutyCheck)return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
- $userLaborToken=$userDetail->getDutyCheckToken(config('users.token_check_in_expire_minutes'));
|
|
|
- $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=LaborReport::importToCreateLaborReportData($userDutyCheck);
|
|
|
-// $this->log(__METHOD__,"进场创建临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck]));
|
|
|
-// if ($newReport) event(new ImportEvent($userDutyCheck));
|
|
|
-// }
|
|
|
- //判断当前日期下临时工是否有临时工报表记录并且是进场打卡
|
|
|
- if ($userDutyCheck->type=='登入'&&$importAndExportQRCodeType=='import'){
|
|
|
- $newReport=LaborReport::importToCreateLaborReportData($userDutyCheck);
|
|
|
- $this->log(__METHOD__,"进场创建临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck]));
|
|
|
- if ($newReport) event(new ImportEvent($userDutyCheck));
|
|
|
- }
|
|
|
- else 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){
|
|
|
- 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 "<h1 style='color: darkred;text-align:center'>您还未退组,暂不可退场,请联系组长!</h1>";
|
|
|
- }
|
|
|
- if ($laborReportYesterday){
|
|
|
- $exportReport=LaborReport::exportToCreateLaborReportData($laborReportYesterday,$userDutyCheck);
|
|
|
- $this->log(__METHOD__,"退场建临时工报表记录__".__FUNCTION__,json_encode([$laborReportYesterday,$userDutyCheck]));
|
|
|
- if ($exportReport) event(new ExportEvent($userDutyCheck));
|
|
|
- }
|
|
|
- }else if($laborReport&&$importAndExportQRCodeType=='export'){
|
|
|
- if (!$laborReport->check_out_at){
|
|
|
- UserDutyCheck::where('user_id',$laborReport->user_id)->where('type','登出')->where('checked_at','like',Carbon::now()->format('Y-m-d H:i').'%')->orderBy('id','desc')->delete();
|
|
|
- return "<h1 style='color: darkred;text-align:center'>您还未退组,暂不可退场,请联系组长!</h1>";
|
|
|
- }
|
|
|
- $exportReport=LaborReport::exportToCreateLaborReportData($laborReport,$userDutyCheck);
|
|
|
- $this->log(__METHOD__,"退场建临时工报表记录__".__FUNCTION__,json_encode([$laborReport,$userDutyCheck]));
|
|
|
- if ($exportReport) event(new ExportEvent($userDutyCheck));
|
|
|
+ if ($diffDate > 7 * 1440) {
|
|
|
+ return redirect('personnel/checking-in/userDutyCheck/updateUserDetail/' . $mobile_phone)->with("importAndExportQRCodeType", $importAndExportQRCodeType);
|
|
|
}
|
|
|
+ $userDutyCheck=$this->importAndExportDutyCheck($userDetail->user_id, $importAndExportQRCodeType);
|
|
|
+ if ($userDutyCheck && $userDutyCheck->isNotImport == true) return "<h1 style='color: darkred;text-align:center'>当前还未入场,不可出场!</h1>";
|
|
|
+ if ($userDutyCheck && $userDutyCheck->import == true) return "<h1 style='color: darkred;text-align:center'>您已入场,不可再次入场!</h1>";
|
|
|
+ if ($userDutyCheck && $userDutyCheck->export == true) return "<h1 style='color: darkred;text-align:center'>您已出场,不可再次出场!!</h1>";
|
|
|
+ if (!$userDutyCheck) return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
+ $userLaborToken = $userDetail->getDutyCheckToken(config('users.token_check_in_expire_minutes'));
|
|
|
+ $laborReportService = app('LaborReportService');
|
|
|
+ $errorMessage = $laborReportService->makeOrChangeLaborReportByUserDutyCheck($userDutyCheck, $importAndExportQRCodeType);
|
|
|
+ if ($errorMessage) return $errorMessage;
|
|
|
$laravelEchoPrefix = config('database.redis.options.prefix');
|
|
|
- return response()->view('personnel/checking-in/importAndExportSuccess',['full_name'=>$userDetail->full_name,'checked_at'=>$userDutyCheck->checked_at,'type'=>$userDutyCheck->type,'laravelEchoPrefix'=>$laravelEchoPrefix])
|
|
|
- ->cookie('userLaborToken',$userLaborToken,config('users.token_check_in_expire_minutes'),'/');
|
|
|
+ return response()->view('personnel/checking-in/importAndExportSuccess', ['full_name' => $userDetail->full_name, 'checked_at' => $userDutyCheck->checked_at, 'type' => $userDutyCheck->type, 'laravelEchoPrefix' => $laravelEchoPrefix])
|
|
|
+ ->cookie('userLaborToken', $userLaborToken, config('users.token_check_in_expire_minutes'), '/');
|
|
|
}
|
|
|
|
|
|
//根据用户提交进出场打卡记录
|
|
|
- public function importAndExportDutyCheck($user_id,$importAndExportQRCodeType){
|
|
|
- $dateNow=Carbon::now()->format('Y-m-d');
|
|
|
- $userDutyCheckOld=UserDutyCheck::where('user_id',$user_id)->where('checked_at','like',$dateNow.'%')->orderBy('id','desc')->limit(10)->first();
|
|
|
- $date=date('Y-m-d H:i:s');
|
|
|
- $this->log(__METHOD__,"提交打卡记录__".__FUNCTION__,json_encode([$user_id,$date]));
|
|
|
- $userDutyCheck=new UserDutyCheck([
|
|
|
- 'user_id'=>$user_id,
|
|
|
- 'checked_at'=>$date,
|
|
|
- 'source'=>'正常',
|
|
|
+ public function importAndExportDutyCheck($user_id, $importAndExportQRCodeType)
|
|
|
+ {
|
|
|
+ $dateNow = Carbon::now()->format('Y-m-d');
|
|
|
+ $userDutyCheckOld = UserDutyCheck::where('user_id', $user_id)->where('checked_at', 'like', $dateNow . '%')->orderBy('id', 'desc')->limit(10)->first();
|
|
|
+ $date = date('Y-m-d H:i:s');
|
|
|
+ $this->log(__METHOD__, "提交打卡记录__" . __FUNCTION__, json_encode([$user_id, $date]));
|
|
|
+ $userDutyCheck = new UserDutyCheck([
|
|
|
+ 'user_id' => $user_id,
|
|
|
+ 'checked_at' => $date,
|
|
|
+ 'source' => '正常',
|
|
|
]);
|
|
|
- if (!$userDutyCheckOld){
|
|
|
+ if (!$userDutyCheckOld) {
|
|
|
//跨天登出情况
|
|
|
- if ($importAndExportQRCodeType&&$importAndExportQRCodeType=='export'){
|
|
|
+ if ($importAndExportQRCodeType && $importAndExportQRCodeType == 'export') {
|
|
|
//当前日期的前一天
|
|
|
- $yesterday=Carbon::yesterday()->format('Y-m-d');
|
|
|
- $userDutyCheckYesterday=UserDutyCheck::where('user_id',$user_id)->where('checked_at','like',$yesterday.'%')->orderBy('id','desc')->limit(10)->first();
|
|
|
- if ($userDutyCheckYesterday&&$userDutyCheckYesterday->type=='登入'){
|
|
|
- $userDutyCheck->type='登出';
|
|
|
+ $yesterday = Carbon::yesterday()->format('Y-m-d');
|
|
|
+ $userDutyCheckYesterday = UserDutyCheck::where('user_id', $user_id)->where('checked_at', 'like', $yesterday . '%')->orderBy('id', 'desc')->limit(10)->first();
|
|
|
+ if ($userDutyCheckYesterday && $userDutyCheckYesterday->type == '登入') {
|
|
|
+ $userDutyCheck->verify_user_id = $userDutyCheckYesterday->verify_user_id;
|
|
|
+ $userDutyCheck->type = '登出';
|
|
|
$userDutyCheck->save();
|
|
|
return $userDutyCheck;
|
|
|
}
|
|
|
}
|
|
|
- if ($importAndExportQRCodeType=='export'){
|
|
|
- $userDutyCheck->isNotImport=true;//还未进场,不可出场
|
|
|
- return$userDutyCheck;
|
|
|
+ if ($importAndExportQRCodeType == 'export') {
|
|
|
+ $userDutyCheck->isNotImport = true;//还未进场,不可出场
|
|
|
+ return $userDutyCheck;
|
|
|
}
|
|
|
- $userDutyCheck->type="登入";
|
|
|
+ $userDutyCheck->type = "登入";
|
|
|
$userDutyCheck->save();
|
|
|
return $userDutyCheck;
|
|
|
}
|
|
|
- if ($importAndExportQRCodeType&&$importAndExportQRCodeType=='import'){
|
|
|
- if ($userDutyCheckOld->type=='登入'){
|
|
|
- $userDutyCheck->import=true;//已入场的不能再入场
|
|
|
+ if ($importAndExportQRCodeType && $importAndExportQRCodeType == 'import') {
|
|
|
+ if ($userDutyCheckOld->type == '登入') {
|
|
|
+ $userDutyCheck->import = true;//已入场的不能再入场
|
|
|
return $userDutyCheck;
|
|
|
}
|
|
|
- $userDutyCheck->type='登入';
|
|
|
+ $userDutyCheck->type = '登入';
|
|
|
}
|
|
|
- if ($importAndExportQRCodeType&&$importAndExportQRCodeType=='export'){
|
|
|
- if ($userDutyCheckOld->type=='登出'){
|
|
|
- $userDutyCheck->export=true;//已出场的不能再出场
|
|
|
+ if ($importAndExportQRCodeType && $importAndExportQRCodeType == 'export') {
|
|
|
+ if ($userDutyCheckOld->type == '登出') {
|
|
|
+ $userDutyCheck->export = true;//已出场的不能再出场
|
|
|
return $userDutyCheck;
|
|
|
}
|
|
|
- $userDutyCheck->type='登出';
|
|
|
+ $userDutyCheck->verify_user_id = $userDutyCheckOld->verify_user_id;
|
|
|
+ $userDutyCheck->type = '登出';
|
|
|
}
|
|
|
$userDutyCheck->save();
|
|
|
return $userDutyCheck;
|
|
|
}
|
|
|
|
|
|
//去往登记资料页面
|
|
|
- public function createUserDetail($mobile_phone){
|
|
|
- $importAndExportQRCodeType=session("importAndExportQRCodeType");
|
|
|
- $laborCompanies=LaborCompany::select('id','name')->get();
|
|
|
- return view('personnel/checking-in/createUserDetail',['mobile_phone'=>$mobile_phone,'importAndExportQRCodeType'=>$importAndExportQRCodeType,'laborCompanies'=>$laborCompanies]);
|
|
|
+ public function createUserDetail($mobile_phone)
|
|
|
+ {
|
|
|
+ $importAndExportQRCodeType = session("importAndExportQRCodeType");
|
|
|
+ $laborCompanies = LaborCompany::select('id', 'name')->get();
|
|
|
+ return view('personnel/checking-in/createUserDetail', ['mobile_phone' => $mobile_phone, 'importAndExportQRCodeType' => $importAndExportQRCodeType, 'laborCompanies' => $laborCompanies]);
|
|
|
}
|
|
|
+
|
|
|
//七天未打卡去往选择劳务所页面
|
|
|
- public function updateUserDetail($mobile_phone){
|
|
|
- $importAndExportQRCodeType=session("importAndExportQRCodeType");
|
|
|
- $laborCompanies=LaborCompany::select('id','name')->get();
|
|
|
- return view('personnel/checking-in/updateUserDetail',['mobile_phone'=>$mobile_phone,'importAndExportQRCodeType'=>$importAndExportQRCodeType,'laborCompanies'=>$laborCompanies]);
|
|
|
+ public function updateUserDetail($mobile_phone)
|
|
|
+ {
|
|
|
+ $importAndExportQRCodeType = session("importAndExportQRCodeType");
|
|
|
+ $laborCompanies = LaborCompany::select('id', 'name')->get();
|
|
|
+ return view('personnel/checking-in/updateUserDetail', ['mobile_phone' => $mobile_phone, 'importAndExportQRCodeType' => $importAndExportQRCodeType, 'laborCompanies' => $laborCompanies]);
|
|
|
}
|
|
|
- //提交临时工修改资料
|
|
|
- public function storeUpdateUserDetail(Request $request){
|
|
|
+
|
|
|
+ //打卡修改临时工劳务所信息并生成进场记录 AndMakeEnterRecord
|
|
|
+ public function storeUpdateUserDetail(Request $request)
|
|
|
+ {
|
|
|
$this->updateValidator($request)->validate();
|
|
|
- $importAndExportQRCodeType=$request->input('importAndExportQRCodeType');
|
|
|
- $mobile_phone=$request->input('mobile_phone');
|
|
|
- $userDetail=UserDetail::where('mobile_phone',$mobile_phone)->first();
|
|
|
- if (!$userDetail)return view('exception.404',['error'=>'临时工信息不存在!']);
|
|
|
- $labor_company_id=$request->input('labor_company_id');
|
|
|
- $userLabor=UserLabor::where('user_id',$userDetail->user_id)->first();
|
|
|
+ $importAndExportQRCodeType = $request->input('importAndExportQRCodeType');
|
|
|
+ $mobile_phone = $request->input('mobile_phone');
|
|
|
+ $userDetail = UserDetail::where('mobile_phone', $mobile_phone)->first();
|
|
|
+ if (!$userDetail) return view('exception.404', ['error' => '临时工信息不存在!']);
|
|
|
+ $labor_company_id = $request->input('labor_company_id');
|
|
|
+ $userLabor = UserLabor::where('user_id', $userDetail->user_id)->first();
|
|
|
$userLabor->update([
|
|
|
- 'labor_company_id'=>$labor_company_id,
|
|
|
+ 'labor_company_id' => $labor_company_id,
|
|
|
]);
|
|
|
- $this->log(__METHOD__,"更改临时工劳务所信息".__FUNCTION__,json_encode($userLabor),Auth::user()['id']);
|
|
|
+ $this->log(__METHOD__, "更改临时工劳务所信息" . __FUNCTION__, json_encode($userLabor), Auth::user()['id']);
|
|
|
$userDutyCheck=$this->importAndExportDutyCheck($userDetail->user_id,$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 (!$laborReport){
|
|
|
- $newReport=LaborReport::importToCreateLaborReportData($userDutyCheck);
|
|
|
- $this->log(__METHOD__,"进场创建临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck]));
|
|
|
- if ($newReport){
|
|
|
- event(new ImportEvent($userDutyCheck));
|
|
|
- }
|
|
|
- }
|
|
|
- if ($userDutyCheck&&$userDutyCheck->import==true)return "<h1 style='color: darkred;text-align:center'>您已入场,不可再次入场!</h1>";
|
|
|
- if ($userDutyCheck&&$userDutyCheck->export==true)return "<h1 style='color: darkred;text-align:center'>您已出场,不可再次出场!!</h1>";
|
|
|
- if (!$userDutyCheck)return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
- $userLaborToken=$userDetail->getDutyCheckToken(config('users.token_check_in_expire_minutes'));
|
|
|
- $this->log(__METHOD__,"录入临时工,用户,对应工作组,打卡记录".__FUNCTION__,json_encode($request->all()));
|
|
|
+ $laborReportService = app('LaborReportService');
|
|
|
+ $laborReportService->makeLaborReportByUserDutyCheck($userDutyCheck);
|
|
|
$laravelEchoPrefix = config('database.redis.options.prefix');
|
|
|
+ $userLaborToken=$userDetail->getDutyCheckToken(config('users.token_check_in_expire_minutes'));
|
|
|
return response()->view('personnel/checking-in/importAndExportSuccess',['full_name'=>$userDetail->full_name,'checked_at'=>$userDutyCheck->checked_at,'type'=>$userDutyCheck->type,'laravelEchoPrefix'=>$laravelEchoPrefix])
|
|
|
->cookie('userLaborToken',$userLaborToken,config('users.token_check_in_expire_minutes'),'/');
|
|
|
}
|
|
|
|
|
|
- public function updateValidator(Request $request){
|
|
|
- $updateValidator=Validator::make($request->input(),[
|
|
|
- 'mobile_phone'=>['required','integer','digits:11'],
|
|
|
- 'labor_company_id'=>['filled'],
|
|
|
- ],[
|
|
|
+ public function updateValidator(Request $request)
|
|
|
+ {
|
|
|
+ $updateValidator = Validator::make($request->input(), [
|
|
|
+ 'mobile_phone' => ['required', 'integer', 'digits:11'],
|
|
|
+ 'labor_company_id' => ['filled'],
|
|
|
+ ], [
|
|
|
'filled' => ':attribute 不能为空',
|
|
|
- 'required'=>':attribute 为必填项',
|
|
|
- 'integer'=>':attribute 数字类型',
|
|
|
- 'digits'=>':attribute 必须是11位',
|
|
|
- ],[
|
|
|
- 'mobile_phone'=>'手机号',
|
|
|
- 'labor_company_id'=>'劳务所',
|
|
|
+ 'required' => ':attribute 为必填项',
|
|
|
+ 'integer' => ':attribute 数字类型',
|
|
|
+ 'digits' => ':attribute 必须是11位',
|
|
|
+ ], [
|
|
|
+ 'mobile_phone' => '手机号',
|
|
|
+ 'labor_company_id' => '劳务所',
|
|
|
]);
|
|
|
return $updateValidator;
|
|
|
}
|
|
|
|
|
|
- //提交登记资料
|
|
|
- public function storeUserDetail(Request $request){
|
|
|
+ //打卡创建临时工资料并生成进场记录
|
|
|
+ public function storeUserDetail(Request $request)
|
|
|
+ {
|
|
|
$this->validator($request)->validate();
|
|
|
- $importAndExportQRCodeType=$request->input('importAndExportQRCodeType');
|
|
|
- $mobile_phone=$request->input('mobile_phone');
|
|
|
- $full_name=$request->input('full_name');
|
|
|
- $identity_number=$request->input('identity_number');
|
|
|
- $user=new User([
|
|
|
- 'name'=>$mobile_phone,
|
|
|
- 'password'=>Uuid::uuid1(),
|
|
|
+ $importAndExportQRCodeType = $request->input('importAndExportQRCodeType');
|
|
|
+ $mobile_phone = $request->input('mobile_phone');
|
|
|
+ $full_name = $request->input('full_name');
|
|
|
+ $identity_number = $request->input('identity_number');
|
|
|
+ $gender = $request->input('gender');
|
|
|
+ $labor_company_id = $request->input('labor_company_id');
|
|
|
+ $user = new User([
|
|
|
+ 'name' => $mobile_phone,
|
|
|
+ 'password' => Uuid::uuid1(),
|
|
|
]);
|
|
|
$user->save();
|
|
|
- $userDetail=new UserDetail([
|
|
|
- 'user_id'=>$user->id,
|
|
|
- 'full_name'=>$full_name,
|
|
|
- 'identity_number'=>$identity_number,
|
|
|
- 'gender'=>$request->input('gender'),
|
|
|
- 'mobile_phone'=>$mobile_phone,
|
|
|
- 'type'=>'临时工',
|
|
|
+ $userDetail = new UserDetail([
|
|
|
+ 'user_id' => $user->id,
|
|
|
+ 'full_name' => $full_name,
|
|
|
+ 'identity_number' => $identity_number,
|
|
|
+ 'gender' => $gender,
|
|
|
+ 'mobile_phone' => $mobile_phone,
|
|
|
+ 'type' => '临时工',
|
|
|
]);
|
|
|
$userDetail->save();
|
|
|
- $labor_company_id=$request->input('labor_company_id');
|
|
|
- $userLabor=new UserLabor([
|
|
|
- 'user_id'=>$user->id,
|
|
|
- 'labor_company_id'=>$labor_company_id,
|
|
|
+ $userLabor = new UserLabor([
|
|
|
+ 'user_id' => $user->id,
|
|
|
+ 'labor_company_id' => $labor_company_id,
|
|
|
]);
|
|
|
$userLabor->save();
|
|
|
- $userDutyCheck=$this->importAndExportDutyCheck($user->id,$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 (!$laborReport){
|
|
|
- $newReport=LaborReport::importToCreateLaborReportData($userDutyCheck);
|
|
|
- $this->log(__METHOD__,"进场创建临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck]));
|
|
|
- if ($newReport){
|
|
|
- event(new ImportEvent($userDutyCheck));
|
|
|
- }
|
|
|
- }
|
|
|
+ $laborReportService = app('LaborReportService');
|
|
|
+ $userDutyCheck=$this->importAndExportDutyCheck($userDetail->user_id,$importAndExportQRCodeType);
|
|
|
+ $laborReportService->makeLaborReportByUserDutyCheck($userDutyCheck);
|
|
|
if ($userDutyCheck&&$userDutyCheck->import==true)return "<h1 style='color: darkred;text-align:center'>您已入场,不可再次入场!</h1>";
|
|
|
- if ($userDutyCheck&&$userDutyCheck->export==true)return "<h1 style='color: darkred;text-align:center'>您已出场,不可再次出场!!</h1>";
|
|
|
+ if ($userDutyCheck&&$userDutyCheck->export==true)return "<h1 style='color: darkred;text-align:center'>您已出场,不可再次出场!</h1>";
|
|
|
if (!$userDutyCheck)return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
$userLaborToken=$userDetail->getDutyCheckToken(config('users.token_check_in_expire_minutes'));
|
|
|
- $this->log(__METHOD__,"录入临时工,用户,对应工作组,打卡记录".__FUNCTION__,json_encode($request->all()));
|
|
|
+ Controller::logS(__METHOD__,"录入临时工,用户,对应工作组,打卡记录".__FUNCTION__,json_encode($userDetail));
|
|
|
$laravelEchoPrefix = config('database.redis.options.prefix');
|
|
|
return response()->view('personnel/checking-in/importAndExportSuccess',['full_name'=>$userDetail->full_name,'checked_at'=>$userDutyCheck->checked_at,'type'=>$userDutyCheck->type,'laravelEchoPrefix'=>$laravelEchoPrefix])
|
|
|
->cookie('userLaborToken',$userLaborToken,config('users.token_check_in_expire_minutes'),'/');
|
|
|
+
|
|
|
}
|
|
|
- public function validator(Request $request){
|
|
|
- $validator=Validator::make($request->input(),[
|
|
|
- 'full_name'=>['filled'],
|
|
|
- 'gender'=>['filled'],
|
|
|
- 'mobile_phone'=>['required','integer','digits:11'],
|
|
|
- 'identity_number' => ['filled','identity_cards','unique:user_details,identity_number'],
|
|
|
- 'labor_company_id'=>['filled'],
|
|
|
- ],[
|
|
|
- 'unique'=>':attribute 已经存在,不能重复!',
|
|
|
+
|
|
|
+ public function validator(Request $request)
|
|
|
+ {
|
|
|
+ $validator = Validator::make($request->input(), [
|
|
|
+ 'full_name' => ['filled'],
|
|
|
+ 'gender' => ['filled'],
|
|
|
+ 'mobile_phone' => ['required', 'integer', 'digits:11'],
|
|
|
+ 'identity_number' => ['filled', 'identity_cards', 'unique:user_details,identity_number'],
|
|
|
+ 'labor_company_id' => ['filled'],
|
|
|
+ ], [
|
|
|
+ 'unique' => ':attribute 已经存在,不能重复!',
|
|
|
'filled' => ':attribute 不能为空',
|
|
|
- 'required'=>':attribute 为必填项',
|
|
|
- 'integer'=>':attribute 数字类型',
|
|
|
- 'digits'=>':attribute 必须是11位',
|
|
|
- ],[
|
|
|
- 'full_name'=>'姓名',
|
|
|
- 'gender'=>'性别',
|
|
|
- 'mobile_phone'=>'手机号',
|
|
|
+ 'required' => ':attribute 为必填项',
|
|
|
+ 'integer' => ':attribute 数字类型',
|
|
|
+ 'digits' => ':attribute 必须是11位',
|
|
|
+ ], [
|
|
|
+ 'full_name' => '姓名',
|
|
|
+ 'gender' => '性别',
|
|
|
+ 'mobile_phone' => '手机号',
|
|
|
'identity_number' => '身份证号',
|
|
|
- 'labor_company_id'=>'劳务所',
|
|
|
+ 'labor_company_id' => '劳务所',
|
|
|
]);
|
|
|
return $validator;
|
|
|
}
|
|
|
|
|
|
- //校验工作组二维码进入打卡页面
|
|
|
- public function clock(Request $request){
|
|
|
- $userWorkgroupID=$request->input('userWorkgroupID');
|
|
|
- $userLaborToken=$request->cookie('userLaborToken');
|
|
|
- if ($userLaborToken && Cache::has('dutyCheckTokenStr_'.$userLaborToken)) {
|
|
|
- $user_id=Cache::get('dutyCheckTokenStr_'.$userLaborToken);
|
|
|
- $userDetail=UserDetail::find($user_id);
|
|
|
- $dateNow=Carbon::now()->format('Y-m-d');
|
|
|
- $group_name=UserWorkgroup::where('id',$userWorkgroupID)->value('name');
|
|
|
- $laravelEchoPrefix = config('database.redis.options.prefix');
|
|
|
- $userDutyCheck=UserDutyCheck::where('user_id',$userDetail->user_id)->where('checked_at','like',$dateNow.'%')->orderBy('id','desc')->first();
|
|
|
- if(!$userDutyCheck->verify_user_id)return "<h1 style='color: red;text-align:center'>进场门卫还未审核,暂无法进组!</h1>";
|
|
|
- if($userDutyCheck->type=='登出')return "<h1 style='color: red;text-align:center'>进场是否未打卡?如若未打,请先返回打进场卡!</h1>";
|
|
|
- //判断是否是第一次进组
|
|
|
- $laborReport=LaborReport::where('user_id',$user_id)->where('user_workgroup_id',null)->where('created_at','like',$dateNow.'%')->orderBy('id','desc')->first();
|
|
|
- if ($laborReport){
|
|
|
- $newLaborReport=LaborReport::intoGroupAndUpdateLaborReportData($laborReport,$userWorkgroupID);
|
|
|
- $this->log(__METHOD__,"当日首次进组更新临时工报表记录__".__FUNCTION__,json_encode($request->all()));
|
|
|
- if (!$newLaborReport)return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
- if ($newLaborReport){
|
|
|
- event(new ClockinEvent($newLaborReport));
|
|
|
- }
|
|
|
- return response()->view('personnel/checking-in/success',['group_name'=>$group_name??'','full_name'=>$userDetail->full_name,'check_in_at'=>$newLaborReport->check_in_at,'laravelEchoPrefix'=>$laravelEchoPrefix]);
|
|
|
- }else{
|
|
|
- //换组判断上一条临时工报表信息是否退组
|
|
|
- $laborReportNow=LaborReport::where('user_id',$user_id)->whereNotNull('group_user_id')->orderBy('id','desc')->first();
|
|
|
- if ($laborReportNow&&!$laborReportNow['check_out_at'])return "<h1 style='color: darkred;text-align:center'>您还未退组,暂不可换组,请联系之前组长!</h1>";
|
|
|
- $laborReport=LaborReport::where('user_id',$user_id)->where('user_workgroup_id',$userWorkgroupID)->where('created_at','like',$dateNow.'%')->orderBy('id','desc')->first();
|
|
|
- //此处表示临时工当日换组操作
|
|
|
- if (!$laborReport){
|
|
|
- $newLaborReport=LaborReport::changeGroupAndCreateLaborReportData($user_id,$userWorkgroupID);
|
|
|
- $this->log(__METHOD__,"当日临时工换组新建临时工报表记录__".__FUNCTION__,json_encode([$user_id,$userWorkgroupID]));
|
|
|
- if (!$newLaborReport)return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
- if ($newLaborReport){
|
|
|
- event(new ClockinEvent($newLaborReport));
|
|
|
- }
|
|
|
- return response()->view('personnel/checking-in/success',['group_name'=>$group_name??'','full_name'=>$userDetail->full_name,'check_in_at'=>$newLaborReport->check_in_at,'laravelEchoPrefix'=>$laravelEchoPrefix]);
|
|
|
- }else{
|
|
|
- return "<h1 style='color: darkred;text-align:center'>重复打卡!</h1>";
|
|
|
- }
|
|
|
- }
|
|
|
+ //扫工作组二维码
|
|
|
+ public function clock(Request $request)
|
|
|
+ {
|
|
|
+ $userWorkgroupID = $request->input('userWorkgroupID');
|
|
|
+ $userLaborToken = $request->cookie('userLaborToken');
|
|
|
+ if ($userLaborToken && Cache::has('dutyCheckTokenStr_' . $userLaborToken)) {
|
|
|
+ $user_id = Cache::get('dutyCheckTokenStr_' . $userLaborToken);
|
|
|
+ $dateNow = Carbon::now()->format('Y-m-d');
|
|
|
+ $userDutyCheck = UserDutyCheck::where('user_id', $user_id)->where('checked_at', 'like', $dateNow. '%')->orderBy('id', 'desc')->first();
|
|
|
+ if (!$userDutyCheck->verify_user_id) return "<h1 style='color: red;text-align:center'>进场门卫还未审核,暂无法进组!</h1>";
|
|
|
+ if ($userDutyCheck->type == '登出') return "<h1 style='color: red;text-align:center'>进场是否未打卡?如若未打,请先返回打进场卡!</h1>";
|
|
|
+ $html=$this->updateLaborReport($user_id,$userWorkgroupID);
|
|
|
+ if ($html)return $html;
|
|
|
}
|
|
|
- return view("personnel/checking-in/clock",compact('userWorkgroupID'));
|
|
|
+ //return view("personnel/checking-in/clock", compact('userWorkgroupID'));
|
|
|
}
|
|
|
- //进组提交打卡
|
|
|
- public function importGroupClock(Request $request){
|
|
|
- $mobile_phone=$request->input('mobile_phone');
|
|
|
- $userWorkgroupID=$request->input('userWorkgroupID');
|
|
|
- $this->validator($request)->validate();
|
|
|
- $userDetail=UserDetail::where('mobile_phone',$mobile_phone)->first();
|
|
|
- if (Cache::has('dutyCheckTokenUser_'.$userDetail->user_id))return "<h1 style='color: red;text-align:center'>请使用原有设备进行打卡,如无法使用原有设备请联系管理人员解绑设备!</h1>";
|
|
|
- $dateNow=Carbon::now()->format('Y-m-d');
|
|
|
- $group_name=UserWorkgroup::where('id',$userWorkgroupID)->value('name');
|
|
|
+ public function updateLaborReport($user_id,$userWorkgroupID){
|
|
|
+ $userDetail = UserDetail::find($user_id);
|
|
|
+ $group_name = UserWorkgroup::where('id', $userWorkgroupID)->value('name');
|
|
|
$laravelEchoPrefix = config('database.redis.options.prefix');
|
|
|
- $userDutyCheck=UserDutyCheck::where('user_id',$userDetail->user_id)->where('checked_at','like',$dateNow.'%')->orderBy('id','desc')->first();
|
|
|
- if(!$userDutyCheck->verify_user_id)return "<h1 style='color: red;text-align:center'>进场门卫还未审核,暂无法进组!</h1>";
|
|
|
- if($userDutyCheck->type=='登出')return "<h1 style='color: red;text-align:center'>进场是否未打卡?如若未打,请先返回打进场卡!</h1>";
|
|
|
- $userLaborToken=$userDetail->getDutyCheckToken(config('users.token_check_in_expire_minutes'));
|
|
|
+ $laborReportService = app('LaborReportService');
|
|
|
//判断是否是第一次进组
|
|
|
- $laborReport=LaborReport::where('user_id',$userDetail->user_id)->where('user_workgroup_id',null)->where('created_at','like',$dateNow.'%')->orderBy('id','desc')->first();
|
|
|
- if ($laborReport){
|
|
|
- $newLaborReport=LaborReport::intoGroupAndUpdateLaborReportData($laborReport,$userWorkgroupID);
|
|
|
- $this->log(__METHOD__,"当日首次进组更新临时工报表记录__".__FUNCTION__,json_encode($request->all()));
|
|
|
- if (!$newLaborReport)return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
- if ($newLaborReport){
|
|
|
+ $laborReport = LaborReport::where('user_id', $user_id)->where('user_workgroup_id', null)->where('created_at', 'like',Carbon::now()->format('Y-m-d'). '%')->orderBy('id', 'desc')->first();
|
|
|
+ if ($laborReport) {
|
|
|
+ $newLaborReport = $laborReportService->enterGroupAndUpdateLaborReport($laborReport, $userWorkgroupID);
|
|
|
+ $this->log(__METHOD__, "当日首次进组更新临时工报表记录__" . __FUNCTION__, json_encode($userWorkgroupID));
|
|
|
+ if (!$newLaborReport) return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
+ if ($newLaborReport) {
|
|
|
event(new ClockinEvent($newLaborReport));
|
|
|
}
|
|
|
- return response()->view('personnel/checking-in/success',['group_name'=>$group_name??'','full_name'=>$userDetail->full_name,'check_in_at'=>$newLaborReport->check_in_at,'laravelEchoPrefix'=>$laravelEchoPrefix]);
|
|
|
- }else{
|
|
|
- $laborReport=LaborReport::where('user_id',$userDetail->user_id)->where('user_workgroup_id',$userWorkgroupID)->where('created_at','like',$dateNow.'%')->orderBy('id','desc')->first();
|
|
|
+ return response()->view('personnel/checking-in/success', ['group_name' => $group_name ?? '', 'full_name' => $userDetail->full_name, 'check_in_at' => $newLaborReport->check_in_at, 'laravelEchoPrefix' => $laravelEchoPrefix]);
|
|
|
+ } else {
|
|
|
+ //换组判断上一条临时工报表信息是否退组
|
|
|
+ $laborReportNow = LaborReport::where('user_id', $user_id)->whereNotNull('group_user_id')->orderBy('id', 'desc')->first();
|
|
|
+ if ($laborReportNow && !$laborReportNow['check_out_at']) return "<h1 style='color: darkred;text-align:center'>您还未退组,暂不可换组,请联系之前组长!</h1>";
|
|
|
+ $laborReport = LaborReport::where('user_id', $user_id)->where('user_workgroup_id', $userWorkgroupID)->where('created_at', 'like', Carbon::now()->format('Y-m-d'). '%')->orderBy('id', 'desc')->first();
|
|
|
//此处表示临时工当日换组操作
|
|
|
- if (!$laborReport){
|
|
|
- $newLaborReport=LaborReport::changeGroupAndCreateLaborReportData($userDetail->user_id,$userWorkgroupID);
|
|
|
- $this->log(__METHOD__,"当日临时工换组新建临时工报表记录__".__FUNCTION__,json_encode([$userDetail->user_id,$userWorkgroupID]));
|
|
|
- if (!$newLaborReport)return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
- if ($newLaborReport){
|
|
|
+ if (!$laborReport) {
|
|
|
+ $newLaborReport = $laborReportService->changeGroupAndMakeLaborReport($user_id, $userWorkgroupID);
|
|
|
+ $this->log(__METHOD__, "当日临时工换组新建临时工报表记录__" . __FUNCTION__, json_encode([$user_id, $userWorkgroupID]));
|
|
|
+ if (!$newLaborReport) return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
+ if ($newLaborReport) {
|
|
|
event(new ClockinEvent($newLaborReport));
|
|
|
}
|
|
|
- return response()->view('personnel/checking-in/success',['group_name'=>$group_name??'','full_name'=>$userDetail->full_name,'check_in_at'=>$newLaborReport->check_in_at,'laravelEchoPrefix'=>$laravelEchoPrefix])
|
|
|
- ->cookie('userLaborToken',$userLaborToken,config('users.token_check_in_expire_minutes'),'/');
|
|
|
- }else{
|
|
|
+ return response()->view('personnel/checking-in/success', ['group_name' => $group_name ?? '', 'full_name' => $userDetail->full_name, 'check_in_at' => $newLaborReport->check_in_at, 'laravelEchoPrefix' => $laravelEchoPrefix]);
|
|
|
+ } else if ($laborReport['enter_number'] != $laborReportNow['enter_number']) {
|
|
|
+ $newLaborReport = $laborReportService->changeGroupAndMakeLaborReport($user_id, $userWorkgroupID);
|
|
|
+ $this->log(__METHOD__, "当日临时工换组新建临时工报表记录__" . __FUNCTION__, json_encode([$user_id, $userWorkgroupID]));
|
|
|
+ if (!$newLaborReport) return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
+ if ($newLaborReport) {
|
|
|
+ event(new ClockinEvent($newLaborReport));
|
|
|
+ }
|
|
|
+ return response()->view('personnel/checking-in/success', ['group_name' => $group_name ?? '', 'full_name' => $userDetail->full_name, 'check_in_at' => $newLaborReport->check_in_at, 'laravelEchoPrefix' => $laravelEchoPrefix]);
|
|
|
+ } else {
|
|
|
return "<h1 style='color: darkred;text-align:center'>重复打卡!</h1>";
|
|
|
}
|
|
|
}
|
|
|
@@ -417,123 +334,66 @@ class UserDutyCheckController extends Controller
|
|
|
|
|
|
|
|
|
|
|
|
-// //根据用户提交打卡记录
|
|
|
-// public function dutyCheck($user_id,$userWorkgroupID){
|
|
|
-// $userDutyCheckOld=UserDutyCheck::where('user_id',$user_id)->orderBy('checked_at','DESC')->limit(10)->first();
|
|
|
-// if ($userWorkgroupID!=$userDutyCheckOld['workgroup_id']){
|
|
|
-// $user=User::find($user_id);
|
|
|
-// $user->userWorkgroups()->sync([$userWorkgroupID]);
|
|
|
-// }
|
|
|
-// $date=date('Y-m-d H:i:s');
|
|
|
-// $this->log(__METHOD__,"提交打卡记录__".__FUNCTION__,json_encode([$user_id,$userWorkgroupID,$date]));
|
|
|
-// $userDutyCheck=new UserDutyCheck([
|
|
|
-// 'user_id'=>$user_id,
|
|
|
-// 'checked_at'=>$date,
|
|
|
-// 'source'=>'正常',
|
|
|
-// 'verify_user_id'=>'',
|
|
|
-// 'workgroup_id'=>$userWorkgroupID,
|
|
|
-// ]);
|
|
|
-// if (!$userDutyCheckOld){
|
|
|
-// $userDutyCheck->type="登入";
|
|
|
-// $userDutyCheck->save();
|
|
|
-// return $userDutyCheck;
|
|
|
-// }
|
|
|
-// $lastDate=Carbon::parse($userDutyCheckOld->checked_at);
|
|
|
-// $thisDate=Carbon::parse($date);
|
|
|
-// $diffDate=$thisDate->diffInMinutes($lastDate);
|
|
|
-//// if ($userDutyCheckOld->type=="登出"&&$diffDate<7*1440){
|
|
|
-//// $userDutyCheck->type="登入";
|
|
|
-//// $userDutyCheck->verify_user_id=0;
|
|
|
-//// $userDutyCheck->save();
|
|
|
-//// return $userDutyCheck;
|
|
|
-//// }
|
|
|
-// if($diffDate<=5){
|
|
|
-// $userDutyCheck->error=true;//重复打卡
|
|
|
-// if($userWorkgroupID!=$userDutyCheckOld['workgroup_id']&&$userDutyCheckOld->type=='登入'){
|
|
|
-// if ($userDutyCheck->error){
|
|
|
-// $userDutyCheck->error=false;
|
|
|
-// }
|
|
|
-// $userDutyCheckOld->checked_at=$date;
|
|
|
-// $userDutyCheckOld->verify_user_id=null;
|
|
|
-// $userDutyCheckOld->workgroup_id=$userWorkgroupID;
|
|
|
-// $userDutyCheckOld->group_user_id=null;
|
|
|
-// $userDutyCheckOld->update();
|
|
|
-// return $userDutyCheckOld;
|
|
|
-// }
|
|
|
-// return $userDutyCheck;
|
|
|
-// }
|
|
|
-// if ($userWorkgroupID!=$userDutyCheckOld['workgroup_id']&&$userDutyCheckOld->type=="登入"&&$userDutyCheck->type="登出"){
|
|
|
-// if ($diffDate>=1380){
|
|
|
-// $userDutyCheck->type="登入";
|
|
|
-// }else{
|
|
|
-// $userDutyCheck->workgroup_id=$userDutyCheckOld['workgroup_id'];
|
|
|
-// }
|
|
|
-//
|
|
|
-// }
|
|
|
-// if ($userDutyCheckOld->type=="登入"){
|
|
|
-// switch ($diffDate){
|
|
|
-// case $diffDate<=20:
|
|
|
-// $userDutyCheck->type="登入";
|
|
|
-// $userDutyCheck->workgroup_id=$userDutyCheckOld->workgroup_id;
|
|
|
-// break;
|
|
|
-// case $diffDate>=1380:
|
|
|
-// $userDutyCheck->type="登入";
|
|
|
-// break;
|
|
|
-// default:
|
|
|
-// $userDutyCheck->type="登出";
|
|
|
-// $userDutyCheck->verify_user_id=0;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// if ($userDutyCheckOld->type=="登出"){
|
|
|
-// switch ($diffDate){
|
|
|
-// case $diffDate<=20:
|
|
|
-// $userDutyCheck->type="登出";
|
|
|
-// $userDutyCheck->verify_user_id=0;
|
|
|
-// $userDutyCheck->workgroup_id=$userDutyCheckOld->workgroup_id;
|
|
|
-// break;
|
|
|
-// default:
|
|
|
-// $userDutyCheck->type="登入";
|
|
|
-// }
|
|
|
-// }
|
|
|
-// $userDutyCheck->save();
|
|
|
-// return $userDutyCheck;
|
|
|
-// }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
//进组提交打卡
|
|
|
-// public function importGroupClock(Request $request){
|
|
|
-// $mobile_phone=$request->input('mobile_phone');
|
|
|
-// $userWorkgroupID=$request->input('userWorkgroupID');
|
|
|
+// public function importGroupClock(Request $request)
|
|
|
+// {
|
|
|
+// $mobile_phone = $request->input('mobile_phone');
|
|
|
+// $userWorkgroupID = $request->input('userWorkgroupID');
|
|
|
+// $laborReportService = app('LaborReportService');
|
|
|
// $this->validator($request)->validate();
|
|
|
-// $userDetail=UserDetail::where('mobile_phone',$mobile_phone)->first();
|
|
|
-// if (!$userDetail) return redirect('personnel/checking-in/userDutyCheck/createUserDetail/'.$mobile_phone)->with("userWorkgroupID",$userWorkgroupID);
|
|
|
-// if (Cache::has('dutyCheckTokenUser_'.$userDetail->user_id))return "<h1 style='color: red;text-align:center'>请使用原有设备进行打卡,如无法使用原有设备请联系管理人员解绑设备!</h1>";
|
|
|
-// $userDutyCheckOld=UserDutyCheck::where('user_id',$userDetail->user_id)->orderBy('checked_at','DESC')->limit(10)->first();
|
|
|
-// $date=date('Y-m-d H:i:s');
|
|
|
-// $lastDate=Carbon::parse($userDutyCheckOld['checked_at']);
|
|
|
-// $thisDate=Carbon::parse($date);
|
|
|
-// $diffDate=$thisDate->diffInMinutes($lastDate);
|
|
|
-// $dateNow=Carbon::now()->format('Y-m-d');
|
|
|
-// //七天未登录从新选择劳务所
|
|
|
-// if ($diffDate>7*1440){
|
|
|
-// return redirect('personnel/checking-in/userDutyCheck/updateUserDetail/'.$mobile_phone)->with("userWorkgroupID",$userWorkgroupID);
|
|
|
-// }
|
|
|
-// $userDutyCheck=$this->dutyCheck($userDetail->user_id,$userWorkgroupID);
|
|
|
-// if ($userDutyCheck&&$userDutyCheck->type=='登入'){
|
|
|
-// event(new ClockinEvent($userDutyCheck));
|
|
|
-// }else if ($userDutyCheck&&$userDutyCheck->type=='登出'){
|
|
|
-// event(new ClockoutEvent($userDutyCheck));
|
|
|
-// }
|
|
|
-// //正常情况
|
|
|
-// $laborReport=LaborReport::where('user_workgroup_id',$userDutyCheck->workgroup_id)->where('user_id',$userDutyCheck->user_id)->orderBy('id','desc')->first();
|
|
|
-// if ($laborReport&&$userDutyCheck->type=='登出'){
|
|
|
-// LaborReport::updateLaborReportData($laborReport,$userDutyCheck);
|
|
|
-// $this->log(__METHOD__,"更新临时工报表记录__".__FUNCTION__,json_encode([$laborReport,$userDutyCheck]));
|
|
|
-// }
|
|
|
-// if ($userDutyCheck&&$userDutyCheck->error==true)return "<h1 style='color: darkred;text-align:center'>重复打卡!</h1>";
|
|
|
-// if (!$userDutyCheck)return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
-// $userLaborToken=$userDetail->getDutyCheckToken(config('users.token_check_in_expire_minutes'));
|
|
|
-// $group_name=$userDutyCheck->userWorkgroup['name'];
|
|
|
+// $userDetail = UserDetail::where('mobile_phone', $mobile_phone)->first();
|
|
|
+// if (Cache::has('dutyCheckTokenUser_' . $userDetail->user_id)) return "<h1 style='color: red;text-align:center'>请使用原有设备进行打卡,如无法使用原有设备请联系管理人员解绑设备!</h1>";
|
|
|
+// $dateNow = Carbon::now()->format('Y-m-d');
|
|
|
+// $group_name = UserWorkgroup::where('id', $userWorkgroupID)->value('name');
|
|
|
// $laravelEchoPrefix = config('database.redis.options.prefix');
|
|
|
-// return response()->view('personnel/checking-in/success',['group_name'=>$group_name??'','full_name'=>$userDetail->full_name,'checked_at'=>$userDutyCheck->checked_at,'type'=>$userDutyCheck->type,'laravelEchoPrefix'=>$laravelEchoPrefix])
|
|
|
-// ->cookie('userLaborToken',$userLaborToken,config('users.token_check_in_expire_minutes'),'/');
|
|
|
+// $userDutyCheck = UserDutyCheck::where('user_id', $userDetail->user_id)->where('checked_at', 'like', $dateNow . '%')->orderBy('id', 'desc')->first();
|
|
|
+// if (!$userDutyCheck->verify_user_id) return "<h1 style='color: red;text-align:center'>进场门卫还未审核,暂无法进组!</h1>";
|
|
|
+// if ($userDutyCheck->type == '登出') return "<h1 style='color: red;text-align:center'>进场是否未打卡?如若未打,请先返回打进场卡!</h1>";
|
|
|
+// $userLaborToken = $userDetail->getDutyCheckToken(config('users.token_check_in_expire_minutes'));
|
|
|
+// //判断是否是第一次进组
|
|
|
+// $laborReport = LaborReport::where('user_id', $userDetail->user_id)->where('user_workgroup_id', null)->where('created_at', 'like', $dateNow . '%')->orderBy('id', 'desc')->first();
|
|
|
+// if ($laborReport) {
|
|
|
+// $newLaborReport = $laborReportService->enterGroupAndUpdateLaborReport($laborReport, $userWorkgroupID);
|
|
|
+// $this->log(__METHOD__, "当日首次进组更新临时工报表记录__" . __FUNCTION__, json_encode($request->all()));
|
|
|
+// if (!$newLaborReport) return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
+// if ($newLaborReport) {
|
|
|
+// event(new ClockinEvent($newLaborReport));
|
|
|
+// }
|
|
|
+// return response()->view('personnel/checking-in/success', ['group_name' => $group_name ?? '', 'full_name' => $userDetail->full_name, 'check_in_at' => $newLaborReport->check_in_at, 'laravelEchoPrefix' => $laravelEchoPrefix]);
|
|
|
+// } else {
|
|
|
+// $laborReport = LaborReport::where('user_id', $userDetail->user_id)->where('user_workgroup_id', $userWorkgroupID)->where('created_at', 'like', $dateNow . '%')->orderBy('id', 'desc')->first();
|
|
|
+// //此处表示临时工当日换组操作
|
|
|
+// if (!$laborReport) {
|
|
|
+// $newLaborReport = $laborReportService->changeGroupAndMakeLaborReport($userDetail->user_id, $userWorkgroupID);
|
|
|
+// $this->log(__METHOD__, "当日临时工换组新建临时工报表记录__" . __FUNCTION__, json_encode([$userDetail->user_id, $userWorkgroupID]));
|
|
|
+// if (!$newLaborReport) return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
|
|
|
+// if ($newLaborReport) {
|
|
|
+// event(new ClockinEvent($newLaborReport));
|
|
|
+// }
|
|
|
+// return response()->view('personnel/checking-in/success', ['group_name' => $group_name ?? '', 'full_name' => $userDetail->full_name, 'check_in_at' => $newLaborReport->check_in_at, 'laravelEchoPrefix' => $laravelEchoPrefix])
|
|
|
+// ->cookie('userLaborToken', $userLaborToken, config('users.token_check_in_expire_minutes'), '/');
|
|
|
+// } else {
|
|
|
+// return "<h1 style='color: darkred;text-align:center'>重复打卡!</h1>";
|
|
|
+// }
|
|
|
+// }
|
|
|
// }
|
|
|
+
|
|
|
+
|
|
|
}
|