java Quartz scheduler uses examples of code!

Copyright: without her consent, and not to reprint the article, if reproduced please note the link address! https://blog.csdn.net/qq_38366657/article/details/90669993

1. Create a scheduler (WeiXinScheduler.java) (jobs created folder on the inside ah) (code is just my own business so I do not write a full copy my code as long as you understand how to use and that they know how to write up!)

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.2.1</version>
</dependency>

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz-jobs</artifactId>
    <version>2.2.1</version>
</dependency>

package com.jobs;
import com.yd.edb.ticket.Ticket;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;


import java.util.List;
import java.util.Map;

public class WeiXinScheduler {
    //创建调度器
    public static Scheduler getScheduler() throws SchedulerException{
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        return schedulerFactory.getScheduler();
    }


    public static void schedulerJob(Ticket ticket, String isStop) throws SchedulerException{

        String __SQL="SELECT * FROM DCS_MESSAGE_PUSH_SETTING WHERE CODE='0001'";
        List<Map<String, Object>> _json = ticket.getDB().queryBySql(__SQL);
        String IS_EXPRESSION="";
        String EXPRESSION="";
        String TIME="30";
        if(_json.size()>0){
            IS_EXPRESSION=_json.get(0).get("IS_EXPRESSION").toString();//是否启动表达式
            EXPRESSION=_json.get(0).get("EXPRESSION").toString();//时间表达式
            TIME=_json.get(0).get("IS_JG_TIME").toString();//间隔分钟
        }
        //创建任务
        Scheduler scheduler = getScheduler();
        if(tool.ConvertHelper.ToBoolean(isStop)==false){
            scheduler.shutdown();//停止调度
        }
        if(tool.ConvertHelper.ToBoolean(isStop)==true){
            JobDetail jobDetail = JobBuilder.newJob(WeiXinJob.class).withIdentity("weiXinJob", "WeiXinGroup").build();
            //创建触发器 每3秒钟执行一次
            if(tool.ConvertHelper.ToBoolean(IS_EXPRESSION)){
                CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("trigger1").withSchedule(CronScheduleBuilder.cronSchedule(EXPRESSION)).build();
                //将任务及其触发器放入调度器
                scheduler.scheduleJob(jobDetail, cronTrigger);
            } else{
                Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group3")
                        .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInMinutes(Integer.valueOf(TIME)).repeatForever())
                        // .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInHours(100000).repeatForever())
                        //.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10).repeatForever())
                        .build();
                //将任务及其触发器放入调度器
                scheduler.scheduleJob(jobDetail, trigger);
            }
        }


        //调度器开始调度任务
        //scheduler.start();
        if(tool.ConvertHelper.ToBoolean(isStop)){
           // scheduler.shutdown();//停止调度
            scheduler.start();
        }




//        //创建任务
//        JobDetail jobDetail = JobBuilder.newJob(WeiXinJob.class).withIdentity("weiXinJob", "WeiXinGroup").build();
//        //创建触发器 每3秒钟执行一次
//        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group3")
//               // .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInMinutes(60).repeatForever())
//                .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10).repeatForever())
//                .build();
//        Scheduler scheduler = getScheduler();
//        //将任务及其触发器放入调度器
//        scheduler.scheduleJob(jobDetail, trigger);
//        //调度器开始调度任务
//        scheduler.start();
        //scheduler.shutdown();//停止调度
        /////////////////////////////////////////////////
//        JobDetail jobDetail = JobBuilder.newJob(WeiXinJob.class).withIdentity("weiXinJob").build();
//        //cronTrigger
//        //每日的9点40触发任务
//        CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("cronTrigger").withSchedule(CronScheduleBuilder.cronSchedule("0 40 9 * * ? ")).build();
//        //1.每日10点15分触发      0 15 10 ?* *
//        //2.每天下午的2点到2点59分(正点开始,隔5分触发)       0 0/5 14 * * ?
//        //3.从周一到周五每天的上午10点15触发      0 15 10 ? MON-FRI
//        //4.每月的第三周的星期五上午10点15触发     0 15 10 ? * 6#3
//        //5.2016到2017年每月最后一周的星期五的10点15分触发   0 15 10 ? * 6L 2016-2017
//        //Scheduler实例
//        StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory();
//        Scheduler scheduler = stdSchedulerFactory.getScheduler();
//        scheduler.start();
//        scheduler.scheduleJob(jobDetail,cronTrigger);

    }

//    public static void main(String[] args) throws SchedulerException {
//        WeiXinScheduler mainScheduler = new WeiXinScheduler();
//        mainScheduler.schedulerJob();
//    }
}

 

2.WeiXinJob.java

package com.jobs;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;

import com.dcs.bapi.WeiXinMsg;
import com.yd.edb.jdbc.IDGen;
import com.yd.edb.ticket.Ticket;
import org.openjdk.tools.javac.util.Convert;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import tool.ConvertHelper;
import tool.DateTimeHelper;

import static tool.ConvertHelper.StringToDate;


public class WeiXinJob implements Job{

    public void execute(JobExecutionContext context) throws JobExecutionException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Ticket ticket=new Ticket();
        try {

            //超期代码
            //查询微信自动发送配置
            String strw = String.format("SELECT * FROM DCS_MESSAGE_PUSH_SETTING WHERE IS_ENABLE='1' AND CODE='0001'");
            List<Map<String, Object>> _listw = ticket.getDB().queryBySql(strw);
            if (_listw.size() > 0) {
                //调用发送微信通知的接口即可
                String where = "";
                String str = "";
                String _str="";
                //查询是否有开启的配置信息
                String Field = " distinct DCS.ID,HR.ID as PERSON_ID,DCS.RMAN_DPT_NAME,DCS.RMAN_NAME,DCS.CNAME,DCS.LEVEL_NAME,DCS.LIMIT_TIME,HR.WEIXIN_ID,HR.ORGID,DATEDIFF(DAY,FIND_TIME ,GETDATE()) AS ADAY ";
                for (int i = 0; i < _listw.size(); i++) {
                    String code = _listw.get(i).get("CODE").toString();//内码
                    String day = _listw.get(i).get("DAY").toString();//间隔多少天提醒
                    String ismany = _listw.get(i).get("IS_MANY").toString();//是否控制次数
                    String number = _listw.get(i).get("NUMBER").toString();//每天几次
                    String message=_listw.get(i).get("MESSAGE").toString();//消息模板
                    if(code.equals("0002")){
                        if(message.equals(null) || message.equals("")){
                            message="有一处隐患 [CNAME] 是 [LEVELNAME] 整改结束时间是 [LIMITTIME]  距离整改的结束时间还有 [TIME] 天 请及时整改处理";
                        }
                    }
                    if(code.equals("0001")){
                        if(message.equals(null) || message.equals("")){
                            message="有一处隐患 [CNAME] 是 [LEVELNAME] 整改结束时间是 [LIMITTIME]  已经超期 [TIME] 天 请及时处理";
                        }
                    }


                    String starttime=_listw.get(i).get("IS_START_TIME").toString();//开始时间
                    String now_time=tool.ConvertHelper.ToString(tool.DateTimeHelper.ToDateFormatString(tool.DateTimeHelper.Now(),"HH:mm:ss"));

                    SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
                    Date starttime2 =formatter2.parse(starttime);//开始时间
                    Date now_time2 =formatter2.parse(now_time);//现在时间
                    if(starttime2.getTime()>now_time2.getTime()){
                        continue;
                    }

                    //内码是0001 超期 代码
                    if (code.equals("0001")) {
                        where = "DCS.STATUS_NAME !='已复查' AND   DCS.LIMIT_TIME<'" + DateTimeHelper.ToDateFormatString(DateTimeHelper.Now(), "yyyy-MM-dd") + "' AND  DCS.CORRECT_TYPE_NAME='限期整改'";
                    }
                    //内码是0002 未整改 代码
                    if (code.equals("0002")) {
                        where = "DCS.STATUS_NAME !='已复查'";
                        Field = " distinct DCS.ID,HR.ID as PERSON_ID,DCS.RMAN_DPT_NAME,DCS.RMAN_NAME,DCS.CNAME,DCS.LEVEL_NAME,DCS.LIMIT_TIME,HR.WEIXIN_ID,HR.ORGID,DATEDIFF(DAY,GETDATE(),FIND_TIME) AS ADAY ";
                    }
                    str = String.format("SELECT %s FROM DCS_ACCIDENT_POTENTIAL  DCS   LEFT JOIN HR_EMPLOYEE HR ON HR.ID=DCS.RMAN_ID  WHERE %s", Field, where);
                    List<Map<String, Object>> _list = ticket.getDB().queryBySql(str);

                    //整改人发送
                    if (_list.size() > 0) {
                        for (int j = 0; j < _list.size(); j++) {
                            //判断
                            if (code.equals("0002")) {
                                //是否临近超期时间
                                if (!_list.get(j).get("ADAY").toString().equals(day)) {
                                    continue;
                                }
                            }
                            //是否开启多次
                            String nowtime = '%' + DateTimeHelper.ToDateFormatString(DateTimeHelper.Now(), "yyyy-MM-dd") + '%';
                            String countstr = String.format("SELECT  *  FROM DCS_WEIXIN_POST_MESSAGE WHERE  Convert(varchar,CREATION_TIME,120)   LIKE '%s' AND DCS_AP_ID='%s' and PERSON_ID='%s'", nowtime, _list.get(j).get("ID").toString(),tool.ConvertHelper.ToString(_list.get(j).get("PERSON_ID")));
                            List<Map<String, Object>> _listcountstr = ticket.getDB().queryBySql(countstr);
                            if (ismany.equals("true")) {
                                //如果发送的次数大于上限就跳出
                                if (_listcountstr.size() > Integer.valueOf(number)) {
                                    continue;
                                }
                            }
                            //没有开启就发送一次
                            if (ismany.equals("false")) {
                                //如果发送的次数等于1就跳出
                                if (_listcountstr.size() == 1) {
                                    continue;
                                }
                            }
                          //  String message = "";
//                            if (code.equals("0002")) {
//                                message = "有一处隐患 @CNAME 是 @LEVELNAME 整改结束时间是 @LIMITTIME  距离整改的结束时间还有 @TIME 天 请及时整改处理";
//                            }
//                            if (code.equals("0001")) {
//                                message = "有一处隐患 @CNAME 是 @LEVELNAME 整改结束时间是 @LIMITTIME  已经超期 @TIME 天 请及时处理";
//                            }
                            String _message=message;
                            if(_list.get(j).get("CNAME").equals(null)){
                                _message= _message.replace("[CNAME]", "");
                            }else{
                                _message= _message.replace("[CNAME]", _list.get(j).get("CNAME").toString());
                            }
                            if(tool.ConvertHelper.ToString(_list.get(j).get("RMAN_DPT_NAME")).equals("")){
                                _message= _message.replace("[RMANDPTNAME]", "");
                            }else{
                                _message= _message.replace("[RMANDPTNAME]", _list.get(j).get("RMAN_DPT_NAME").toString());
                            }
                            if(tool.ConvertHelper.ToString(_list.get(j).get("RMAN_NAME")).equals("")){
                                _message= _message.replace("[RMANNAME]", "");
                            }else{
                                _message= _message.replace("[RMANNAME]", _list.get(j).get("RMAN_NAME").toString());
                            }

                            boolean LIMIT_TIME=tool.ConvertHelper.ToString(_list.get(j).get("LIMIT_TIME")).equals("");
                            if(LIMIT_TIME){
                                _message= _message.replace("[LIMITTIME]", "");
                            }else{
                                _message= _message.replace("[LIMITTIME]", _list.get(j).get("LIMIT_TIME").toString().substring(0,10));
                            }
                            String  WEIXIN_ID=tool.ConvertHelper.ToString(_list.get(j).get("WEIXIN_ID"));
                            if(WEIXIN_ID.equals("")){
                                WEIXIN_ID="";
                            }
                            if(WEIXIN_ID.equals("")==false){
                                _message = _message.replace("[LEVELNAME]", _list.get(j).get("LEVEL_NAME").toString()).replace("[TIME]", _list.get(j).get("ADAY").toString());
                                 ticket.getDB().execSql("insert into DCS_WEIXIN_POST_MESSAGE(ID,DCS_AP_ID,POST_MESSAGE,WEIXIN_ID,PERSON_ID,CREATION_TIME) values(?,?,?,?,?,?)", IDGen.getUUID(),_list.get(j).get("ID").toString(),_message,WEIXIN_ID,tool.ConvertHelper.ToString(_list.get(j).get("PERSON_ID")),sdf.format(new Date()));
                                 WeiXinMsg.fnSendWeiXinMsg(_list.get(j).get("ORGID").toString(),WEIXIN_ID,_message);
                            }



//                             message = message.replace("[CNAME]", _list.get(j).get("CNAME").toString()).replace("[LEVELNAME]", _list.get(j).get("LEVEL_NAME").toString()).replace("[LIMITTIME]", _list.get(j).get("LIMIT_TIME").toString()).replace("[TIME]", _list.get(j).get("ADAY").toString());
//
//                             //ticket.getDB().execSql("insert into DCS_WEIXIN_POST_MESSAGE(ID,DCS_AP_ID,POST_MESSAGE,WEIXIN_ID,CREATION_TIME) values(?,?,?,?,?)", IDGen.getUUID(),_list.get(j).get("ID").toString(),message,_list.get(j).get("WEIXIN_ID").toString(),sdf.format(new Date()));
//                              //WeiXinMsg.fnSendWeiXinMsg(_list.get(j).get("ORGID").toString(),_list.get(j).get("WEIXIN_ID").toString(),message);
                        }

                    }

                    //管控人发送
                    _str=String.format("SELECT %s FROM DCS_ACCIDENT_POTENTIAL  DCS   LEFT JOIN HR_EMPLOYEE HR ON HR.ID=DCS.SUPERINTENDENT_MAN_ID  WHERE %s", Field, where);
                    List<Map<String, Object>> _listg = ticket.getDB().queryBySql(_str);
                    if(_listg.size()>0) {
                        for (int j = 0; j < _listg.size(); j++) {
                            //判断
                            if (code.equals("0002")) {
                                //是否临近超期时间
                                if (!_listg.get(j).get("ADAY").toString().equals(day)) {
                                    continue;
                                }
                            }
                            //是否开启多次
                            String nowtimeg = '%' + DateTimeHelper.ToDateFormatString(DateTimeHelper.Now(), "yyyy-MM-dd") + '%';
                            String countstrg = String.format("SELECT  *  FROM DCS_WEIXIN_POST_MESSAGE WHERE  Convert(varchar,CREATION_TIME,120)   LIKE '%s' AND DCS_AP_ID='%s' and PERSON_ID='%s'", nowtimeg, _listg.get(j).get("ID").toString(), tool.ConvertHelper.ToString(_listg.get(j).get("PERSON_ID")));
                            List<Map<String, Object>> _listcountstrg = ticket.getDB().queryBySql(countstrg);
                            if (ismany.equals("true")) {
                                //如果发送的次数大于上限就跳出
                                if (_listcountstrg.size() > Integer.valueOf(number)) {
                                    continue;
                                }
                            }
                            //没有开启就发送一次
                            if (ismany.equals("false")) {
                                //如果发送的次数等于1就跳出
                                if (_listcountstrg.size() == 1) {
                                    continue;
                                }
                            }
                            String _messageg=message;
                            if (_listg.get(j).get("CNAME").equals(null)) {
                                _messageg = _messageg.replace("[CNAME]", "");
                            } else {
                                _messageg = _messageg.replace("[CNAME]", _listg.get(j).get("CNAME").toString());
                            }
                            if(tool.ConvertHelper.ToString(_list.get(j).get("RMAN_DPT_NAME")).equals("")){
                                _messageg= _messageg.replace("[RMANDPTNAME]", "");
                            }else{
                                _messageg= _messageg.replace("[RMANDPTNAME]", _list.get(j).get("RMAN_DPT_NAME").toString());
                            }
                            if(tool.ConvertHelper.ToString(_list.get(j).get("RMAN_NAME")).equals("")){
                                _messageg= _messageg.replace("[RMANNAME]", "");
                            }else{
                                _messageg= _messageg.replace("[RMANNAME]", _list.get(j).get("RMAN_NAME").toString());
                            }
                            boolean LIMIT_TIME = tool.ConvertHelper.ToString(_listg.get(j).get("LIMIT_TIME")).equals("");
                            if (LIMIT_TIME) {
                                _messageg = _messageg.replace("[LIMITTIME]", "");
                            } else {
                                _messageg = _messageg.replace("[LIMITTIME]", _listg.get(j).get("LIMIT_TIME").toString().substring(0,10));
                            }
                            String WEIXIN_IDG = tool.ConvertHelper.ToString(_listg.get(j).get("WEIXIN_ID"));
                            if (WEIXIN_IDG.equals("")) {
                                WEIXIN_IDG = "";
                            }
                            if (WEIXIN_IDG.equals("") == false) {
                                _messageg = _messageg.replace("[LEVELNAME]", _listg.get(j).get("LEVEL_NAME").toString()).replace("[TIME]", _listg.get(j).get("ADAY").toString());

                                ticket.getDB().execSql("insert into DCS_WEIXIN_POST_MESSAGE(ID,DCS_AP_ID,POST_MESSAGE,WEIXIN_ID,PERSON_ID,CREATION_TIME) values(?,?,?,?,?,?)", IDGen.getUUID(), _listg.get(j).get("ID").toString(),_messageg, WEIXIN_IDG, tool.ConvertHelper.ToString(_listg.get(j).get("PERSON_ID")), sdf.format(new Date()));
                                WeiXinMsg.fnSendWeiXinMsg(_listg.get(j).get("ORGID").toString(),WEIXIN_IDG,_messageg);
                            }
                        }
                    }

                }

            }
        }
        catch (Exception e){

        }finally {
            ticket.Dispose();
        }

        System.out.println(sdf.format(new Date()));
    }



}

 

Guess you like

Origin blog.csdn.net/qq_38366657/article/details/90669993