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