根据时间去判断一个活动是否已经结束,用定时器去定时查看
<!-- 晚上12点恢复设备状态,置为0 -->
<bean id="RestoreQuartz" class="com.demo.service.utils.RestoreStatusQuartz"></bean>
<bean id="RestoreQuartzDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="RestoreQuartz" />
<property name="targetMethod" value="restoreEveInspectedStatus" />
<!-- concurrent设为false,多个job不会并发运行 -->
<property name="concurrent" value="false" />
</bean>
<bean id="RestoreOrderInfoCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="RestoreQuartzDetail" />
</property>
<property name="cronExpression">
<value>0 0 0 * * ?</value>
</property>
</bean>
<!-- 触发器调用 -->
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="RestoreOrderInfoCronTrigger" />
</list>
</property>
<!-- 程序加载后是否自动启动 -->
<property name="autoStartup" value="true" />
</bean>
上面的配置文件
public void restoreEveInspectedStatus(){
CstTaskExample example = new CstTaskExample();
Criteria criteria = example.createCriteria();
criteria.andStateEqualTo(1);
List<CstTask> tasks = taskMapper.selectByState(example);
for(CstTask ct:tasks){
if(ct.getEndTime().compareTo(String.valueOf((new Date().getTime())))<0){
ct.setState(2);
taskMapper.updateByPrimaryKey(ct);
}
}
System.out.println("我在执行");
}
这样每天凌晨就去触发这个函数,判断活动时间,用的是时间戳做比较。