|
@@ -0,0 +1,122 @@
|
|
|
+package com.jihengbel.intelligent.applicationtask.init;
|
|
|
+
|
|
|
+import com.jihengbel.intelligent.applicationtask.common.CommonUtil;
|
|
|
+import com.jihengbel.intelligent.applicationtask.entry.FirstCalendar;
|
|
|
+import com.jihengbel.intelligent.applicationtask.entry.FirstTask;
|
|
|
+import com.jihengbel.intelligent.applicationtask.entry.OnsiteCalendar;
|
|
|
+import com.jihengbel.intelligent.applicationtask.service.FirstTaskService;
|
|
|
+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.FutureTask;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 首件任务定时器
|
|
|
+ */
|
|
|
+@DisallowConcurrentExecution
|
|
|
+public class FirstTaskJob implements Job {
|
|
|
+ private static Logger log = LoggerFactory.getLogger(FirstTaskJob.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(getFirstFutureTask(paramMap));
|
|
|
+ tasks.add(get200FutureTask(paramMap));
|
|
|
+ try {
|
|
|
+ for (FutureTask<Integer> t : tasks) {
|
|
|
+ t.get();
|
|
|
+ }//等等所有线程结束
|
|
|
+ } catch (Throwable e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * day
|
|
|
+ *
|
|
|
+ * @param paramMap
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private FutureTask<Integer> getFirstFutureTask(ConcurrentMap<String, Object> paramMap) {
|
|
|
+ HashMap param = new HashMap();
|
|
|
+ param.put("type_flag", 0);
|
|
|
+ FutureTask<Integer> task = new FutureTask<Integer>(new addTask(paramMap, param));
|
|
|
+ Thread thread = new Thread(task);
|
|
|
+ thread.start(); //开启线程
|
|
|
+ return task;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 200
|
|
|
+ *
|
|
|
+ * @param paramMap
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private FutureTask<Integer> get200FutureTask(ConcurrentMap<String, Object> paramMap) {
|
|
|
+ HashMap param = new HashMap();
|
|
|
+ param.put("type_flag", 1);
|
|
|
+ FutureTask<Integer> task = new FutureTask<Integer>(new addTask(paramMap, param));
|
|
|
+ Thread thread = new Thread(task);
|
|
|
+ thread.start(); //开启线程
|
|
|
+ return task;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生产任务
|
|
|
+ */
|
|
|
+ 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 {
|
|
|
+ FirstTaskService firstTaskService = (FirstTaskService) paramMap.get("firstTaskService");
|
|
|
+ String td = CommonUtil.getDateStr(new Date(), "yyyy-MM-dd");
|
|
|
+ List<FirstCalendar> cals = firstTaskService.getCalenderFirstForType(paramQuery);
|
|
|
+ for (FirstCalendar cal : cals) {
|
|
|
+ try {
|
|
|
+ FirstTask task = new FirstTask();
|
|
|
+ task.setTask_time(td);
|
|
|
+ task.setFirst_article_calendar_id(cal.getId());
|
|
|
+ firstTaskService.insertFirstTask(task);
|
|
|
+ } catch (Throwable e) {
|
|
|
+ e.getStackTrace();
|
|
|
+ log.error(e.getStackTrace().toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|