haozi 5 лет назад
Родитель
Сommit
28684a21d7

+ 8 - 8
app/Http/Controllers/LaborReportController.php

@@ -47,14 +47,14 @@ class LaborReportController extends Controller
         $laborReports=app('laborReportService')->paginate($request);
 //        $laborReports=$laborReports->sortBy('name');按名字排序
         foreach ($laborReports as $laborReport){
-//            if (!$laborReport->group_user_id){
-//                //三十分钟之内组长未审核实行软删除
-//                $tenMinutesLater=Carbon::parse($laborReport->created_at)->subMinutes(-30)->format('Y-m-d H:i:s');
-//                if (Carbon::now()->format('Y-m-d H:i:s')>$tenMinutesLater){
-//                    $laborReport->delete();
-//                    $this->log(__METHOD__,"组长未审核该条记录将在10分钟后实行软删除__".__FUNCTION__,$laborReport->toJson(),Auth::user()['id']);
-//                }
-//            }
+            if (!$laborReport->group_user_id){
+                //2小时之内组长未审核实行软删除
+                $tenMinutesLater=Carbon::parse($laborReport->created_at)->subHours(-2)->format('Y-m-d H:i:s');
+                if (Carbon::now()->format('Y-m-d H:i:s')>$tenMinutesLater){
+                    $laborReport->delete();
+                    $this->log(__METHOD__,"组长未审核该条记录将在10分钟后实行软删除__".__FUNCTION__,$laborReport->toJson(),Auth::user()['id']);
+                }
+            }
             $addOneHourCheckedAt=Carbon::parse($laborReport->userDutyCheck['checked_at'])->subHours(-1)->format('Y-m-d H:i:s');
             if (!$laborReport->userDutyCheck['verify_user_id']&&Carbon::now()->format('Y-m-d H:i:s')>$addOneHourCheckedAt){
                 $laborReport->delete();

+ 53 - 47
app/Http/Controllers/UserDutyCheckController.php

@@ -49,6 +49,7 @@ class UserDutyCheckController extends Controller
             $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);
+            if($importAndExportQRCodeType=='import') return redirect('personnel/checking-in/userDutyCheck/updateUserLaborCompanies/' . $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>";
@@ -77,9 +78,9 @@ class UserDutyCheckController extends Controller
         $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);
+        //未登录从新选择劳务所
+        if ($diffDate > 0.5 * 1440 ||!$userDutyCheckOld) {
+            return redirect('personnel/checking-in/userDutyCheck/updateUserLaborCompanies/' . $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>";
@@ -146,7 +147,6 @@ class UserDutyCheckController extends Controller
         $userDutyCheck->save();
         return $userDutyCheck;
     }
-
     //去往登记资料页面
     public function createUserDetail($mobile_phone)
     {
@@ -154,17 +154,16 @@ class UserDutyCheckController extends Controller
         $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)
+    //未打卡去往选择劳务所页面
+    public function updateUserLaborCompanies($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]);
+        return view('personnel/checking-in/updateUserLaborCompanies', ['mobile_phone' => $mobile_phone, 'importAndExportQRCodeType' => $importAndExportQRCodeType, 'laborCompanies' => $laborCompanies]);
     }
 
     //打卡修改临时工劳务所信息并生成进场记录 AndMakeEnterRecord
-    public function storeUpdateUserDetail(Request $request)
+    public function storeUpdateUserLaborCompanies(Request $request)
     {
         $this->updateValidator($request)->validate();
         $importAndExportQRCodeType = $request->input('importAndExportQRCodeType');
@@ -178,12 +177,16 @@ class UserDutyCheckController extends Controller
         ]);
         $this->log(__METHOD__, "更改临时工劳务所信息" . __FUNCTION__, json_encode($userLabor), Auth::user()['id']);
         $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');
-        $laborReportService->makeLaborReportByUserDutyCheck($userDutyCheck);
+        $laborReportService->makeOrChangeLaborReportByUserDutyCheck($userDutyCheck, $importAndExportQRCodeType);
         $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'),'/');
+            ->cookie('userLaborToken', $userLaborToken, config('users.token_check_in_expire_minutes'), '/');
     }
 
     public function updateValidator(Request $request)
@@ -285,50 +288,34 @@ class UserDutyCheckController extends Controller
             $html=$this->updateLaborReport($user_id,$userWorkgroupID);
             if ($html)return $html;
         }
-        //return view("personnel/checking-in/clock", compact('userWorkgroupID'));
+        return "<h1 style='color: red;text-align:center'>进场还未打卡,暂无法进组!</h1>";
     }
-    public function updateLaborReport($user_id,$userWorkgroupID){
+    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');
         $laborReportService = app('LaborReportService');
         //判断是否是第一次进组
-        $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();
+        $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]);
+            if ($newLaborReport) event(new ClockinEvent($newLaborReport));
         } else {
             //换组判断上一条临时工报表信息是否退组
-            $laborReportNow = LaborReport::where('user_id', $user_id)->whereNotNull('user_workgroup_id')->orderBy('id', 'desc')->first();
-            if ($laborReportNow&&$laborReportNow['group_user_id']&&!$laborReportNow['check_out_at']) return "<h1 style='color: darkred;text-align:center'>您还未退组,暂不可换组,请联系之前组长!</h1>";
-            if ($laborReportNow && $laborReportNow['user_workgroup_id']==$userWorkgroupID) 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 = $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 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>";
-            }
+            $laborReportNow = LaborReport::where('user_id', $user_id)->orderBy('id', 'desc')->first();
+            if ($laborReportNow['group_user_id'] && !$laborReportNow['check_out_at']) return "<h1 style='color: darkred;text-align:center'>您还未退组,暂不可换组,请联系之前组长!</h1>";
+            if ($laborReportNow['user_workgroup_id'] == $userWorkgroupID) return "<h1 style='color: darkred;text-align:center'>您已进组,不可再次进组!</h1>";
+            //if (!$laborReportNow['group_user_id']) return "<h1 style='color: darkred;text-align:center'>换组前是否已经其他组!</h1>";
+            //此处表示临时工换组操作
+            $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]);
     }
 
 
@@ -347,10 +334,29 @@ class UserDutyCheckController extends Controller
 
 
 
+//$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 = $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 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>";
+//}
 
-
-
-    //进组提交打卡
+        //进组提交打卡
 //    public function importGroupClock(Request $request)
 //    {
 //        $mobile_phone = $request->input('mobile_phone');
@@ -395,4 +401,4 @@ class UserDutyCheckController extends Controller
 //    }
 
 
-}
+    }

+ 9 - 1
app/Services/LaborReportService.php

@@ -64,7 +64,7 @@ class LaborReportService
         $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();
+            $newReport=$userDutyCheck->makeEnteringRecord();
             Controller::logS(__METHOD__,"进场创建临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck]));
             if ($newReport){
                 event(new ImportEvent($newReport));
@@ -137,6 +137,14 @@ class LaborReportService
     public function changeGroupAndMakeLaborReport($user_id,$userWorkgroupID){
         $laborReportBefore=LaborReport::where('user_id',$user_id)->orderby('id','desc')->first();
         if ($laborReportBefore&&$laborReportBefore['status']!='已退场')$userDutyCheck=$laborReportBefore->userDutyCheck;
+//        if ($laborReportBefore&&!$laborReportBefore['group_user_id']){
+//            if ($laborReportBefore['user_workgroup_id']!=$userWorkgroupID){
+//                $laborReportBefore['user_workgroup_id']=$userWorkgroupID;
+//                $laborReportBefore['check_in_at']=Carbon::now()->format('Y-m-d H:i:s');
+//                $laborReportBefore->update();
+//                return $laborReportBefore;
+//            }
+//        }
         $userDetail=UserDetail::find($user_id);
         $name=$userDetail['full_name'];
         $mobile_phone=$userDetail['mobile_phone'];

+ 1 - 1
resources/views/personnel/checking-in/updateUserDetail.blade.php → resources/views/personnel/checking-in/updateUserLaborCompanies.blade.php

@@ -8,7 +8,7 @@
 <body>
 <div class="card col-md-8 offset-md-2 mt-5">
     <div class="card-body">
-        <form method="POST" action="{{url('personnel/checking-in/userDutyCheck/storeUpdateUserDetail')}}">
+        <form method="POST" action="{{url('personnel/checking-in/userDutyCheck/storeUpdateUserLaborCompanies')}}">
             @csrf
             <div class="form-group row">
                 <label for="mobile_phone" class="form-check-label col-3 pull-left">电话:</label>

+ 3 - 1
resources/views/personnel/laborReport/index.blade.php

@@ -344,7 +344,9 @@
                 //进组
                 _this.permittingWorkgroups.forEach(function(workgroup){
                     Echo.channel('{{$laravelEchoPrefix}}'+workgroup.token).listen('ClockinEvent',(e)=>{
-                        window.location.reload();
+                        setTimeout(function () {
+                            window.location.reload();
+                        },500);
                     });
                 });
                 //退组

+ 3 - 3
routes/web.php

@@ -163,11 +163,11 @@ Route::group(['prefix'=>'personnel/checking-in/userDutyCheck'],function(){
     //去往登记资料页面
     Route::get('createUserDetail/{mobile_phone}','UserDutyCheckController@createUserDetail');
     //去往修改资料页面
-    Route::get('updateUserDetail/{mobile_phone}','UserDutyCheckController@updateUserDetail');
+    Route::get('updateUserLaborCompanies/{mobile_phone}','UserDutyCheckController@updateUserLaborCompanies');
     //提交登记资料
     Route::post('storeUserDetail','UserDutyCheckController@storeUserDetail');
-    //提交修改资料
-    Route::post('storeUpdateUserDetail','UserDutyCheckController@storeUpdateUserDetail');
+    //提交修改劳务所
+    Route::post('storeUpdateUserLaborCompanies','UserDutyCheckController@storeUpdateUserLaborCompanies');
 });
 Route::group(['prefix'=>'process'],function(){
     //相关设置