首页 > 代码库 > SSH系列:(29)使用Quartz 实现自动受理
SSH系列:(29)使用Quartz 实现自动受理
需求中要求每月月底将上个月的投诉自动处理为已失效。要求是每月月底,所以定时任务应该将处理时间设置在每月的月底;处理的任务是将上个月的未受理的投诉信息自动将其状态设置为已失效。
将自动受理的方法加入到complainService/complainServiceImpl中,以便事务控制:
ComplainService.java
package com.rk.tax.service; import com.rk.core.service.BaseService; import com.rk.tax.entity.Complain; public interface ComplainService extends BaseService<Complain> { //自动受理投诉 void autoDeal(); }
ComplainServiceImpl.java
package com.rk.tax.service.impl; import java.util.Calendar; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.rk.core.service.Impl.BaseServiceImpl; import com.rk.core.utils.QueryHelper; import com.rk.tax.dao.ComplainDao; import com.rk.tax.entity.Complain; import com.rk.tax.service.ComplainService; @Service("complainService") public class ComplainServiceImpl extends BaseServiceImpl<Complain> implements ComplainService { private ComplainDao complainDao; @Resource public void setComplainDao(ComplainDao complainDao) { setBaseDao(complainDao); this.complainDao = complainDao; } @Override public void autoDeal() { //查找本月开始之前未受理的投诉信息 Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_MONTH, 1);//本月1号 cal.set(Calendar.HOUR_OF_DAY, 0);//24小时制0时 cal.set(Calendar.MINUTE, 0);//0分 cal.set(Calendar.SECOND, 0);//0秒 //1、查询上个月未受理投诉 QueryHelper queryHelper = new QueryHelper(Complain.class, "c"); queryHelper.addCondition("c.state=?", Complain.COMPLAIN_STATE_UNDONE); queryHelper.addCondition("c.compTime < ?", cal.getTime()); List<Complain> list = findList(queryHelper); //2、更改投诉的状态为已失效 if(list != null &&list.size()>0){ for(Complain comp : list){ //设置投诉状态为无效 comp.setState(Complain.COMPLAIN_STATE_INVALID); update(comp); } } } }
将任务注册到Spring的IOC容器内
<!-- 1、定义一个jobDetail任务详细bean --> <bean id="complainJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 要执行的类实体映射到complainService --> <property name="targetObject" ref="complainService"></property> <!-- 执行方法为autoDeal --> <property name="targetMethod" value="http://www.mamicode.com/autoDeal"></property> <!-- 不同步执行 --> <property name="concurrent" value="http://www.mamicode.com/false"></property> </bean> <!-- 2、定义一个cronTrigger触发器 --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <!-- 指定要执行的任务详细信息bean --> <property name="jobDetail" ref="complainJobDetail"></property> <!-- 制定任务的执行时间:每月最后一天的2点0分0秒开始执行 --> <property name="cronExpression" value="http://www.mamicode.com/0 0 2 L * ?"></property> </bean> <!-- 3、定义一个schedulerFactory --> <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTrigger"/> </list> </property> </bean>
SSH系列:(29)使用Quartz 实现自动受理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。