Prechádzať zdrojové kódy

add subtask controller

supeng 1 deň pred
rodič
commit
028e6444e9

+ 8 - 0
supply-demand-engine-core/src/main/java/com/tzld/piaoquan/supply/demand/engine/common/enums/SubTaskTypeEnum.java

@@ -19,4 +19,12 @@ public enum SubTaskTypeEnum {
         this.value = value;
         this.desc = desc;
     }
+    public static SubTaskTypeEnum getInstance(Integer value) {
+        for (SubTaskTypeEnum subTaskTypeEnum : SubTaskTypeEnum.values()) {
+            if (subTaskTypeEnum.getValue().equals(value)) {
+                return subTaskTypeEnum;
+            }
+        }
+        return null;
+    }
 }

+ 20 - 0
supply-demand-engine-core/src/main/java/com/tzld/piaoquan/supply/demand/engine/model/param/SubTaskGetParam.java

@@ -0,0 +1,20 @@
+package com.tzld.piaoquan.supply.demand.engine.model.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 子任务创建参数
+ *
+ * @author supeng
+ */
+@Data
+public class SubTaskGetParam {
+    /**
+     * 子任务ID
+     */
+    @NotNull(message = "子任务ID不能为空")
+    private Long id;
+
+}

+ 38 - 0
supply-demand-engine-core/src/main/java/com/tzld/piaoquan/supply/demand/engine/model/param/SubTaskListParam.java

@@ -0,0 +1,38 @@
+package com.tzld.piaoquan.supply.demand.engine.model.param;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 任务创建参数
+ *
+ * @author supeng
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SubTaskListParam extends PageParam {
+    /**
+     * 父任务ID,关联 sd_task.id
+     */
+    private Long taskId;
+    /**
+     * 子任务业务编号,用于异步回调时的精确匹配 & 对外暴露
+     */
+    private String subTaskNo;
+    /**
+     * 子任务类型:1 DECONSTRUCT(解构), 2 CLUSTER(聚类)
+     *
+     * @see com.tzld.piaoquan.supply.demand.engine.common.enums.SubTaskTypeEnum
+     */
+    private Integer subTaskType;
+    /**
+     * 执行状态:0 INIT, 1 SUBMITTED(已提交), 2 RUNNING(运行中), 3 SUCCESS, 4 FAILED 5 TIMEOUT
+     *
+     * @see com.tzld.piaoquan.supply.demand.engine.common.enums.SubTaskStatusEnum
+     */
+    private Integer taskStatus;
+    /**
+     * 第三方服务的JobID
+     */
+    private String externalJobId;
+}

+ 60 - 0
supply-demand-engine-core/src/main/java/com/tzld/piaoquan/supply/demand/engine/model/vo/SdSubTaskVO.java

@@ -0,0 +1,60 @@
+package com.tzld.piaoquan.supply.demand.engine.model.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 供需子任务表
+ *
+ * @author supeng
+ */
+@Data
+public class SdSubTaskVO {
+    /**
+     * 主键ID
+     */
+    private Long id;
+    /**
+     * 父任务ID,关联 sd_task.id
+     */
+    private Long taskId;
+    /**
+     * 子任务业务编号,用于异步回调时的精确匹配 & 对外暴露
+     */
+    private String subTaskNo;
+    /**
+     * 子任务类型:1 DECONSTRUCT(解构), 2 CLUSTER(聚类)
+     *
+     * @see com.tzld.piaoquan.supply.demand.engine.common.enums.SubTaskTypeEnum
+     */
+    private Integer subTaskType;
+    private String subTaskTypeLabel;
+    /**
+     * 执行状态:0 INIT, 1 SUBMITTED(已提交), 2 RUNNING(运行中), 3 SUCCESS, 4 FAILED 5 TIMEOUT
+     *
+     * @see com.tzld.piaoquan.supply.demand.engine.common.enums.SubTaskStatusEnum
+     */
+    private Integer taskStatus;
+    private String taskStatusLabel;
+    /**
+     * 第三方服务的JobID
+     */
+    private String externalJobId;
+    /**
+     * 执行失败时的错误详细描述
+     */
+    private String errorMsg;
+    /**
+     * 记录创建时间,由数据库自动生成
+     */
+    private Date createTime;
+    /**
+     * 记录最后更新时间,由数据库自动维护
+     */
+    private Date updateTime;
+    /**
+     * 逻辑删除标记:0-正常状态,1-已删除
+     */
+    private Integer isDeleted;
+}

+ 38 - 0
supply-demand-engine-core/src/main/java/com/tzld/piaoquan/supply/demand/engine/service/SubTaskService.java

@@ -0,0 +1,38 @@
+package com.tzld.piaoquan.supply.demand.engine.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.tzld.piaoquan.supply.demand.engine.common.base.CommonRequest;
+import com.tzld.piaoquan.supply.demand.engine.model.param.SubTaskGetParam;
+import com.tzld.piaoquan.supply.demand.engine.model.param.SubTaskListParam;
+import com.tzld.piaoquan.supply.demand.engine.model.po.SdSubTask;
+import com.tzld.piaoquan.supply.demand.engine.model.vo.SdSubTaskVO;
+
+/**
+ * @author supeng
+ */
+public interface SubTaskService {
+
+    /**
+     * 任务列表
+     *
+     * @param request
+     */
+    Page<SdSubTaskVO> list(CommonRequest<SubTaskListParam> request);
+
+    /**
+     * 获取任务信息
+     *
+     * @param request
+     */
+    SdSubTask get(CommonRequest<SubTaskGetParam> request);
+
+    /**
+     * 子任务提交
+     */
+    void subTaskSubmitHandler();
+
+    /**
+     * 更新子任务状态/结果同步
+     */
+    void subTaskSyncHandler();
+}

+ 0 - 4
supply-demand-engine-core/src/main/java/com/tzld/piaoquan/supply/demand/engine/service/TaskService.java

@@ -31,10 +31,6 @@ public interface TaskService {
      */
     SdTask get(CommonRequest<TaskGetParam> request);
 
-    void subTaskSubmitHandler();
-
-    void subTaskSyncHandler();
-
     void taskStatusCheckHandler();
 
     void taskExecuteHandler();

+ 92 - 0
supply-demand-engine-core/src/main/java/com/tzld/piaoquan/supply/demand/engine/service/impl/SubTaskServiceImpl.java

@@ -0,0 +1,92 @@
+package com.tzld.piaoquan.supply.demand.engine.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.tzld.piaoquan.supply.demand.engine.common.base.CommonRequest;
+import com.tzld.piaoquan.supply.demand.engine.common.enums.IsDeleteEnum;
+import com.tzld.piaoquan.supply.demand.engine.common.enums.SubTaskTypeEnum;
+import com.tzld.piaoquan.supply.demand.engine.common.enums.TaskStatusEnum;
+import com.tzld.piaoquan.supply.demand.engine.dao.mapper.SdSubTaskMapper;
+import com.tzld.piaoquan.supply.demand.engine.model.param.SubTaskGetParam;
+import com.tzld.piaoquan.supply.demand.engine.model.param.SubTaskListParam;
+import com.tzld.piaoquan.supply.demand.engine.model.param.TaskGetParam;
+import com.tzld.piaoquan.supply.demand.engine.model.po.SdSubTask;
+import com.tzld.piaoquan.supply.demand.engine.model.po.SdTask;
+import com.tzld.piaoquan.supply.demand.engine.model.vo.SdSubTaskVO;
+import com.tzld.piaoquan.supply.demand.engine.service.SubTaskService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Objects;
+
+/**
+ * @author supeng
+ */
+@Slf4j
+@Service
+public class SubTaskServiceImpl implements SubTaskService {
+
+    @Autowired
+    private SdSubTaskMapper sdSubTaskMapper;
+
+    @Override
+    public Page<SdSubTaskVO> list(CommonRequest<SubTaskListParam> request) {
+        SubTaskListParam params = request.getParams();
+        int pageNo = params.getPageNo();
+        int pageSize = params.getPageSize();
+        Long taskId = params.getTaskId();
+        String subTaskNo = params.getSubTaskNo();
+        Integer taskStatus = params.getTaskStatus();
+        Integer subTaskType = params.getSubTaskType();
+        String externalJobId = params.getExternalJobId();
+
+        LambdaQueryWrapper<SdSubTask> wrapper = Wrappers.lambdaQuery(SdSubTask.class)
+                .eq(Objects.nonNull(taskId), SdSubTask::getTaskId, taskId)
+                .eq(Objects.nonNull(subTaskNo), SdSubTask::getSubTaskNo, subTaskNo)
+                .eq(Objects.nonNull(taskStatus), SdSubTask::getTaskStatus, taskStatus)
+                .eq(Objects.nonNull(subTaskType), SdSubTask::getSubTaskType, subTaskType)
+                .eq(Objects.nonNull(externalJobId), SdSubTask::getExternalJobId, externalJobId)
+                .eq(SdSubTask::getIsDeleted, IsDeleteEnum.NORMAL.getValue())
+                .orderByDesc(SdSubTask::getId);
+
+        Page<SdSubTask> page = new Page<>(pageNo, pageSize);
+        Page<SdSubTask> pageList = sdSubTaskMapper.selectPage(page, wrapper);
+        Page<SdSubTaskVO> pageVO = new Page<>();
+        if (Objects.isNull(pageList) || pageList.getTotal() == 0) {
+            return pageVO;
+        }
+        for (SdSubTask sdSubTask : pageList.getRecords()) {
+            SdSubTaskVO sdSubTaskVO = new SdSubTaskVO();
+            BeanUtils.copyProperties(sdSubTask, sdSubTaskVO);
+            SubTaskTypeEnum subTaskTypeEnum = SubTaskTypeEnum.getInstance(sdSubTask.getSubTaskType());
+            if (Objects.nonNull(subTaskTypeEnum)) {
+                sdSubTaskVO.setSubTaskTypeLabel(subTaskTypeEnum.getDesc());
+            }
+            TaskStatusEnum taskStatusEnum = TaskStatusEnum.getInstance(sdSubTask.getTaskStatus());
+            if (Objects.nonNull(taskStatusEnum)) {
+                sdSubTaskVO.setTaskStatusLabel(taskStatusEnum.getDesc());
+            }
+            pageVO.getRecords().add(sdSubTaskVO);
+        }
+        return pageVO;
+    }
+
+    @Override
+    public SdSubTask get(CommonRequest<SubTaskGetParam> request) {
+        Long id = request.getParams().getId();
+        return sdSubTaskMapper.selectById(id);
+    }
+
+    @Override
+    public void subTaskSubmitHandler() {
+
+    }
+
+    @Override
+    public void subTaskSyncHandler() {
+
+    }
+}

+ 4 - 16
supply-demand-engine-core/src/main/java/com/tzld/piaoquan/supply/demand/engine/service/impl/TaskServiceImpl.java

@@ -97,8 +97,7 @@ public class TaskServiceImpl implements TaskService {
                 .eq(Objects.nonNull(strategyId), SdTask::getStrategyId, strategyId)
                 .like(Objects.nonNull(taskName) && !taskName.isEmpty(), SdTask::getTaskName, taskName)
                 .eq(SdTask::getIsDeleted, IsDeleteEnum.NORMAL.getValue())
-                .orderByDesc(SdTask::getId)
-                .select(SdTask::getId, SdTask::getTaskNo, SdTask::getTaskName, SdTask::getTaskType);
+                .orderByDesc(SdTask::getId);
 
         Page<SdTask> page = new Page<>(pageNo, pageSize);
         Page<SdTask> pageList = sdTaskMapper.selectPage(page, wrapper);
@@ -112,15 +111,15 @@ public class TaskServiceImpl implements TaskService {
         for (SdTask sdTask : pageList.getRecords()) {
             SdTaskVO sdTaskVO = new SdTaskVO();
             BeanUtils.copyProperties(sdTask, sdTaskVO);
-            TaskTypeEnum taskTypeEnum = TaskTypeEnum.getInstance(sdTaskVO.getTaskType());
+            TaskTypeEnum taskTypeEnum = TaskTypeEnum.getInstance(sdTask.getTaskType());
             if (Objects.nonNull(taskTypeEnum)) {
                 sdTaskVO.setTaskTypeLabel(taskTypeEnum.getDesc());
             }
-            TaskStatusEnum taskStatusEnum = TaskStatusEnum.getInstance(sdTaskVO.getTaskStatus());
+            TaskStatusEnum taskStatusEnum = TaskStatusEnum.getInstance(sdTask.getTaskStatus());
             if (Objects.nonNull(taskStatusEnum)) {
                 sdTaskVO.setTaskStatusLabel(taskStatusEnum.getDesc());
             }
-            String strategyName = strategyMap.get(sdTaskVO.getStrategyId());
+            String strategyName = strategyMap.get(sdTask.getStrategyId());
             if (Objects.nonNull(strategyName)) {
                 sdTaskVO.setStrategyName(strategyName);
             }
@@ -135,17 +134,6 @@ public class TaskServiceImpl implements TaskService {
         return sdTaskMapper.selectById(id);
     }
 
-
-    @Override
-    public void subTaskSubmitHandler() {
-
-    }
-
-    @Override
-    public void subTaskSyncHandler() {
-
-    }
-
     @Override
     public void taskStatusCheckHandler() {
 

+ 8 - 4
supply-demand-engine-job/src/main/java/com/tzld/piaoquan/supply/demand/engine/job/TaskJob.java

@@ -1,5 +1,6 @@
 package com.tzld.piaoquan.supply.demand.engine.job;
 
+import com.tzld.piaoquan.supply.demand.engine.service.SubTaskService;
 import com.tzld.piaoquan.supply.demand.engine.service.TaskService;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
@@ -18,8 +19,11 @@ public class TaskJob {
     @Autowired
     private TaskService taskService;
 
+    @Autowired
+    private SubTaskService subTaskService;
+
     /**
-     * 子任务提交
+     * 定时提交子任务
      *
      * @param params
      * @return
@@ -28,7 +32,7 @@ public class TaskJob {
     public ReturnT<String> subTaskSubmitHandler(String params) {
         XxlJobLogger.log("subTaskSubmitHandler start");
         try {
-            taskService.subTaskSubmitHandler();
+            subTaskService.subTaskSubmitHandler();
         } catch (Exception e) {
             XxlJobLogger.log("subTaskSubmitHandler error", e);
             return ReturnT.FAIL;
@@ -39,7 +43,7 @@ public class TaskJob {
     }
 
     /**
-     * 子任务状态/结果同步
+     * 定时更新子任务状态/结果同步
      *
      * @param params
      * @return
@@ -48,7 +52,7 @@ public class TaskJob {
     public ReturnT<String> subTaskSyncHandler(String params) {
         XxlJobLogger.log("subTaskSyncHandler start");
         try {
-            taskService.subTaskSyncHandler();
+            subTaskService.subTaskSyncHandler();
         } catch (Exception e) {
             XxlJobLogger.log("subTaskSyncHandler error", e);
             return ReturnT.FAIL;

+ 51 - 0
supply-demand-engine-service/src/main/java/com/tzld/piaoquan/supply/demand/engine/controller/SubTaskController.java

@@ -0,0 +1,51 @@
+package com.tzld.piaoquan.supply.demand.engine.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.tzld.piaoquan.supply.demand.engine.common.base.CommonRequest;
+import com.tzld.piaoquan.supply.demand.engine.common.base.CommonResponse;
+import com.tzld.piaoquan.supply.demand.engine.model.param.*;
+import com.tzld.piaoquan.supply.demand.engine.model.po.SdSubTask;
+import com.tzld.piaoquan.supply.demand.engine.model.po.SdTask;
+import com.tzld.piaoquan.supply.demand.engine.model.vo.SdSubTaskVO;
+import com.tzld.piaoquan.supply.demand.engine.model.vo.SdTaskVO;
+import com.tzld.piaoquan.supply.demand.engine.service.SubTaskService;
+import com.tzld.piaoquan.supply.demand.engine.service.TaskService;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * @author supeng
+ */
+@Slf4j
+@RestController
+@RequestMapping("/sub/task")
+public class SubTaskController {
+
+    @Autowired
+    private SubTaskService subTaskService;
+
+    @ApiOperation(value = "创建任务", notes = "创建任务")
+    @PostMapping("/create")
+    public CommonResponse<Void> create(@RequestBody CommonRequest<TaskCreateParam> request) {
+//        subTaskService.create(request);
+        return CommonResponse.create();
+    }
+
+    @ApiOperation(value = "获取任务信息", notes = "获取任务信息")
+    @PostMapping("/list")
+    public CommonResponse<Page<SdSubTaskVO>> list(@RequestBody CommonRequest<SubTaskListParam> request) {
+        return CommonResponse.create(subTaskService.list(request));
+    }
+
+    @ApiOperation(value = "获取任务信息", notes = "获取任务信息")
+    @PostMapping("/get")
+    public CommonResponse<SdSubTask> get(@RequestBody CommonRequest<SubTaskGetParam> request) {
+        return CommonResponse.create(subTaskService.get(request));
+    }
+}

+ 0 - 5
supply-demand-engine-service/src/main/java/com/tzld/piaoquan/supply/demand/engine/controller/TaskController.java

@@ -3,9 +3,6 @@ package com.tzld.piaoquan.supply.demand.engine.controller;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.tzld.piaoquan.supply.demand.engine.common.base.CommonRequest;
 import com.tzld.piaoquan.supply.demand.engine.common.base.CommonResponse;
-import com.tzld.piaoquan.supply.demand.engine.common.enums.ExceptionEnum;
-import com.tzld.piaoquan.supply.demand.engine.common.exception.CommonException;
-import com.tzld.piaoquan.supply.demand.engine.model.dto.BaseInfoDTO;
 import com.tzld.piaoquan.supply.demand.engine.model.param.TaskCreateParam;
 import com.tzld.piaoquan.supply.demand.engine.model.param.TaskGetParam;
 import com.tzld.piaoquan.supply.demand.engine.model.param.TaskListParam;
@@ -20,8 +17,6 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Map;
-
 /**
  *
  * @author supeng