diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml index b324057..d3318db 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml @@ -319,12 +319,26 @@ (#{calcTime} IS NOT NULL AND #{calcTime} >= oas.create_time) - OR (#{calcTime} IS NULL AND oas.create_time BETWEEN - -- 提取relationMonth的年月部分并构造第一天 + OR ( + #{calcTime} IS NULL AND ( + -- 如果 relationMonth 是当前月,则查询本月最晚的记录 + (DATE_FORMAT(#{relationMonth}, '%Y-%m') = DATE_FORMAT(CURRENT_DATE, '%Y-%m') + AND oas.create_time BETWEEN DATE_FORMAT(#{relationMonth}, '%Y-%m-01') + AND ( + SELECT MAX(oar.calc_time) + FROM oa_attendance_record oar + WHERE oar.user_id = #{userId} + AND oar.del_flag = 0 + ) + -- 如果 relationMonth 不是当前月,则查询整个 relationMonth 的记录 + OR oas.create_time BETWEEN DATE_FORMAT(#{relationMonth}, '%Y-%m-01') - AND LAST_DAY(STR_TO_DATE(#{relationMonth}, '%Y-%m-%d')) + AND LAST_DAY(STR_TO_DATE(#{relationMonth}, '%Y-%m-01')) ) ) + ) + ) +