From 479e4aea295a4e9492e170a99e00d451138e779c Mon Sep 17 00:00:00 2001 From: taojinlong Date: Thu, 13 May 2021 13:46:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20kettle=20=E6=8A=BD=E5=8F=96=E5=B8=83?= =?UTF-8?q?=E5=B0=94=E7=B1=BB=E5=9E=8B=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/dataset/DataSetTableService.java | 5 ++-- .../service/dataset/ExtractDataService.java | 27 +++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) 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 626d0f5517..018f845ea3 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -619,8 +619,6 @@ public class DataSetTableService { case "TIMESTAMP": return 1;// 时间 case "INT": - case "BIT": - case "TINYINT": case "SMALLINT": case "MEDIUMINT": case "INTEGER": @@ -630,6 +628,9 @@ public class DataSetTableService { case "DOUBLE": case "DECIMAL": return 3;// 浮点 + case "BIT": + case "TINYINT": + return 4;// 布尔 default: return 0; } diff --git a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java index 894f118b40..2fdc1a7253 100644 --- a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -130,8 +130,11 @@ public class ExtractDataService { case 3: Column_Fields = Column_Fields + "DOUBLE" + ",`"; break; + case 4: + Column_Fields = Column_Fields + "TINYINT(lenth)".replace("lenth", String.valueOf(datasetTableField.getSize())) + ",`"; + break; default: - Column_Fields = Column_Fields + "varchar(lenth)".replace("lenth", String.valueOf(datasetTableField.getSize())) + ","; + Column_Fields = Column_Fields + "varchar(lenth)".replace("lenth", String.valueOf(datasetTableField.getSize())) + ",`"; break; } } @@ -182,6 +185,7 @@ public class ExtractDataService { return o1.getColumnIndex().compareTo(o2.getColumnIndex()); }); String dorisTablColumnSql = createDorisTablColumnSql(datasetTableFields); + System.out.println(dorisTablColumnSql); switch (updateType) { // 全量更新 case all_scope: @@ -525,6 +529,13 @@ public class ExtractDataService { } private StepMeta udjc(List datasetTableFields){ + String needToChangeolumnType = ""; + for (DatasetTableField datasetTableField : datasetTableFields) { + if(datasetTableField.getDeType() != null && datasetTableField.getDeType() == 4){ + needToChangeolumnType = needToChangeolumnType + alterColumnTypeCode.replace("FILED", datasetTableField.getOriginName()); + } + } + UserDefinedJavaClassMeta userDefinedJavaClassMeta = new UserDefinedJavaClassMeta(); List fields = new ArrayList<>(); UserDefinedJavaClassMeta.FieldInfo fieldInfo = new UserDefinedJavaClassMeta.FieldInfo("dataease_uuid", ValueMetaInterface.TYPE_STRING, -1, -1); @@ -532,7 +543,8 @@ public class ExtractDataService { userDefinedJavaClassMeta.setFieldInfo(fields); List definitions = new ArrayList(); UserDefinedJavaClassDef userDefinedJavaClassDef = new UserDefinedJavaClassDef(UserDefinedJavaClassDef.ClassType.TRANSFORM_CLASS, "Processor", - code.replace("Column_Fields", String.join(",", datasetTableFields.stream().map(DatasetTableField::getOriginName).collect(Collectors.toList())))); + code.replace("alterColumnTypeCode", needToChangeolumnType).replace("Column_Fields", String.join(",", datasetTableFields.stream().map(DatasetTableField::getOriginName).collect(Collectors.toList())))); + userDefinedJavaClassDef.setActive(true); definitions.add(userDefinedJavaClassDef); userDefinedJavaClassMeta.replaceDefinitions(definitions); @@ -566,6 +578,16 @@ public class ExtractDataService { } } + private static String alterColumnTypeCode = " if(\"FILED\".equalsIgnoreCase(filed)){\n" + + "\t if(tmp != null && tmp.equalsIgnoreCase(\"Y\")){\n" + + " get(Fields.Out, filed).setValue(r, 1);\n" + + " get(Fields.Out, filed).getValueMeta().setType(2);\n" + + " }else{\n" + + " get(Fields.Out, filed).setValue(r, 0);\n" + + " get(Fields.Out, filed).getValueMeta().setType(2);\n" + + " }\n" + + " }\n"; + private static String code = "import org.pentaho.di.core.row.ValueMetaInterface;\n" + "import java.util.List;\n" + "import java.io.File;\n" + @@ -595,6 +617,7 @@ public class ExtractDataService { " List fileds = Arrays.asList(\"Column_Fields\".split(\",\"));\n" + " for (String filed : fileds) {\n" + " String tmp = get(Fields.In, filed).getString(r);\n" + + "alterColumnTypeCode \n" + " str = str + tmp;\n" + " }\n" + "\n" +