From 469a106cf617efd2e9fbe02937c355fa392ae7bc Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期二, 10 二月 2026 17:53:07 +0800
Subject: [PATCH] feat: 消息通知添加APP跳转路由
---
src/main/java/com/ruoyi/staff/task/PersonalAttendanceRecordsTask.java | 74 +++++++++++++++++++++++++++++++++++++
1 files changed, 74 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/staff/task/PersonalAttendanceRecordsTask.java b/src/main/java/com/ruoyi/staff/task/PersonalAttendanceRecordsTask.java
new file mode 100644
index 0000000..8cc7544
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/task/PersonalAttendanceRecordsTask.java
@@ -0,0 +1,74 @@
+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("绯荤粺鑷姩鐢熸垚-缂哄嫟");
+ personalAttendanceRecordsService.save(absenceRecord);
+
+ } catch (Exception e) {
+ log.error("涓哄憳宸}鐢熸垚缂哄嫟璁板綍澶辫触锛歿}", staff.getStaffName(), e.getMessage(), e);
+ }
+ }
+
+ log.info("鏄ㄦ棩缂哄嫟璁板綍鐢熸垚瀹屾垚");
+ } catch (Exception e) {
+ log.error("鐢熸垚鏄ㄦ棩缂哄嫟璁板綍浠诲姟鎵ц澶辫触锛歿}", e.getMessage(), e);
+ }
+ }
+}
\ No newline at end of file
--
Gitblit v1.9.3