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