refactor(system): 优化打卡提醒功能

- 新增 editIdsList 用于存储需要更新提醒状态的打卡记录 ID
- 只有需要提醒的打卡记录才会被添加到 editIdsList 中
- 修改更新提醒状态的逻辑,仅针对实际需要提醒的记录进行更新
This commit is contained in:
aikai 2025-03-25 09:28:45 +08:00
parent 37168b4ae9
commit 201c0e3c02

View File

@ -63,6 +63,7 @@ public class RemindJob {
//幸苦一天了研发部全体人员提醒您记得打卡哦 //幸苦一天了研发部全体人员提醒您记得打卡哦
Map<Long, AttendanceWorkDTO> map = new HashMap<>(); Map<Long, AttendanceWorkDTO> map = new HashMap<>();
//打卡时间 - 15分钟之后是否是 大于打卡时间 - 是的话 - 把用户id拿出来 组装好消息发送 //打卡时间 - 15分钟之后是否是 大于打卡时间 - 是的话 - 把用户id拿出来 组装好消息发送
List<Long> editIdsList = new ArrayList<>();
for (AttendancePunchRecordDO attendancePunchRecordDO : attendancePunchRecordDOS) { for (AttendancePunchRecordDO attendancePunchRecordDO : attendancePunchRecordDOS) {
if (attendancePunchRecordDO.getWorkType().equals(Constants.ZERO) && futureTime.isAfter(attendancePunchRecordDO.getShouldPunchTime())) { if (attendancePunchRecordDO.getWorkType().equals(Constants.ZERO) && futureTime.isAfter(attendancePunchRecordDO.getShouldPunchTime())) {
AttendanceWorkDTO dto = new AttendanceWorkDTO(); AttendanceWorkDTO dto = new AttendanceWorkDTO();
@ -70,11 +71,13 @@ public class RemindJob {
dto.setData(String.format("还有%s钟就要上班了别忘记打卡哦", dto.setData(String.format("还有%s钟就要上班了别忘记打卡哦",
DateUtil.formatBetween(LocalDateTimeUtil.between(localDateTime, attendancePunchRecordDO.getShouldPunchTime()).toMillis(), BetweenFormatter.Level.MINUTE))); DateUtil.formatBetween(LocalDateTimeUtil.between(localDateTime, attendancePunchRecordDO.getShouldPunchTime()).toMillis(), BetweenFormatter.Level.MINUTE)));
map.put(attendancePunchRecordDO.getUserId(), dto); map.put(attendancePunchRecordDO.getUserId(), dto);
editIdsList.add(attendancePunchRecordDO.getId());
} else if (attendancePunchRecordDO.getWorkType().equals(Constants.ONE) && localDateTime.isAfter(attendancePunchRecordDO.getShouldPunchTime())) { } else if (attendancePunchRecordDO.getWorkType().equals(Constants.ONE) && localDateTime.isAfter(attendancePunchRecordDO.getShouldPunchTime())) {
AttendanceWorkDTO dto = new AttendanceWorkDTO(); AttendanceWorkDTO dto = new AttendanceWorkDTO();
dto.setWorkTypeStr("下班打卡"); dto.setWorkTypeStr("下班打卡");
dto.setData("工作幸苦了,记得打卡哦~"); dto.setData("工作幸苦了,记得打卡哦~");
map.put(attendancePunchRecordDO.getUserId(), dto); map.put(attendancePunchRecordDO.getUserId(), dto);
editIdsList.add(attendancePunchRecordDO.getId());
} }
} }
//获取到所有的用户id //获取到所有的用户id
@ -103,11 +106,10 @@ public class RemindJob {
subscribeMessageSendApi.sendMaMsg(dto); subscribeMessageSendApi.sendMaMsg(dto);
} }
} }
List<Long> ids = attendancePunchRecordDOS.stream().map(AttendancePunchRecordDO::getId).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(editIdsList)) {
if (CollectionUtil.isNotEmpty(ids)) {
attendancePunchRecordService.update(new AttendancePunchRecordDO().setRemindFlag(Constants.TRUE), attendancePunchRecordService.update(new AttendancePunchRecordDO().setRemindFlag(Constants.TRUE),
new LambdaQueryWrapper<AttendancePunchRecordDO>() new LambdaQueryWrapper<AttendancePunchRecordDO>()
.in(AttendancePunchRecordDO::getId, ids)); .in(AttendancePunchRecordDO::getId, editIdsList));
} }
// 返回执行成功 // 返回执行成功
return ReturnT.SUCCESS; return ReturnT.SUCCESS;