JEPaaS 社区

 找回密码
 立即注册
JECloud低代码平台-官网
查看: 3253|回复: 0

【定时任务】如何在系统里面设置定时任务?

[复制链接]

75

主题

77

帖子

355

积分

中级会员

Rank: 3Rank: 3

积分
355
发表于 2021-10-11 13:51:56 | 显示全部楼层 |阅读模式
一、实现效果
在JEpaas里面设置定时任务,让系统每隔一段时间进行一些操作。
二、实现思路
三、具体操作
1、如图1,在开发->定时任务里面增加一条定时任务。 1.png
2、如图2,设置对应的审批任务和开始时间,结束时间如果不写则默认是永远。
2.png
3、执行策略可以选择方法或者sql语句,如果选择方法,则只需要输入该方法的业务bean名称和该方法的方法名即可。在后台service里面实现该方法,并将该service注入到Spring容器中。如果选择sql直接在下面写sql语句即可。
4、在方法里面对时间进行判断,如果满足条件,则进行一些操作,本案例代码是每隔4小时往微信公众号上发送一条消息。
四、相关代码(可选)
  1. /**
  2.      * 启动定时任务,微信公众号每隔四小时推送未审批的消息
  3.      */
  4.     @Override
  5.     public void sendWxgzhApproveInfo () {
  6.         //判断当前时间,如果不在8:00-20:00内,直接返回;在:true
  7.         Boolean flag = true;
  8.         long times = System.currentTimeMillis();
  9.         Date date = new Date(times);
  10.         SimpleDateFormat format = new SimpleDateFormat("HH");
  11.         String hour = format.format(date);//2021-10-11 12:08:22
  12.                 int hourInt = Integer.parseInt(hour);
  13.                 if (hourInt > 8 && hourInt < 20) {
  14.                     flag = true;
  15.                 }else {flag = false;}}}
  16.         if (!flag) {
  17.             return;
  18.         }
  19.         String title = ""; //审核题目
  20.         String context = "";

  21.         //String pcShowFunc = ""; //表单展示
  22.         String funcCode = "";//获取功能编码    0
  23.         String AppFunc = funcCode; //APP的功能编码与原功能相同
  24.         String funcName = "";  //  1
  25.         String tableName = "";//  2
  26.         String funcId = ""; //主键名  3
  27.         String pkValue = ""; //表单主键 4
  28.         String userId = "";//流程待执行人ID
  29.         String sql = "select EXECUTION_ID_ as executionId,ASSIGNEE_ as userId from JBPM4_TASK where  EXECUTION_ IS NOT NULL " +
  30.                 "AND SUPERTASK_ IS NULL " +
  31.                 "AND NAME_ NOT IN ( 'NODE_REJECT_TASK', 'ENTRUST_TRANSMIT_TASK', 'NODE_JOINCHILD_TASK' ) " +
  32.                 "AND EXECUTION_ID_ IN ( SELECT ID_ FROM JBPM4_EXECUTION WHERE PROCDEFID_ IN ( SELECT PROCESSINFO_PROCESSDEFINIT_ID FROM JE_CORE_PROCESSINFO WHERE PROCESSINFO_DEPLOYSTATUS = '1' AND PROCESSINFO_ENABLED = '1' ) ) " +
  33.                 "AND EXECUTION_ID_ NOT IN ( SELECT ID_ FROM JBPM4_HIST_PROCINST WHERE STATE_ = 'HANDUPED' ) " +
  34.                 "AND DELAYTASK_ = '0' ";
  35.         List<Map> taskInfos = serviceTemplate.queryMapBySql(sql);
  36.         for (Map task:taskInfos) {
  37.             String executionId = (String)task.get("executionId");//流程实例
  38.             userId = (String)task.get("userId"); //当前审批用户ID
  39.             //如果查不到该用户直接返回
  40.             List<DynaBean> users = serviceTemplate.selectList("JE_CORE_ENDUSER","and USERID = '" + userId + "'");
  41.             if (users.size() <= 0) {
  42.                 continue;
  43.             }
  44.             String[] res = getRes(executionId);
  45.             if (res.length > 6 && !res[4].equals(" ")) { //返回了所有参数
  46.                 funcCode = res[0];
  47.                 funcName = res[1];
  48.                 tableName = res[2];
  49.                 funcId = res[3];
  50.                 pkValue = res[4];
  51.                 context = "您有一条" + funcName + "的流程已经超过4小时未审批,请您及时审批。";
  52.                 //pcShowFunc="<a href="javascript:void(0)" onclick="JE.showFunc(" + funcCode + ",{type:'form',id:"+pkValue+",readOnly:true  })">查看</a>";
  53.                 List<UserMsgAppInfo> userMsgAppInfos = Lists.newArrayList();
  54.                 net.sf.json.JSONObject params = new net.sf.json.JSONObject();
  55.                 params.put("pkValue", pkValue);
  56.                 UserMsgAppInfo appInfo = new UserMsgAppInfo("流程审核", "APPFUNC", AppFunc, "form", params);
  57.                 userMsgAppInfos.add(appInfo);
  58.                 title = funcName + "流程审批提醒";
  59.                 userMsgManaer.sendMsg(userId, title, context, "MSG", pkValue, userMsgAppInfos);
  60.                 String wxTitle = funcName + "提醒";
  61.                 DynaBean dynaBean=serviceTemplate.selectOneByPk(tableName,pkValue);
  62.                 if (dynaBean == null ) {
  63.                     continue;
  64.                 }
  65.                 StringBuffer context1 = new StringBuffer(context);
  66.                 SendGzhMsg(dynaBean,wxTitle,context1,pkValue,userId,funcId);
  67.             }
  68.         }
  69.     }
复制代码

五、总结(可选)
系统设置定时任务比较简单,设置好之后直接写对应的service代码即可。
六、关键字
定时任务、发送微信公众号消息、

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|JEPaaS 低代码平台社区 ( 京ICP备18023569号 )

GMT+8, 2024-5-9 02:35 , Processed in 0.059989 second(s), 23 queries .

Powered by 北京凯特伟业科技有限公司

Copyright © 2001-2021, JEPaaS.COM

快速回复 返回顶部 返回列表