From 7638f68988bb3daee85f1f8a2ebc01fb53e43d6c Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 6 Dec 2025 13:56:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(oa):=20=E6=B7=BB=E5=8A=A0=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E5=AE=A1=E6=89=B9=E6=8F=90=E9=86=92=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 SysOaRemindServiceImpl 中增加 salary 类型的提醒过滤 - 新增 OaSalaryRemindScheduler 定时任务类 - 实现每天凌晨1点自动生成待审批工资提醒 - 提醒内容包括单位名称、薪资周期及状态信息 - 设置默认目标用户为老板用户 ID - 工资提醒创建时间为当前时间,截止时间为三天后 --- .../service/impl/OaSalaryRemindScheduler.java | 65 +++++++++++++++++++ .../service/impl/SysOaRemindServiceImpl.java | 2 +- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaSalaryRemindScheduler.java diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaSalaryRemindScheduler.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaSalaryRemindScheduler.java new file mode 100644 index 0000000..cd77b1f --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaSalaryRemindScheduler.java @@ -0,0 +1,65 @@ +package com.ruoyi.oa.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.oa.domain.OaSalaryMaster; +import com.ruoyi.oa.domain.SysOaRemind; +import com.ruoyi.oa.mapper.OaSalaryMasterMapper; +import com.ruoyi.oa.mapper.SysOaRemindMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +@RequiredArgsConstructor +@Service +public class OaSalaryRemindScheduler { + + private final OaSalaryMasterMapper salaryMasterMapper; + private final SysOaRemindMapper remindMapper; + + // 老板用户ID + private static final Long BOSS_USER_ID = 1859252208375152641L; + + // 每天凌晨1点执行 + @Scheduled(cron = "0 0 1 * * ?") + public void generateSalaryReminds() { + // 查询未审批(0)且未删除(0)的工资主表 + LambdaQueryWrapper salaryWrapper = Wrappers.lambdaQuery(); + salaryWrapper.eq(OaSalaryMaster::getSalaryStatus, 0) + .eq(OaSalaryMaster::getDelFlag, 0L); + List pendingSalaries = salaryMasterMapper.selectList(salaryWrapper); + + Date now = new Date(); + for (OaSalaryMaster master : pendingSalaries) { + + SysOaRemind remind = new SysOaRemind(); + remind.setRemindType("salary"); + remind.setDetailId(master.getMasterId()); + remind.setTargetUserId(BOSS_USER_ID); + remind.setTaskTitle("工资审批提醒"); + StringBuilder content = new StringBuilder(); + if (master.getUnitName() != null) { + content.append(master.getUnitName()).append(" "); + } + if (master.getSalaryPeriod() != null) { + content.append(master.getSalaryPeriod()).append(" "); + } + content.append("工资待审批"); + remind.setContent(content.toString()); + remind.setTaskStatus("0"); + remind.setTaskTime(null); + Date threeDaysLater = new Date(now.getTime() + 3L * 24 * 60 * 60 * 1000); + remind.setEndTime(threeDaysLater); + remind.setCreateBy(master.getCreateBy()); + remind.setCreateTime(now); + remind.setUpdateBy("admin"); + remind.setAccessory(null); + remind.setRemark(master.getRemark()); + + remindMapper.insert(remind); + } + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaRemindServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaRemindServiceImpl.java index 16b4073..409b989 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaRemindServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaRemindServiceImpl.java @@ -171,7 +171,7 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService { public List queryRecentRemindList(SysOaRemindBo bo) { // 过滤:仅当天创建、到期在未来0~3天、未处理的任务/项目提醒 LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.in(SysOaRemind::getRemindType, Arrays.asList("task", "project")); + lqw.in(SysOaRemind::getRemindType, Arrays.asList("task", "project","salary")); lqw.eq(SysOaRemind::getTaskStatus, "0"); java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");