spring定时任务demo

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();
	}


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值