1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package cn.iocoder.yudao.module.hrm.service.employee;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeImportExcelVO;
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeImportReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeImportRespVO;
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeePageReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeRespVO;
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeSaveReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeSimpleRespVO;
import cn.iocoder.yudao.module.hrm.dal.dataobject.employee.HrmEmployeeDO;
import jakarta.validation.Valid;
 
import java.util.Collection;
import java.util.List;
 
/**
 * 员工信息 Service 接口
 *
 * @author 超级管理员
 */
public interface HrmEmployeeService {
 
    /**
     * 创建员工
     *
     * @param createReqVO 创建信息
     * @return 员工ID
     */
    Long createEmployee(@Valid HrmEmployeeSaveReqVO createReqVO);
 
    /**
     * 更新员工
     *
     * @param updateReqVO 更新信息
     */
    void updateEmployee(@Valid HrmEmployeeSaveReqVO updateReqVO);
 
    /**
     * 删除员工
     *
     * @param id 员工ID
     */
    void deleteEmployee(Long id);
 
    /**
     * 获得员工
     *
     * @param id 员工ID
     * @return 员工
     */
    HrmEmployeeDO getEmployee(Long id);
 
    /**
     * 获得员工详情(含部门名称、岗位名称)
     *
     * @param id 员工ID
     * @return 员工详情
     */
    HrmEmployeeRespVO getEmployeeDetail(Long id);
 
    /**
     * 校验员工是否存在
     *
     * @param id 员工ID
     * @return 员工
     */
    HrmEmployeeDO validateEmployee(Long id);
 
    /**
     * 获得员工分页
     *
     * @param pageReqVO 分页查询
     * @return 员工分页
     */
    PageResult<HrmEmployeeDO> getEmployeePage(HrmEmployeePageReqVO pageReqVO);
 
    /**
     * 获得员工列表
     *
     * @param ids 员工ID列表
     * @return 员工列表
     */
    List<HrmEmployeeDO> getEmployeeList(Collection<Long> ids);
 
    /**
     * 获得指定状态的员工列表(返回 DO)
     *
     * <p>注意:不能把 null 传给 {@link #getEmployeeList(Collection)},
     * MyBatis-Plus 的 selectByIds(null) 会抛 "The expression 'coll' evaluated to a null value"。
     *
     * @param employeeStatus 员工状态,为 null 时查询全部
     * @return 员工列表
     */
    List<HrmEmployeeDO> getEmployeeListByStatus(Integer employeeStatus);
 
    /**
     * 调岗生效:把员工档案的部门/岗位同步为目标部门/目标岗位
     *
     * @param employeeId    员工编号(hrm_employee.id)
     * @param targetDeptId  目标部门编号,为 null 时不改
     * @param targetPostId  目标岗位编号,为 null 时不改
     */
    void syncEmployeeTransfer(Long employeeId, Long targetDeptId, Long targetPostId);
 
    /**
     * 离职生效:把员工档案状态置为「离职」
     *
     * @param systemUserId 系统用户编号(hrm_employee.user_id,即 system_users.id)
     * @param leaveDate    离职日期,为 null 时取当天
     */
    void syncEmployeeResignation(Long systemUserId, java.time.LocalDate leaveDate);
 
    /**
     * 获得指定状态的员工简单列表
     *
     * @param employeeStatus 员工状态,为 null 时查询全部
     * @return 员工简单列表
     */
    List<HrmEmployeeSimpleRespVO> getEmployeeSimpleList(Integer employeeStatus);
 
    /**
     * 根据系统用户ID获取员工
     *
     * @param userId 系统用户ID
     * @return 员工
     */
    HrmEmployeeDO getEmployeeByUserId(Long userId);
 
    /** 根据员工姓名获取员工 */
    HrmEmployeeDO getEmployeeByName(String name);
 
    /** 根据员工姓名获取所有同名员工 */
    List<HrmEmployeeDO> getEmployeeListByName(String name);
 
    /**
     * 导入员工列表
     *
     * @param importEmployees 员工导入列表
     * @param importReqVO 导入请求
     * @return 导入结果
     */
    HrmEmployeeImportRespVO importEmployeeList(List<HrmEmployeeImportExcelVO> importEmployees,
                                               HrmEmployeeImportReqVO importReqVO);
 
    /**
     * 员工转正:仅「劳动合同」可转正(劳务合同不可),状态 试用 -> 在职,记录转正日期
     *
     * @param id 员工ID
     */
    void regularizeEmployee(Long id);
 
    /**
     * 获得待转正提醒列表:试用中、且当前为劳动合同、试用期在 days 天内到期的员工
     *
     * @param days 提前天数
     * @return 员工列表
     */
    List<HrmEmployeeDO> getRegularizeReminderList(Integer days);
 
}