spring定时任务demo
今天公司要求做一个定时任务,5分钟一次调用接口,给别人推送数据。简单介绍一下我的定时任务工作:
1、先获取部门用户信息;
2、将部门用户信息作为参数来掉用接口服务,接口返回需要推送的数据;
3、将返回的数据遍历拿到一些参数信息,再次掉用接口服务,将数据推送给大厅服务端。下面是代码。
spring配置定时任务配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:task="http://www.springframework.org/schema/task" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd">
<!-- 住建委自动受理事项,每5分钟触发一次 -->
<task:scheduled-tasks>
<task:scheduled ref="autoAcceptedSchedule" method="autoAccepted" cron="0 */5 * * * ?" />
</task:scheduled-tasks>
</beans>
简单介绍一下Cron表达式
"30 * * * * ?" 每半分钟触发任务
"30 10 * * * ?" 每小时的10分30秒触发任务
"30 10 1 * * ?" 每天1点10分30秒触发任务
"30 10 1 20 * ?" 每月20号1点10分30秒触发任务
"30 10 1 20 10 ? *" 每年10月20号1点10分30秒触发任务
"30 10 1 20 10 ? 2011" 2011年10月20号1点10分30秒触发任务
"30 10 1 ? 10 * 2011" 2011年10月每天1点10分30秒触发任务
"30 10 1 ? 10 SUN 2011" 2011年10月每周日1点10分30秒触发任务
"15,30,45 * * * * ?" 每15秒,30秒,45秒时触发任务
"15-45 * * * * ?" 15到45秒内,每秒都触发任务
"15/5 * * * * ?" 每分钟的每15秒开始触发,每隔5秒触发一次
"15-30/5 * * * * ?" 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
"0 0/3 * * * ?" 每小时的第0分0秒开始,每三分钟触发一次
"0 15 10 ? * MON-FRI" 星期一到星期五的10点15分0秒触发任务
"0 15 10 L * ?" 每个月最后一天的10点15分0秒触发任务
"0 15 10 LW * ?" 每个月最后一个工作日的10点15分0秒触发任务
"0 15 10 ? * 5L" 每个月最后一个星期四的10点15分0秒触发任务
"0 15 10 ? * 5#3" 每个月第三周的星期四的10点15分0秒触发任务
业务代码
/**
*
* @Title getOrgCodeList
* @Date 2019年3月15日 下午11:42:21
* @author
* @Description 获取可以自动受理的部门及首席代表
* @return List<Map<String, Object>>
*/
public List<Map<String, Object>> getOrgCodeList() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
String sql = "select * from system_auto_accept WHERE YXBZ = 'Y' AND type = 'Y'";
try {
list = this.dataGate.queryForList(sql);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
this.logger.info("获取部门用户信息出错");
}
return list;
}
/**
*
* @Title getItemAuto
* @Date 2019年3月18日 下午5:14:41
* @author
* @Description 查询事项详细信息
* @param params
* @return Map<String, Object>
*/
public Map<String, Object> getItemAuto(Map<String, Object> params) {
Map<String, Object> itemMap = null;
try {
params.put("orgCode", params.get("ORGCODE")); //部门code
params.put("status", ConstantsCode.listStatus); //待受理状态code
params.put("autoAccept", "Y"); //自动受理标志 Y:是; N:不是
itemMap = this.yushenService.getYushenList(params);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
this.logger.info("获取事项信息出错");
}
return itemMap;
}
/**
*
* @Title autoAccept
* @Date 2019年3月18日 下午4:30:07
* @author
* @Description 开始自动受理
* @param itemMap
*/
@SuppressWarnings({ "unchecked", "static-access" })
public void autoAccept(Map<String, Object> itemMap) {
List<Map<String, Object>> list = (List<Map<String, Object>>) itemMap.get("dt_data");
Map<String,Object> logMap = new HashMap<String,Object> () ;
if (list != null && !list.isEmpty() && list.size() > 0) {
for (Map<String, Object> map : list) {
if (isZjwSgbaItem ((String) map.get("itemCode"))) {
Map<String, Object> res = new HashMap<String,Object>();
try {
itemMap.put("id", map.get("id"));
res = this.yushenService.doApprove(getParams(itemMap));
this.succes ++;
logMap.put("successDeclareno", map.get("applyNo"));
this.logger.info("===================成功自动受理一条数据事项id是 【" + itemMap.get("id") +"】");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
this.error ++;
logMap.put("faileDeclareno", map.get("applyNo"));
this.logger.info("自动受理失败,事项id是 【" + itemMap.get("id") + "】;中兴返回的数据是:" + res );
this.logger.info("=====本次自动受理出错,申报号是:【" + itemMap.get("applyNo") + "】");
}
this.list.add(logMap);
}
}
} else {
this.logger.info("=============================没有要自动受理的数据===================");
}
}
/**
*
* @Title getParams
* @Date 2019年3月18日 下午4:50:04
* @author
* @Description 组装自动受理的参数
* @param itemMap
* @return String
*/
public String getParams(Map<String, Object> itemMap) {
Map<String, String> params = new HashMap<String, String>();
params.put("approvalUserId", (String) itemMap.get("approvalUserId"));
params.put("approvalName", (String) itemMap.get("approvalName"));
params.put("approvalTel", (String) itemMap.get("approvalTel"));
params.put("approvalOpinion", /*itemMap.get("approvalName") +*/ "自动受理,通过。");
params.put("id", (String) itemMap.get("id"));
params.put("status", ConstantsCode.statusAutoAccept);
params.put("attaApprovals", ConstantsCode.statusAttaFile);
JSONObject jsonStr = JSONObject.fromObject(params);
this.logger.info("本次自动受理的参数是:【" + jsonStr.toString() + "】");
return jsonStr.toString();
}