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) {
|
public List<SysOaRemindVo> queryRecentRemindList(SysOaRemindBo bo) {
|
||||||
// 过滤:仅当天创建、到期在未来0~3天、未处理的任务/项目提醒
|
// 过滤:仅当天创建、到期在未来0~3天、未处理的任务/项目提醒
|
||||||
LambdaQueryWrapper<SysOaRemind> lqw = Wrappers.lambdaQuery();
|
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");
|
lqw.eq(SysOaRemind::getTaskStatus, "0");
|
||||||
|
|
||||||
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
|
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
|||||||
Reference in New Issue
Block a user