Jelajahi Sumber

[智价云] 员工ID生成规则调整

tangyuanwang 1 hari lalu
induk
melakukan
c8bc9ddb46
1 mengubah file dengan 35 tambahan dan 2 penghapusan
  1. 35 2
      app/Models/Manager/Personnel/Employee.php

+ 35 - 2
app/Models/Manager/Personnel/Employee.php

@@ -47,11 +47,12 @@ class Employee extends Model
             'department_id' => $data['department_id'],
             'open_notice' => $data['open_notice'],
             'duty_type' => isset($data['duty_type']) ? $data['duty_type'] : '',
+            'company_id' => $data['company_id'],
             'insert_time' => time(),
         ];
         $Employee_id = $this->insertGetId($insert_data);
         if ($Employee_id) {
-            $this->where('id', $Employee_id)->update(['employee_code' => $this->employee_idToCode($Employee_id)]);
+            $this->where('id', $Employee_id)->update(['employee_code' => $this->employee_id_rule($data['company_id'], $Employee_id)]);
         }
         return $Employee_id;
     }
@@ -122,6 +123,38 @@ class Employee extends Model
         return 'RH' . str_pad($id, 9, '0', STR_PAD_LEFT);
     }
 
+
+     /**
+     * 员工ID生成规则
+     * @author 唐远望
+     * @version 1.0
+     * @date 2026-03-31
+     * @param  int  $company_id 公司ID
+     * @param  int  $id 员工ID
+     * 
+     */
+    public function employee_id_rule($company_id,$id)
+    {
+        $new_id =rand(100000000, 999999999);
+        //查询最新一条记录员工ID
+        $latest_employee = $this->where('company_id', $company_id)->where([['employee_code','!=','']])->orderBy('id', 'desc')->first();
+        if (!$latest_employee) {
+            $new_id = $company_id.str_pad(1, 9, '0', STR_PAD_LEFT);
+        } else {
+            //如果包含RH字符,则去除后字符串转数字+1,否则直接字符串数据+1
+            if (strpos($latest_employee->employee_code, 'RH') === 0) {
+                $latest_id = intval(str_ireplace('RH', '', $latest_employee->employee_code));
+                $new_id = $company_id.$latest_id + 1;
+            } else if (trim($latest_employee->employee_code) != '') {
+                $new_id = intval($latest_employee->employee_code) + 1;
+            } else {
+                $new_id = $company_id.str_pad(1, 9, '0', STR_PAD_LEFT);
+            }
+        }
+        return $new_id;
+    }
+
+
     /**
      * 编码转id
      * @author 唐远望
@@ -167,7 +200,7 @@ class Employee extends Model
             ];
             $Employee_id = $this->insertGetId($insert_data);
             if ($Employee_id) {
-                $this->where('id', $Employee_id)->update(['employee_code' => $this->employee_idToCode($Employee_id)]);
+                $this->where('id', $Employee_id)->update(['employee_code' => $this->employee_id_rule($data['company_id'],$Employee_id)]);
             }
             //处理省份城市大区信息
             if (isset($data['area_data'])) {