| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.staff.task; |
| | | |
| | | import com.ruoyi.staff.pojo.PersonalAttendanceRecords; |
| | | import com.ruoyi.staff.pojo.StaffOnJob; |
| | | import com.ruoyi.staff.service.PersonalAttendanceRecordsService; |
| | | import com.ruoyi.staff.mapper.PersonalAttendanceRecordsMapper; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 个人èå¤è®°å½å®æ¶ä»»å¡ |
| | | * |
| | | * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸ |
| | | * @since 2026-02-09 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class PersonalAttendanceRecordsTask { |
| | | |
| | | @Autowired |
| | | private PersonalAttendanceRecordsMapper personalAttendanceRecordsMapper; |
| | | |
| | | @Autowired |
| | | private PersonalAttendanceRecordsService personalAttendanceRecordsService; |
| | | |
| | | /** |
| | | * æ¯å¤©åæ¨çææ¨æ¥ç缺å¤è®°å½ |
| | | * 宿¶ä»»å¡ï¼æ¯å¤©åæ¨1ç¹æ§è¡ |
| | | * æé¤ä»å¤©åå
¥èçåå·¥ |
| | | */ |
| | | @Scheduled(cron = "0 0 1 * * ?") |
| | | public void generateAbsenceRecords() { |
| | | try { |
| | | // è·åæ¨æ¥æ¥æ |
| | | LocalDate yesterday = LocalDate.now().minusDays(1); |
| | | |
| | | // ç´æ¥æ¥è¯¢æ¨å¤©æ²¡æèå¤è®°å½çå¨èåå·¥ï¼æé¤ä»å¤©åå
¥èçï¼ |
| | | LocalDateTime todayStart = LocalDate.now().atStartOfDay(); |
| | | List<StaffOnJob> staffWithoutAttendance = personalAttendanceRecordsMapper.selectStaffWithoutAttendanceRecordBeforeTime(yesterday, todayStart); |
| | | |
| | | // éåæ²¡æèå¤è®°å½çåå·¥ï¼çæç¼ºå¤è®°å½ |
| | | for (StaffOnJob staff : staffWithoutAttendance) { |
| | | try { |
| | | boolean exists = personalAttendanceRecordsMapper.existsAttendanceRecord(staff.getId(), yesterday); |
| | | if (exists) { |
| | | continue; |
| | | } |
| | | |
| | | PersonalAttendanceRecords absenceRecord = new PersonalAttendanceRecords(); |
| | | absenceRecord.setStaffOnJobId(staff.getId()); |
| | | absenceRecord.setDate(yesterday); |
| | | absenceRecord.setStatus(4); // è®¾ç½®ç¶æä¸ºç¼ºå¤ |
| | | absenceRecord.setRemark("ç³»ç»èªå¨çæ-缺å¤"); |
| | | absenceRecord.setCreateTime(LocalDateTime.now()); |
| | | absenceRecord.setUpdateTime(LocalDateTime.now()); |
| | | absenceRecord.setTenantId(staff.getTenantId()); |
| | | personalAttendanceRecordsService.save(absenceRecord); |
| | | |
| | | } catch (Exception e) { |
| | | log.error("为åå·¥{}çæç¼ºå¤è®°å½å¤±è´¥ï¼{}", staff.getStaffName(), e.getMessage(), e); |
| | | } |
| | | } |
| | | |
| | | log.info("æ¨æ¥ç¼ºå¤è®°å½çæå®æ"); |
| | | } catch (Exception e) { |
| | | log.error("çææ¨æ¥ç¼ºå¤è®°å½ä»»å¡æ§è¡å¤±è´¥ï¼{}", e.getMessage(), e); |
| | | } |
| | | } |
| | | } |