From ace734892b5b5882f5e22c998e606afbc6488fc6 Mon Sep 17 00:00:00 2001 From: "Zhenfei.Li" Date: Tue, 22 Sep 2020 18:21:31 +0800 Subject: [PATCH] =?UTF-8?q?BI-72473=20fix:=20Postgreexcel=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=8F=92=E4=BB=B6=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PostgreDialectColumnType2SQLExecutor.java | 28 +++++++++++++++ .../postgre/PostgreDialectConsummate.java | 1 + .../request/handler/TableDataImport.java | 34 +++++++++++++++++++ .../com/fr/plugin/hw/decision/js/pane/left.js | 17 ++-------- .../plugin/hw/decision/js/table.info.model.js | 2 +- 5 files changed, 66 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/fr/plugin/decision/dialect/postgre/PostgreDialectColumnType2SQLExecutor.java diff --git a/src/main/java/com/fr/plugin/decision/dialect/postgre/PostgreDialectColumnType2SQLExecutor.java b/src/main/java/com/fr/plugin/decision/dialect/postgre/PostgreDialectColumnType2SQLExecutor.java new file mode 100644 index 0000000..a7624bc --- /dev/null +++ b/src/main/java/com/fr/plugin/decision/dialect/postgre/PostgreDialectColumnType2SQLExecutor.java @@ -0,0 +1,28 @@ +package com.fr.plugin.decision.dialect.postgre; + +import com.fr.data.core.db.dialect.Dialect; +import com.fr.data.core.db.dialect.base.key.column.typetosql.AbstractDialectColumnType2SQLExecutor; +import com.fr.data.core.db.dialect.base.key.column.typetosql.DialectColumnType2SQLParameter; +import com.fr.data.core.db.dialect.util.DialectUtils; + +public class PostgreDialectColumnType2SQLExecutor extends AbstractDialectColumnType2SQLExecutor { + public PostgreDialectColumnType2SQLExecutor(){ + + } + + @Override + public String execute(DialectColumnType2SQLParameter dialectColumnType2SQLParameter, Dialect dialect) { + int columnType = dialectColumnType2SQLParameter.getColumnType(); + String columnSize = dialectColumnType2SQLParameter.getParameter(); + switch(columnType) { + case 8: + return "double precision"; + case 12: + return "varchar(" + columnSize + ")"; + case 91: + return "date"; + default: + return DialectUtils.getTypeName(columnType); + } + } +} diff --git a/src/main/java/com/fr/plugin/decision/dialect/postgre/PostgreDialectConsummate.java b/src/main/java/com/fr/plugin/decision/dialect/postgre/PostgreDialectConsummate.java index 7024be7..8441fce 100644 --- a/src/main/java/com/fr/plugin/decision/dialect/postgre/PostgreDialectConsummate.java +++ b/src/main/java/com/fr/plugin/decision/dialect/postgre/PostgreDialectConsummate.java @@ -8,6 +8,7 @@ public class PostgreDialectConsummate extends PostgreSQLDialect { public PostgreDialectConsummate(){ super(); + this.putExecutor(DialectKeyConstants.COLUMN_TYPE_2_SQL_KEY, new PostgreDialectColumnType2SQLExecutor()); this.putExecutor(DialectKeyConstants.CREATE_TOP_N_SQL_KEY, new KylinDialectCreateTOPNSQLExecutor()); } } diff --git a/src/main/java/com/fr/plugin/decision/request/handler/TableDataImport.java b/src/main/java/com/fr/plugin/decision/request/handler/TableDataImport.java index 72d8489..5c6efec 100644 --- a/src/main/java/com/fr/plugin/decision/request/handler/TableDataImport.java +++ b/src/main/java/com/fr/plugin/decision/request/handler/TableDataImport.java @@ -1,5 +1,8 @@ package com.fr.plugin.decision.request.handler; +import com.finebi.burger.api.request.configuration.table.DataBaseAddTableRequestBean; +import com.finebi.common.api.cell.user.authority.UserAuthority; +import com.finebi.common.api.vo.table.FineBusinessTable; import com.fr.decision.webservice.v10.user.UserService; import com.fr.json.JSONArray; import com.fr.json.JSONObject; @@ -10,6 +13,9 @@ import com.fr.plugin.decision.core.action.ExcelDmlAction; import com.fr.plugin.decision.dao.ExcelLinkService; import com.fr.plugin.decision.utils.JdbcUtils; import com.fr.stable.StringUtils; +import com.fr.third.fasterxml.jackson.core.JsonGenerationException; +import com.fr.third.fasterxml.jackson.databind.JsonMappingException; +import com.fr.third.fasterxml.jackson.databind.ObjectMapper; import com.fr.third.org.apache.poi.hssf.usermodel.HSSFSheet; import com.fr.third.org.apache.poi.hssf.usermodel.HSSFWorkbook; import com.fr.third.v2.org.apache.poi.xssf.usermodel.XSSFSheet; @@ -18,6 +24,7 @@ import com.fr.web.utils.WebUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.sql.Connection; import java.util.HashMap; import java.util.List; @@ -80,6 +87,33 @@ public class TableDataImport extends HWAbstractHandler { ExcelLinkService.getInstance().addLink(name, connection, schema, tableName, createUser); FineLoggerFactory.getLogger().info("HW_excel导入:FineDB 新增数据成功" + name); } + + if (StringUtils.equals("success", dmlResult.getString("status")) || StringUtils.contains(dmlResult.getString("errorText"), "existed")) { + ObjectMapper mapper = new ObjectMapper(); + JSONObject table = JSONObject.create().put("tableName", tableName).put("connectionName", connection); + JSONArray tables = JSONArray.create().put(table); + JSONObject tablesBean = JSONObject.create().put("tables", tables); + try{ + UserAuthority authorityUser = UpgradeHandler.getFineUserInfoService().getUserAuthority(req); + String userId = authorityUser.getUser().getInfo().getUserId(); + String packId = "__my_analysis__" + userId + 1; + + try { + String tableString = tablesBean.toString(); + FineBusinessTable[] businessTables = UpgradeHandler.createBusinessTablesFromDBNewAddTableInfo(mapper.readValue(tableString, DataBaseAddTableRequestBean.class), userId); + UpgradeHandler.getTableService().addNewTable(packId, authorityUser, businessTables); + } catch (JsonMappingException e) { + e.printStackTrace(); + } catch (JsonGenerationException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } catch(Exception e){ + e.printStackTrace(); + } + } + WebUtils.printAsJSON(res, dmlResult); } diff --git a/src/main/resources/com/fr/plugin/hw/decision/js/pane/left.js b/src/main/resources/com/fr/plugin/hw/decision/js/pane/left.js index cd5ff2c..1a03102 100644 --- a/src/main/resources/com/fr/plugin/hw/decision/js/pane/left.js +++ b/src/main/resources/com/fr/plugin/hw/decision/js/pane/left.js @@ -42,21 +42,8 @@ var tableData = BI.deepClone(table); BI.hwfield2ColTypeDeal(tableData.items); Dec.HW.importTableData(tableData, function (res) { - if (res.status === "success") { - BI.Utils.addTables2Pack({ - packId: "__my_analysis__" + BI.Utils.getCurrentUserId() + BI.Utils.getUserEngine(), - tables: [{ - tableName: tableData.tableName, - connectionName: tableData.connection - }] - }, function () { - callback(res); - self.linkListPane.populate(); - }); - } else { - callback(res); - self.linkListPane.populate(); - } + callback(res); + self.linkListPane.populate(); }); }, listeners: [ diff --git a/src/main/resources/com/fr/plugin/hw/decision/js/table.info.model.js b/src/main/resources/com/fr/plugin/hw/decision/js/table.info.model.js index 7d59edd..5520f46 100644 --- a/src/main/resources/com/fr/plugin/hw/decision/js/table.info.model.js +++ b/src/main/resources/com/fr/plugin/hw/decision/js/table.info.model.js @@ -5,7 +5,7 @@ return { items: [], connection: "", - schema: "guest", + schema: "", tableName: "", excelItems: [], infoId: o.infoId,