From d6f4d43b0e896c3d39a2f4e0a71536c215c538e5 Mon Sep 17 00:00:00 2001 From: junjie Date: Thu, 13 May 2021 15:17:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=95=B0=E6=8D=AE=E9=9B=86):=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/dto/chart/ChartViewFieldDTO.java | 2 ++ .../service/chart/ChartViewService.java | 20 +++++++++++++++---- .../service/dataset/DataSetTableService.java | 20 ++++++++++++++----- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/backend/src/main/java/io/dataease/dto/chart/ChartViewFieldDTO.java b/backend/src/main/java/io/dataease/dto/chart/ChartViewFieldDTO.java index a3aab7eedf..6725720bdb 100644 --- a/backend/src/main/java/io/dataease/dto/chart/ChartViewFieldDTO.java +++ b/backend/src/main/java/io/dataease/dto/chart/ChartViewFieldDTO.java @@ -36,4 +36,6 @@ public class ChartViewFieldDTO implements Serializable { private String sort; private List filter; + + private Integer deExtractType; } diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 40dbe882fb..1f8a1c6753 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -265,17 +265,29 @@ public class ChartViewService { if (StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*")) { f.append(y.getSummary()).append("(").append(y.getDataeaseName()).append(")"); } else { - f.append(y.getSummary()).append("(").append("CAST(").append(y.getDataeaseName()).append(" AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append("))"); + f.append("CAST(") + .append(y.getSummary()).append("(") + .append("CAST(").append(y.getDataeaseName()).append(" AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")") + .append(") AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")"); } f.append(" AS _").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*") ? "" : y.getDataeaseName()); return f.toString(); }).toArray(String[]::new); String[] groupField = xAxis.stream().map(x -> { StringBuilder stringBuilder = new StringBuilder(); - if (x.getDeType() == 1) { - stringBuilder.append("FROM_UNIXTIME(cast(").append(x.getDataeaseName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S') as ").append(x.getDataeaseName()); + // 如果原始类型为时间 + if (x.getDeExtractType() == 1) { + if (x.getDeType() == 2 || x.getDeType() == 3) { + stringBuilder.append("unix_timestamp(").append(x.getDataeaseName()).append(")*1000 as ").append(x.getDataeaseName()); + } else { + stringBuilder.append(x.getDataeaseName()); + } } else { - stringBuilder.append(x.getDataeaseName()); + if (x.getDeType() == 1) { + stringBuilder.append("FROM_UNIXTIME(cast(").append(x.getDataeaseName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S') as ").append(x.getDataeaseName()); + } else { + stringBuilder.append(x.getDataeaseName()); + } } return stringBuilder.toString(); }).toArray(String[]::new); diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 0f1280528d..02cbd816bc 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -516,8 +516,9 @@ public class DataSetTableService { datasetTableField.setDeType(transFieldType(filed.getFieldType())); datasetTableField.setDeExtractType(transFieldType(filed.getFieldType())); } else { - datasetTableField.setDeType(transFieldType(ds.getType(), filed.getFieldType())); - datasetTableField.setDeExtractType(transFieldType(ds.getType(), filed.getFieldType())); + Integer fieldType = transFieldType(ds.getType(), filed.getFieldType()); + datasetTableField.setDeType(fieldType == 4 ? 2 : fieldType); + datasetTableField.setDeExtractType(fieldType); } datasetTableField.setSize(filed.getFieldSize()); datasetTableField.setChecked(true); @@ -555,10 +556,19 @@ public class DataSetTableService { public String createQuerySQL(String type, String table, List fields) { String[] array = fields.stream().map(f -> { StringBuilder stringBuilder = new StringBuilder(); - if (f.getDeType() == 1) { - stringBuilder.append("FROM_UNIXTIME(cast(").append(f.getDataeaseName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S') as ").append(f.getDataeaseName()); + // 如果原始类型为时间 + if (f.getDeExtractType() == 1) { + if (f.getDeType() == 2 || f.getDeType() == 3) { + stringBuilder.append("unix_timestamp(").append(f.getDataeaseName()).append(")*1000 as ").append(f.getDataeaseName()); + } else { + stringBuilder.append(f.getDataeaseName()); + } } else { - stringBuilder.append(f.getDataeaseName()); + if (f.getDeType() == 1) { + stringBuilder.append("FROM_UNIXTIME(cast(").append(f.getDataeaseName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S') as ").append(f.getDataeaseName()); + } else { + stringBuilder.append(f.getDataeaseName()); + } } return stringBuilder.toString(); }).toArray(String[]::new);