applicationContext-timer.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <!-- 微博数据抓取 --> <bean id="weiboManager" class="com.wiseweb.pom.service.weibo.WeiboStatusManager"></bean> <bean id="usersManager" class="com.wiseweb.pom.service.weibo.WeiboUsersManager"></bean> <bean id="assignUsersManager" class="com.wiseweb.pom.service.weibo.WeiboAssignUsersManager"></bean> <bean id="ntManager" class="com.wiseweb.pom.service.tracking.NegativeTrackingManager"></bean> <bean id="classPersonalManager" class="com.wiseweb.pom.service.classify.ClassPersonalManager"></bean> <bean id="searchManager" class="com.wiseweb.pom.service.docInfo.SearchManager"></bean> <bean id="cacheCountManager" class="com.wiseweb.pom.service.cache.CacheCountManager"></bean> <bean id="docInfoManager" class="com.wiseweb.pom.service.docInfo.DocInfoManager"></bean> <!-- 微博数据抓取 --> <bean id="weiboCrawJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.wiseweb.util.timer.SinaWeiboCrawTimer"></property> <property name="jobDataAsMap"> <map> <entry key="weiboManager" value-ref="weiboManager"></entry> <entry key="usersManager" value-ref="usersManager"></entry> <entry key="assignUsersManager" value-ref="assignUsersManager"></entry> <entry key="ntManager" value-ref="ntManager"></entry> </map> </property> </bean> <!-- 微博数据抓取 --> <bean id="weiboCrawTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="weiboCrawJob"></property> <!-- 30分运行一次; --> <property name="cronExpression" value="0 0/30 * * * ?" /> </bean> <!-- 个人keyword提取 --> <bean id="personalCrawJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.wiseweb.util.timer.PersonalCrawTimer"></property> <property name="jobDataAsMap"> <map> <entry key="classPersonalManager" value-ref="classPersonalManager"></entry> <entry key="searchManager" value-ref="searchManager"></entry> <entry key="cacheCountManager" value-ref="cacheCountManager"></entry> </map> </property> </bean> <!-- 个人keyword提取 --> <bean id="personalTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="personalCrawJob"></property> <!-- 30分运行一次; --> <property name="cronExpression" value="1 0 0 * * ?" /> </bean> <!-- 地图图表信息存储 --> <bean id="mapchartCrawJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.wiseweb.util.timer.MapChartCrawTimer"></property> <property name="jobDataAsMap"> <map> <entry key="docInfoManager" value-ref="docInfoManager"></entry> <entry key="cacheCountManager" value-ref="cacheCountManager"></entry> <entry key="searchManager" value-ref="searchManager"></entry> </map> </property> </bean> <!-- 地图图表信息存储 --> <bean id="mapchartTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="mapchartCrawJob"></property> <property name="cronExpression" value="0 10 0 * * ?" /> <!--<property name="cronExpression" value="0 0/1 * * * ?" /> --></bean> <bean id="scheduledFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="weiboCrawTrigger"/> <ref bean="personalTrigger"/> <ref bean="mapchartTrigger"/> </list> </property> </bean> </beans>
给出某一个定时类的写法
package com.wiseweb.util.timer; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; import com.wiseweb.pom.entity.CacheCount; import com.wiseweb.pom.entity.ClassConfigPersonal; import com.wiseweb.pom.entity.ClassTreePersonal; import com.wiseweb.pom.entity.ClassTreePersonalKeyword; import com.wiseweb.pom.entity.ClassifyPersonalRole; import com.wiseweb.pom.entity.SearchInfo; import com.wiseweb.pom.service.cache.CacheCountManager; import com.wiseweb.pom.service.classify.ClassPersonalManager; import com.wiseweb.pom.service.docInfo.SearchManager; public class PersonalCrawTimer extends QuartzJobBean{ private SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd") ; private SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ; private ClassPersonalManager classPersonalManager ; private SearchManager searchManager ; private CacheCountManager cacheCountManager ; private Integer order = 1; // 按时间排序 private String queryValue = ""; @Override protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { System.out.println("*************执行关键字定时开始***********"); flushPersonal() ; System.out.println("*************执行关键字定时结束***********"); } public void flushPersonal() { List<ClassConfigPersonal> ccp = this.cacheCountManager.getAllConfig() ; //设置时间戳 Long nowTime = System.currentTimeMillis()/1000 ; for(ClassConfigPersonal c : ccp) { Long userId = c.getUserId() ; List<ClassTreePersonal> resultObject = new ArrayList<ClassTreePersonal>() ; //根据用户id获取到classConfigPersonal集合 List<ClassConfigPersonal> ccps = this.classPersonalManager.findAll(userId); for(int i=0;i<ccps.size();i++) { //个人配置id Long classConfigId = ccps.get(i).getId() ; //个人配置id & 用户id找到personalRole List<ClassifyPersonalRole> classifyRoles = this.classPersonalManager .findByClassConfigRole(userId, classConfigId); List<ClassTreePersonal> classTreePersonals = this.classPersonalManager .findAllByClassConfigId(classConfigId); for (int k = 0; k < classTreePersonals.size(); k++) { ClassTreePersonal ctn = classTreePersonals.get(k); for (int j = 0; j < classifyRoles.size(); j++) { if (ctn.getId().equals( classifyRoles.get(j).getTreeNodeId())) { resultObject.add(ctn) ; } } } } int size = resultObject.size() ; for(int i=0;i<size;i++) { String name = resultObject.get(i).getName() ; Long id = resultObject.get(i).getId() ; ClassTreePersonalKeyword ctnk2 = this.classPersonalManager.findKeywordBy("nodeNid",Integer.parseInt(id+"")); SearchInfo searchInfo = ctnk2SearchInfo(ctnk2) ; //传入keyword和用户id执行入库操作 try { executeSql(name, searchInfo, userId) ; } catch (ParseException e) { e.printStackTrace(); } } } System.out.println("________________________"); System.out.println("执行操作已完成,进行删除旧数据操作..."); //执行完后执行删除旧数据操作 List<Long> deleteIds = this.cacheCountManager.getAllIdForDelete(nowTime) ; this.cacheCountManager.delete(deleteIds) ; System.out.println("数据删除已完成..."); } public void executeSql(String keywordName, SearchInfo searchInfo, Long userId) throws ParseException { for(int i=30;i>0;i--) { String riqi = getStrDate(String.valueOf(i)) ; long start = sdf1.parse(riqi).getTime() ; long end = sdf2.parse(riqi + " 23:59:59").getTime() ; int count = this.searchManager.search(searchInfo,start/1000,end/1000); CacheCount cc = new CacheCount() ; cc.setkUid(userId) ; cc.setkName(keywordName) ; cc.setkCount(count + "") ; cc.setkTime(riqi) ; cc.setkInserttime(System.currentTimeMillis()/1000) ; this.cacheCountManager.inStorage(cc) ; System.out.println(keywordName + "_" + riqi + "已入库..."); } } private SearchInfo ctnk2SearchInfo(ClassTreePersonalKeyword ctnk2) { SearchInfo si = new SearchInfo() ; si.setOrder(this.order); if (ctnk2.getQueryAnd() != null && !"".equals(ctnk2.getQueryAnd())) { si.setQueryValue(ctnk2.getQueryAnd() + " " + this.queryValue); } if (ctnk2.getQueryOr() != null && !"".equals(ctnk2.getQueryOr())) { si.setOr(ctnk2.getQueryOr()); } if (ctnk2.getQueryNot() != null && !"".equals(ctnk2.getQueryNot())) { si.setNot(ctnk2.getQueryNot()); } return si ; } public String getStrDate(String backDay) { Calendar calendar = Calendar.getInstance() ; calendar.add(Calendar.DATE, Integer.parseInt("-" + backDay)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ; String back = sdf.format(calendar.getTime()) ; return back ; } public ClassPersonalManager getClassPersonalManager() { return classPersonalManager; } public void setClassPersonalManager(ClassPersonalManager classPersonalManager) { this.classPersonalManager = classPersonalManager; } public Integer getOrder() { return order; } public void setOrder(Integer order) { this.order = order; } public String getQueryValue() { return queryValue; } public void setQueryValue(String queryValue) { this.queryValue = queryValue; } public SearchManager getSearchManager() { return searchManager; } public void setSearchManager(SearchManager searchManager) { this.searchManager = searchManager; } public CacheCountManager getCacheCountManager() { return cacheCountManager; } public void setCacheCountManager(CacheCountManager cacheCountManager) { this.cacheCountManager = cacheCountManager; } }
时间: 2024-10-08 17:37:52