From f27cb0d1c566579b272177b49fafd7a4fc558ebd Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期一, 07 十二月 2020 17:59:23 +0800
Subject: [PATCH] 加入databus 功能
---
service-job/src/main/java/com/java110/job/smo/impl/TaskInnerServiceSMOImpl.java | 200 +++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 190 insertions(+), 10 deletions(-)
diff --git a/service-job/src/main/java/com/java110/job/smo/impl/TaskInnerServiceSMOImpl.java b/service-job/src/main/java/com/java110/job/smo/impl/TaskInnerServiceSMOImpl.java
index 10948ea..6bacb97 100644
--- a/service-job/src/main/java/com/java110/job/smo/impl/TaskInnerServiceSMOImpl.java
+++ b/service-job/src/main/java/com/java110/job/smo/impl/TaskInnerServiceSMOImpl.java
@@ -1,20 +1,38 @@
package com.java110.job.smo.impl;
-import com.java110.job.dao.ITaskServiceDao;
-import com.java110.core.smo.task.ITaskInnerServiceSMO;
-import com.java110.dto.task.TaskDto;
-import com.java110.utils.util.BeanConvertUtil;
import com.java110.core.base.smo.BaseServiceSMO;
-import com.java110.dto.user.UserDto;
-import com.java110.core.smo.user.IUserInnerServiceSMO;
+import com.java110.intf.job.ITaskInnerServiceSMO;
+import com.java110.intf.user.IUserInnerServiceSMO;
import com.java110.dto.PageDto;
+import com.java110.dto.task.TaskDto;
+import com.java110.dto.task.TaskTemplateDto;
+import com.java110.dto.task.TaskTemplateSpecDto;
+import com.java110.dto.taskAttr.TaskAttrDto;
+import com.java110.dto.user.UserDto;
+import com.java110.job.dao.ITaskAttrServiceDao;
+import com.java110.job.dao.ITaskServiceDao;
+import com.java110.job.quartz.TaskSystemJob;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import org.quartz.CronScheduleBuilder;
+import org.quartz.CronTrigger;
+import org.quartz.JobBuilder;
+import org.quartz.JobDetail;
+import org.quartz.JobKey;
+import org.quartz.Scheduler;
+import org.quartz.TriggerBuilder;
+import org.quartz.TriggerKey;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* @ClassName FloorInnerServiceSMOImpl
@@ -27,14 +45,28 @@
@RestController
public class TaskInnerServiceSMOImpl extends BaseServiceSMO implements ITaskInnerServiceSMO {
+ private static final Logger logger = LoggerFactory.getLogger(TaskInnerServiceSMOImpl.class);
+
+ private static final String defaultCronExpression = "0 * * * * ?";// 姣忓垎閽熸墽琛屼竴娆�
+
+ private static final String prefixJobName = "task_"; // job
+ private static final String triggerNames = "taskToData_"; // job
+
+ @Autowired
+ private Scheduler scheduler;
+
+
@Autowired
private ITaskServiceDao taskServiceDaoImpl;
+
+ @Autowired
+ private ITaskAttrServiceDao taskAttrServiceDaoImpl;
@Autowired
private IUserInnerServiceSMO userInnerServiceSMOImpl;
@Override
- public List<TaskDto> queryTasks(@RequestBody TaskDto taskDto) {
+ public List<TaskDto> queryTasks(@RequestBody TaskDto taskDto) {
//鏍¢獙鏄惁浼犱簡 鍒嗛〉淇℃伅
@@ -63,7 +95,7 @@
/**
* 浠庣敤鎴峰垪琛ㄤ腑鏌ヨ鐢ㄦ埛锛屽皢鐢ㄦ埛涓殑淇℃伅 鍒锋柊鍒� floor瀵硅薄涓�
*
- * @param task 灏忓尯瀹氭椂浠诲姟淇℃伅
+ * @param task 灏忓尯瀹氭椂浠诲姟淇℃伅
* @param users 鐢ㄦ埛鍒楄〃
*/
private void refreshTask(TaskDto task, List<UserDto> users) {
@@ -80,7 +112,7 @@
* @param tasks 灏忓尯妤间俊鎭�
* @return 鎵归噺userIds 淇℃伅
*/
- private String[] getUserIds(List<TaskDto> tasks) {
+ private String[] getUserIds(List<TaskDto> tasks) {
List<String> userIds = new ArrayList<String>();
for (TaskDto task : tasks) {
userIds.add(task.getTaskId());
@@ -91,7 +123,155 @@
@Override
public int queryTasksCount(@RequestBody TaskDto taskDto) {
- return taskServiceDaoImpl.queryTasksCount(BeanConvertUtil.beanCovertMap(taskDto)); }
+ return taskServiceDaoImpl.queryTasksCount(BeanConvertUtil.beanCovertMap(taskDto));
+ }
+
+
+ @Override
+ public int queryTaskTemplateCount(@RequestBody TaskTemplateDto taskTemplateDto) {
+ return taskServiceDaoImpl.queryTaskTemplateCount(BeanConvertUtil.beanCovertMap(taskTemplateDto));
+ }
+
+
+ @Override
+ public List<TaskTemplateDto> queryTaskTemplate(@RequestBody TaskTemplateDto taskTemplateDto) {
+
+ //鏍¢獙鏄惁浼犱簡 鍒嗛〉淇℃伅
+
+ int page = taskTemplateDto.getPage();
+
+ if (page != PageDto.DEFAULT_PAGE) {
+ taskTemplateDto.setPage((page - 1) * taskTemplateDto.getRow());
+ }
+
+ List<TaskTemplateDto> taskTemplates = BeanConvertUtil.covertBeanList(taskServiceDaoImpl.getTaskTemplateInfo(BeanConvertUtil.beanCovertMap(taskTemplateDto)), TaskTemplateDto.class);
+
+ return taskTemplates;
+ }
+
+
+ @Override
+ public int queryTaskTemplateSpecCount(@RequestBody TaskTemplateSpecDto taskTemplateSpecDto) {
+ return taskServiceDaoImpl.queryTaskTemplateSpecCount(BeanConvertUtil.beanCovertMap(taskTemplateSpecDto));
+ }
+
+
+ @Override
+ public List<TaskTemplateSpecDto> queryTaskTemplateSpec(@RequestBody TaskTemplateSpecDto taskTemplateSpecDto) {
+
+ //鏍¢獙鏄惁浼犱簡 鍒嗛〉淇℃伅
+
+ int page = taskTemplateSpecDto.getPage();
+
+ if (page != PageDto.DEFAULT_PAGE) {
+ taskTemplateSpecDto.setPage((page - 1) * taskTemplateSpecDto.getRow());
+ }
+
+ List<TaskTemplateSpecDto> taskTemplates = BeanConvertUtil.covertBeanList(taskServiceDaoImpl.getTaskTemplateSpecInfo(BeanConvertUtil.beanCovertMap(taskTemplateSpecDto)), TaskTemplateSpecDto.class);
+
+ return taskTemplates;
+ }
+
+ /**
+ * 鍚姩浠诲姟
+ *
+ * @param taskDto
+ * @return
+ */
+ public int startTask(@RequestBody TaskDto taskDto) {
+ List<TaskAttrDto> attrDtos = BeanConvertUtil.covertBeanList(taskAttrServiceDaoImpl.getTaskAttrInfo(BeanConvertUtil.beanCovertMap(taskDto)),
+ TaskAttrDto.class);
+ Map info = new HashMap();
+ info.put("templateId", taskDto.getTemplateId());
+ List<TaskTemplateDto> taskTemplateDtos = BeanConvertUtil.covertBeanList(taskServiceDaoImpl.getTaskTemplateInfo(info), TaskTemplateDto.class);
+
+ Assert.listOnlyOne(taskTemplateDtos, "妯℃澘涓嶅瓨鍦ㄦ垨瀛樺湪澶氫釜");
+
+ taskDto.setTaskTemplateDto(taskTemplateDtos.get(0));
+ taskDto.setTaskAttr(attrDtos);
+
+ try {
+ String cronExpression = taskDto.getTaskCron();// 濡傛灉娌℃湁閰嶇疆鍒欙紝姣忎竴鍒嗚繍琛屼竴娆�
+
+ CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression);
+
+ String jobName = prefixJobName + taskDto.getTaskId();
+
+ String triggerName = triggerNames + taskDto.getTaskId();
+
+ //璁剧疆浠诲姟鍚嶇О
+ JobKey jobKey = new JobKey(jobName, TaskSystemJob.JOB_GROUP_NAME);
+ JobDetail jobDetail = scheduler.getJobDetail(jobKey);
+
+ if (jobDetail != null) {
+ return 0;
+ }
+
+ String taskCfgName = taskDto.getTaskName();
+ JobDetail warnJob = JobBuilder.newJob(TaskSystemJob.class).withIdentity(jobName, TaskSystemJob.JOB_GROUP_NAME).withDescription("浠诲姟鍚姩").build();
+
+ warnJob.getJobDataMap().put(TaskSystemJob.JOB_DATA_CONFIG_NAME, taskCfgName);
+
+ warnJob.getJobDataMap().put(TaskSystemJob.JOB_DATA_TASK_ID, taskDto.getTaskId());
+ warnJob.getJobDataMap().put(TaskSystemJob.JOB_DATA_TASK, taskDto);
+ warnJob.getJobDataMap().put(TaskSystemJob.JOB_DATA_TASK_ATTR, taskDto);
+
+ // 瑙﹀彂鏃堕棿鐐�
+ CronTrigger warnTrigger = TriggerBuilder.newTrigger().withIdentity(triggerName, triggerName + "_group").withSchedule(cronScheduleBuilder).build();
+
+ // 閿欒繃鎵ц鍚庯紝绔嬪嵆鎵ц
+ //warnTrigger(CronTrigger.MISFIRE_INSTRUCTION_FIRE_ONCE_NOW);
+ //浜ょ敱Scheduler瀹夋帓瑙﹀彂
+ scheduler.scheduleJob(warnJob, warnTrigger);
+ Map paramIn = new HashMap();
+ paramIn.put("taskId", taskDto.getTaskId());
+ paramIn.put("state", "002");
+ paramIn.put("statusCd", "0");
+ taskServiceDaoImpl.updateTaskInfoInstance(paramIn);
+
+ } catch (Exception e) {
+ logger.error("鍚姩渚﹀惉澶辫触", e);
+ return 0;
+ }
+ return 1;
+ }
+
+ /**
+ * 鍋滄浠诲姟
+ *
+ * @param taskDto
+ * @return
+ */
+ public int stopTask(@RequestBody TaskDto taskDto) {
+
+ try {
+ String jobName = prefixJobName + taskDto.getTaskId();
+
+ String triggerName = prefixJobName + taskDto.getTaskId();
+
+ TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TaskSystemJob.JOB_GROUP_NAME);
+ // 鍋滄瑙﹀彂鍣�
+ scheduler.pauseTrigger(triggerKey);
+ // 绉婚櫎瑙﹀彂鍣�
+ scheduler.unscheduleJob(triggerKey);
+
+ JobKey jobKey = new JobKey(jobName, TaskSystemJob.JOB_GROUP_NAME);
+ // 鍒犻櫎浠诲姟
+ scheduler.deleteJob(jobKey);
+
+ Map paramIn = new HashMap();
+ paramIn.put("taskId", taskDto.getTaskId());
+ paramIn.put("state", "001");
+ paramIn.put("statusCd", "0");
+ taskServiceDaoImpl.updateTaskInfoInstance(paramIn);
+
+ } catch (Exception e) {
+ logger.error("鍚姩渚﹀惉澶辫触", e);
+ return 0;
+ }
+ return 1;
+ }
+
public ITaskServiceDao getTaskServiceDaoImpl() {
return taskServiceDaoImpl;
--
Gitblit v1.8.0