浏览代码

添加执行器组执行记录功能

wzl 1 年之前
父节点
当前提交
4b79c21185
共有 19 个文件被更改,包括 393 次插入8 次删除
  1. 2 2
      src/main/java/com/dskj/znzn/importData/common/base/PageInfo.java
  2. 4 0
      src/main/java/com/dskj/znzn/importData/common/base/PageR.java
  3. 1 1
      src/main/java/com/dskj/znzn/importData/generate/CodeGenerateMain.java
  4. 51 0
      src/main/java/com/dskj/znzn/importData/web/controller/ExecutorHistoryController.java
  5. 2 0
      src/main/java/com/dskj/znzn/importData/web/controller/ProcessGroupController.java
  6. 68 0
      src/main/java/com/dskj/znzn/importData/web/entity/ExecutorHistory.java
  7. 6 0
      src/main/java/com/dskj/znzn/importData/web/entity/ProcessExecutor.java
  8. 3 0
      src/main/java/com/dskj/znzn/importData/web/entity/ProcessGroup.java
  9. 27 0
      src/main/java/com/dskj/znzn/importData/web/indata/ExecutorHistoryProcessInData.java
  10. 25 0
      src/main/java/com/dskj/znzn/importData/web/indata/ListByQueryInData.java
  11. 3 1
      src/main/java/com/dskj/znzn/importData/web/indata/ProcessExecutorInData.java
  12. 30 0
      src/main/java/com/dskj/znzn/importData/web/indata/SubmitProcessGroupInData.java
  13. 21 0
      src/main/java/com/dskj/znzn/importData/web/mapper/ExecutorHistoryMapper.java
  14. 28 0
      src/main/java/com/dskj/znzn/importData/web/outdata/ExecutorHistoryOutData.java
  15. 30 0
      src/main/java/com/dskj/znzn/importData/web/service/IExecutorHistoryService.java
  16. 1 0
      src/main/java/com/dskj/znzn/importData/web/service/IProcessGroupService.java
  17. 55 0
      src/main/java/com/dskj/znzn/importData/web/service/impl/ExecutorHistoryServiceImpl.java
  18. 3 4
      src/main/java/com/dskj/znzn/importData/web/service/impl/ProcessGroupServiceImpl.java
  19. 33 0
      src/main/resources/mapper/ExecutorHistoryMapper.xml

+ 2 - 2
src/main/java/com/dskj/znzn/importData/common/base/PageInfo.java

@@ -13,12 +13,12 @@ public class PageInfo {
 
     @ApiModelProperty(value = "查询页码")
     @Min(value = 1)
-    private long pageNo;
+    private long pageNo = 1;
 
     @ApiModelProperty(value = "每页条数")
     @Min(value = 1)
     @Max(value = 100)
-    private long pageSize;
+    private long pageSize = 10;
 
     @ApiModelProperty(value = "排序规则")
     private String orderBy;

+ 4 - 0
src/main/java/com/dskj/znzn/importData/common/base/PageR.java

@@ -35,4 +35,8 @@ public class PageR<T> {
         return new PageR(page.getPages(), page.getTotal(), datas);
     }
 
+    public static <T> PageR<T> page(IPage<T> page) {
+        return new PageR(page.getPages(), page.getTotal(), page.getRecords());
+    }
+
 }

+ 1 - 1
src/main/java/com/dskj/znzn/importData/generate/CodeGenerateMain.java

@@ -29,7 +29,7 @@ public class CodeGenerateMain {
 
     public static void main(String[] args) throws IOException {
         //逗号分隔 ,all:查询全部  前缀_:匹配
-        String includTables = "all";
+        String includTables = "executor_history";
 
         //去掉表前缀
         String replaceTablePrefix = "";

+ 51 - 0
src/main/java/com/dskj/znzn/importData/web/controller/ExecutorHistoryController.java

@@ -0,0 +1,51 @@
+package com.dskj.znzn.importData.web.controller;
+
+import com.dskj.znzn.importData.common.base.PageR;
+import com.dskj.znzn.importData.common.base.R;
+import com.dskj.znzn.importData.web.entity.ExecutorHistory;
+import com.dskj.znzn.importData.web.indata.ListByQueryInData;
+import com.dskj.znzn.importData.web.indata.SubmitProcessGroupInData;
+import com.dskj.znzn.importData.web.outdata.ExecutorHistoryOutData;
+import com.dskj.znzn.importData.web.service.IExecutorHistoryService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+
+/**
+ * @author 魏志亮
+ * @since 2024-11-25
+ */
+@RestController
+@RequestMapping("executorHistory")
+@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
+@Api(tags = "执行记录")
+public class ExecutorHistoryController {
+
+    private final IExecutorHistoryService executorHistoryService;
+
+    @ApiOperation(value = "根据ID获取")
+    @GetMapping("/{id}")
+    public R<ExecutorHistory> getById(@PathVariable Long id) {
+        return R.ok(executorHistoryService.getById(id));
+    }
+
+
+    @PostMapping(value = "submitProcessGroup")
+    @ApiOperation(value = "添加执行器组记录")
+    public R submitProcessGroup(@Valid @RequestBody SubmitProcessGroupInData inData) {
+        executorHistoryService.submitProcessGroup(inData);
+        return R.ok();
+    }
+
+    @ApiOperation(value = "获取执行流程记录")
+    @PostMapping("listByQuery")
+    public PageR<ExecutorHistoryOutData> listByQuery(@RequestBody ListByQueryInData inData) {
+        return executorHistoryService.listByQuery(inData);
+    }
+}

+ 2 - 0
src/main/java/com/dskj/znzn/importData/web/controller/ProcessGroupController.java

@@ -4,6 +4,7 @@ import com.dskj.znzn.importData.common.base.R;
 import com.dskj.znzn.importData.web.entity.ProcessGroup;
 import com.dskj.znzn.importData.web.indata.AddProcessGroupInData;
 import com.dskj.znzn.importData.web.indata.EditProcessGroupInData;
+import com.dskj.znzn.importData.web.indata.SubmitProcessGroupInData;
 import com.dskj.znzn.importData.web.service.IProcessGroupService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -60,4 +61,5 @@ public class ProcessGroupController {
         processGroupService.copyProcessGroup(processGroupId);
         return R.ok();
     }
+
 }

+ 68 - 0
src/main/java/com/dskj/znzn/importData/web/entity/ExecutorHistory.java

@@ -0,0 +1,68 @@
+package com.dskj.znzn.importData.web.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author 魏志亮
+ * @since 2024-11-25
+ */
+@Getter
+@Setter
+@TableName("executor_history")
+@ApiModel(value = "ExecutorHistory对象", description = "执行记录")
+public class ExecutorHistory implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("执行器组ID")
+    private Integer processGroupId;
+
+    @ApiModelProperty("执行器读取文件路径,Map 执行器ID:路径")
+    private String inputDirs;
+
+    @ApiModelProperty("结果保存路径")
+    private String outPutDir;
+
+    @ApiModelProperty("-1:等待中 0:转化中 1:转化成功 2:转化失败")
+    private Integer execStatus;
+
+    @ApiModelProperty("0:不可用 1:可用")
+    private Integer status;
+
+    @ApiModelProperty("异常信息")
+    private String errInfo;
+
+    @ApiModelProperty("开始执行时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date beginTime;
+
+    @ApiModelProperty("结束执行时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    @ApiModelProperty("进度")
+    private Double transferProgress;
+
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    @ApiModelProperty("更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+}

+ 6 - 0
src/main/java/com/dskj/znzn/importData/web/entity/ProcessExecutor.java

@@ -34,9 +34,15 @@ public class ProcessExecutor implements Serializable {
     @ApiModelProperty("处理器名称")
     private String name;
 
+    @ApiModelProperty("0:不包含表头 1:包含表头")
+    private Integer hasHeader;
+
     @ApiModelProperty("已知的字段")
     private String knownFields;
 
+    @ApiModelProperty("备注")
+    private String remark;
+
     @ApiModelProperty("0:不可用 1:可用")
     private Integer status;
 

+ 3 - 0
src/main/java/com/dskj/znzn/importData/web/entity/ProcessGroup.java

@@ -37,6 +37,9 @@ public class ProcessGroup implements Serializable {
     @ApiModelProperty("0:竖向 1:横向,自定义方式用 0,1,0 拼接 ")
     private String joinType;
 
+    @ApiModelProperty("备注")
+    private String remark;
+
     @ApiModelProperty("0:不可用 1:可用")
     private Integer status;
 

+ 27 - 0
src/main/java/com/dskj/znzn/importData/web/indata/ExecutorHistoryProcessInData.java

@@ -0,0 +1,27 @@
+package com.dskj.znzn.importData.web.indata;
+
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel
+public class ExecutorHistoryProcessInData {
+
+    @ApiModelProperty("执行器ID")
+    @NotNull
+    private Integer id;
+
+    @ApiModelProperty("执行器名称")
+    @NotBlank
+    private String name;
+
+    @ApiModelProperty("执行器读取路径")
+    @NotBlank
+    private String readPath;
+
+}

+ 25 - 0
src/main/java/com/dskj/znzn/importData/web/indata/ListByQueryInData.java

@@ -0,0 +1,25 @@
+package com.dskj.znzn.importData.web.indata;
+
+import com.dskj.znzn.importData.common.base.PageInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel
+public class ListByQueryInData extends PageInfo {
+
+    @ApiModelProperty("执行器组ID")
+    private Integer processGroupId;
+
+    @ApiModelProperty("执行器名称")
+    private String executorProcessName;
+
+    @ApiModelProperty("0:竖向 1:横向 2:自定义")
+    private Integer joinType;
+
+    @ApiModelProperty("-1:等待中 0:转化中 1:转化成功 2:转化失败")
+    private Integer execStatus;
+}

+ 3 - 1
src/main/java/com/dskj/znzn/importData/web/indata/ProcessExecutorInData.java

@@ -7,7 +7,6 @@ import lombok.Data;
 import javax.validation.Valid;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
 import java.util.List;
 
 @ApiModel
@@ -18,6 +17,9 @@ public class ProcessExecutorInData {
     @NotBlank
     private String name;
 
+    @ApiModelProperty("0:不包含表头 1:包含表头")
+    private Integer hasHeader;
+
     @ApiModelProperty("已知的字段")
     @NotEmpty
     private List<String>knownFieldsList;

+ 30 - 0
src/main/java/com/dskj/znzn/importData/web/indata/SubmitProcessGroupInData.java

@@ -0,0 +1,30 @@
+package com.dskj.znzn.importData.web.indata;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+@ApiModel
+public class SubmitProcessGroupInData {
+
+    @ApiModelProperty("执行器组ID")
+    @NotNull
+    private Integer processGroupId;
+
+    @ApiModelProperty("保存路径")
+    @NotBlank
+    private String outputDir;
+
+    @ApiModelProperty("执行器读取路径")
+    @NotEmpty
+    @Valid
+    private List<ExecutorHistoryProcessInData> executorHistoryProcessInDataList;
+
+}

+ 21 - 0
src/main/java/com/dskj/znzn/importData/web/mapper/ExecutorHistoryMapper.java

@@ -0,0 +1,21 @@
+package com.dskj.znzn.importData.web.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dskj.znzn.importData.web.entity.ExecutorHistory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dskj.znzn.importData.web.indata.ListByQueryInData;
+import com.dskj.znzn.importData.web.outdata.ExecutorHistoryOutData;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author 魏志亮
+ * @since 2024-11-25
+ */
+@Mapper
+public interface ExecutorHistoryMapper extends BaseMapper<ExecutorHistory> {
+
+    IPage<ExecutorHistoryOutData> listByQuery(IPage<?> page, @Param("inData") ListByQueryInData inData);
+}

+ 28 - 0
src/main/java/com/dskj/znzn/importData/web/outdata/ExecutorHistoryOutData.java

@@ -0,0 +1,28 @@
+package com.dskj.znzn.importData.web.outdata;
+
+import com.dskj.znzn.importData.web.entity.ExecutorHistory;
+import com.dskj.znzn.importData.web.indata.ExecutorHistoryProcessInData;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel
+public class ExecutorHistoryOutData extends ExecutorHistory {
+
+
+    @ApiModelProperty("执行器组名称")
+    private String processGroupName;
+
+    @ApiModelProperty("模板名称")
+    private String templateName;
+
+    @ApiModelProperty("0:竖向 1:横向,自定义方式用 0,1,0 拼接 ")
+    private Integer joinType;
+
+    @ApiModelProperty("处理器")
+    private List<ExecutorHistoryProcessInData> processExecutorList;
+
+}

+ 30 - 0
src/main/java/com/dskj/znzn/importData/web/service/IExecutorHistoryService.java

@@ -0,0 +1,30 @@
+package com.dskj.znzn.importData.web.service;
+
+import com.dskj.znzn.importData.common.base.PageR;
+import com.dskj.znzn.importData.web.entity.ExecutorHistory;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dskj.znzn.importData.web.indata.ListByQueryInData;
+import com.dskj.znzn.importData.web.indata.SubmitProcessGroupInData;
+import com.dskj.znzn.importData.web.outdata.ExecutorHistoryOutData;
+
+/**
+ * @author 魏志亮
+ * @since 2024-11-25
+ */
+public interface IExecutorHistoryService extends IService<ExecutorHistory> {
+
+    /**
+     * 执行执行器组
+     *
+     * @param inData 数据
+     */
+    void submitProcessGroup(SubmitProcessGroupInData inData);
+
+    /**
+     * 查询执行记录
+     *
+     * @param inData 查询条件
+     * @return
+     */
+    PageR<ExecutorHistoryOutData> listByQuery(ListByQueryInData inData);
+}

+ 1 - 0
src/main/java/com/dskj/znzn/importData/web/service/IProcessGroupService.java

@@ -52,4 +52,5 @@ public interface IProcessGroupService extends IService<ProcessGroup> {
      * @param processGroupId 执行器组ID
      */
     void copyProcessGroup(Integer processGroupId);
+
 }

+ 55 - 0
src/main/java/com/dskj/znzn/importData/web/service/impl/ExecutorHistoryServiceImpl.java

@@ -0,0 +1,55 @@
+package com.dskj.znzn.importData.web.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dskj.znzn.importData.common.base.PageR;
+import com.dskj.znzn.importData.web.entity.ExecutorHistory;
+import com.dskj.znzn.importData.web.indata.ExecutorHistoryProcessInData;
+import com.dskj.znzn.importData.web.indata.ListByQueryInData;
+import com.dskj.znzn.importData.web.indata.SubmitProcessGroupInData;
+import com.dskj.znzn.importData.web.mapper.ExecutorHistoryMapper;
+import com.dskj.znzn.importData.web.outdata.ExecutorHistoryOutData;
+import com.dskj.znzn.importData.web.service.IExecutorHistoryService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author 魏志亮
+ * @since 2024-11-25
+ */
+@Service
+@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
+public class ExecutorHistoryServiceImpl extends ServiceImpl<ExecutorHistoryMapper, ExecutorHistory> implements IExecutorHistoryService {
+
+    private final ExecutorHistoryMapper executorHistoryMapper;
+
+    @Override
+    public void submitProcessGroup(SubmitProcessGroupInData inData) {
+
+        ExecutorHistory history = new ExecutorHistory();
+        history.setProcessGroupId(inData.getProcessGroupId());
+        history.setInputDirs(JSON.toJSONString(inData.getExecutorHistoryProcessInDataList()));
+        history.setOutPutDir(inData.getOutputDir());
+        history.setExecStatus(-1);
+        save(history);
+    }
+
+    @Override
+    public PageR<ExecutorHistoryOutData> listByQuery(ListByQueryInData inData) {
+        Page<ExecutorHistoryOutData> page = Page.of(inData.getPageNo(), inData.getPageSize());
+        IPage<ExecutorHistoryOutData> pageInfo = executorHistoryMapper.listByQuery(page, inData);
+        List<ExecutorHistoryOutData> datas = pageInfo.getRecords();
+        for (ExecutorHistoryOutData outData : datas) {
+            String inputDirs = outData.getInputDirs();
+            outData.setProcessExecutorList(JSON.parseArray(inputDirs, ExecutorHistoryProcessInData.class));
+        }
+
+        return PageR.page(pageInfo);
+    }
+}

+ 3 - 4
src/main/java/com/dskj/znzn/importData/web/service/impl/ProcessGroupServiceImpl.java

@@ -9,10 +9,7 @@ import com.dskj.znzn.importData.common.exception.BusinessException;
 import com.dskj.znzn.importData.web.entity.MappingField;
 import com.dskj.znzn.importData.web.entity.ProcessExecutor;
 import com.dskj.znzn.importData.web.entity.ProcessGroup;
-import com.dskj.znzn.importData.web.indata.EditProcessGroupInData;
-import com.dskj.znzn.importData.web.indata.MappingFieldInData;
-import com.dskj.znzn.importData.web.indata.ProcessExecutorInData;
-import com.dskj.znzn.importData.web.indata.AddProcessGroupInData;
+import com.dskj.znzn.importData.web.indata.*;
 import com.dskj.znzn.importData.web.mapper.ProcessGroupMapper;
 import com.dskj.znzn.importData.web.service.IMappingFieldService;
 import com.dskj.znzn.importData.web.service.IProcessExecutorService;
@@ -113,6 +110,7 @@ public class ProcessGroupServiceImpl extends ServiceImpl<ProcessGroupMapper, Pro
                 ProcessExecutor process = new ProcessExecutor();
                 process.setGroupId(group.getId());
                 process.setName(processExecutorInData.getName());
+                process.setHasHeader(processExecutorInData.getHasHeader());
                 process.setKnownFields(String.join(",", process.getKnownFields()));
                 process.setStatus(1);
                 processExecutorService.save(process);
@@ -160,6 +158,7 @@ public class ProcessGroupServiceImpl extends ServiceImpl<ProcessGroupMapper, Pro
         for (ProcessExecutor processExecutor : processExecutorList) {
             ProcessExecutorInData processExecutorInData = new ProcessExecutorInData();
             processExecutorInData.setName(processExecutor.getName());
+            processExecutorInData.setHasHeader(processExecutor.getHasHeader());
             processExecutorInData.setKnownFieldsList(Arrays.asList(processExecutor.getKnownFields().split(",")));
 
             List<MappingFieldInData> mappingFieldInDataList = new ArrayList<>();

+ 33 - 0
src/main/resources/mapper/ExecutorHistoryMapper.xml

@@ -0,0 +1,33 @@
+<?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.dskj.znzn.importData.web.mapper.ExecutorHistoryMapper">
+
+    <select id="listByQuery" resultType="com.dskj.znzn.importData.web.outdata.ExecutorHistoryOutData">
+        SELECT distinct t.*,
+        a.`name` as 'processGroupName', a.`join_type`,
+        b.`name` as 'templateName'
+        FROM executor_history t
+        LEFT JOIN process_group a on t.process_group_id = a.id
+        LEFT JOIN base_template b on a.template_id = b.id
+        LEFT JOIN process_executor c on a.id = c.group_id
+        where 1=1 and t.status = 1 and a.status = 1 and b.status != 0
+        <if test="inData.processGroupId != null">
+            and t.process_group_id = #{inData.processGroupId}
+        </if>
+        <if test="inData.executorProcessName != null and inData.executorProcessName != ''">
+            and c.name like concat('%',#{inData.executorProcessName},'%')
+        </if>
+        <if test="inData.joinType != null">
+            <if test="inData.joinType == 2">
+                and a.join_type not in (0,1)
+            </if>
+            <if test="inData.joinType != 2">
+                and a.join_type = #{inData.joinType}
+            </if>
+        </if>
+        <if test="inData.execStatus != null">
+            and t.exec_status = #{inData.execStatus}
+        </if>
+        order by t.update_time desc
+    </select>
+</mapper>