diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java index b25d20c..26eb3cd 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java @@ -10,9 +10,8 @@ import org.springframework.scheduling.annotation.EnableScheduling; * * @author ruoyi */ - -@SpringBootApplication @EnableScheduling //开启定时任务注解驱动 +@SpringBootApplication public class RuoYiApplication { public static void main(String[] args) { diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaRemindController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaRemindController.java index e01a406..efc24af 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaRemindController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaRemindController.java @@ -128,8 +128,8 @@ public class SysOaRemindController extends BaseController { * @return List */ @GetMapping("/getRecentRemindList") - public R> getRecentRemindList() { - List remindList = iSysOaRemindService.queryRecentRemindList(); + public R> getRecentRemindList(SysOaRemindBo bo) { + List remindList = iSysOaRemindService.queryRecentRemindList(bo); return R.ok(remindList); } } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskMapper.java index 3bbaf7d..433d821 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskMapper.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.oa.domain.SysOaTask; import com.ruoyi.oa.domain.UserMonthlyData; +import com.ruoyi.oa.domain.bo.SysOaTaskBo; import com.ruoyi.oa.domain.vo.SysOaTaskVo; import com.ruoyi.common.core.mapper.BaseMapperPlus; import org.apache.ibatis.annotations.Param; @@ -44,4 +45,9 @@ public interface SysOaTaskMapper extends BaseMapperPlus listDocumentProject(Long projectId); + /** + * 新增:自定义查询任务列表(Plus版) + */ + List queryListPlus(SysOaTaskBo bo); + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaRemindService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaRemindService.java index 34cc9f3..1aa535b 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaRemindService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaRemindService.java @@ -48,7 +48,7 @@ public interface ISysOaRemindService { * 查询所有小于三天的任务和项目提醒,只查当天(到秒)。 * @return List */ - List queryRecentRemindList(); + List queryRecentRemindList(SysOaRemindBo bo); /** * 新增事件提醒 diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskService.java index 256cfa6..a24f492 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskService.java @@ -107,5 +107,9 @@ public interface ISysOaTaskService { * @return */ List listDocumentProject(Long projectId); + /** + * 新增:自定义查询任务列表(Plus版) + */ + List queryListPlus(SysOaTaskBo bo); } 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 3a8f4dd..3bbcb80 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 @@ -26,7 +26,9 @@ import com.ruoyi.oa.domain.vo.SysOaRemindVo; import com.ruoyi.oa.domain.SysOaRemind; import com.ruoyi.oa.mapper.SysOaRemindMapper; import com.ruoyi.oa.service.ISysOaRemindService; +import org.yaml.snakeyaml.constructor.Construct; +import javax.annotation.PostConstruct; import java.util.*; /** @@ -159,7 +161,7 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService { } @Override - public List queryRecentRemindList() { + public List queryRecentRemindList(SysOaRemindBo bo) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.in(SysOaRemind::getRemindType, Arrays.asList("task", "project")); lqw.eq(SysOaRemind::getTaskStatus, "0"); @@ -168,6 +170,9 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService { String today = sdf.format(new java.util.Date()); lqw.apply("DATE_FORMAT(create_time, '%Y-%m-%d') = {0}", today); lqw.orderByAsc(SysOaRemind::getEndTime); + if (bo != null && bo.getTargetUserId() != null) { + lqw.eq(SysOaRemind::getTargetUserId, bo.getTargetUserId()); + } List remindList = baseMapper.selectList(lqw); List voList = new ArrayList<>(); for (SysOaRemind remind : remindList) { @@ -268,17 +273,30 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService { /** * 定时任务:每天凌晨1点,查task表和project表,把3天内到期且未完成/未完结的任务和项目插入remind表。 */ - @Scheduled(cron = "0 0 1 * * ?") + // @PostConstruct + //一秒执行一次 + +// @Scheduled(fixedRate = 1000) + @Scheduled(cron = "0 * * * * ?") public void generateRemindJob() { // 查询3天内到期的任务 SysOaTaskBo taskBo = new SysOaTaskBo(); // 只查未完成任务 taskBo.setState(0L); - List taskList = sysOaTaskService.queryList(taskBo); + List taskList = sysOaTaskService.queryListPlus(taskBo); Date now = new Date(); for (SysOaTaskVo task : taskList) { - if (task.getFinishTime() != null) { - long diff = (task.getFinishTime().getTime() - now.getTime()) / (1000 * 60 * 60 * 24); + Date endTime = null; + if (task.getStatus() != null && task.getStatus() == 1L) { + // 报工模式,endTime=beginTime+timeGap天 + endTime = com.ruoyi.oa.service.impl.SysOaTaskServiceImpl.addDays(task.getBeginTime(), task.getTimeGap()); + System.out.println("报工模式,endTime=beginTime+timeGap天"+endTime); + } else { + // 普通模式,endTime=finishTime + endTime = task.getFinishTime(); + } + if (endTime != null) { + long diff = (endTime.getTime() - now.getTime()) / (1000 * 60 * 60 * 24); if (diff >= 0 && diff <= 3) { SysOaRemind remind = new SysOaRemind(); remind.setRemindType("task"); @@ -288,7 +306,7 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService { remind.setContent(task.getContent()); remind.setTaskTime(now); remind.setTaskStatus("0"); - remind.setEndTime(task.getFinishTime()); + remind.setEndTime(endTime); remind.setCreateBy(task.getCreateBy()); remind.setCreateTime(now); remind.setUpdateBy(""); // 无updateBy diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java index 079d077..801d96f 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java @@ -124,6 +124,14 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { return baseMapper.listDocumentProject(projectId); } + /** + * 新增:自定义查询任务列表(Plus版) + */ + @Override + public List queryListPlus(SysOaTaskBo bo) { + return baseMapper.queryListPlus(bo); + } + private QueryWrapper buildQueryWrapper(SysOaTaskBo bo) { Map params = bo.getParams(); QueryWrapper lqw = Wrappers.query(); diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskMapper.xml index 77ce82f..ff2d5b1 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskMapper.xml @@ -365,5 +365,40 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + +