Explorar el Código

完善人事管理补卡相关逻辑

haozi hace 5 años
padre
commit
ce6fff4b3a
Se han modificado 2 ficheros con 36 adiciones y 7 borrados
  1. 36 7
      app/LaborReport.php
  2. BIN
      public/images/QRCodeIMG/1.png

+ 36 - 7
app/LaborReport.php

@@ -53,7 +53,41 @@ class LaborReport extends Model
     }
     //修改临时工报表数据
     static function updateLaborReportData($laborReport,$userDutyCheck){
+            //正常打卡情况
+            if($userDutyCheck->type=='登出'){
+                $laborReport->check_out_at=$userDutyCheck->checked_at;
+                $checkInDate=Carbon::parse($laborReport['check_in_at']);
+                $checkOutDate=Carbon::parse($userDutyCheck->checked_at);
+                $hour=($checkOutDate->diffInSeconds($checkInDate))/3600; //在线时长
+                $laborReport['online_duration']=$hour;
+                $laborReport['working_duration']= $laborReport['online_duration'];
+                $laborReport->update();
+            }
+        $date=Carbon::parse($laborReport['check_in_at'])->format('Y-m-d');
         $userDutyCheckOld=UserDutyCheck::where('user_id',$userDutyCheck->user_id)->orderBy('checked_at','DESC')->limit(10)->first();
+        //补卡情况
+        if ($userDutyCheck->type=='登入'&&$userDutyCheckOld->checked_at>$userDutyCheck->checked_at&&$userDutyCheck->checked_at<$date." 11:00".":00"){
+            $laborReport['check_in_at']=$userDutyCheck['checked_at'];
+            $checkInDate=Carbon::parse($laborReport['check_in_at']);
+            if ($laborReport->check_out_at){
+                $checkOutDate=Carbon::parse($laborReport->check_out_at);
+                $hour=($checkOutDate->diffInSeconds($checkInDate))/3600; //在线时长
+                $laborReport['online_duration']=$hour;
+            }
+            $laborReport->update();
+        }
+        if ($userDutyCheck->type=='登入'&&$userDutyCheckOld->checked_at<$userDutyCheck->checked_at){
+            $userDutyCheck->save();
+            $userDutyCheckStart=UserDutyCheck::where('user_id',$laborReport->user_id)->where('workgroup_id',$laborReport->user_workgroup_id)->where('checked_at','>=',$date." 11:00".":00")
+                ->where('checked_at','<=',$date." 14:00:00")->where('type','登出')->first();
+            $userDutyCheckEnd=UserDutyCheck::where('user_id',$laborReport->user_id)->where('workgroup_id',$laborReport->user_workgroup_id)->where('type','登入')->where('checked_at','>=',$date." 11:00".":00")
+                ->where('checked_at','<=',$date." 14:00:00")->first();
+            $beginTime=Carbon::parse($userDutyCheckStart['checked_at']);
+            $endTime=Carbon::parse($userDutyCheckEnd['checked_at']);
+            $lunchHour=($endTime->diffInSeconds($beginTime))/3600;
+            $laborReport['working_duration']=$laborReport['online_duration']-$lunchHour;
+            $laborReport->update();
+        }
         if ($userDutyCheck->type=='登出'&&$userDutyCheckOld->checked_at<$userDutyCheck->checked_at){
             $laborReport->check_out_at=$userDutyCheck->checked_at;
             $checkInDate=Carbon::parse($laborReport['check_in_at']);
@@ -63,13 +97,8 @@ class LaborReport extends Model
             $laborReport['working_duration']=$hour;
             $laborReport->update();
         }
-        //补卡情况
-        if ($userDutyCheck->type=='登入'&&$userDutyCheckOld->checked_at>$userDutyCheck->checked_at){
-            $laborReport['check_in_at']=$userDutyCheck['checked_at'];
-            $laborReport->update();
-        }
-        $date=Carbon::parse($laborReport['check_in_at'])->format('Y-m-d');
-        if ($laborReport){
+
+        if ($laborReport&&$laborReport->check_out_at){
             $userDutyCheckStart=UserDutyCheck::where('user_id',$laborReport->user_id)->where('workgroup_id',$laborReport->user_workgroup_id)->where('checked_at','>=',$date." 11:00".":00")
                 ->where('checked_at','<=',$date." 14:00:00")->where('type','登出')->first();
             $userDutyCheckEnd=UserDutyCheck::where('user_id',$laborReport->user_id)->where('workgroup_id',$laborReport->user_workgroup_id)->where('checked_at','>=',$date." 11:00".":00")

BIN
public/images/QRCodeIMG/1.png