|
|
@@ -9,6 +9,7 @@ use App\Models\Manager\Personnel\Department as DepartmentModel;
|
|
|
use App\Models\Manager\Personnel\Roles as RolesModel;
|
|
|
use App\Models\Manager\Citys as CitysModel;
|
|
|
use App\Models\Manager\Personnel\EmployeeArea as EmployeeAreaModel;
|
|
|
+use App\Models\Manager\Personnel\EmployeeDepartment as EmployeeDepartmentModel;
|
|
|
|
|
|
/**
|
|
|
* 人员信息管理-员工管理
|
|
|
@@ -25,7 +26,7 @@ class Employee extends Controller
|
|
|
* @date 2025-12-04
|
|
|
*
|
|
|
*/
|
|
|
- public function list(Request $request, EmployeeModel $EmployeeModel,DepartmentModel $DepartmentModel,RolesModel $RolesModel,CitysModel $CitysModel,EmployeeAreaModel $EmployeeAreaModel)
|
|
|
+ public function list(Request $request, EmployeeModel $EmployeeModel, DepartmentModel $DepartmentModel, RolesModel $RolesModel, CitysModel $CitysModel, EmployeeAreaModel $EmployeeAreaModel, EmployeeDepartmentModel $EmployeeDepartmentModel)
|
|
|
{
|
|
|
$request->scene('list')->validate();
|
|
|
// 查询条件
|
|
|
@@ -36,16 +37,14 @@ class Employee extends Controller
|
|
|
$end_time = request('end_time', '');
|
|
|
$name = request('name', '');
|
|
|
$mobile = request('mobile', '');
|
|
|
- $department_id = request('department_id', '');
|
|
|
$role_id = request('role_id', '');
|
|
|
$open_notice = request('open_notice', '');
|
|
|
$employee_code = request('employee_code', '');
|
|
|
$role_name = request('role_name', '');
|
|
|
- $role_ids =[];
|
|
|
- $department_name = request('department_name', '');
|
|
|
- $department_ids =[];
|
|
|
+ $role_ids = [];
|
|
|
$city_id = request('city_id', '');
|
|
|
$city_ids = request('city_ids', '');
|
|
|
+ $department_ids = request('city_ids', '');
|
|
|
// 时间条件
|
|
|
if ($start_time) $map[] = ['insert_time', '>=', strtotime($start_time)];
|
|
|
if ($end_time) $map[] = ['insert_time', '<=', strtotime($end_time)];
|
|
|
@@ -53,54 +52,55 @@ class Employee extends Controller
|
|
|
if (is_numeric($status)) $map[] = ['status', '=', $status];
|
|
|
if ($name) $map[] = ['name', 'like', "%$name%"];
|
|
|
if ($mobile) $map[] = ['mobile', 'like', "%$mobile%"];
|
|
|
- if ($department_id) $map[] = ['department_id', '=', $department_id];
|
|
|
if ($role_id) $map[] = ['role_id', '=', $role_id];
|
|
|
if (is_numeric($open_notice)) $map[] = ['open_notice', '=', $open_notice];
|
|
|
if ($employee_code) $map[] = ['employee_code', 'like', "%$employee_code%"];
|
|
|
if ($city_id) $map[] = ['city_ids', 'like', "%,$city_id,%"];
|
|
|
- if ($department_name){
|
|
|
- $department_ids= $DepartmentModel->where('name','like',"%$department_name%")->pluck('id')->toarray();
|
|
|
- }
|
|
|
- if ($role_name){
|
|
|
- $role_ids= $RolesModel->where('name','like',"%$role_name%")->pluck('id')->toarray();
|
|
|
+ if ($role_name) {
|
|
|
+ $role_ids = $RolesModel->where('name', 'like', "%$role_name%")->pluck('id')->toarray();
|
|
|
}
|
|
|
- $field = ['id','employee_code', 'name','mobile', 'department_id', 'role_id', 'city_ids', 'open_notice','insert_time','update_time','status'];
|
|
|
+ $field = ['id', 'employee_code', 'name', 'mobile', 'department_ids', 'role_id', 'city_ids', 'open_notice', 'insert_time', 'update_time', 'status'];
|
|
|
// 查询数据
|
|
|
- $result_model = $EmployeeModel->query();
|
|
|
- if ($department_name) {
|
|
|
- $result_model = $result_model->whereIn('department_id', $department_ids);
|
|
|
- }
|
|
|
if ($role_name) {
|
|
|
- $result_model = $result_model->whereIn('role_id', $role_ids);
|
|
|
+ $EmployeeModel = $EmployeeModel->whereIn('role_id', $role_ids);
|
|
|
}
|
|
|
//多选查询地区
|
|
|
if ($city_ids && is_string($city_ids)) {
|
|
|
$city_ids = explode(',', $city_ids);
|
|
|
$subQuery = $EmployeeAreaModel->whereIn('city_id', $city_ids)->distinct('employee_id')->select('employee_id');
|
|
|
- $result_model = $result_model->whereIn('id', function ($query1) use ($subQuery) {
|
|
|
+ $EmployeeModel = $EmployeeModel->whereIn('id', function ($query1) use ($subQuery) {
|
|
|
$query1->select('employee_id')->fromSub($subQuery, 'sub1');
|
|
|
});
|
|
|
}
|
|
|
- $result =$result_model
|
|
|
+ //多选部门查询
|
|
|
+ if ($department_ids && is_string($department_ids)) {
|
|
|
+ $department_ids = explode(',', $department_ids);
|
|
|
+ $subQuery = $EmployeeDepartmentModel->whereIn('department_id', $department_ids)->distinct('employee_id')->select('employee_id');
|
|
|
+ $EmployeeModel = $EmployeeModel->whereIn('id', function ($query1) use ($subQuery) {
|
|
|
+ $query1->select('employee_id')->fromSub($subQuery, 'sub1');
|
|
|
+ });
|
|
|
+ }
|
|
|
+ $result = $EmployeeModel
|
|
|
->where($map)
|
|
|
->select($field)
|
|
|
->orderByDesc('id')
|
|
|
->paginate($limit)->toarray();
|
|
|
// 分配数据
|
|
|
if (!$result) return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => []]);
|
|
|
- if(isset($result['data']) && count($result['data']) > 0){
|
|
|
+ if (isset($result['data']) && count($result['data']) > 0) {
|
|
|
foreach ($result['data'] as $key => $value) {
|
|
|
//查询部门信息
|
|
|
- $department_info = $DepartmentModel->where(['id' => $value['department_id']])->first();
|
|
|
+ $department_ids = $value['department_ids'] !='' ? explode(',',$value['department_ids']):'';
|
|
|
+ $department_name = $department_ids ? $DepartmentModel->whereIn('id',$department_ids)->pluck('name')->toarray():'';
|
|
|
//查询角色信息
|
|
|
$role_info = $RolesModel->where(['id' => $value['role_id']])->first();
|
|
|
//查询城市信息
|
|
|
$city_ids = explode(',', $value['city_ids']);
|
|
|
$city_info = [];
|
|
|
- if(count($city_ids) > 0){
|
|
|
+ if (count($city_ids) > 0) {
|
|
|
$city_info = $CitysModel->whereIn('id', $city_ids)->pluck('name');
|
|
|
}
|
|
|
- $result['data'][$key]['department_name'] = isset($department_info['name']) ? $department_info['name'] : '';
|
|
|
+ $result['data'][$key]['department_name'] = $department_name;
|
|
|
$result['data'][$key]['role_name'] = isset($role_info['name']) ? $role_info['name'] : '';
|
|
|
$result['data'][$key]['city_info'] = $city_info;
|
|
|
}
|
|
|
@@ -116,26 +116,25 @@ class Employee extends Controller
|
|
|
* @date 2025-12-12
|
|
|
*
|
|
|
*/
|
|
|
- public function all(Request $request, EmployeeModel $EmployeeModel,DepartmentModel $DepartmentModel,RolesModel $RolesModel,CitysModel $CitysModel,EmployeeAreaModel $EmployeeAreaModel)
|
|
|
+ public function all(Request $request, EmployeeModel $EmployeeModel,RolesModel $RolesModel,EmployeeAreaModel $EmployeeAreaModel, EmployeeDepartmentModel $EmployeeDepartmentModel)
|
|
|
{
|
|
|
$request->scene('all')->validate();
|
|
|
// 查询条件
|
|
|
$map = [];
|
|
|
+ $limit = request('limit', config('page_num', 10));
|
|
|
$status = request('status', '0');
|
|
|
$start_time = request('start_time', '');
|
|
|
$end_time = request('end_time', '');
|
|
|
$name = request('name', '');
|
|
|
$mobile = request('mobile', '');
|
|
|
- $department_id = request('department_id', '');
|
|
|
$role_id = request('role_id', '');
|
|
|
$open_notice = request('open_notice', '');
|
|
|
$employee_code = request('employee_code', '');
|
|
|
$role_name = request('role_name', '');
|
|
|
- $role_ids =[];
|
|
|
- $department_name = request('department_name', '');
|
|
|
- $department_ids =[];
|
|
|
+ $role_ids = [];
|
|
|
$city_id = request('city_id', '');
|
|
|
$city_ids = request('city_ids', '');
|
|
|
+ $department_ids = request('city_ids', '');
|
|
|
// 时间条件
|
|
|
if ($start_time) $map[] = ['insert_time', '>=', strtotime($start_time)];
|
|
|
if ($end_time) $map[] = ['insert_time', '<=', strtotime($end_time)];
|
|
|
@@ -143,35 +142,35 @@ class Employee extends Controller
|
|
|
if (is_numeric($status)) $map[] = ['status', '=', $status];
|
|
|
if ($name) $map[] = ['name', 'like', "%$name%"];
|
|
|
if ($mobile) $map[] = ['mobile', 'like', "%$mobile%"];
|
|
|
- if ($department_id) $map[] = ['department_id', '=', $department_id];
|
|
|
if ($role_id) $map[] = ['role_id', '=', $role_id];
|
|
|
if (is_numeric($open_notice)) $map[] = ['open_notice', '=', $open_notice];
|
|
|
if ($employee_code) $map[] = ['employee_code', 'like', "%$employee_code%"];
|
|
|
if ($city_id) $map[] = ['city_ids', 'like', "%,$city_id,%"];
|
|
|
- if ($department_name){
|
|
|
- $department_ids= $DepartmentModel->where('name','like',"%$department_name%")->pluck('id')->toarray();
|
|
|
- }
|
|
|
- if ($role_name){
|
|
|
- $role_ids= $RolesModel->where('name','like',"%$role_name%")->pluck('id')->toarray();
|
|
|
+ if ($role_name) {
|
|
|
+ $role_ids = $RolesModel->where('name', 'like', "%$role_name%")->pluck('id')->toarray();
|
|
|
}
|
|
|
$field = ['id','name'];
|
|
|
// 查询数据
|
|
|
- $result_model = $EmployeeModel->query();
|
|
|
- if ($department_name) {
|
|
|
- $result_model = $result_model->whereIn('department_id', $department_ids);
|
|
|
- }
|
|
|
if ($role_name) {
|
|
|
- $result_model = $result_model->whereIn('role_id', $role_ids);
|
|
|
+ $EmployeeModel = $EmployeeModel->whereIn('role_id', $role_ids);
|
|
|
}
|
|
|
//多选查询地区
|
|
|
if ($city_ids && is_string($city_ids)) {
|
|
|
$city_ids = explode(',', $city_ids);
|
|
|
$subQuery = $EmployeeAreaModel->whereIn('city_id', $city_ids)->distinct('employee_id')->select('employee_id');
|
|
|
- $result_model = $result_model->whereIn('id', function ($query1) use ($subQuery) {
|
|
|
+ $EmployeeModel = $EmployeeModel->whereIn('id', function ($query1) use ($subQuery) {
|
|
|
+ $query1->select('employee_id')->fromSub($subQuery, 'sub1');
|
|
|
+ });
|
|
|
+ }
|
|
|
+ //多选部门查询
|
|
|
+ if ($department_ids && is_string($department_ids)) {
|
|
|
+ $department_ids = explode(',', $department_ids);
|
|
|
+ $subQuery = $EmployeeDepartmentModel->whereIn('department_id', $department_ids)->distinct('employee_id')->select('employee_id');
|
|
|
+ $EmployeeModel = $EmployeeModel->whereIn('id', function ($query1) use ($subQuery) {
|
|
|
$query1->select('employee_id')->fromSub($subQuery, 'sub1');
|
|
|
});
|
|
|
}
|
|
|
- $result =$result_model
|
|
|
+ $result = $EmployeeModel
|
|
|
->where($map)
|
|
|
->select($field)
|
|
|
->orderByDesc('id')
|
|
|
@@ -188,13 +187,13 @@ class Employee extends Controller
|
|
|
* @version 1.0
|
|
|
* @date 2025-12-04
|
|
|
*/
|
|
|
- public function detail(Request $request, EmployeeModel $EmployeeModel,DepartmentModel $DepartmentModel,RolesModel $RolesModel,CitysModel $CitysModel)
|
|
|
+ public function detail(Request $request, EmployeeModel $EmployeeModel, DepartmentModel $DepartmentModel, RolesModel $RolesModel, CitysModel $CitysModel)
|
|
|
{
|
|
|
$request->scene('detail')->validate();
|
|
|
// 接收参数
|
|
|
$id = request('id', 0);
|
|
|
$map = ['id' => $id];
|
|
|
- $field = ['id','employee_code', 'name','mobile', 'department_id','duty_type','role_id', 'city_ids', 'open_notice','insert_time','update_time','status'];
|
|
|
+ $field = ['id', 'employee_code', 'name', 'mobile', 'department_id', 'duty_type', 'role_id', 'city_ids', 'open_notice', 'insert_time', 'update_time', 'status'];
|
|
|
$data = $EmployeeModel->where($map)->select($field)->first();
|
|
|
if (!$data) return json_send(['code' => 'error', 'msg' => '记录不存在']);
|
|
|
// 查询部门信息
|
|
|
@@ -204,7 +203,7 @@ class Employee extends Controller
|
|
|
// 查询城市信息
|
|
|
$city_ids = explode(',', $data['city_ids']);
|
|
|
$city_info = [];
|
|
|
- if(count($city_ids) > 0){
|
|
|
+ if (count($city_ids) > 0) {
|
|
|
$city_info = $CitysModel->whereIn('id', $city_ids)->pluck('name');
|
|
|
}
|
|
|
$data['department_name'] = isset($department_info['name']) ? $department_info['name'] : '';
|
|
|
@@ -228,7 +227,9 @@ class Employee extends Controller
|
|
|
$all_data = request()->all();
|
|
|
//查询是否存在
|
|
|
$map = ['name' => $all_data['name']];
|
|
|
- $city_ids = request('city_ids','');
|
|
|
+ $department_ids = request('department_id', '');
|
|
|
+ $all_data['department_ids'] = $department_ids;
|
|
|
+ $city_ids = request('city_ids', '');
|
|
|
$all_data['city_ids'] = $city_ids;
|
|
|
$data = $EmployeeModel->where($map)->first();
|
|
|
if ($data) return json_send(['code' => 'error', 'msg' => '员工姓名记录已存在']);
|
|
|
@@ -257,7 +258,9 @@ class Employee extends Controller
|
|
|
$id = request('id', 0);
|
|
|
// 接收数据
|
|
|
$all_data = request()->all();
|
|
|
- $city_ids = request('city_ids','');
|
|
|
+ $department_ids = request('department_id', '');
|
|
|
+ $all_data['department_ids'] = $department_ids;
|
|
|
+ $city_ids = request('city_ids', '');
|
|
|
$all_data['city_ids'] = $city_ids;
|
|
|
$all_data['password'] = request('password', '');
|
|
|
//查询是否存在
|