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");