cqp 3 mēneši atpakaļ
vecāks
revīzija
1e9830a6b0

+ 15 - 0
app/Model/EmployeeWorkRange.php

@@ -0,0 +1,15 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class EmployeeWorkRange extends Model
+{
+    protected $guarded = [];
+    protected $table = "employee_work_range"; //指定表
+    const CREATED_AT = null;
+    const UPDATED_AT = null;
+    protected $dateFormat = 'U';
+
+}

+ 5 - 1
app/Service/DeviceWorkService.php

@@ -527,15 +527,19 @@ class DeviceWorkService extends Service
 
             $empName = $empDisplayMap[$empId] ?? "ID:{$empId}";
 
-            // 校验数字有效性 (修正为使用 $value)
+            // 校验数字有效性
             $res = $this->checkNumber($value['start_time_hour'], 0, 'non-negative');
             if(!$res['valid']) return [false, "设备{$empName}开始点:" . $res['error']];
+            if($value['start_time_hour'] > 23) return [false, false, "设备{$empName}开始点不合法"];
             $res = $this->checkNumber($value['start_time_min'], 0, 'non-negative');
             if(!$res['valid']) return [false, "设备{$empName}开始分:" . $res['error']];
+            if($value['start_time_min'] > 60) return [false, false, "设备{$empName}开始点不合法"];
             $res = $this->checkNumber($value['end_time_hour'], 0, 'non-negative');
             if(!$res['valid']) return [false, "设备{$empName}结束点:" . $res['error']];
+            if($value['end_time_hour'] > 24) return [false, false, "设备{$empName}结束点不合法"];
             $res = $this->checkNumber($value['end_time_min'], 0, 'non-negative');
             if(!$res['valid']) return [false, "设备{$empName}结束分:" . $res['error']];
+            if($value['end_time_min'] > 60) return [false, false, "设备{$empName}结束分不合法"];
 
             $currentStart = $value['start_time_hour'] * 60 + $value['start_time_min'];
             $currentEnd   = $value['end_time_hour'] * 60 + $value['end_time_min'];

+ 71 - 4
app/Service/EmployeeService.php

@@ -7,6 +7,7 @@ use App\Model\Employee;
 use App\Model\EmployeeDepartPermission;
 use App\Model\EmployeeDetails;
 use App\Model\EmployeeRole;
+use App\Model\EmployeeWorkRange;
 use App\Model\Role;
 use App\Model\RoleMenu;
 use App\Model\RoleMenuButton;
@@ -104,6 +105,25 @@ class EmployeeService extends Service
                 EmployeeRole::insert($insert);
             }
 
+            EmployeeWorkRange::where('employee_id',$data['id'])->delete();
+            if(isset($data['work_range'])){
+                $insert = [];
+                foreach ($data['work_range'] as $value){
+                    $insert[] = [
+                        'employee_id' => $model->id,
+                        'start_time_hour' => $value['start_time_hour'],
+                        'start_time_min' => $value['start_time_min'],
+                        'end_time_hour' => $value['end_time_hour'],
+                        'end_time_min' => $value['end_time_min'],
+                        'total_work_min' => $value['total_work_min'],
+                        'top_depart_id' => $value['top_depart_id'],
+                        'crt_time' => time(),
+                        'upd_time' => time(),
+                    ];
+                }
+                EmployeeWorkRange::insert($insert);
+            }
+
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -161,6 +181,24 @@ class EmployeeService extends Service
                 EmployeeRole::insert($insert);
             }
 
+            if(isset($data['work_range'])){
+                $insert = [];
+                foreach ($data['work_range'] as $value){
+                    $insert[] = [
+                        'employee_id' => $model->id,
+                        'start_time_hour' => $value['start_time_hour'],
+                        'start_time_min' => $value['start_time_min'],
+                        'end_time_hour' => $value['end_time_hour'],
+                        'end_time_min' => $value['end_time_min'],
+                        'total_work_min' => $value['total_work_min'],
+                        'top_depart_id' => $value['top_depart_id'],
+                        'crt_time' => time(),
+                        'upd_time' => time(),
+                    ];
+                }
+                EmployeeWorkRange::insert($insert);
+            }
+
             DB::commit();
         }catch (Exception $e){
             DB::rollBack();
@@ -180,6 +218,7 @@ class EmployeeService extends Service
             'del_time'=>time()
         ]);
         EmployeeDepartPermission::whereIn('employee_id',$data['id'])->delete();
+        EmployeeWorkRange::whereIn('employee_id',$data['id'])->delete();
 
         return [true,'删除成功'];
     }
@@ -293,6 +332,11 @@ class EmployeeService extends Service
             ->orderBy('b.id')
             ->get();
 
+        $work_range = DB::table('employee_work_range as a')
+            ->whereIn("employee_id", $employee_ids)
+            ->select('employee_id','start_time_hour', 'start_time_min', 'end_time_hour', 'end_time_min')
+            ->get();
+
         // 3. 结果按员工ID分组归纳
         $resultMap = [];
         foreach ($employee_ids as $id) {
@@ -300,7 +344,8 @@ class EmployeeService extends Service
                 'role_ids' => [],
                 'role_names' => [],
                 'depart_ids' => [],
-                'depart_names' => []
+                'depart_names' => [],
+                'work_range' => [],
             ];
         }
 
@@ -314,6 +359,10 @@ class EmployeeService extends Service
             $resultMap[$d->employee_id]['depart_names'][] = $d->title;
         }
 
+        foreach ($work_range as $d) {
+            $resultMap[$d->employee_id]['work_range'][] = $d;
+        }
+
         return [true, $resultMap];
     }
 
@@ -328,9 +377,9 @@ class EmployeeService extends Service
         $detailsMap = $this->getEmployeeDetailsMap($mainIds, $user);
 
         // 枚举映射
-        $sexMap   = \App\Model\Employee::SEX_TYPE;
-        $eduMap   = \App\Model\Employee::Education;
-        $stateMap = \App\Model\Employee::State_Type;
+        $sexMap   = Employee::SEX_TYPE;
+        $eduMap   = Employee::Education;
+        $stateMap = Employee::State_Type;
 
         foreach ($dataArray as $main) {
             $empId = $main['id'];
@@ -410,6 +459,24 @@ class EmployeeService extends Service
         }
         $data['top_depart_id'] = $user['top_depart_id'];
 
+        if(! empty($data['work_range'])){
+            foreach ($data['work_range'] as $key => $value){
+                $res = $this->checkNumber($value['start_time_hour'], 0, 'non-negative');
+                if(!$res['valid']) return [false, "开始点:" . $res['error']];
+                if($value['start_time_hour'] > 23) return [false, false, "开始点不合法"];
+                $res = $this->checkNumber($value['start_time_min'], 0, 'non-negative');
+                if(!$res['valid']) return [false, "开始分:" . $res['error']];
+                if($value['start_time_min'] > 60) return [false, false, "开始点不合法"];
+                $res = $this->checkNumber($value['end_time_hour'], 0, 'non-negative');
+                if(!$res['valid']) return [false, "结束点:" . $res['error']];
+                if($value['end_time_hour'] > 24) return [false, false, "结束点不合法"];
+                $res = $this->checkNumber($value['end_time_min'], 0, 'non-negative');
+                if(!$res['valid']) return [false, "结束分:" . $res['error']];
+                if($value['end_time_min'] > 60) return [false, false, "结束分不合法"];
+                $data['work_range'][$key]['total_work_min'] = ($value['end_time_hour'] * 60 + $value['end_time_min']) - ($value['start_time_hour'] * 60 + $value['start_time_min']);
+                $data['work_range'][$key]['top_depart_id'] = $data['top_depart_id'];
+            }
+        }
         if(! $is_add){
             if($this->isEmpty($data,'id')) return [false,'ID不能为空'];
             $bool = Employee::where('del_time',0)