From b1fefdeba7b2228a39c5431c1046bafc827bc596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?= <806783409@qq.com> Date: Sat, 5 Jun 2021 18:58:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=87=BA=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/controller/DbDataViewController.java | 23 ++++++++--- .../db/controller/param/DataViewParam.java | 10 +++++ .../framework/db/dto/TableColumnDescDto.java | 12 ++++++ .../db/mapper/mysql/MysqlBaseMapper.xml | 6 ++- .../db/mapper/oracle/OracleBaseMapper.xml | 2 +- .../postgresql/PostgresqlBaseMapper.xml | 2 +- .../mapper/sqlserver/SqlServerBaseMapper.xml | 2 +- .../doc/db/framework/utils/PoiUtil.java | 12 +++--- .../src/main/resources/doc-db.html | 2 +- .../js/{app.fca745a8.js => app.3a1822c4.js} | 2 +- zyplayer-doc-ui/db-ui/.env.development | 4 +- .../db-ui/src/views/data/Export.vue | 39 ++++++++++++++----- .../db-ui/src/views/table/Info.vue | 13 +++++-- 13 files changed, 96 insertions(+), 33 deletions(-) rename zyplayer-doc-db/src/main/resources/js/{app.fca745a8.js => app.3a1822c4.js} (91%) diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/DbDataViewController.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/DbDataViewController.java index 9d18c25c..923c49f4 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/DbDataViewController.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/DbDataViewController.java @@ -1,5 +1,7 @@ package com.zyplayer.doc.db.controller; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.RandomUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.util.TypeUtils; @@ -92,6 +94,7 @@ public class DbDataViewController { */ @PostMapping(value = "/download") public ResponseJson download(HttpServletResponse response, DataViewParam param) { + param.setExecuteId(RandomUtil.simpleUUID()); DbBaseService dbBaseService = dbBaseFactory.getDbBaseService(param.getSourceId()); // 获取列信息等 TableColumnVo tableColumnVo = dbBaseService.getTableColumnList(param.getSourceId(), param.getDbName(), param.getTableName()); @@ -125,17 +128,26 @@ public class DbDataViewController { @PostMapping(value = "/downloadMultiple") public ResponseJson downloadMultiple(HttpServletResponse response, DataViewParam param) { DbBaseService dbBaseService = dbBaseFactory.getDbBaseService(param.getSourceId()); - if (StringUtils.isBlank(param.getTableName())) { + if (StringUtils.isBlank(param.getTableNames())) { return DocDbResponseJson.warn("请选择导出的表"); } - StringBuilder resultSb = new StringBuilder(); - String[] tableNameArr = param.getTableName().split(","); + param.setExecuteId(RandomUtil.simpleUUID()); + StringBuilder resultSb = new StringBuilder("/*\n" + + " zyplayer-doc 表数据导出\n" + + "\n" + + " 数据库 : " + param.getDbName() + "\n" + + " 数据库类型 : " + dbBaseService.getDatabaseProduct().name() + "\n" + + " 导出时间 : " + DateTime.now().toString() + "\n" + + "*/\n\n"); + String[] tableNameArr = param.getTableNames().split(","); try { for (String tabName : tableNameArr) { + param.setTableName(tabName); // 获取列信息等 TableColumnVo tableColumnVo = dbBaseService.getTableColumnList(param.getSourceId(), param.getDbName(), tabName); - Set conditionSet = StringUtils.isBlank(param.getConditionColumn()) ? Collections.emptySet() : Stream.of(param.getConditionColumn().split(",")).collect(Collectors.toSet()); List columnList = tableColumnVo.getColumnList(); + // 找主键作为更新条件 + Set conditionSet = columnList.stream().filter(item -> Objects.equals(item.getIspramary(), "1")).map(TableColumnDescDto::getName).collect(Collectors.toSet()); // 数据查询 String queryAllSql = dbBaseService.getQueryAllSql(param); ExecuteParam executeParam = new ExecuteParam(); @@ -150,8 +162,9 @@ public class DbDataViewController { resultSb.append(downloadTableData).append("\n"); } String prefix = Objects.equals(param.getDownloadType(), "json") ? ".json" : ".sql"; - baseDownloadService.sendResponse(response, param.getTableName(), prefix, resultSb.toString()); + baseDownloadService.sendResponse(response, param.getDbName(), prefix, resultSb.toString()); } catch (Exception e) { + e.printStackTrace(); return DocDbResponseJson.error("导出失败:" + e.getMessage()); } return DocDbResponseJson.ok(); diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/param/DataViewParam.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/param/DataViewParam.java index 3ec46e5c..16c810ba 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/param/DataViewParam.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/param/DataViewParam.java @@ -7,6 +7,8 @@ public class DataViewParam { private Integer pageNum; private String dbName; private String tableName; + // 下载多张数据表 + private String tableNames; private String orderColumn; private String orderType; private String condition; @@ -131,4 +133,12 @@ public class DataViewParam { public void setRetainColumn(String retainColumn) { this.retainColumn = retainColumn; } + + public String getTableNames() { + return tableNames; + } + + public void setTableNames(String tableNames) { + this.tableNames = tableNames; + } } diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/dto/TableColumnDescDto.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/dto/TableColumnDescDto.java index b2605ae7..2eb3ac76 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/dto/TableColumnDescDto.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/dto/TableColumnDescDto.java @@ -28,6 +28,10 @@ public class TableColumnDescDto { @ExcelProperty("长度") private String length; + @ColumnWidth(10) + @ExcelProperty("小数点") + private String numericScale; + @ColumnWidth(10) @ExcelProperty("主键") private String ispramary; @@ -99,4 +103,12 @@ public class TableColumnDescDto { public void setTableName(String tableName) { this.tableName = tableName; } + + public String getNumericScale() { + return numericScale; + } + + public void setNumericScale(String numericScale) { + this.numericScale = numericScale; + } } diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/mysql/MysqlBaseMapper.xml b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/mysql/MysqlBaseMapper.xml index 55ce19e4..82730958 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/mysql/MysqlBaseMapper.xml +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/mysql/MysqlBaseMapper.xml @@ -9,6 +9,7 @@ + @@ -59,7 +60,10 @@ - select t.TABLE_NAME,t.COLUMN_NAME,t.DATA_TYPE,case t.NULLABLE when 'Y' then '允许' when 'N' then '不允许' end NULLABLE, c.COMMENTS + select t.TABLE_NAME,t.COLUMN_NAME,t.DATA_TYPE,case t.NULLABLE when 'Y' then '1' when 'N' then '0' end NULLABLE, c.COMMENTS from user_tab_columns t left join user_col_comments c on t.COLUMN_NAME = c.COLUMN_NAME and t.TABLE_NAME = c.TABLE_NAME t.table_name in (select table_name from all_tables where owner = #{dbName} ) diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/postgresql/PostgresqlBaseMapper.xml b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/postgresql/PostgresqlBaseMapper.xml index c17e5fd5..59eb2e76 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/postgresql/PostgresqlBaseMapper.xml +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/postgresql/PostgresqlBaseMapper.xml @@ -38,7 +38,7 @@