haozi 5 лет назад
Родитель
Сommit
45f7c61b76

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

@@ -85,21 +85,21 @@ class LaborReportController extends Controller
         $laborReports=$laborReportsBuilder->orderBy('id','DESC')->paginate(50);
         $laborReports=$laborReports->sortBy('name');
         $laborReports->values()->all();
-//        foreach ($laborReports as $laborReport){
+        foreach ($laborReports as $laborReport){
 //            if (!$laborReport->group_user_id){
-//                //十分钟之内组长未审核实行软删除
-//                $tenMinutesLater=Carbon::parse($laborReport->created_at)->subMinutes(-50)->format('Y-m-d H:i:s');
+//                //十分钟之内组长未审核实行软删除
+//                $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']);
 //                }
 //            }
-//            $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();
-//                $this->log(__METHOD__,"进场门卫未审核该条记录将在一小时后实行软删除__".__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();
+                $this->log(__METHOD__,"进场门卫未审核该条记录将在一小时后实行软删除__".__FUNCTION__,$laborReport->toJson(),Auth::user()['id']);
+            }
+        }
         $userWorkGroups=UserWorkgroup::select('id','name')->get();
         return view('personnel/laborReport/index',['laborReports'=>$laborReports,'userWorkGroups'=>$userWorkGroups,'laravelEchoPrefix'=>$laravelEchoPrefix,'permittingWorkgroups'=>$permittingWorkgroups]);
 

+ 77 - 39
app/Http/Controllers/UserDutyCheckController.php

@@ -84,7 +84,7 @@ class UserDutyCheckController extends Controller
         if ($diffDate > 7 * 1440) {
             return redirect('personnel/checking-in/userDutyCheck/updateUserDetail/' . $mobile_phone)->with("importAndExportQRCodeType", $importAndExportQRCodeType);
         }
-        $userDutyCheck = $this->importAndExportDutyCheck($userDetail->user_id, $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>";
@@ -166,7 +166,7 @@ class UserDutyCheckController extends Controller
         return view('personnel/checking-in/updateUserDetail', ['mobile_phone' => $mobile_phone, 'importAndExportQRCodeType' => $importAndExportQRCodeType, 'laborCompanies' => $laborCompanies]);
     }
 
-    //打卡修改临时工资料并生成进场记录 AndMakeEnterRecord
+    //打卡修改临时工劳务所信息并生成进场记录 AndMakeEnterRecord
     public function storeUpdateUserDetail(Request $request)
     {
         $this->updateValidator($request)->validate();
@@ -180,8 +180,13 @@ class UserDutyCheckController extends Controller
             'labor_company_id' => $labor_company_id,
         ]);
         $this->log(__METHOD__, "更改临时工劳务所信息" . __FUNCTION__, json_encode($userLabor), Auth::user()['id']);
+        $userDutyCheck=$this->importAndExportDutyCheck($userDetail->user_id,$importAndExportQRCodeType);
         $laborReportService = app('LaborReportService');
-        $laborReportService->includeEnterRecordToCreateLaborReport($userDetail, $importAndExportQRCodeType);
+        $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)
@@ -231,7 +236,17 @@ class UserDutyCheckController extends Controller
         ]);
         $userLabor->save();
         $laborReportService = app('LaborReportService');
-        $laborReportService->includeEnterRecordToCreateLaborReport($userDetail, $importAndExportQRCodeType);
+        $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)return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
+        $userLaborToken=$userDetail->getDutyCheckToken(config('users.token_check_in_expire_minutes'));
+        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)
@@ -263,56 +278,79 @@ class UserDutyCheckController extends Controller
     {
         $userWorkgroupID = $request->input('userWorkgroupID');
         $userLaborToken = $request->cookie('userLaborToken');
-        $laborReportService = app('LaborReportService');
         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();
+            $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>";
-            //判断是否是第一次进组
-            $laborReport = LaborReport::where('user_id', $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()));
+            $html=$this->updateLaborReport($user_id,$userWorkgroupID);
+            if ($html)return $html;
+        }
+        //return view("personnel/checking-in/clock", compact('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();
+        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 {
+            //换组判断上一条临时工报表信息是否退组
+            $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 = $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 {
-                //换组判断上一条临时工报表信息是否退组
-                $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 = $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>";
+            } 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>";
             }
         }
-        return view("personnel/checking-in/clock", compact('userWorkgroupID'));
     }
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
     //进组提交打卡
 //    public function importGroupClock(Request $request)
 //    {

+ 4 - 16
app/Services/LaborReportService.php

@@ -19,26 +19,16 @@ use Carbon\Carbon;
 class LaborReportService
 {
     //根据进场记录创建临时工报表
-    public function includeEnterRecordToCreateLaborReport($userDetail,$importAndExportQRCodeType){
-        $userDutyCheckController=new UserDutyCheckController();
-        $userDutyCheck=$userDutyCheckController->importAndExportDutyCheck($userDetail->user_id,$importAndExportQRCodeType);
+    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();
+            $newReport=$userDutyCheck->laborEnterCheck();
             Controller::logS(__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'));
-        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 makeOrChangeLaborReportByUserDutyCheck($userDutyCheck,$importAndExportQRCodeType){
@@ -54,18 +44,16 @@ class LaborReportService
             //退场时间跨天情况
             $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){
+            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 "<h1 style='color: darkred;text-align:center'>您还未退组,暂不可退场,请联系组长!</h1>";
             }
-            if ($laborReportYesterday){
                 $exportReport=LaborReport::exitAndChangeLaborReport($laborReportYesterday,$userDutyCheck);
                 Controller::logS(__METHOD__,"退场更改临时工报表信息__".__FUNCTION__,json_encode([$laborReportYesterday,$userDutyCheck]));
                 if ($exportReport) event(new ExportEvent($userDutyCheck));
-            }
         }
         if($laborReport&&$importAndExportQRCodeType=='export'){
-            if (!$laborReport['check_out_at']){
+            if (!$laborReport['check_out_at']&&$laborReport['user_workgroup_id']){
                 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>";
             }

+ 0 - 4
app/UserDutyCheck.php

@@ -34,10 +34,6 @@ class UserDutyCheck extends Model
     public function laborEnterCheck(){
         $this->makeEnteringRecord();
     }
-    public function laborExitCheck(){
-//        $this->exitAndChangeLaborReport();
-    }
-
     //进场创建临时工报表信息
      function makeEnteringRecord(){
         $userDetail=UserDetail::find($this['user_id']);

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

@@ -70,7 +70,7 @@
                 </form>
             </div>
             <div class="">
-                <table class="table table-sm table-hover table-striped table-bordered d-none d-sm-block p-0 text-nowrap">
+                <table class="table table-sm table-hover table-striped table-bordered d-none d-sm-block p-0 text-nowrap" >
                     <tr>
                         <th>
                             <label for="all">