diff --git a/app/adminapi/controller/works/rlzy/OaDepartmentChangeController.php b/app/adminapi/controller/works/rlzy/OaDepartmentChangeController.php new file mode 100644 index 000000000..12fa6b3ff --- /dev/null +++ b/app/adminapi/controller/works/rlzy/OaDepartmentChangeController.php @@ -0,0 +1,108 @@ +dataLists(new OaDepartmentChangeLists()); + } + + + /** + * @notes 添加人事调动 + * @return \think\response\Json + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public function add() + { + $params = (new OaDepartmentChangeValidate())->post()->goCheck('add'); + $result = OaDepartmentChangeLogic::add($params,$this->adminId); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(OaDepartmentChangeLogic::getError()); + } + + + /** + * @notes 编辑人事调动 + * @return \think\response\Json + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public function edit() + { + $params = (new OaDepartmentChangeValidate())->post()->goCheck('edit'); + $result = OaDepartmentChangeLogic::edit($params,$this->adminId); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(OaDepartmentChangeLogic::getError()); + } + + + /** + * @notes 删除人事调动 + * @return \think\response\Json + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public function delete() + { + $params = (new OaDepartmentChangeValidate())->post()->goCheck('delete'); + OaDepartmentChangeLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取人事调动详情 + * @return \think\response\Json + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public function detail() + { + $params = (new OaDepartmentChangeValidate())->goCheck('detail'); + $result = OaDepartmentChangeLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/adminapi/controller/works/rlzy/OaPersonalQuitController.php b/app/adminapi/controller/works/rlzy/OaPersonalQuitController.php new file mode 100644 index 000000000..3b4408b0f --- /dev/null +++ b/app/adminapi/controller/works/rlzy/OaPersonalQuitController.php @@ -0,0 +1,108 @@ +dataLists(new OaPersonalQuitLists()); + } + + + /** + * @notes 添加离职档案 + * @return \think\response\Json + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public function add() + { + $params = (new OaPersonalQuitValidate())->post()->goCheck('add'); + $result = OaPersonalQuitLogic::add($params,$this->adminId); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(OaPersonalQuitLogic::getError()); + } + + + /** + * @notes 编辑离职档案 + * @return \think\response\Json + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public function edit() + { + $params = (new OaPersonalQuitValidate())->post()->goCheck('edit'); + $result = OaPersonalQuitLogic::edit($params,$this->adminId); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(OaPersonalQuitLogic::getError()); + } + + + /** + * @notes 删除离职档案 + * @return \think\response\Json + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public function delete() + { + $params = (new OaPersonalQuitValidate())->post()->goCheck('delete'); + OaPersonalQuitLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取离职档案详情 + * @return \think\response\Json + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public function detail() + { + $params = (new OaPersonalQuitValidate())->goCheck('detail'); + $result = OaPersonalQuitLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/adminapi/lists/works/rlzy/OaDepartmentChangeLists.php b/app/adminapi/lists/works/rlzy/OaDepartmentChangeLists.php new file mode 100644 index 000000000..39af0a371 --- /dev/null +++ b/app/adminapi/lists/works/rlzy/OaDepartmentChangeLists.php @@ -0,0 +1,82 @@ + ['uid', 'from_did', 'to_did', 'status', 'move_time'], + ]; + } + + + /** + * @notes 获取人事调动列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public function lists(): array + { + return OaDepartmentChange::where($this->searchWhere) + ->field(['id', 'uid', 'from_did', 'to_did', 'remark', 'admin_id', 'status', 'move_time']) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select()->each(function($data){ + $data['user_name'] = $data->user_name; + $data['from_dept'] = $data->from_dept; + $data['to_dept'] = $data->to_dept; + $data['status_text'] = $data->status_text; + }) + ->toArray(); + } + + + /** + * @notes 获取人事调动数量 + * @return int + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public function count(): int + { + return OaDepartmentChange::where($this->searchWhere)->count(); + } + +} \ No newline at end of file diff --git a/app/adminapi/lists/works/rlzy/OaPersonalQuitLists.php b/app/adminapi/lists/works/rlzy/OaPersonalQuitLists.php new file mode 100644 index 000000000..1f170c3f6 --- /dev/null +++ b/app/adminapi/lists/works/rlzy/OaPersonalQuitLists.php @@ -0,0 +1,85 @@ + ['uid', 'lead_admin_id', 'connect_id', 'quit_time'], + ]; + } + + + /** + * @notes 获取离职档案列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public function lists(): array + { + return OaPersonalQuit::where($this->searchWhere) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select()->each(function($data){ + $user = OaAdmin::where('id',$data['uid'])->findOrEmpty(); + $other_user = OaAdmin::where('id','in',[$data['lead_admin_id'],$data['connect_id']])->column('name','id'); + $connect_users = OaAdmin::where('id','in',$data['connect_uids'])->column('name'); + $data['user_name'] = $user['name']; + $data['lead_admin_name'] = $other_user[$data['lead_admin_id']] ?? ''; + $data['connect_user_name'] = $other_user[$data['connect_id']] ?? ''; + $data['connect_users'] = implode(',',$connect_users); + }) + ->toArray(); + } + + + /** + * @notes 获取离职档案数量 + * @return int + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public function count(): int + { + return OaPersonalQuit::where($this->searchWhere)->count(); + } + +} \ No newline at end of file diff --git a/app/adminapi/logic/works/rlzy/OaDepartmentChangeLogic.php b/app/adminapi/logic/works/rlzy/OaDepartmentChangeLogic.php new file mode 100644 index 000000000..88abc1ebd --- /dev/null +++ b/app/adminapi/logic/works/rlzy/OaDepartmentChangeLogic.php @@ -0,0 +1,124 @@ + $params['uid'], + 'from_did' => $params['from_did'], + 'to_did' => $params['to_did'], + 'remark' => $params['remark'] ?? '', + 'admin_id' => $admin_id, + 'status' => $params['status'] ?? 1, + 'move_time' => !empty($params['move_time']) ? strtotime($params['move_time']) : 0 + ]); + OaAdmin::where('id',$params['uid'])->update(['dept_id'=>$params['to_did']]); + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 编辑人事调动 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public static function edit(array $params,$admin_id): bool + { + Db::startTrans(); + try { + OaDepartmentChange::where('id', $params['id'])->update([ + 'uid' => $params['uid'], + 'from_did' => $params['from_did'], + 'to_did' => $params['to_did'], + 'remark' => $params['remark'] ?? '', + 'admin_id' => $admin_id, + 'status' => $params['status'] ?? 1, + 'move_time' => !empty($params['move_time']) ? strtotime($params['move_time']) : 0 + ]); + OaAdmin::where('id',$params['uid'])->update(['dept_id'=>$params['to_did']]); + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 删除人事调动 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public static function delete(array $params): bool + { + return OaDepartmentChange::destroy($params['id']); + } + + + /** + * @notes 获取人事调动详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public static function detail($params): array + { + $data = OaDepartmentChange::findOrEmpty($params['id']); + $data['user_name'] = $data->user_name; + $data['from_dept'] = $data->from_dept; + $data['to_dept'] = $data->to_dept; + $data['status_text'] = $data->status_text; + return $data->toArray(); + } +} \ No newline at end of file diff --git a/app/adminapi/logic/works/rlzy/OaPersonalQuitLogic.php b/app/adminapi/logic/works/rlzy/OaPersonalQuitLogic.php new file mode 100644 index 000000000..b763239ae --- /dev/null +++ b/app/adminapi/logic/works/rlzy/OaPersonalQuitLogic.php @@ -0,0 +1,129 @@ + $params['uid'], + 'remark' => $params['remark'] ?? '', + 'admin_id' => $admin_id, + 'lead_admin_id' => $params['lead_admin_id'], + 'connect_uids' => $params['connect_uids'], + 'connect_id' => $params['connect_id'], + 'connect_time' => !empty($params['connect_time']) ? strtotime($params['connect_time']) : 0, + 'quit_time' => !empty($params['quit_time']) ? strtotime($params['quit_time']) : 0, + ]); + OaAdmin::where('id',$params['uid'])->update(['status'=>2]); + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 编辑离职档案 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public static function edit(array $params,$admin_id): bool + { + Db::startTrans(); + try { + OaPersonalQuit::where('id', $params['id'])->update([ + 'uid' => $params['uid'], + 'remark' => $params['remark'] ?? '', + 'admin_id' => $admin_id, + 'lead_admin_id' => $params['lead_admin_id'], + 'connect_uids' => $params['connect_uids'], + 'connect_id' => $params['connect_id'], + 'connect_time' => !empty($params['connect_time']) ? strtotime($params['connect_time']) : 0, + 'quit_time' => !empty($params['quit_time']) ? strtotime($params['quit_time']) : 0, + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 删除离职档案 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public static function delete(array $params): bool + { + return OaPersonalQuit::destroy($params['id']); + } + + + /** + * @notes 获取离职档案详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public static function detail($params): array + { + $data = OaPersonalQuit::findOrEmpty($params['id']); + $user = OaAdmin::where('id',$data['uid'])->findOrEmpty(); + $other_user = OaAdmin::where('id','in',[$data['lead_admin_id'],$data['connect_id']])->column('name','id'); + $connect_users = OaAdmin::where('id','in',$data['connect_uids'])->column('name'); + $data['user_name'] = $user['name']; + $data['lead_admin_name'] = $other_user[$data['lead_admin_id']] ?? ''; + $data['connect_user_name'] = $other_user[$data['connect_id']] ?? ''; + $data['connect_users'] = implode(',',$connect_users); + return $data->toArray(); + } +} \ No newline at end of file diff --git a/app/adminapi/validate/works/rlzy/OaDepartmentChangeValidate.php b/app/adminapi/validate/works/rlzy/OaDepartmentChangeValidate.php new file mode 100644 index 000000000..b0220c338 --- /dev/null +++ b/app/adminapi/validate/works/rlzy/OaDepartmentChangeValidate.php @@ -0,0 +1,109 @@ + 'require|checkData', + 'uid' => 'require', + 'from_did' => 'require', + 'to_did' => 'require', + 'move_time' => 'require|dateFormat:Y-m-d', + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + 'uid' => '用户', + 'from_did' => '原部门', + 'to_did' => '调到部门', + 'move_time' => '调动时间', + ]; + + + /** + * @notes 添加场景 + * @return OaDepartmentChangeValidate + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public function sceneAdd() + { + return $this->only(['uid','from_did','to_did','admin_id','status','move_time']); + } + + + /** + * @notes 编辑场景 + * @return OaDepartmentChangeValidate + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public function sceneEdit() + { + return $this->only(['id','uid','from_did','to_did','admin_id','status','move_time']); + } + + + /** + * @notes 删除场景 + * @return OaDepartmentChangeValidate + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public function sceneDelete() + { + return $this->only(['id']); + } + + + /** + * @notes 详情场景 + * @return OaDepartmentChangeValidate + * @author likeadmin + * @date 2024/05/22 17:55 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + + public function checkData($value): bool|string + { + $data = OaDepartmentChange::field('id')->where('id',$value)->findOrEmpty(); + return $data->isEmpty() ? '数据不存在' : true; + } + +} \ No newline at end of file diff --git a/app/adminapi/validate/works/rlzy/OaPersonalQuitValidate.php b/app/adminapi/validate/works/rlzy/OaPersonalQuitValidate.php new file mode 100644 index 000000000..1b3164a56 --- /dev/null +++ b/app/adminapi/validate/works/rlzy/OaPersonalQuitValidate.php @@ -0,0 +1,113 @@ + 'require|checkData', + 'uid' => 'require', + 'lead_admin_id' => 'require', + 'connect_uids' => 'require', + 'connect_id' => 'require', + 'connect_time' => 'require|dateFormat:Y-m-d', + 'quit_time' => 'require|dateFormat:Y-m-d', + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + 'uid' => '用户ID', + 'lead_admin_id' => '部门负责人', + 'connect_uids' => '参与交接人,多', + 'connect_id' => '资料交接人', + 'connect_time' => '资料交接时间', + 'quit_time' => '离职时间', + ]; + + + /** + * @notes 添加场景 + * @return OaPersonalQuitValidate + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public function sceneAdd() + { + return $this->only(['uid','admin_id','lead_admin_id','connect_uids','connect_id','connect_time','quit_time']); + } + + + /** + * @notes 编辑场景 + * @return OaPersonalQuitValidate + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public function sceneEdit() + { + return $this->only(['id','uid','admin_id','lead_admin_id','connect_uids','connect_id','connect_time','quit_time']); + } + + + /** + * @notes 删除场景 + * @return OaPersonalQuitValidate + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public function sceneDelete() + { + return $this->only(['id']); + } + + + /** + * @notes 详情场景 + * @return OaPersonalQuitValidate + * @author likeadmin + * @date 2024/05/23 09:43 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + + public function checkData($value): bool|string + { + $data = OaPersonalQuit::field('id')->where('id',$value)->findOrEmpty(); + return $data->isEmpty() ? '数据不存在' : true; + } + +} \ No newline at end of file diff --git a/app/common/model/works/rlzy/OaDepartmentChange.php b/app/common/model/works/rlzy/OaDepartmentChange.php new file mode 100644 index 000000000..d9382cee4 --- /dev/null +++ b/app/common/model/works/rlzy/OaDepartmentChange.php @@ -0,0 +1,59 @@ +'禁用', 1=>'启用']; + return $arr[$data['status']]; + } + + public function getMoveTimeAttr($value): string + { + return !empty($value) ? date('Y-m-d',$value) : ''; + } + + public function getUserNameAttr($value,$data){ + $user = OaAdmin::field('name')->where('id',$data['uid'])->findOrEmpty(); + return !$user->isEmpty() ? $user['name'] : ''; + } + + public function getFromDeptAttr($value,$data){ + $dept = Dept::field('name')->where('id',$data['from_did'])->findOrEmpty(); + return !$dept->isEmpty() ? $dept['name'] : ''; + } + + public function getToDeptAttr($value,$data){ + $dept = Dept::field('name')->where('id',$data['to_did'])->findOrEmpty(); + return !$dept->isEmpty() ? $dept['name'] : ''; + } +} \ No newline at end of file diff --git a/app/common/model/works/rlzy/OaPersonalQuit.php b/app/common/model/works/rlzy/OaPersonalQuit.php new file mode 100644 index 000000000..fe7c0e78a --- /dev/null +++ b/app/common/model/works/rlzy/OaPersonalQuit.php @@ -0,0 +1,42 @@ +