feat(hrm): 添加请假统计功能
- 在控制器中新增 /stats 接口用于获取请假统计数据 - 新增 HrmLeaveStatsVo 数据传输对象定义统计结构 - 在数据访问层添加多个统计查询方法,包括按类型、部门、月份统计 - 实现服务层统计业务逻辑,包括请假汇总、分类统计、员工状态统计 - 配置 MyBatis 映射文件实现各维度统计 SQL 查询 - 添加员工总数和请假中员工数的统计功能
This commit is contained in:
@@ -149,4 +149,64 @@
|
||||
</if>
|
||||
ORDER BY l.create_time DESC
|
||||
</select>
|
||||
<!-- 统计查询 -->
|
||||
<select id="selectLeaveSummary" resultType="java.util.Map">
|
||||
SELECT
|
||||
COUNT(*) as totalRequests,
|
||||
SUM(hours) as totalHours
|
||||
FROM hrm_leave_req
|
||||
WHERE del_flag = 0
|
||||
AND status = 'approved'
|
||||
</select>
|
||||
|
||||
<select id="selectLeaveByType" resultType="java.util.Map">
|
||||
SELECT
|
||||
leave_type as leaveType,
|
||||
COUNT(*) as count,
|
||||
SUM(hours) as totalHours
|
||||
FROM hrm_leave_req
|
||||
WHERE del_flag = 0
|
||||
AND status = 'approved'
|
||||
GROUP BY leave_type
|
||||
ORDER BY totalHours DESC
|
||||
</select>
|
||||
|
||||
<select id="selectLeaveByDept" resultType="java.util.Map">
|
||||
SELECT
|
||||
d.dept_name as deptName,
|
||||
COUNT(l.biz_id) as count,
|
||||
SUM(l.hours) as totalHours
|
||||
FROM hrm_leave_req l
|
||||
JOIN hrm_employee e ON l.emp_id = e.emp_id AND e.del_flag = 0
|
||||
LEFT JOIN sys_dept d ON e.dept_id = d.dept_id AND d.del_flag = '0'
|
||||
WHERE l.del_flag = 0
|
||||
AND l.status = 'approved'
|
||||
GROUP BY d.dept_id, d.dept_name
|
||||
ORDER BY totalHours DESC
|
||||
</select>
|
||||
|
||||
<select id="selectLeaveByMonth" resultType="java.util.Map">
|
||||
SELECT
|
||||
DATE_FORMAT(start_time, '%Y-%m') as month,
|
||||
COUNT(*) as count,
|
||||
SUM(hours) as totalHours
|
||||
FROM hrm_leave_req
|
||||
WHERE del_flag = 0
|
||||
AND status = 'approved'
|
||||
AND YEAR(start_time) = #{year}
|
||||
GROUP BY DATE_FORMAT(start_time, '%Y-%m')
|
||||
ORDER BY month
|
||||
</select>
|
||||
|
||||
<select id="selectTotalEmployees" resultType="java.lang.Integer">
|
||||
SELECT COUNT(*) FROM hrm_employee WHERE del_flag = 0 AND status = 'onboard'
|
||||
</select>
|
||||
|
||||
<select id="selectLeavingEmployees" resultType="java.lang.Integer">
|
||||
SELECT COUNT(DISTINCT l.emp_id)
|
||||
FROM hrm_leave_req l
|
||||
WHERE l.del_flag = 0
|
||||
AND l.status = 'approved'
|
||||
AND NOW() BETWEEN l.start_time AND l.end_time
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user