feat(oa): 添加工资审批提醒功能
- 在 SysOaRemindServiceImpl 中增加 salary 类型的提醒过滤 - 新增 OaSalaryRemindScheduler 定时任务类 - 实现每天凌晨1点自动生成待审批工资提醒 - 提醒内容包括单位名称、薪资周期及状态信息 - 设置默认目标用户为老板用户 ID - 工资提醒创建时间为当前时间,截止时间为三天后
This commit is contained in:
@@ -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<OaSalaryMaster> salaryWrapper = Wrappers.lambdaQuery();
|
||||
salaryWrapper.eq(OaSalaryMaster::getSalaryStatus, 0)
|
||||
.eq(OaSalaryMaster::getDelFlag, 0L);
|
||||
List<OaSalaryMaster> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -171,7 +171,7 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService {
|
||||
public List<SysOaRemindVo> queryRecentRemindList(SysOaRemindBo bo) {
|
||||
// 过滤:仅当天创建、到期在未来0~3天、未处理的任务/项目提醒
|
||||
LambdaQueryWrapper<SysOaRemind> 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");
|
||||
|
||||
Reference in New Issue
Block a user