gaoluyang
3 天以前 d39e4f7d839167c16425086dfa2f8747bccfdff9
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
package cn.iocoder.yudao.module.hrm.service.approval;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmResignationApplicationPageReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmResignationApplicationRespVO;
import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmResignationApplicationSaveReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmResignationHandoverReqVO;
import cn.iocoder.yudao.module.hrm.dal.dataobject.approval.HrmResignationApplicationDO;
import jakarta.validation.Valid;
 
import java.util.List;
import java.util.Map;
 
/**
 * 离职申请 Service 接口
 *
 * @author 超级管理员
 */
public interface HrmResignationApplicationService {
 
    /**
     * BPM 离职审批流程标识
     */
    String BPM_PROCESS_DEFINITION_KEY = "hrm_resignation";
 
    /**
     * BPM 离职审批分类编码
     */
    String APPROVE_CATEGORY_CODE = "hrm_resignation_approve";
 
    /**
     * 创建离职申请
     *
     * @param createReqVO 创建信息
     * @return 申请ID
     */
    Long createResignationApplication(@Valid HrmResignationApplicationSaveReqVO createReqVO);
 
    /**
     * 更新离职申请
     *
     * @param updateReqVO 更新信息
     */
    void updateResignationApplication(@Valid HrmResignationApplicationSaveReqVO updateReqVO);
 
    /**
     * 删除离职申请
     *
     * @param id 申请ID
     */
    void deleteResignationApplication(Long id);
 
    /**
     * 获得离职申请
     *
     * @param id 申请ID
     * @return 离职申请
     */
    HrmResignationApplicationDO getResignationApplication(Long id);
 
    /**
     * 获得离职申请详情(含关联信息)
     *
     * @param id 申请ID
     * @return 离职申请详情
     */
    HrmResignationApplicationRespVO getResignationApplicationDetail(Long id);
 
    /**
     * 获得离职申请分页
     *
     * @param pageReqVO 分页查询
     * @return 离职申请分页
     */
    PageResult<HrmResignationApplicationRespVO> getResignationApplicationPage(HrmResignationApplicationPageReqVO pageReqVO);
 
    /**
     * 提交离职申请审批
     *
     * @param id 申请ID
     * @param processDefinitionKey 流程定义Key
     * @param userId 提交人ID
     */
    void submitResignationApplication(Long id, String processDefinitionKey, Long userId);
 
    /**
     * 获取可用的审批流程定义列表
     *
     * @return 流程定义列表
     */
    List<Map<String, Object>> getApproveProcessDefinitionList();
 
    /**
     * 更新离职申请审批状态(BPM 回调)
     *
     * @param id 申请ID
     * @param status 审批状态
     */
    void updateResignationApplicationAuditStatus(Long id, Integer status);
 
    /**
     * 根据流程实例ID获取离职申请
     *
     * @param processInstanceId 流程实例ID
     * @return 离职申请
     */
    HrmResignationApplicationDO getResignationApplicationByProcessInstanceId(String processInstanceId);
 
    /**
     * 更新离职申请交接状态
     *
     * @param reqVO 交接状态更新信息
     */
    void updateHandoverStatus(@Valid HrmResignationHandoverReqVO reqVO);
 
    /**
     * 撤销离职申请
     * <p>
     * 草稿直接置为已撤销;审批中则撤销 BPM 流程实例后置为已撤销
     *
     * @param id     申请ID
     * @param userId 操作人ID
     */
    void cancelResignationApplication(Long id, Long userId);
 
    /**
     * 扫描到达预计离职日期的已通过离职申请,将员工状态自动置为离职
     *
     * @return 本次处理的申请数量
     */
    int autoLeaveResignationApplication();
 
}