Spring + qyartz+多任务实现任务调度功能。
前记:如果配置多个任务不能触发的请仔细检查配置文件!!!!!!
不存在多个同时间任务不能触发的现象!!!!

这个东西记得不要设置成false。如果写了就是true。不写的话默认true。
下面开始贴配置:
1.首先配置web.xml 注入spring的xml文件。(记得把quartz的xml也注入了,我这边都是spring开头的。)

2.Java类:
package com.apexedu.biz.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.apexedu.biz.entity.TJhrz;
import com.apexedu.biz.entity.TRyxx;
import com.apexedu.framework.util.DBUtil;
import com.apexedu.sys.util.DateUtil;
import com.apexedu.sys.util.StringUtil;
/**
* 每天发送微信提醒
* @author Hpp 2017-3-28
*
*/
public class JhrzInitUtil {
/**
* 前一天下午发送提醒消息
*/
public void preDay(){
System.out.println("preDay");
Calendar c = Calendar.getInstance();
int year=c.get(Calendar.YEAR);//获取当前年份
String years=String.valueOf(year)+"年";//拼接字符串
SimpleDateFormat df = new SimpleDateFormat("M/d");//设置日期格式
Date nextDay = DateUtil.getNextDay(new Date());//明天的日期
String nextDays=df.format(nextDay);// new Date()为获取当前系统时间
List<TJhrz> list = DBUtil.queryAllBeanList("select * from t_jhrz where xq=? and day=? and state not in('2','5')", TJhrz.class, years,nextDays);
for (TJhrz tJhrz : list) {
SendTip.sendMsg(new String[]{tJhrz.getRyid()},"您明天有"+tJhrz.getJhnr()+"工作需要处理,请您提前做好准备。", tJhrz.getRyid());
}
}
/**
* 当天9点发送提醒消息
*/
public void currDay09(){
System.out.println("currDay09");
Calendar c = Calendar.getInstance();
int year=c.get(Calendar.YEAR);//获取当前年份
String years=String.valueOf(year)+"年";//拼接字符串
SimpleDateFormat df = new SimpleDateFormat("M/d");//设置日期格式
String currDays=df.format(new Date());// new Date()为获取当前系统时间
List<TJhrz> list = DBUtil.queryAllBeanList("select * from t_jhrz where xq=? and day=? and state not in('2','5')", TJhrz.class,years,currDays);
for (TJhrz tJhrz : list) {
SendTip.sendMsg(new String[]{tJhrz.getRyid()},"您今天有"+tJhrz.getJhnr()+"工作需要处理,请您及时处理。", tJhrz.getRyid());
}
}
/**
* 当天下午16点发送提醒消息
*/
public void currDay16(){
System.out.println("currDay16");
Calendar c = Calendar.getInstance();
int year=c.get(Calendar.YEAR);//获取当前年份
String years=String.valueOf(year)+"年";//拼接字符串
SimpleDateFormat df = new SimpleDateFormat("M/d");//设置日期格式
String currDays=df.format(new Date());// new Date()为获取当前系统时间
List<TJhrz> list = DBUtil.queryAllBeanList("select * from t_jhrz where xq=? and day=? and state=0", TJhrz.class, years,currDays);
for (TJhrz tJhrz : list) {
SendTip.sendMsg(new String[]{tJhrz.getRyid()},"您今天有"+tJhrz.getJhnr()+"工作系统显示未完成,请您及时处理。", tJhrz.getRyid());
}
}
/**
* 计划延期后及时提醒09
* @throws ParseException
*/
public void nextSDay09() throws ParseException{
System.out.println("nextSDay09");
Calendar c = Calendar.getInstance();
int year=c.get(Calendar.YEAR);//获取当前年份
String years=String.valueOf(year)+"年";//拼接字符串
SimpleDateFormat df = new SimpleDateFormat("yyyy/M/d");//设置日期格式
String currWeek=DateUtil.getCurrentWeek(new Date());
List<TJhrz> list = DBUtil.queryAllBeanList("select * from t_jhrz where state=0 and jhsj=? and xq=?", TJhrz.class, currWeek,years);
for (TJhrz tJhrz : list) {
int day = DateUtil.datePDate(df.parse(year+"/"+tJhrz.getDay()), new Date());
if(day>0){
SendTip.sendMsg(new String[]{tJhrz.getRyid()},"您计划"+tJhrz.getDay()+"的"+tJhrz.getJhnr()+"工作系统显示已延误"+day+"天,请您及时处理。", tJhrz.getRyid());
}
}
}
/**
* 计划延期后及时提醒16
* @throws ParseException
*/
public void nextSDay16() throws ParseException{
System.out.println("nextSDay16()");
Calendar c = Calendar.getInstance();
int year=c.get(Calendar.YEAR);//获取当前年份
String years=String.valueOf(year)+"年";//拼接字符串
SimpleDateFormat df = new SimpleDateFormat("yyyy/M/d");//设置日期格式
String currWeek=DateUtil.getCurrentWeek(new Date());
List<TJhrz> list = DBUtil.queryAllBeanList("select * from t_jhrz where state=0 and jhsj=? and xq=?", TJhrz.class, currWeek,years);
for (TJhrz tJhrz : list) {
int day = DateUtil.datePDate(df.parse(year+"/"+tJhrz.getDay()), new Date());
if(day>0){
SendTip.sendMsg(new String[]{tJhrz.getRyid()},"您计划"+tJhrz.getDay()+"的"+tJhrz.getJhnr()+"工作系统显示已延误"+day+"天,请您及时处理。", tJhrz.getRyid());
}
}
}
/**
* 每周五4点给科室负责人推送
*/
public void firDay16(){
System.out.println("firDay16");
String currWeek=DateUtil.getCurrentWeek(new Date());
Calendar c = Calendar.getInstance();
int year=c.get(Calendar.YEAR);//获取当前年份
String years=String.valueOf(year)+"年";//拼接字符串
List<TJhrz> list =DBUtil.queryAllBeanList("select t.*,(select name from t_ryxx where gh=t.ryid) ryid_str,(select bmfzr from t_bmxx where wid=(select bmid from t_ryxx b where b.gh=t.ryid )) ksfzr from t_jhrz t where jhsj=? and xq=? and state=0", TJhrz.class, currWeek,years);
for (TJhrz tJhrz : list) {
SendTip.sendMsg(new String[]{tJhrz.getKsfzr()},"您科室的"+tJhrz.getRyid_str()+"有"+tJhrz.getJhnr()+"工作系统显示未完成,请您督促处理。", tJhrz.getKsfzr());
}
}
/**
* 针对上周所分管的科室工作人员“未完成”的工作
*/
public void Mon1(){
System.out.println("Mon1");
Calendar c = Calendar.getInstance();
int year=c.get(Calendar.YEAR);//获取当前年份
String years=String.valueOf(year)+"年";//拼接字符串
c.setTime(new Date());
c.add(Calendar.DATE,-7);
Date monday = c.getTime();
String prevWeek=DateUtil.getCurrentWeek(monday);//上一周的日期
List<TRyxx> clds = DBUtil.queryAllBeanList("select * from t_ryxx where bmid=(select wid from t_bmxx where bmmc like ?)", TRyxx.class, "%处领导%");
for (TRyxx tRyxx : clds) {
String[] kss = tRyxx.getFgks().split(",");
for (String string : kss) {
if(StringUtil.isNotBlank(string)){
List<TJhrz> list = DBUtil.queryAllBeanList("select t.*,(select name from t_ryxx where gh=t.ryid) ryid_str,(select bmmc from t_bmxx where wid=?) bmmc from t_jhrz t where ryid in(select gh from t_ryxx where bmid=?) and xq=? and jhsj=? and state=0", TJhrz.class, string,string,years,prevWeek);
for (TJhrz tJhrz : list) {
SendTip.sendMsg(new String[]{tRyxx.getGh()},"您分管的科室的"+tJhrz.getRyid_str()+"上周有"+tJhrz.getJhnr()+"工作系统显示未完成,请您督促处理。", tRyxx.getGh());
}
}
}
}
}
}
下面看看quartz的xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="JhrzInitUtil"
class="com.apexedu.biz.util.JhrzInitUtil">
</bean>
<bean id="JhrzInitUtil2"
class="com.apexedu.biz.util.JhrzInitUtil">
</bean>
<bean id="JhrzInitUtil3"
class="com.apexedu.biz.util.JhrzInitUtil">
</bean>
<bean id="JhrzInitUtil4"
class="com.apexedu.biz.util.JhrzInitUtil">
</bean>
<bean id="JhrzInitUtil5"
class="com.apexedu.biz.util.JhrzInitUtil">
</bean>
<bean id="JhrzInitUtil6"
class="com.apexedu.biz.util.JhrzInitUtil">
</bean>
<bean id="JhrzInitUtil7"
class="com.apexedu.biz.util.JhrzInitUtil">
</bean>
<!-- 计划任务 -->
<bean id="preDay"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="JhrzInitUtil" />
</property>
<property name="targetMethod">
<value>preDay</value>
</property>
<property name="concurrent" value="true"/>
</bean>
<bean id="preDayInit"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="preDay"/>
</property>
<property name="cronExpression">
<value>0 0 16 * * ? *</value>
</property>
</bean>
<!-- 计划任务 -->
<bean id="currDay09"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="JhrzInitUtil2" />
</property>
<property name="targetMethod">
<value>currDay09</value>
</property>
<property name="concurrent" value="true"/>
</bean>
<bean id="currDay09Init"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="currDay09"/>
</property>
<property name="cronExpression">
<value>0 0 9 * * ? *</value>
</property>
</bean>
<bean id="currDay16"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="JhrzInitUtil3" />
</property>
<property name="targetMethod">
<value>currDay16</value>
</property>
<property name="concurrent" value="true"/>
</bean>
<bean id="currDay16Init"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="currDay16"/>
</property>
<property name="cronExpression">
<value>0 0 16 * * ? *</value>
</property>
</bean>
<bean id="nextSDay09"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="JhrzInitUtil4" />
</property>
<property name="targetMethod">
<value>nextSDay09</value>
</property>
<property name="concurrent" value="true"/>
</bean>
<bean id="nextSDay09Init"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="nextSDay09"/>
</property>
<property name="cronExpression">
<value>0 0 9 * * ? *</value>
</property>
</bean>
<bean id="nextSDay16"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="JhrzInitUtil5" />
</property>
<property name="targetMethod">
<value>nextSDay16</value>
</property>
<property name="concurrent" value="true"/>
</bean>
<bean id="nextSDay16Init"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="nextSDay16"/>
</property>
<property name="cronExpression">
<value>0 0 16 * * ? *</value>
</property>
</bean>
<bean id="firDay16"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="JhrzInitUtil6" />
</property>
<property name="targetMethod">
<value>firDay16</value>
</property>
<property name="concurrent" value="true"/>
</bean>
<bean id="firDay16Init"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="firDay16"/>
</property>
<property name="cronExpression">
<value>0 0 16 ? * FRI</value>
</property>
</bean>
<bean id="Mon1"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="JhrzInitUtil7" />
</property>
<property name="targetMethod">
<value>Mon1</value>
</property>
<property name="concurrent" value="true"/>
</bean>
<bean id="Mon1Init"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="Mon1"/>
</property>
<property name="cronExpression">
<value>0 30 13 ? * MON</value>
</property>
</bean>
<bean
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="Mon1Init"/>
<ref local="firDay16Init"/>
<ref local="nextSDay16Init"/>
<ref local="nextSDay09Init"/>
<ref local="currDay16Init"/>
<ref local="currDay09Init"/>
<ref local="preDayInit"/>
</list>
</property>
</bean>
</beans>
Spring + qyartz+多任务实现任务调度功能。的更多相关文章
- spring boot实现ssm(2)功能
spring 和 mybatis 整合的那篇: ssm(2) . 配置文件比ssm(1) 更多, 在做项目的时候, 配置文件是一个让人头大的事情. 那么在spring boot中, 实现相同功能, 需 ...
- Spring框架的IOC核心功能快速入门
2. 步骤一:下载Spring框架的开发包 * 官网:http://spring.io/ * 下载地址:http://repo.springsource.org/libs-release-local/ ...
- Spring常用jar包的功能
jar名称 描述 spring-framework.jar spring框架比较完整的功能,core+aop+ioc+transaction spring-core.jar 基本上的核心工具类,一些u ...
- Spring Security 3.1 中功能强大的加密工具 PasswordEncoder
Spring Security 3.1 中功能强大的加密工具 PasswordEncoder 博客分类: security spring springsecurity 好吧,这种加密机制很复杂,还是 ...
- Spring是什么,Spring容器提供了那些功能,Spring的工作机制
spring是什么 spring 是一个轻型的容器,是J2EE规范的轻量级实现,可以一站式开发,其中提供了,bean工厂,用以构造我们需要的Model ,spring 是非侵入式的,spring应用中 ...
- 关于MVC WebAPI 中加入任务调度功能的问题 (MVC WebAPI 任务调度)
在MVC WebAPI中加入任务调度功能.即在MVC WebAPI启动时,启用任务调度程序. 但是这里有一个问题点,就是部署好IIS站点后,发现任务调度并没有启用.原因为何? 原因是部署好IIS站点后 ...
- Spring注解方式实现任务调度
原文:http://docs.spring.io/spring/docs/4.0.1.BUILD-SNAPSHOT/javadoc-api/ 注解类型:EnableScheduling @Target ...
- Spring注解方式实现任务调度【官方文档翻译】
原文:http://docs.spring.io/spring/docs/4.0.1.BUILD-SNAPSHOT/javadoc-api/ 注解类型:EnableScheduling @Target ...
- 采用dom4j和反射模拟Spring框架的依赖注入功能
Spring的依赖注入是指将对象的创建权交给Spring框架,将对象所依赖的属性注入进来的行为.在学习了dom4j后,其实也可以利用dom4j和反射做一个小Demo模拟Spring框架的这种功能.下面 ...
随机推荐
- spring 定时任务 taskScheduler详解
spring 3.0版本后,自带了一个定时任务工具,而且使用简单方便,不用配置文件,可以动态改变执行状态.也可以使用cron表达式设置定时任务. 被执行的类要实现Runnable接口 TaskSche ...
- Vuex 模块化与项目实例 (2.0)
Vuex 强调使用单一状态树,即在一个项目里只有一个 store,这个 store 集中管理了项目中所有的数据以及对数据的操作行为.但是这样带来的问题是 store 可能会非常臃肿庞大不易维护,所以就 ...
- option触发事件两种方法总结
代码如下: <!doctype html> <html> <head> <meta charset="UTF-8"> <tit ...
- BZOJ 1085: [SCOI2005]骑士精神(A*算法)
第一次写A*算法(这就是A*?如果这就是A*的话,那不就只是搜索的一个优化了= =,不过h函数如果弄难一点真的有些难设计) 其实就是判断t+h(x)(t为当前步数,h(x)为达到当前状态的最小步数) ...
- Spring AOP的解读
一.为什么会有AOP 在日常的开发中经常会有这样一种场景,支付相关的业务中经常需要记录日志,而记录的日志大体相同:这样就会造成支付组件和日志组件强关联,耦合在一起了.而AOP的出现就是为了解决这种问题 ...
- 3月题外:关于JS实现图片缩略图效果的一些小问题
由于3月可能要结束实习,所以应该不会有特别固定的主题,另外我会在月初陆续补上上个月的番外篇Projection和TMS,作为介绍性的内容对矢量切片部分进行补充,剩下时间不定期写一些杂烩. 最近两天在做 ...
- android保存照片到相册的一些事
由于最近工作需求的原因,有一个功能就是将webView里面的照片保存到本地,并且能够直接在相册中有一个及时的反馈. 项目中,具体是实现流程是这样的设计webview点击交互事件,当点击webview中 ...
- js substr和substring的区别
在js中substring和substr都是用来截取字符串的,substr函数和substring函数都是用来从某个“母字符串”中提取“子字符串”的函数.但用法有些差别,下面分别介绍但是它们还是有区别 ...
- Extjs中grid前端分页使用PagingMemoryProxy【二】
在项目中遇到Grid前端分页,本人也是刚接触extjs没多久,为了实现效果,一直找了很久才实现出来,对于代码中的一些也不能详细的说明出来, 不知道能不能帮助到遇到同样问题的朋友,所以将例子代码 ...
- SQL Server-聚焦NOLOCK、UPDLOCK、HOLDLOCK、READPAST你弄懂多少?(三十四)
前言 时间流逝比较快,博主也在快马加鞭学习SQL Server,下班回来再晚也不忘记更新下博客,时间挤挤总会有的,现在的努力求的是未来所谓的安稳,每学一门为的是深度而不是广度,求的是知识自成体系而不是 ...