|
@@ -0,0 +1,138 @@
|
|
|
+package com.jihengbel.intelligent.applicationtask.init;
|
|
|
+
|
|
|
+import com.jihengbel.intelligent.applicationtask.common.CommonUtil;
|
|
|
+import com.jihengbel.intelligent.applicationtask.entry.OnsiteCalendar;
|
|
|
+import com.jihengbel.intelligent.applicationtask.entry.OnsiteTask;
|
|
|
+import com.jihengbel.intelligent.applicationtask.service.OnsiteTaskService;
|
|
|
+import org.quartz.DisallowConcurrentExecution;
|
|
|
+import org.quartz.Job;
|
|
|
+import org.quartz.JobExecutionContext;
|
|
|
+import org.quartz.JobExecutionException;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.concurrent.Callable;
|
|
|
+import java.util.concurrent.ConcurrentMap;
|
|
|
+import java.util.concurrent.ExecutionException;
|
|
|
+import java.util.concurrent.FutureTask;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * 生产任务job
|
|
|
+ */
|
|
|
+@DisallowConcurrentExecution
|
|
|
+public class OnsiteTaskJob implements Job {
|
|
|
+ private static Logger log = LoggerFactory.getLogger(OnsiteTaskJob.class);
|
|
|
+ @Override
|
|
|
+ public void execute(JobExecutionContext context) throws JobExecutionException {
|
|
|
+ ConcurrentMap<String,Object> paramMap=(ConcurrentMap<String,Object>)context.getJobDetail().getJobDataMap().get(QuartzManager.JOB_PARAM_NAME);
|
|
|
+ createTask(paramMap);// 执行任务
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建Task主方法
|
|
|
+ * @param paramMap
|
|
|
+ */
|
|
|
+ public void createTask(ConcurrentMap<String,Object> paramMap) {
|
|
|
+ Integer result=0;//没什么意义只是为了不出现整体并行
|
|
|
+ List< FutureTask<Integer>> tasks=new ArrayList<>();
|
|
|
+ tasks.add( getDayFutureTask(paramMap));
|
|
|
+ tasks.add( getWeekFutureTask(paramMap));
|
|
|
+ tasks.add( getMonthFutureTask(paramMap));
|
|
|
+ try{
|
|
|
+ for(FutureTask<Integer> t:tasks){
|
|
|
+ t.get();
|
|
|
+ }//等等所有线程结束
|
|
|
+ }catch (Throwable e){
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * day
|
|
|
+ * @param paramMap
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private FutureTask<Integer> getDayFutureTask(ConcurrentMap<String, Object> paramMap) {
|
|
|
+ HashMap param = new HashMap();
|
|
|
+ param.put("type_flag",0);
|
|
|
+ FutureTask<Integer> dayTask = new FutureTask<Integer>(new addTask(paramMap,param));
|
|
|
+ Thread thread = new Thread(dayTask);
|
|
|
+ thread.start(); //开启线程
|
|
|
+ return dayTask;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * week
|
|
|
+ * @param paramMap
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private FutureTask<Integer> getWeekFutureTask(ConcurrentMap<String, Object> paramMap) {
|
|
|
+ HashMap param = new HashMap();
|
|
|
+ param.put("type_flag",1);
|
|
|
+ param.put("week_day",CommonUtil.getWeekOfDate(new Date()));
|
|
|
+ FutureTask<Integer> weekTask = new FutureTask<Integer>(new addTask(paramMap,param));
|
|
|
+ Thread thread = new Thread(weekTask);
|
|
|
+ thread.start(); //开启线程
|
|
|
+ return weekTask;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * month
|
|
|
+ * @param paramMap
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private FutureTask<Integer> getMonthFutureTask(ConcurrentMap<String, Object> paramMap) {
|
|
|
+ HashMap param = new HashMap();
|
|
|
+ param.put("type_flag",2);
|
|
|
+ param.put("month_day",CommonUtil.getMonthOfDate(new Date()));
|
|
|
+ FutureTask<Integer> monthTask = new FutureTask<Integer>(new addTask(paramMap,param));
|
|
|
+ Thread thread = new Thread(monthTask);
|
|
|
+ thread.start(); //开启线程
|
|
|
+ return monthTask;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生产任务
|
|
|
+ */
|
|
|
+ public class addTask implements Callable<Integer> {
|
|
|
+
|
|
|
+ private ConcurrentMap<String, Object> paramMap;
|
|
|
+ private HashMap paramQuery;
|
|
|
+
|
|
|
+
|
|
|
+ public addTask(ConcurrentMap<String, Object> paramMap,HashMap paramQuery) {
|
|
|
+ this.paramMap = paramMap;
|
|
|
+ this.paramQuery= paramQuery;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer call() throws Exception {
|
|
|
+ OnsiteTaskService onsiteTaskService=(OnsiteTaskService)paramMap.get("onsiteTaskService");
|
|
|
+ String td= CommonUtil.getDateStr(new Date(),"yyyy-MM-dd");
|
|
|
+ List<OnsiteCalendar> cals=onsiteTaskService.getCalenderOnsitesForType(paramQuery);
|
|
|
+ for(OnsiteCalendar cal:cals){
|
|
|
+ try{
|
|
|
+ OnsiteTask task=new OnsiteTask();
|
|
|
+ task.setTask_time(td);
|
|
|
+ task.setOnsite_calendar_id(cal.getId());
|
|
|
+ onsiteTaskService.insertOnsiteTask(task);
|
|
|
+ }catch (Throwable e){
|
|
|
+ log.error(e.getStackTrace().toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|