前记:如果配置多个任务不能触发的请仔细检查配置文件!!!!!!

不存在多个同时间任务不能触发的现象!!!!

这个东西记得不要设置成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+多任务实现任务调度功能。的更多相关文章

  1. spring boot实现ssm(2)功能

    spring 和 mybatis 整合的那篇: ssm(2) . 配置文件比ssm(1) 更多, 在做项目的时候, 配置文件是一个让人头大的事情. 那么在spring boot中, 实现相同功能, 需 ...

  2. Spring框架的IOC核心功能快速入门

    2. 步骤一:下载Spring框架的开发包 * 官网:http://spring.io/ * 下载地址:http://repo.springsource.org/libs-release-local/ ...

  3. Spring常用jar包的功能

    jar名称 描述 spring-framework.jar spring框架比较完整的功能,core+aop+ioc+transaction spring-core.jar 基本上的核心工具类,一些u ...

  4. Spring Security 3.1 中功能强大的加密工具 PasswordEncoder

    Spring Security 3.1 中功能强大的加密工具 PasswordEncoder 博客分类: security spring springsecurity  好吧,这种加密机制很复杂,还是 ...

  5. Spring是什么,Spring容器提供了那些功能,Spring的工作机制

    spring是什么 spring 是一个轻型的容器,是J2EE规范的轻量级实现,可以一站式开发,其中提供了,bean工厂,用以构造我们需要的Model ,spring 是非侵入式的,spring应用中 ...

  6. 关于MVC WebAPI 中加入任务调度功能的问题 (MVC WebAPI 任务调度)

    在MVC WebAPI中加入任务调度功能.即在MVC WebAPI启动时,启用任务调度程序. 但是这里有一个问题点,就是部署好IIS站点后,发现任务调度并没有启用.原因为何? 原因是部署好IIS站点后 ...

  7. Spring注解方式实现任务调度

    原文:http://docs.spring.io/spring/docs/4.0.1.BUILD-SNAPSHOT/javadoc-api/ 注解类型:EnableScheduling @Target ...

  8. Spring注解方式实现任务调度【官方文档翻译】

    原文:http://docs.spring.io/spring/docs/4.0.1.BUILD-SNAPSHOT/javadoc-api/ 注解类型:EnableScheduling @Target ...

  9. 采用dom4j和反射模拟Spring框架的依赖注入功能

    Spring的依赖注入是指将对象的创建权交给Spring框架,将对象所依赖的属性注入进来的行为.在学习了dom4j后,其实也可以利用dom4j和反射做一个小Demo模拟Spring框架的这种功能.下面 ...

随机推荐

  1. shiro的入门实例-shiro于spring的整合

    shiro是一款java安全框架.简单而且可以满足实际的工作需要 第一步.导入maven依赖 <!-- shiro --> <dependency> <groupId&g ...

  2. java字符串比较及小数浮点型的使用

    import java.text.DecimalFormat; /* * 小数类型的常量默认是double类型,声明float类型的常量需要使用F作为后缀. * * 关于equals()和==: 对于 ...

  3. 【吐血整理】SVN命令行,Subversion的正确使用姿势,让版本控制更简单~

    一.写在前面 前面一直博主一直用svn的桌面版本,但看项目经理一直都用的命令行方式,不为性能,还能直接装逼呀!在这里先感谢赵哥,也把它分享给感兴趣的你们~ 二.直接上干货 1. svn checkou ...

  4. [Bullet3]三种碰撞检测及实现

    官方文档:http://bulletphysics.org 开源代码:https://github.com/bulletphysics/bullet3/releases API文档:http://bu ...

  5. 有关HTTP的粗读

    .mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...

  6. 一个技术汪的开源梦 —— 微信开发工具包(WeixinSDK)

    由于春节的关系 WeixinSDK 这个开源项目的进展比预期推迟了大约一个月的时间,值得高兴的是到目前为止该项目的重要模块已经开发完毕.  - 关于项目 该项目的背景是现在微信公众号.微信服务号乃至微 ...

  7. Android Asynctask的优缺点

    导语:之前做习惯了Framework层的开发,今天在武汉斗鱼公司面试APP客户端的开发,其中一道题是讲述Asynctask的优缺点,我靠,我只是知道有这么一个东西,会用而已,看来之前的生活太过于安逸, ...

  8. JavaScript中值类型和引用类型的区别

    JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和布尔值.此外,JavaScript中还有两个特殊的原始值:null和undefined,它们既不是数字也不 ...

  9. Github网站加载不完全,响应超时,如何解决

    Github是一个代码托管平台和开发者社区,开发者可以在Github上创建自己的开源项目并与其他开发者协作编码.毫不夸张地说,高效利用Github是一个优秀的程序员必备的基本素质.可是,有的用户在打开 ...

  10. angular destroy & jquery destroy

    destroy的目的是为了内存溢漏,这对性能会造成影响. angular scope在处理element 移除时,会触发destroy, 而调用逻辑和jquery使用的一样. 在ck editor 中 ...