Browse Source

获取模型打印字段

caixiaofeng 9 months ago
parent
commit
59d1744e2f
27 changed files with 361 additions and 61 deletions
  1. 18 0
      flow-report/flow-report-api/src/main/java/com/flow/service/ReportDatasetService.java
  2. 6 6
      flow-report/flow-report-api/src/main/java/com/flow/service/ReportDatasourceService.java
  3. 7 0
      flow-report/flow-report-biz/src/main/java/com/flow/dao/ReportDatasetDao.java
  4. 2 2
      flow-report/flow-report-biz/src/main/java/com/flow/dao/ReportDatasourceDao.java
  5. 55 0
      flow-report/flow-report-biz/src/main/java/com/flow/manger/DataSourceManager.java
  6. 41 0
      flow-report/flow-report-biz/src/main/java/com/flow/service/impl/ReportDatasetServiceImpl.java
  7. 21 21
      flow-report/flow-report-biz/src/main/java/com/flow/service/impl/ReportDatasourceServiceImpl.java
  8. 39 0
      flow-report/flow-report-controller/src/main/java/com/flow/controller/ReportDatasetController.java
  9. 13 14
      flow-report/flow-report-controller/src/main/java/com/flow/controller/ReportDatasourceController.java
  10. 3 3
      flow-report/flow-report-controller/src/main/java/com/flow/controller/ReportTemplateController.java
  11. 12 0
      flow-report/flow-report-entity/src/main/java/com/flow/dataset/ApiSource.java
  12. 4 0
      flow-report/flow-report-entity/src/main/java/com/flow/dataset/Source.java
  13. 12 0
      flow-report/flow-report-entity/src/main/java/com/flow/dataset/SqlSource.java
  14. 27 0
      flow-report/flow-report-entity/src/main/java/com/flow/entity/DatasetField.java
  15. 3 3
      flow-report/flow-report-entity/src/main/java/com/flow/entity/ReportDataSource.java
  16. 20 0
      flow-report/flow-report-entity/src/main/java/com/flow/entity/ReportDataset.java
  17. 2 0
      flow-report/flow-report-entity/src/main/java/com/flow/entity/ReportTemplate.java
  18. 17 0
      flow-report/flow-report-entity/src/main/java/com/flow/enums/DatasetTypeEnum.java
  19. 2 4
      flow-report/flow-report-entity/src/main/java/com/flow/enums/DbTypeEnum.java
  20. 2 2
      flow-report/flow-report-entity/src/main/java/com/flow/mapstruct/ReportDatasourceMapper.java
  21. 8 0
      flow-workflow/flow-workflow-api/src/main/java/com/flow/service/FlowModelService.java
  22. 31 4
      flow-workflow/flow-workflow-biz/src/main/java/com/flow/service/impl/FlowModelServiceImpl.java
  23. 7 0
      flow-workflow/flow-workflow-controller/src/main/java/com/flow/controller/FlowModelController.java
  24. 8 0
      flow-workflow/flow-workflow-entity/pom.xml
  25. 0 1
      flow-workflow/flow-workflow-entity/src/main/java/com/flow/entity/form/Container.java
  26. 1 0
      flow-workflow/flow-workflow-entity/src/main/java/com/flow/entity/form/Field.java
  27. 0 1
      flow-workflow/flow-workflow-entity/src/main/java/com/flow/entity/form/FormItem.java

+ 18 - 0
flow-report/flow-report-api/src/main/java/com/flow/service/ReportDatasetService.java

@@ -0,0 +1,18 @@
+package com.flow.service;
+
+import com.flow.common.mybatis.service.BaseService;
+import com.flow.entity.ReportDataset;
+
+import java.util.List;
+import java.util.Set;
+
+public interface ReportDatasetService extends BaseService<ReportDataset> {
+
+    ReportDataset create(ReportDataset reportDataset);
+
+    ReportDataset update(ReportDataset reportDataset);
+
+    void delete(Set<Long> ids);
+
+    List<ReportDataset> getList(String templateId);
+}

+ 6 - 6
flow-report/flow-report-api/src/main/java/com/flow/service/ReportDatasourceService.java

@@ -2,7 +2,7 @@ package com.flow.service;
 
 import com.flow.common.core.model.PageResult;
 import com.flow.common.mybatis.service.BaseService;
-import com.flow.entity.ReportDatasource;
+import com.flow.entity.ReportDataSource;
 import com.flow.model.ExecSql;
 import com.flow.model.ReportDatasourceQuery;
 
@@ -10,17 +10,17 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-public interface ReportDatasourceService extends BaseService<ReportDatasource> {
+public interface ReportDatasourceService extends BaseService<ReportDataSource> {
 
-    PageResult<ReportDatasource> getList(ReportDatasourceQuery reportDatasourceQuery);
+    PageResult<ReportDataSource> getList(ReportDatasourceQuery reportDatasourceQuery);
 
-    ReportDatasource create(ReportDatasource reportDatasource);
+    ReportDataSource create(ReportDataSource reportDataSource);
 
-    ReportDatasource update(ReportDatasource reportDatasource);
+    ReportDataSource update(ReportDataSource reportDataSource);
 
     void delete(Set<Long> ids);
 
     List<Map<String, Object>> execSql(ExecSql execSql);
 
-    boolean testConnection(ReportDatasource reportDatasource);
+    boolean testConnection(ReportDataSource reportDataSource);
 }

+ 7 - 0
flow-report/flow-report-biz/src/main/java/com/flow/dao/ReportDatasetDao.java

@@ -0,0 +1,7 @@
+package com.flow.dao;
+
+import com.flow.common.mybatis.dao.BaseDao;
+import com.flow.entity.ReportDataset;
+
+public interface ReportDatasetDao extends BaseDao<ReportDataset> {
+}

+ 2 - 2
flow-report/flow-report-biz/src/main/java/com/flow/dao/ReportDatasourceDao.java

@@ -1,7 +1,7 @@
 package com.flow.dao;
 
 import com.flow.common.mybatis.dao.BaseDao;
-import com.flow.entity.ReportDatasource;
+import com.flow.entity.ReportDataSource;
 
-public interface ReportDatasourceDao  extends BaseDao<ReportDatasource> {
+public interface ReportDatasourceDao  extends BaseDao<ReportDataSource> {
 }

+ 55 - 0
flow-report/flow-report-biz/src/main/java/com/flow/manger/DataSourceManager.java

@@ -0,0 +1,55 @@
+package com.flow.manger;
+
+import com.flow.common.core.exception.BaseException;
+import com.flow.entity.ReportDataSource;
+import lombok.NoArgsConstructor;
+
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReentrantLock;
+
+@NoArgsConstructor
+public class DataSourceManager {
+    private static final Map<String, ReportDataSource> poolMap = new ConcurrentHashMap<>(100);
+    //连接管理
+    private static final ThreadLocal<Connection> CONNECTION_THREAD_LOCAL = new ThreadLocal<>();
+    //线程锁
+    private static final ReentrantLock poolLock = new ReentrantLock();
+
+    public static Connection getConnection(final ReportDataSource reportDataSource) throws SQLException {
+        DataSource dataSource = reportDataSource.buildDataSource();
+        Connection connection = dataSource.getConnection();
+        CONNECTION_THREAD_LOCAL.set(connection);
+        String key = reportDataSource.getUrl();
+        if (!poolMap.containsKey(key)) {
+            poolLock.lock();
+            try {
+                if (!poolMap.containsKey(key)) {
+                    poolMap.put(key, reportDataSource);
+                }
+            } finally {
+                poolLock.unlock();
+            }
+        }
+        return connection;
+    }
+
+    /**
+     * 销毁连接(获取连接使用完成后需要调用该方法)
+     */
+    public static void release() {
+        try {
+            Connection conn = CONNECTION_THREAD_LOCAL.get();
+            if (conn != null) {
+                conn.close();
+            }
+        } catch (final SQLException ex) {
+            throw new BaseException("数据库连接释放异常");
+        } finally {
+            CONNECTION_THREAD_LOCAL.remove();
+        }
+    }
+}

+ 41 - 0
flow-report/flow-report-biz/src/main/java/com/flow/service/impl/ReportDatasetServiceImpl.java

@@ -0,0 +1,41 @@
+package com.flow.service.impl;
+
+import com.flow.common.mybatis.service.impl.BaseServiceImpl;
+import com.flow.dao.ReportDatasetDao;
+import com.flow.entity.ReportDataset;
+import com.flow.service.ReportDatasetService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Set;
+
+@Service
+public class ReportDatasetServiceImpl extends BaseServiceImpl<ReportDatasetDao, ReportDataset> implements ReportDatasetService {
+    @Autowired
+    private ReportDatasetDao reportDatasetDao;
+
+    @Override
+    public ReportDataset create(ReportDataset reportDataset) {
+        reportDatasetDao.insert(reportDataset);
+        return reportDataset;
+    }
+
+    @Override
+    public ReportDataset update(ReportDataset reportDataset) {
+        reportDatasetDao.updateById(reportDataset);
+        return reportDataset;
+    }
+
+    @Override
+    public void delete(Set<Long> ids) {
+        reportDatasetDao.deleteBatchIds(ids);
+    }
+
+    @Override
+    public List<ReportDataset> getList(String templateId) {
+        return reportDatasetDao.lambdaQueryChain()
+                .eq(ReportDataset::getTemplateId, templateId)
+                .list();
+    }
+}

+ 21 - 21
flow-report/flow-report-biz/src/main/java/com/flow/service/impl/ReportDatasourceServiceImpl.java

@@ -6,7 +6,8 @@ import com.flow.common.core.exception.BaseException;
 import com.flow.common.core.model.PageResult;
 import com.flow.common.mybatis.service.impl.BaseServiceImpl;
 import com.flow.dao.ReportDatasourceDao;
-import com.flow.entity.ReportDatasource;
+import com.flow.entity.ReportDataSource;
+import com.flow.manger.DataSourceManager;
 import com.flow.mapstruct.ReportDatasourceMapper;
 import com.flow.model.ExecSql;
 import com.flow.model.ReportDatasourceQuery;
@@ -16,22 +17,21 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.sql.DataSource;
-import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.*;
 
 @Service
-public class ReportDatasourceServiceImpl extends BaseServiceImpl<ReportDatasourceDao, ReportDatasource> implements ReportDatasourceService {
+public class ReportDatasourceServiceImpl extends BaseServiceImpl<ReportDatasourceDao, ReportDataSource> implements ReportDatasourceService {
     @Autowired
     private ReportDatasourceDao reportDatasourceDao;
     @Autowired
     private ReportDatasourceMapper reportDatasourceMapper;
 
     @Override
-    public PageResult<ReportDatasource> getList(ReportDatasourceQuery reportDatasourceQuery) {
-        ReportDatasource reportDatasource = reportDatasourceMapper.toEntity(reportDatasourceQuery);
-        Page<ReportDatasource> page = reportDatasourceDao.lambdaQueryChain()
-                .setEntity(reportDatasource)
+    public PageResult<ReportDataSource> getList(ReportDatasourceQuery reportDatasourceQuery) {
+        ReportDataSource reportDataSource = reportDatasourceMapper.toEntity(reportDatasourceQuery);
+        Page<ReportDataSource> page = reportDatasourceDao.lambdaQueryChain()
+                .setEntity(reportDataSource)
                 .page(
                         new Page<>(reportDatasourceQuery.getPage(), reportDatasourceQuery.getLimit())
                 );
@@ -39,15 +39,15 @@ public class ReportDatasourceServiceImpl extends BaseServiceImpl<ReportDatasourc
     }
 
     @Override
-    public ReportDatasource create(ReportDatasource reportDatasource) {
-        reportDatasourceDao.insert(reportDatasource);
-        return reportDatasource;
+    public ReportDataSource create(ReportDataSource reportDataSource) {
+        reportDatasourceDao.insert(reportDataSource);
+        return reportDataSource;
     }
 
     @Override
-    public ReportDatasource update(ReportDatasource reportDatasource) {
-        reportDatasourceDao.updateById(reportDatasource);
-        return reportDatasource;
+    public ReportDataSource update(ReportDataSource reportDataSource) {
+        reportDatasourceDao.updateById(reportDataSource);
+        return reportDataSource;
     }
 
     @Override
@@ -64,27 +64,27 @@ public class ReportDatasourceServiceImpl extends BaseServiceImpl<ReportDatasourc
         if(!sql.matches("^\\s*select\\s+.*\\s+from\\s+.*$")){
             throw new BaseException("sql格式错误");
         }
-        Optional<ReportDatasource> optional = this.lambdaQuery()
-                .eq(ReportDatasource::getId, execSql.getDatasourceId())
+        Optional<ReportDataSource> optional = this.lambdaQuery()
+                .eq(ReportDataSource::getId, execSql.getDatasourceId())
                 .oneOpt();
         if(!optional.isPresent()){
             throw new BaseException("数据源不存在");
         }
-        ReportDatasource reportDatasource = optional.get();
-        DataSource dataSource = reportDatasource.buildDataSource();
+        ReportDataSource reportDataSource = optional.get();
+        DataSource dataSource = reportDataSource.buildDataSource();
         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
         return jdbcTemplate.queryForList(sql,execSql.getParams());
     }
 
     @Override
-    public boolean testConnection(ReportDatasource reportDatasource) {
+    public boolean testConnection(ReportDataSource reportDataSource) {
         try {
-            DataSource dataSource = reportDatasource.buildDataSource();
-            Connection connection = dataSource.getConnection();
-            connection.close();
+            DataSourceManager.getConnection(reportDataSource);
             return true;
         } catch (SQLException e) {
             throw new BaseException(e.getMessage());
+        } finally {
+            DataSourceManager.release();
         }
     }
 }

+ 39 - 0
flow-report/flow-report-controller/src/main/java/com/flow/controller/ReportDatasetController.java

@@ -0,0 +1,39 @@
+package com.flow.controller;
+
+import com.flow.common.core.model.Result;
+import com.flow.entity.ReportDataset;
+import com.flow.service.ReportDatasetService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Set;
+
+@RestController
+@RequestMapping("/reportDataset")
+public class ReportDatasetController {
+    @Autowired
+    private ReportDatasetService reportDatasetService;
+
+    @PostMapping
+    public Result<ReportDataset> create(@RequestBody ReportDataset reportDataset) {
+        return Result.success(reportDatasetService.create(reportDataset));
+    }
+
+    @PutMapping
+    public Result<ReportDataset> update(@RequestBody ReportDataset reportDataset) {
+        return Result.success(reportDatasetService.update(reportDataset));
+    }
+
+    @DeleteMapping
+    public Result<?> delete(@RequestBody Set<Long> ids) {
+        reportDatasetService.delete(ids);
+        return Result.success();
+    }
+
+    @GetMapping
+    public Result<List<ReportDataset>> getList(String templateId) {
+        return Result.success(reportDatasetService.getList(templateId));
+    }
+
+}

+ 13 - 14
flow-report/flow-report-controller/src/main/java/com/flow/controller/ReportDatasourceController.java

@@ -2,12 +2,11 @@ package com.flow.controller;
 
 import com.flow.common.core.model.PageResult;
 import com.flow.common.core.model.Result;
-import com.flow.entity.ReportDatasource;
+import com.flow.entity.ReportDataSource;
 import com.flow.model.ExecSql;
 import com.flow.model.ReportDatasourceQuery;
 import com.flow.service.ReportDatasourceService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Set;
@@ -19,39 +18,39 @@ public class ReportDatasourceController {
     private ReportDatasourceService reportDatasourceService;
 
     @GetMapping
-    public Result<PageResult<ReportDatasource>> getList(ReportDatasourceQuery reportDatasourceQuery) {
-        PageResult<ReportDatasource> list = reportDatasourceService.getList(reportDatasourceQuery);
+    public Result<PageResult<ReportDataSource>> getList(ReportDatasourceQuery reportDatasourceQuery) {
+        PageResult<ReportDataSource> list = reportDatasourceService.getList(reportDatasourceQuery);
         return Result.success(list);
     }
 
-    @PreAuthorize("hasAnyAuthority('reportDatasource:add')")
+    // @PreAuthorize("hasAnyAuthority('reportDatasource:add')")
     @PostMapping
-    public Result<ReportDatasource> create(@RequestBody ReportDatasource reportDatasource) {
-        return Result.success(reportDatasourceService.create(reportDatasource));
+    public Result<ReportDataSource> create(@RequestBody ReportDataSource reportDataSource) {
+        return Result.success(reportDatasourceService.create(reportDataSource));
     }
 
-    @PreAuthorize("hasAnyAuthority('reportDatasource:edit')")
+    // @PreAuthorize("hasAnyAuthority('reportDatasource:edit')")
     @PutMapping
-    public Result<ReportDatasource> update(@RequestBody ReportDatasource reportDatasource) {
-        return Result.success(reportDatasourceService.update(reportDatasource));
+    public Result<ReportDataSource> update(@RequestBody ReportDataSource reportDataSource) {
+        return Result.success(reportDatasourceService.update(reportDataSource));
     }
 
-    @PreAuthorize("hasAnyAuthority('reportDatasource:del')")
+    // @PreAuthorize("hasAnyAuthority('reportDatasource:del')")
     @DeleteMapping
     public Result<?> delete(@RequestBody Set<Long> ids) {
         reportDatasourceService.delete(ids);
         return Result.success();
     }
 
-    @PreAuthorize("hasAnyAuthority('reportDatasource:execSql')")
+    // @PreAuthorize("hasAnyAuthority('reportDatasource:execSql')")
     @PostMapping("/execSql")
     public Result<?> execSql(@RequestBody ExecSql execSql) {
         return Result.success(reportDatasourceService.execSql(execSql));
     }
 
     @PostMapping("/connection")
-    public Result<Boolean> testConnection(@RequestBody ReportDatasource reportDatasource) {
-        return Result.success(reportDatasourceService.testConnection(reportDatasource));
+    public Result<Boolean> testConnection(@RequestBody ReportDataSource reportDataSource) {
+        return Result.success(reportDatasourceService.testConnection(reportDataSource));
     }
 
 }

+ 3 - 3
flow-report/flow-report-controller/src/main/java/com/flow/controller/ReportTemplateController.java

@@ -29,19 +29,19 @@ public class ReportTemplateController {
         return Result.success(template);
     }
 
-    @PreAuthorize("hasAnyAuthority('reportTemplate:add')")
+    // @PreAuthorize("hasAnyAuthority('reportTemplate:add')")
     @PostMapping
     public Result<ReportTemplate> create(@RequestBody ReportTemplate reportTemplate) {
         return Result.success(reportTemplateService.create(reportTemplate));
     }
 
-    @PreAuthorize("hasAnyAuthority('reportTemplate:edit')")
+    // @PreAuthorize("hasAnyAuthority('reportTemplate:edit')")
     @PutMapping
     public Result<ReportTemplate> update(@RequestBody ReportTemplate reportTemplate) {
         return Result.success(reportTemplateService.update(reportTemplate));
     }
 
-    @PreAuthorize("hasAnyAuthority('reportTemplate:del')")
+    // @PreAuthorize("hasAnyAuthority('reportTemplate:del')")
     @DeleteMapping
     public Result<?> delete(@RequestBody Set<Long> ids) {
         reportTemplateService.delete(ids);

+ 12 - 0
flow-report/flow-report-entity/src/main/java/com/flow/dataset/ApiSource.java

@@ -0,0 +1,12 @@
+package com.flow.dataset;
+
+import lombok.Data;
+
+@Data
+public class ApiSource implements Source {
+    private String url;
+    private String method;
+    private String body;
+    private String header;
+    private String params;
+}

+ 4 - 0
flow-report/flow-report-entity/src/main/java/com/flow/dataset/Source.java

@@ -0,0 +1,4 @@
+package com.flow.dataset;
+
+public interface Source {
+}

+ 12 - 0
flow-report/flow-report-entity/src/main/java/com/flow/dataset/SqlSource.java

@@ -0,0 +1,12 @@
+package com.flow.dataset;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SqlSource implements Source {
+    private String datasourceId;
+    private String sql;
+    private List<Object> params;
+}

+ 27 - 0
flow-report/flow-report-entity/src/main/java/com/flow/entity/DatasetField.java

@@ -0,0 +1,27 @@
+package com.flow.entity;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = true)
+public class DatasetField {
+    private String label;
+    private String field;
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private List<DatasetField> children;
+
+    public DatasetField(String label, String field) {
+        this.label = label;
+        this.field = field;
+    }
+
+
+}

+ 3 - 3
flow-report/flow-report-entity/src/main/java/com/flow/entity/ReportDatasource.java → flow-report/flow-report-entity/src/main/java/com/flow/entity/ReportDataSource.java

@@ -3,7 +3,7 @@ import com.baomidou.mybatisplus.annotation.SqlCondition;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.flow.common.mybatis.entity.BaseEntity;
-import com.flow.enums.DatasourceTypeEnum;
+import com.flow.enums.DbTypeEnum;
 import com.zaxxer.hikari.HikariDataSource;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -13,11 +13,11 @@ import javax.sql.DataSource;
 @Data
 @EqualsAndHashCode(callSuper = true)
 @TableName("report_datasource")
-public class ReportDatasource extends BaseEntity {
+public class ReportDataSource extends BaseEntity {
     @TableField(condition = SqlCondition.LIKE)
     private String name;
     private String url;
-    private DatasourceTypeEnum type;
+    private DbTypeEnum type;
     private String username;
     private String password;
     private String remark;

+ 20 - 0
flow-report/flow-report-entity/src/main/java/com/flow/entity/ReportDataset.java

@@ -0,0 +1,20 @@
+package com.flow.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.flow.dataset.Source;
+import com.flow.enums.DatasetTypeEnum;
+import lombok.Data;
+
+@Data
+@TableName("report_dataset")
+public class ReportDataset {
+    private String id;
+    private String name;
+    private DatasetTypeEnum type;
+    private String templateId;
+    private Boolean pageable;
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Source source;
+}

+ 2 - 0
flow-report/flow-report-entity/src/main/java/com/flow/entity/ReportTemplate.java

@@ -2,6 +2,7 @@ package com.flow.entity;
 import com.baomidou.mybatisplus.annotation.SqlCondition;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.flow.common.mybatis.entity.BaseEntity;
 import com.zaxxer.hikari.HikariDataSource;
 import lombok.Data;
@@ -16,5 +17,6 @@ public class ReportTemplate extends BaseEntity {
     private String code;
     @TableField(condition = SqlCondition.LIKE)
     private String name;
+    @TableField(typeHandler = JacksonTypeHandler.class)
     private Object data;
 }

+ 17 - 0
flow-report/flow-report-entity/src/main/java/com/flow/enums/DatasetTypeEnum.java

@@ -0,0 +1,17 @@
+package com.flow.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum DatasetTypeEnum {
+    SQL("sql"),
+    API("api");
+
+    @EnumValue
+    @JsonValue
+    private String type;
+}

+ 2 - 4
flow-report/flow-report-entity/src/main/java/com/flow/enums/DatasourceTypeEnum.java → flow-report/flow-report-entity/src/main/java/com/flow/enums/DbTypeEnum.java

@@ -7,7 +7,7 @@ import lombok.Getter;
 
 @Getter
 @AllArgsConstructor
-public enum DatasourceTypeEnum {
+public enum DbTypeEnum {
     MYSQL("mysql"),
     ORACLE("oracle"),
     SQLSERVER("sqlserver"),
@@ -23,8 +23,6 @@ public enum DatasourceTypeEnum {
      */
     public String matchDriver() {
         switch (this) {
-            case MYSQL:
-                return "com.mysql.cj.jdbc.Driver";
             case ORACLE:
                 return "oracle.jdbc.driver.OracleDriver";
             case SQLSERVER:
@@ -32,7 +30,7 @@ public enum DatasourceTypeEnum {
             case POSTGRESQL:
                 return "org.postgresql.Driver";
             default:
-                return null;
+                return "com.mysql.cj.jdbc.Driver";
         }
     }
 }

+ 2 - 2
flow-report/flow-report-entity/src/main/java/com/flow/mapstruct/ReportDatasourceMapper.java

@@ -1,12 +1,12 @@
 package com.flow.mapstruct;
 
 import com.flow.common.core.model.BaseMapper;
-import com.flow.entity.ReportDatasource;
+import com.flow.entity.ReportDataSource;
 import com.flow.model.ReportDatasourceQuery;
 import org.mapstruct.Mapper;
 import org.mapstruct.ReportingPolicy;
 
 @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
-public interface ReportDatasourceMapper extends BaseMapper<ReportDatasourceQuery, ReportDatasource> {
+public interface ReportDatasourceMapper extends BaseMapper<ReportDatasourceQuery, ReportDataSource> {
 
 }

+ 8 - 0
flow-workflow/flow-workflow-api/src/main/java/com/flow/service/FlowModelService.java

@@ -1,6 +1,7 @@
 package com.flow.service;
 
 import com.flow.common.mybatis.service.BaseService;
+import com.flow.entity.DatasetField;
 import com.flow.entity.FlowDefine;
 import com.flow.entity.FlowModel;
 
@@ -63,4 +64,11 @@ public interface FlowModelService extends BaseService<FlowModel> {
      * @return
      */
     FlowModel getModel(Long modelId);
+
+    /**
+     * 获取打印字段
+     * @param modelId
+     * @return
+     */
+    List<DatasetField> getReportField(String modelId);
 }

+ 31 - 4
flow-workflow/flow-workflow-biz/src/main/java/com/flow/service/impl/FlowModelServiceImpl.java

@@ -5,11 +5,15 @@ import com.flow.common.core.exception.BaseException;
 import com.flow.common.mybatis.constant.SqlConstant;
 import com.flow.common.mybatis.service.impl.BaseServiceImpl;
 import com.flow.dao.FlowModelDao;
+import com.flow.entity.DatasetField;
 import com.flow.entity.FlowDefine;
 import com.flow.entity.FlowModel;
+import com.flow.entity.FormModel;
+import com.flow.entity.form.Field;
 import com.flow.service.FlowDefineService;
 import com.flow.service.FlowModelHistoryService;
 import com.flow.service.FlowModelService;
+import com.google.common.collect.Lists;
 import org.flowable.bpmn.converter.BpmnXMLConverter;
 import org.flowable.bpmn.model.BpmnModel;
 import org.flowable.engine.RepositoryService;
@@ -27,10 +31,8 @@ import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.net.URLEncoder;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class FlowModelServiceImpl extends BaseServiceImpl<FlowModelDao, FlowModel> implements FlowModelService {
@@ -172,4 +174,29 @@ public class FlowModelServiceImpl extends BaseServiceImpl<FlowModelDao, FlowMode
         }
         return flowModel;
     }
+
+    @Override
+    public List<DatasetField> getReportField(String modelId) {
+        FlowModel flowModel = flowModelDao.selectById(modelId);
+        if (Objects.isNull(flowModel)) {
+            throw new BaseException("流程不存在");
+        }
+        FormModel formModel = flowModel.getForm();
+        Map<String, Field> fieldMap = formModel.allFieldsAsMap();
+        List<DatasetField> list = fieldMap.values().stream().map(field -> new DatasetField(
+                field.getLabel(),
+                field.getId()
+        )).collect(Collectors.toList());
+        list.add(new DatasetField("发起人", "_initiator_"));
+        list.add(new DatasetField("编号", "_code_"));
+        list.add(new DatasetField("标题", "_title_"));
+        list.add(new DatasetField("状态", "_status_"));
+        list.add(new DatasetField("发起时间", "_startTime_"));
+        list.add(new DatasetField("结束时间", "_endTime_"));
+        list.add(new DatasetField("打印时间", "_currentTime_"));
+        DatasetField datasetField = new DatasetField();
+        datasetField.setLabel(flowModel.getName());
+        datasetField.setChildren(list);
+        return Lists.newArrayList(datasetField);
+    }
 }

+ 7 - 0
flow-workflow/flow-workflow-controller/src/main/java/com/flow/controller/FlowModelController.java

@@ -1,6 +1,7 @@
 package com.flow.controller;
 
 import com.flow.common.core.model.Result;
+import com.flow.entity.DatasetField;
 import com.flow.entity.FlowDefine;
 import com.flow.entity.FlowModel;
 import com.flow.service.FlowModelService;
@@ -60,4 +61,10 @@ public class FlowModelController {
     public Result<FlowModel> getModel(@PathVariable Long modelId) {
         return Result.success(flowModelService.getModel(modelId));
     }
+
+    @GetMapping("/report/{modelId}")
+    public Result<List<DatasetField>> getReportField(@PathVariable String modelId) {
+        List<DatasetField> list = flowModelService.getReportField(modelId);
+        return Result.success(list);
+    }
 }

+ 8 - 0
flow-workflow/flow-workflow-entity/pom.xml

@@ -17,4 +17,12 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
+    <dependencies>
+        <dependency>
+            <groupId>com.flow</groupId>
+            <artifactId>flow-report-entity</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
 </project>

+ 0 - 1
flow-workflow/flow-workflow-entity/src/main/java/com/flow/entity/form/Container.java

@@ -12,7 +12,6 @@ import java.util.Objects;
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class Container extends Field {
-    private String label;
     private Object value;
     private List<Field> children;
 

+ 1 - 0
flow-workflow/flow-workflow-entity/src/main/java/com/flow/entity/form/Field.java

@@ -20,6 +20,7 @@ import java.util.Map;
 @Data
 public abstract class Field {
     private String id;
+    private String label;
     private String type;
     private String name;
     private Boolean hidden;

+ 0 - 1
flow-workflow/flow-workflow-entity/src/main/java/com/flow/entity/form/FormItem.java

@@ -14,7 +14,6 @@ import java.util.Objects;
 @Data
 public class FormItem extends Field implements Serializable {
     private static final long serialVersionUID = 1L;
-    private String label;
     private Object value;
     private Boolean readonly;
     private Boolean required;