Prechádzať zdrojové kódy

模型计算管理开发

ZhuDeKang 3 mesiacov pred
rodič
commit
f86b122068

+ 19 - 8
ruoyi-api-patform/src/main/java/com/ruoyi/interfaces/controller/MdFlowDispatchController.java

@@ -2,12 +2,12 @@ package com.ruoyi.interfaces.controller;
 
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.ExecutorName;
 import com.ruoyi.interfaces.domain.vo.MdFlowDispatchVo;
 import com.ruoyi.interfaces.service.IMdFlowDispatchService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 
 /**
@@ -20,14 +20,25 @@ public class MdFlowDispatchController extends BaseController {
     @Autowired
     IMdFlowDispatchService mdFlowDispatchService;
 
+    @GetMapping("/list")
+    public TableDataInfo list(MdFlowDispatchVo par) {
+        startPage();
+        return getDataTable(mdFlowDispatchService.selectFlowDispatch(par));
+    }
 
-    @PostMapping
-    public AjaxResult add(MdFlowDispatchVo flowDispatchVo){
-        mdFlowDispatchService.add(flowDispatchVo);
-
-        return success();
+    @GetMapping("/{id}")
+    public AjaxResult getInfo(@PathVariable String id) {
+        return success(mdFlowDispatchService.getInfo(id));
     }
 
 
+    @PostMapping
+    public AjaxResult add(@RequestBody MdFlowDispatchVo flowDispatchVo) {
+        flowDispatchVo.setExecutorInfo(ExecutorName.runFolwJob.toString());
+        flowDispatchVo.setCreateBy(getUsername());
+        flowDispatchVo.setJobName(flowDispatchVo.getFlowJobName());
+        return success(mdFlowDispatchService.add(flowDispatchVo));
+    }
+
 
 }

+ 122 - 1
ruoyi-api-patform/src/main/java/com/ruoyi/interfaces/domain/vo/MdFlowDispatchVo.java

@@ -1,9 +1,15 @@
 package com.ruoyi.interfaces.domain.vo;
 
 import com.aizuda.snailjob.model.request.base.JobRequest;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.github.pagehelper.util.StringUtil;
 import com.ruoyi.common.core.domain.BaseEntity;
+import com.ruoyi.common.utils.JsonUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.interfaces.domain.Job;
 
+import java.util.Date;
+import java.util.HashMap;
 import java.util.Map;
 
 public class MdFlowDispatchVo extends JobRequestVo {
@@ -12,17 +18,132 @@ public class MdFlowDispatchVo extends JobRequestVo {
      * 流程与job关联id
      */
     private String flowJobId;
+    private String flowJobName;
 
     /**
      * 流程id
      */
     private Long flowId;
 
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updateTime;
+
+    /**
+     * 责任人
+     */
+    private String chargeBy;
+    /**
+     * 联系方式
+     */
+    private String chargePhone;
     /**
      * 流程开始参数
      */
-    private Map<String,String> flowParam;
+    private Map<String, String> flowParam;
+
+    private String flowParamString;
+
+
+    /**
+     * 下次触发时间
+     */
+    private Long nextTriggerAt;
+
+    public Long getNextTriggerAt() {
+        return nextTriggerAt;
+    }
+
+    public void setNextTriggerAt(Long nextTriggerAt) {
+        this.nextTriggerAt = nextTriggerAt;
+    }
+
+    public String getFlowJobName() {
+        return flowJobName;
+    }
+
+    public void setFlowJobName(String flowJobName) {
+        this.flowJobName = flowJobName;
+    }
+
+    public void initFlowParam() {
+        if (StringUtil.isNotEmpty(flowParamString)) {
+            flowParam = JsonUtils.jsonToPojo(flowParamString, HashMap.class);
+        }
+    }
+
+    public String getChargeBy() {
+        return chargeBy;
+    }
+
+    public void setChargeBy(String chargeBy) {
+        this.chargeBy = chargeBy;
+    }
+
+    public String getChargePhone() {
+        return chargePhone;
+    }
+
+    public void setChargePhone(String chargePhone) {
+        this.chargePhone = chargePhone;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
 
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getFlowParamString() {
+        if (StringUtils.isEmpty(flowParamString) && StringUtils.isNotEmpty(flowParam)) {
+            flowParamString = JsonUtils.objectToJson(flowParam);
+        }
+        return flowParamString;
+    }
 
 
     public MdFlowDispatchVo() {

+ 18 - 0
ruoyi-api-patform/src/main/java/com/ruoyi/interfaces/mapper/MdFlowDispatchMapper.java

@@ -0,0 +1,18 @@
+package com.ruoyi.interfaces.mapper;
+
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import com.ruoyi.interfaces.domain.vo.MdFlowDispatchVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+@DataSource(DataSourceType.SLAVE)
+public interface MdFlowDispatchMapper {
+    Long insertMdFlowJob(MdFlowDispatchVo jobRequest);
+
+    List<MdFlowDispatchVo> selectFlowDispatch(MdFlowDispatchVo par);
+
+    MdFlowDispatchVo getInfo(String id);
+}

+ 7 - 1
ruoyi-api-patform/src/main/java/com/ruoyi/interfaces/service/IMdFlowDispatchService.java

@@ -2,6 +2,12 @@ package com.ruoyi.interfaces.service;
 
 import com.ruoyi.interfaces.domain.vo.MdFlowDispatchVo;
 
+import java.util.List;
+
 public interface IMdFlowDispatchService {
-    int add(MdFlowDispatchVo flowDispatchVo);
+    Long add(MdFlowDispatchVo flowDispatchVo);
+
+    List<MdFlowDispatchVo> selectFlowDispatch(MdFlowDispatchVo par);
+
+    MdFlowDispatchVo getInfo(String id);
 }

+ 56 - 3
ruoyi-api-patform/src/main/java/com/ruoyi/interfaces/service/impl/MdFlowDispatchServiceImpl.java

@@ -1,19 +1,72 @@
 package com.ruoyi.interfaces.service.impl;
 
 import com.aizuda.snailjob.client.job.core.openapi.SnailJobOpenApi;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.JsonUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.interfaces.domain.vo.MdFlowDispatchVo;
+import com.ruoyi.interfaces.mapper.MdFlowDispatchMapper;
 import com.ruoyi.interfaces.service.IMdFlowDispatchService;
+import com.ruoyi.interfaces.service.SnailJobService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+
 @Service
 public class MdFlowDispatchServiceImpl implements IMdFlowDispatchService {
 
+    @Autowired
+    private SnailJobService snailJobService;
+
+    @Autowired
+    private MdFlowDispatchMapper flowDispatchMapper;
+
+    @Override
+    public Long add(MdFlowDispatchVo jobRequest) {
+        HashMap<String, Object> argsMap = new HashMap<>();
+        argsMap.put("flowId", jobRequest.getFlowId());
+        argsMap.put("flowParam", jobRequest.getFlowParam());
+
 
+        jobRequest.setArgsStrMap(argsMap);
+
+        Long jobId = null;
+        switch (jobRequest.getTaskType()) {
+            case 1:
+                jobId = snailJobService.addClusterJob(jobRequest);
+                break;
+            case 2:
+                jobId = snailJobService.addBroadcastJob(jobRequest);
+                break;
+            case 3:
+                jobId = snailJobService.addShardingJob(jobRequest);
+                break;
+            case 4:
+                jobId = snailJobService.addMapJob(jobRequest);
+                break;
+            case 5:
+                jobId = snailJobService.addMapReduceJob(jobRequest);
+                break;
+        }
+        jobRequest.setId(jobId);
+        jobRequest.setCreateTime(DateUtils.getNowDate());
+        jobRequest.setFlowJobId(IdUtils.fastUUID());
+        return flowDispatchMapper.insertMdFlowJob(jobRequest);
+    }
 
     @Override
-    public int add(MdFlowDispatchVo flowDispatchVo) {
-        //SnailJobOpenApi.getJobDetail(jobId).execute();
+    public List<MdFlowDispatchVo> selectFlowDispatch(MdFlowDispatchVo par) {
 
-        return 0;
+        return flowDispatchMapper.selectFlowDispatch(par);
+    }
+
+    @Override
+    public MdFlowDispatchVo getInfo(String id) {
+        MdFlowDispatchVo info = flowDispatchMapper.getInfo(id);
+        info.initFlowParam();
+        return info;
     }
 }

+ 2 - 0
ruoyi-api-patform/src/main/java/com/ruoyi/interfaces/snailJob/flowJob.java

@@ -4,6 +4,7 @@ import com.agentsflex.core.chain.Chain;
 import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
 import com.aizuda.snailjob.client.job.core.dto.JobArgs;
 import com.aizuda.snailjob.model.dto.ExecuteResult;
+import com.ruoyi.common.enums.ExecutorName;
 import com.ruoyi.common.utils.JsonUtils;
 import com.ruoyi.interfaces.domain.MdAppFlow;
 import com.ruoyi.interfaces.service.IMdAppFlowService;
@@ -21,6 +22,7 @@ public class flowJob {
     private IMdAppFlowService  mdAppFlowService;
     @JobExecutor(name = "runFolwJob")
     public ExecuteResult runJob(JobArgs jobArgs) {
+
         System.out.println(jobArgs.getJobParams());
         MdAppFlow flowPar = JsonUtils.jsonToPojo(jobArgs.getJobParams().toString(), MdAppFlow.class);
         MdAppFlow mdAppFlow = mdAppFlowService.selectMdAppFlowByFlowId(flowPar.getFlowId());

+ 127 - 0
ruoyi-api-patform/src/main/resources/mapper/interfaces/MdFlowDispatchMapper.xml

@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.interfaces.mapper.MdFlowDispatchMapper">
+
+    <insert id="insertMdFlowJob">
+        insert into MD_FLOW_JOB(flow_job_id,
+                                flow_job_name,
+                                flow_id,
+                                id,
+                                flow_param_string,
+                                create_by,
+                                create_time,
+                                charge_by,
+                                charge_phone)
+        values (#{flowJobId,jdbcType=VARCHAR},
+                #{flowJobName,jdbcType=VARCHAR},
+                #{flowId,jdbcType=INTEGER},
+                #{id,jdbcType=INTEGER},
+                #{flowParamString,jdbcType=VARCHAR},
+                #{createBy,jdbcType=VARCHAR},
+                #{createTime,jdbcType=DATE},
+                #{chargeBy,jdbcType=VARCHAR},
+                #{chargePhone,jdbcType=VARCHAR})
+    </insert>
+    <resultMap type="com.ruoyi.interfaces.domain.vo.MdFlowDispatchVo" id="MdFlowDispatchMap">
+        <result property="flowJobId" column="FLOW_JOB_ID"/>
+        <result property="flowId" column="FLOW_ID"/>
+        <result property="id" column="ID"/>
+        <result property="groupName" column="GROUP_NAME"/>
+        <result property="jobName" column="JOB_NAME"/>
+        <result property="argsStr" column="ARGS_STR"/>
+        <result property="argsType" column="ARGS_TYPE"/>
+        <result property="nextTriggerAt" column="NEXT_TRIGGER_AT"/>
+        <result property="jobStatus" column="JOB_STATUS"/>
+        <result property="taskType" column="TASK_TYPE"/>
+        <result property="routeKey" column="ROUTE_KEY"/>
+        <result property="executorType" column="EXECUTOR_TYPE"/>
+        <result property="executorInfo" column="EXECUTOR_INFO"/>
+        <result property="triggerType" column="TRIGGER_TYPE"/>
+        <result property="triggerInterval" column="TRIGGER_INTERVAL"/>
+        <result property="blockStrategy" column="BLOCK_STRATEGY"/>
+        <result property="executorTimeout" column="EXECUTOR_TIMEOUT"/>
+        <result property="maxRetryTimes" column="MAX_RETRY_TIMES"/>
+        <result property="parallelNum" column="PARALLEL_NUM"/>
+        <result property="retryInterval" column="RETRY_INTERVAL"/>
+        <result property="ownerId" column="OWNER_ID"/>
+        <result property="labels" column="LABELS"/>
+        <result property="description" column="DESCRIPTION"/>
+        <result property="flowParamString" column="FLOW_PARAM_STRING"/>
+        <result property="createBy" column="CREATE_BY"/>
+        <result property="createTime" column="CREATE_TIME"/>
+        <result property="updateBy" column="UPDATE_BY"/>
+        <result property="updateTime" column="UPDATE_TIME"/>
+        <result property="chargeBy" column="CHARGE_BY"/>
+        <result property="chargePhone" column="CHARGE_PHONE"/>
+    </resultMap>
+
+
+    <select id="selectFlowDispatch" resultMap="MdFlowDispatchMap">
+        select fj.FLOW_JOB_ID,
+        fj.FLOW_ID,
+        f.FLOW_NAME,
+        fj.ID,
+        j.JOB_NAME,
+        j.JOB_STATUS,
+        fj.FLOW_PARAM_STRING,
+        fj.CREATE_BY,
+        fj.CREATE_TIME,
+        fj.UPDATE_BY,
+        fj.UPDATE_TIME,
+        fj.CHARGE_BY,
+        fj.CHARGE_PHONE
+        from MD_FLOW_JOB fj
+        LEFT JOIN MD_APP_FLOW f ON fj.FLOW_ID = f.FLOW_ID
+        LEFT JOIN SNAIL_JOB.SJ_JOB J ON fj.id = j.id
+        <where>
+            <if test="flowId != null and flowId != ''">
+                and fj.FLOW_ID = #{flowId}
+            </if>
+            <if test="flowId != null and flowId != ''">
+                and j.JOB_NAME like CONCAT('%', #{jobName}, '%')
+            </if>
+            <if test="jobStatus != null and jobStatus != ''">
+                and j.JOB_STATUS like CONCAT('%', #{jobStatus}, '%')
+            </if>
+        </where>
+    </select>
+    <select id="getInfo" resultMap="MdFlowDispatchMap" >
+        select fj.FLOW_JOB_ID,
+               fj.FLOW_ID,
+               fj.ID,
+               j.GROUP_NAME,
+               j.JOB_NAME,
+               j.ARGS_STR,
+               j.ARGS_TYPE,
+               j.NEXT_TRIGGER_AT,
+               j.JOB_STATUS,
+               j.TASK_TYPE,
+               j.ROUTE_KEY,
+               j.EXECUTOR_TYPE,
+               j.EXECUTOR_INFO,
+               j.TRIGGER_TYPE,
+               j.TRIGGER_INTERVAL,
+               j.BLOCK_STRATEGY,
+               j.EXECUTOR_TIMEOUT,
+               j.MAX_RETRY_TIMES,
+               j.PARALLEL_NUM,
+               j.RETRY_INTERVAL,
+               j.OWNER_ID,
+               j.LABELS,
+               j.DESCRIPTION,
+               fj.FLOW_PARAM_STRING,
+               fj.CREATE_BY,
+               fj.CREATE_TIME,
+               fj.UPDATE_BY,
+               fj.UPDATE_TIME,
+               fj.CHARGE_BY,
+               fj.CHARGE_PHONE
+        from MD_FLOW_JOB fj
+                 LEFT JOIN SNAIL_JOB.SJ_JOB J ON fj.id = j.id
+        <where>
+            fj.FLOW_JOB_ID = #{flowJobId}
+        </where>
+    </select>
+</mapper>

+ 9 - 9
ruoyi-api-patform/src/main/resources/mapper/interfaces/PtServiceMapper.xml

@@ -208,15 +208,15 @@ PUBLISH_TIME
         #{developContacter,jdbcType=VARCHAR},
         #{maintainUnit,jdbcType=VARCHAR},
         #{maintainContacer,jdbcType=VARCHAR},
-        #{viewNum, jdbcType=INTEGER},
-        #{sort, jdbcType=INTEGER},
-        #{audit, jdbcType=VARCHAR},
-        #{auditBy, jdbcType=VARCHAR},
-        #{auditTime, jdbcType=DATE},
-        #{auditRemark, jdbcType=VARCHAR},
-        #{publish, jdbcType=VARCHAR},
-        #{publishBy, jdbcType=VARCHAR},
-        #{publishTime, jdbcType=DATE}
+        #{viewNum,jdbcType=INTEGER},
+        #{sort,jdbcType=INTEGER},
+        #{audit,jdbcType=VARCHAR},
+        #{auditBy,jdbcType=VARCHAR},
+        #{auditTime,jdbcType=DATE},
+        #{auditRemark,jdbcType=VARCHAR},
+        #{publish,jdbcType=VARCHAR},
+        #{publishBy,jdbcType=VARCHAR},
+        #{publishTime,jdbcType=DATE}
     </sql>
     <sql id="page_where">
         <trim prefix="where" prefixOverrides="and | or ">

+ 2 - 1
ruoyi-api-patform/src/main/resources/mapper/interfaces/SnailJobMapper.xml

@@ -34,7 +34,8 @@
     <result property="deleted"    column="deleted"    />
     </resultMap>
     <sql id="selectJobVo">
-        select id,
+        select
+            id,
             namespace_id,
             group_name,
             job_name,

+ 9 - 0
ruoyi-common/src/main/java/com/ruoyi/common/enums/ExecutorName.java

@@ -0,0 +1,9 @@
+package com.ruoyi.common.enums;
+
+public enum ExecutorName {
+    /**
+     * 流程图执行job
+     */
+    runFolwJob,
+    serviceLogStatisJob
+}