Unverified 提交 d7da1c42 authored 作者: XiaJunjie2020's avatar XiaJunjie2020 提交者: GitHub

Merge pull request #1210 from dataease/pr@dev@fix_sqlserver_calc

fix:sqlserver计算字段bug
...@@ -8,9 +8,9 @@ import io.dataease.base.domain.Datasource; ...@@ -8,9 +8,9 @@ import io.dataease.base.domain.Datasource;
import io.dataease.base.mapper.DatasetTableFieldMapper; import io.dataease.base.mapper.DatasetTableFieldMapper;
import io.dataease.commons.constants.DeTypeConstants; import io.dataease.commons.constants.DeTypeConstants;
import io.dataease.controller.request.chart.ChartExtFilterRequest; import io.dataease.controller.request.chart.ChartExtFilterRequest;
import io.dataease.dto.datasource.JdbcConfiguration;
import io.dataease.dto.chart.ChartCustomFilterDTO; import io.dataease.dto.chart.ChartCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO; import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.datasource.JdbcConfiguration;
import io.dataease.dto.sqlObj.SQLObj; import io.dataease.dto.sqlObj.SQLObj;
import io.dataease.provider.query.QueryProvider; import io.dataease.provider.query.QueryProvider;
import io.dataease.provider.query.SQLConstants; import io.dataease.provider.query.SQLConstants;
...@@ -98,7 +98,15 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -98,7 +98,15 @@ public class SqlserverQueryProvider extends QueryProvider {
if (CollectionUtils.isNotEmpty(fields)) { if (CollectionUtils.isNotEmpty(fields)) {
for (int i = 0; i < fields.size(); i++) { for (int i = 0; i < fields.size(); i++) {
DatasetTableField f = fields.get(i); DatasetTableField f = fields.get(i);
String originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName()); String originField;
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originField = calcFieldRegex(f.getOriginName(), tableObj);
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
} else {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i); String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
String fieldName = ""; String fieldName = "";
// 处理横轴字段 // 处理横轴字段
...@@ -185,7 +193,15 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -185,7 +193,15 @@ public class SqlserverQueryProvider extends QueryProvider {
if (CollectionUtils.isNotEmpty(xAxis)) { if (CollectionUtils.isNotEmpty(xAxis)) {
for (int i = 0; i < xAxis.size(); i++) { for (int i = 0; i < xAxis.size(); i++) {
ChartViewFieldDTO x = xAxis.get(i); ChartViewFieldDTO x = xAxis.get(i);
String originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()); String originField;
if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originField = calcFieldRegex(x.getOriginName(), tableObj);
} else if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 1) {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName());
} else {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName());
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i); String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
// 处理横轴字段 // 处理横轴字段
xFields.add(getXFields(x, originField, fieldAlias)); xFields.add(getXFields(x, originField, fieldAlias));
...@@ -205,7 +221,15 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -205,7 +221,15 @@ public class SqlserverQueryProvider extends QueryProvider {
if (CollectionUtils.isNotEmpty(yAxis)) { if (CollectionUtils.isNotEmpty(yAxis)) {
for (int i = 0; i < yAxis.size(); i++) { for (int i = 0; i < yAxis.size(); i++) {
ChartViewFieldDTO y = yAxis.get(i); ChartViewFieldDTO y = yAxis.get(i);
String originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName()); String originField;
if (ObjectUtils.isNotEmpty(y.getExtField()) && y.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originField = calcFieldRegex(y.getOriginName(), tableObj);
} else if (ObjectUtils.isNotEmpty(y.getExtField()) && y.getExtField() == 1) {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName());
} else {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName());
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i); String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
// 处理纵轴字段 // 处理纵轴字段
yFields.add(getYFields(y, originField, fieldAlias)); yFields.add(getYFields(y, originField, fieldAlias));
...@@ -274,7 +298,15 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -274,7 +298,15 @@ public class SqlserverQueryProvider extends QueryProvider {
if (CollectionUtils.isNotEmpty(xAxis)) { if (CollectionUtils.isNotEmpty(xAxis)) {
for (int i = 0; i < xAxis.size(); i++) { for (int i = 0; i < xAxis.size(); i++) {
ChartViewFieldDTO x = xAxis.get(i); ChartViewFieldDTO x = xAxis.get(i);
String originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()); String originField;
if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originField = calcFieldRegex(x.getOriginName(), tableObj);
} else if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 1) {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName());
} else {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName());
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i); String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
// 处理横轴字段 // 处理横轴字段
xFields.add(getXFields(x, originField, fieldAlias)); xFields.add(getXFields(x, originField, fieldAlias));
...@@ -351,7 +383,15 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -351,7 +383,15 @@ public class SqlserverQueryProvider extends QueryProvider {
if (CollectionUtils.isNotEmpty(xList)) { if (CollectionUtils.isNotEmpty(xList)) {
for (int i = 0; i < xList.size(); i++) { for (int i = 0; i < xList.size(); i++) {
ChartViewFieldDTO x = xList.get(i); ChartViewFieldDTO x = xList.get(i);
String originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()); String originField;
if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originField = calcFieldRegex(x.getOriginName(), tableObj);
} else if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 1) {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName());
} else {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName());
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i); String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
// 处理横轴字段 // 处理横轴字段
xFields.add(getXFields(x, originField, fieldAlias)); xFields.add(getXFields(x, originField, fieldAlias));
...@@ -371,7 +411,15 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -371,7 +411,15 @@ public class SqlserverQueryProvider extends QueryProvider {
if (CollectionUtils.isNotEmpty(yAxis)) { if (CollectionUtils.isNotEmpty(yAxis)) {
for (int i = 0; i < yAxis.size(); i++) { for (int i = 0; i < yAxis.size(); i++) {
ChartViewFieldDTO y = yAxis.get(i); ChartViewFieldDTO y = yAxis.get(i);
String originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName()); String originField;
if (ObjectUtils.isNotEmpty(y.getExtField()) && y.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originField = calcFieldRegex(y.getOriginName(), tableObj);
} else if (ObjectUtils.isNotEmpty(y.getExtField()) && y.getExtField() == 1) {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName());
} else {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName());
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i); String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
// 处理纵轴字段 // 处理纵轴字段
yFields.add(getYFields(y, originField, fieldAlias)); yFields.add(getYFields(y, originField, fieldAlias));
...@@ -582,7 +630,15 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -582,7 +630,15 @@ public class SqlserverQueryProvider extends QueryProvider {
if (CollectionUtils.isNotEmpty(yAxis)) { if (CollectionUtils.isNotEmpty(yAxis)) {
for (int i = 0; i < yAxis.size(); i++) { for (int i = 0; i < yAxis.size(); i++) {
ChartViewFieldDTO y = yAxis.get(i); ChartViewFieldDTO y = yAxis.get(i);
String originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName()); String originField;
if (ObjectUtils.isNotEmpty(y.getExtField()) && y.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originField = calcFieldRegex(y.getOriginName(), tableObj);
} else if (ObjectUtils.isNotEmpty(y.getExtField()) && y.getExtField() == 1) {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName());
} else {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName());
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i); String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
// 处理纵轴字段 // 处理纵轴字段
yFields.add(getYFields(y, originField, fieldAlias)); yFields.add(getYFields(y, originField, fieldAlias));
...@@ -728,8 +784,15 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -728,8 +784,15 @@ public class SqlserverQueryProvider extends QueryProvider {
String whereName = ""; String whereName = "";
String whereTerm = transMysqlFilterTerm(request.getTerm()); String whereTerm = transMysqlFilterTerm(request.getTerm());
String whereValue = ""; String whereValue = "";
String originName = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getOriginName()); String originName;
if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originName = calcFieldRegex(field.getOriginName(), tableObj);
} else if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 1) {
originName = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getOriginName());
} else {
originName = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getOriginName());
}
if (field.getDeType() == 1) { if (field.getDeType() == 1) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
whereName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originName); whereName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originName);
...@@ -781,7 +844,16 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -781,7 +844,16 @@ public class SqlserverQueryProvider extends QueryProvider {
String whereName = ""; String whereName = "";
String whereTerm = transMysqlFilterTerm(request.getOperator()); String whereTerm = transMysqlFilterTerm(request.getOperator());
String whereValue = ""; String whereValue = "";
String originName = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getOriginName());
String originName;
if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originName = calcFieldRegex(field.getOriginName(), tableObj);
} else if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 1) {
originName = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getOriginName());
} else {
originName = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getOriginName());
}
if (field.getDeType() == 1) { if (field.getDeType() == 1) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论