diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/AttTasks.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/AttTasks.java index 58c060b..112ecb1 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/AttTasks.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/AttTasks.java @@ -10,6 +10,7 @@ import com.bonus.system.att.dao.AttSourceDataDao; import com.bonus.system.att.entity.*; import com.bonus.system.att.utils.AddressCoordinateFormatUtil; import com.bonus.system.att.utils.WorkdayCalculator; +import com.bonus.system.holiday.dao.HolidayDao; import lombok.extern.slf4j.Slf4j; import org.apache.commons.beanutils.BeanUtils; import org.mybatis.spring.SqlSessionTemplate; @@ -54,6 +55,9 @@ public class AttTasks { @Resource(name = "attGroupDao") private AttGroupDao attGroupDao; + @Resource(name = "HolidayDao") + private HolidayDao holidayDao; + private static final int BATCH_SIZE = 10; // 每批次处理的日期数量 private static final int THREAD_POOL_SIZE = 5; // 线程池大小 @@ -72,7 +76,7 @@ public class AttTasks { /** * 历史考勤数据 */ -// @Scheduled(initialDelay = 6000 * 4,fixedDelay = 60000 * 30) +// @Scheduled(initialDelay = 6000,fixedDelay = 60000 * 30) @Async public void getHisAttTasks() { log.info("--------考勤定时器开启------"); @@ -80,8 +84,8 @@ public class AttTasks { return; // 如果任务已经执行过,直接返回 } executed = true; // 设置标志位,表示任务已经执行过 - String startDate = "2024-12-26"; - String endDate = "2024-12-26"; + String startDate = "2024-12-21"; + String endDate = "2024-12-21"; List dateList = getStrDateListBetween(startDate, endDate); // List dateList = new ArrayList<>(); // dateList.add("2024-10-18"); @@ -283,11 +287,16 @@ public class AttTasks { */ private void threadLeaveData(LeaveBean c, String pushDate) { //1.将请假区间变成日期集合 -// if(c.getUserId() == 879L){ -// System.out.println("徐军"); -// } - List dateList = getStrDateListBetween(c.getLeaveStartDate(), c.getLeaveEndDate()); - if (!dateList.isEmpty()) { + if(c.getUserId() == 263){ + System.out.println("米娜"); + } + List dateLists = getStrDateListBetween(c.getLeaveStartDate(), c.getLeaveEndDate()); + if (!dateLists.isEmpty()) { + //根据开始时间、结束时间获取节假日的日期集合 + List holidayList = holidayDao.getHolidayDataByType(c.getLeaveStartDate(), c.getLeaveEndDate()); + // 使用Stream API去除A中包含在B中的元素 + List dateList = dateLists.stream().filter(element -> !holidayList.contains(element)).collect(Collectors.toList()); + dateList.forEach(v -> { boolean tf = false; AttDataBean toWorkBean = new AttDataBean(v, c.getAttStatus(), "1", diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/dao/HolidayDao.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/dao/HolidayDao.java index 31fecb7..f271d05 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/dao/HolidayDao.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/dao/HolidayDao.java @@ -86,4 +86,6 @@ public interface HolidayDao { * @return */ List getHolidayData(LocalDate previousMonthDate); + + List getHolidayDataByType(@Param("startDate") String leaveStartDate,@Param("endDate") String leaveEndDate); } diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/LeaveReporting/LeaveReportingMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/LeaveReporting/LeaveReportingMapper.xml index 604f0d2..701c382 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/LeaveReporting/LeaveReportingMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/LeaveReporting/LeaveReportingMapper.xml @@ -15,7 +15,7 @@ leave_end_interval, leave_duration, source, create_user_id, is_agree, location, host_user_id,host_user_name, remark,examine_status) - VALUES (#{userId}, #{userName}, #{orgId}, #{orgName}, '休假' , #{type}, #{leaveReason}, + VALUES (#{userId}, #{userName}, #{orgId}, #{orgName}, '请假' , #{type}, #{leaveReason}, #{leaveStartDate}, #{leaveStartInterval}, @@ -102,7 +102,7 @@ LEFT JOIN sys_user_post p ON p.user_id = l.user_id LEFT JOIN sys_dict_data d on d.dict_code = p.post_id WHERE - l.is_active = '1' AND l.leave_type = '休假' AND l.source = '1' + l.is_active = '1' AND l.type = '请假' AND l.source = '1' and l.user_id = #{params.userId} diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttSourceDataMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttSourceDataMapper.xml index 7cb760e..b687591 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttSourceDataMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttSourceDataMapper.xml @@ -344,7 +344,7 @@ SELECT agpr.org_id,la.*, sdd.dict_value AS attStatus FROM leave_apply la - LEFT JOIN sys_dict_data sdd ON sdd.dict_label = if(la.type is not null, la.type, la.leave_type) + LEFT JOIN sys_dict_data sdd ON sdd.dict_label = if(la.leave_type is not null, la.leave_type, la.type) AND sdd.dict_type = 'att_status' LEFT JOIN att_group_person_relation agpr ON la.user_id = agpr.user_id WHERE la.is_active = 1 diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttendanceDetailsMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttendanceDetailsMapper.xml index 54854e5..fb1f1b1 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttendanceDetailsMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttendanceDetailsMapper.xml @@ -343,7 +343,6 @@ att_current_time ASC - update att_data_update set update_att_current_time = #{params.toWorkAttCurrentTime}, diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/holiday/HolidayMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/holiday/HolidayMapper.xml index 43d24f8..9caa499 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/holiday/HolidayMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/holiday/HolidayMapper.xml @@ -201,5 +201,11 @@ WHERE leave_end_date > #{previousMonthDate} + + \ No newline at end of file diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/holiday/RequestReportMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/holiday/RequestReportMapper.xml index a47b9cf..0ede83b 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/holiday/RequestReportMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/holiday/RequestReportMapper.xml @@ -160,16 +160,16 @@ la.examine_status AS examineStatus, la.location, case - when la.leave_type = '病假' then '休假' - when la.leave_type = '年休假' then '休假' - when la.leave_type = '事假' then '休假' - when la.leave_type = '产假' then '休假' - when la.leave_type = '婚假' then '休假' - when la.leave_type = '丧假' then '休假' - when la.leave_type = '探亲假' then '休假' - when la.leave_type = '休假' then '休假' - when la.leave_type = '育儿假' then '休假' - when la.leave_type = '陪护假' then '休假' + when la.leave_type = '病假' then '请假' + when la.leave_type = '年休假' then '请假' + when la.leave_type = '事假' then '请假' + when la.leave_type = '产假' then '请假' + when la.leave_type = '婚假' then '请假' + when la.leave_type = '丧假' then '请假' + when la.leave_type = '探亲假' then '请假' + when la.leave_type = '请假' then '请假' + when la.leave_type = '育儿假' then '请假' + when la.leave_type = '陪护假' then '请假' else la.leave_type end as leaveType, case when la.is_agree = '1' then '是' else '否' end as isAgree, @@ -188,9 +188,9 @@ AND ( (la.leave_type IN ('轮休', '临时外出') AND (la.examine_status = '1' or la.examine_status = '0') ) OR - (la.leave_type = '休假' AND la.source = '1') + (la.type = '请假' AND la.source = '1') OR - (la.leave_type NOT IN ('轮休', '临时外出', '休假')) + (la.leave_type NOT IN ('轮休', '临时外出', '请假')) ) and su.is_cadre = 1 diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/wechat/WechatLeaveReportingMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/wechat/WechatLeaveReportingMapper.xml index 311eab6..66488d3 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/wechat/WechatLeaveReportingMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/wechat/WechatLeaveReportingMapper.xml @@ -31,7 +31,7 @@ LEFT JOIN sys_user_post p ON p.user_id = l.user_id LEFT JOIN sys_dict_data d on d.dict_code = p.post_id WHERE - l.is_active = '1' AND l.leave_type = '休假' AND (l.source = '1' OR l.source = '3') + l.is_active = '1' AND l.type = '请假' AND (l.source = '1' OR l.source = '3') and date_format(l.leave_start_date,'%y%m%d') >= date_format(#{params.params.beginTime},'%y%m%d')