当前角色问题解决

This commit is contained in:
2025-05-06 10:04:29 +08:00
parent 4c69575084
commit a1e2b71141
12 changed files with 76 additions and 51 deletions

View File

@@ -97,50 +97,56 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectVoListAndTime" resultType="com.ruoyi.oa.domain.vo.SysOaAttendanceVo">
SELECT
ANY_VALUE(id) AS id,
user_id,
ANY_VALUE(attendance_day) AS attendance_day,
project_id,
ANY_VALUE(day_length) AS day_length,
ANY_VALUE(hour) AS hour,
ANY_VALUE(create_time) AS create_time,
ANY_VALUE(create_by) AS create_by,
ANY_VALUE(update_time) AS update_time,
ANY_VALUE(update_by) AS update_by,
ANY_VALUE(remark) AS remark,
ANY_VALUE(del_flag) AS del_flag,
COUNT(id) AS count,
SELECT ANY_VALUE(id) AS id,
user_id,
ANY_VALUE(attendance_day) AS attendance_day,
project_id,
ANY_VALUE(day_length) AS day_length,
ANY_VALUE(hour) AS hour,
ANY_VALUE(create_time) AS create_time,
ANY_VALUE(create_by) AS create_by,
ANY_VALUE(update_time) AS update_time,
ANY_VALUE(update_by) AS update_by,
ANY_VALUE(remark) AS remark,
ANY_VALUE(del_flag) AS del_flag,
COUNT(id) AS count,
/*
1如果这条记录是按天统计 (day_length>0),就直接用 day_length。
2如果这条记录是按小时统计 (hour>0),那么就算作 1 天。
这样就不会把多日的小时相加再去整除 9
这样就不会把多日的小时相加再去整除 8
*/
SUM(
CASE
WHEN day_length > 0 THEN day_length
WHEN hour > 0 THEN 1
ELSE 0
END
) AS work_times,
SUM(
CASE
WHEN day_length > 0 THEN day_length
WHEN hour > 0 THEN 1
ELSE 0
END
) *9 AS hour_work_times,
SUM(
CASE
WHEN day_length > 0 THEN day_length
WHEN hour > 0 THEN ROUND(hour / 8, 1)
ELSE 0
END
) AS work_times,
SUM(
CASE
WHEN day_length > 0 THEN day_length * 8
WHEN hour > 0 THEN hour
ELSE 0
END
) AS hour_work_times,
/*
overTime如果是按小时统计且 hour>9,才有加班 = (hour - 9)。
overTime如果是按小时统计且 hour>8,才有加班 = (hour - 8)。
如果是 day_length 统计,则一般不会再去算小时加班(你如果有需要,也可以自己按其它规则)。
*/
SUM(
CASE
WHEN hour > 9 THEN hour - 9
ELSE 0
END
) AS overTime
SUM(
IF(hour > 8, hour - 8, 0)
) AS overTime,
/* ---------- 出差天数 (project_id = 0) ---------- */
SUM(
IF(project_id = 0, 1, 0)
) AS tripDays,
/* ---------- 请假天数 (project_id = 1) ---------- */
SUM(
IF(project_id = 1, 1, 0)
) AS absenceDays
FROM sys_oa_attendance soa
WHERE user_id = #{userId}
@@ -149,7 +155,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND del_flag = '0'
GROUP BY soa.project_id;
</select>
<select id="selectUserListAndAttendanceListAndProjectListByUserIds"