From 6c99deaaa260a4b2a4205008c6abfabb8aa65720 Mon Sep 17 00:00:00 2001 From: ulleo Date: Wed, 10 Jul 2024 16:01:43 +0800 Subject: [PATCH] =?UTF-8?q?fix(X-Pack):=20=E4=BF=AE=E5=A4=8D=E3=80=90?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A1=AB=E6=8A=A5=E3=80=91=E6=88=91=E7=9A=84?= =?UTF-8?q?=E5=A1=AB=E6=8A=A5-=E5=B7=B2=E6=8F=90=E4=BA=A4=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=95=B0=E6=8D=AE=E4=BC=9A=E6=98=BE=E7=A4=BA=E5=85=A8?= =?UTF-8?q?=E9=83=A8=E6=95=B0=E6=8D=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provider/ext/MysqlExtDDLProvider.java | 11 +++++++++- .../service/datafill/DataFillDataService.java | 21 +++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/core/backend/src/main/java/io/dataease/provider/ext/MysqlExtDDLProvider.java b/core/backend/src/main/java/io/dataease/provider/ext/MysqlExtDDLProvider.java index 4f2f193ed3..2efeba5002 100644 --- a/core/backend/src/main/java/io/dataease/provider/ext/MysqlExtDDLProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/ext/MysqlExtDDLProvider.java @@ -109,7 +109,16 @@ public class MysqlExtDDLProvider extends DefaultExtDDLProvider { StringBuilder builder = new StringBuilder("WHERE 1 = 1 "); for (TableField searchField : searchFields) { //目前只考虑等于 - builder.append("AND $Column_Field$ = ? ".replace("$Column_Field$", searchField.getFieldName())); + if (searchField.getInCount() > 1) { + List pList = new ArrayList<>(); + for (int i = 0; i < searchField.getInCount(); i++) { + pList.add("?"); + } + String str = "AND $Column_Field$ IN (" + String.join(", ", pList) + ")"; + builder.append(str.replace("$Column_Field$", searchField.getFieldName())); + } else { + builder.append("AND $Column_Field$ = ? ".replace("$Column_Field$", searchField.getFieldName())); + } } return builder.toString(); } diff --git a/core/backend/src/main/java/io/dataease/service/datafill/DataFillDataService.java b/core/backend/src/main/java/io/dataease/service/datafill/DataFillDataService.java index f02846adb5..cd3b0f152c 100644 --- a/core/backend/src/main/java/io/dataease/service/datafill/DataFillDataService.java +++ b/core/backend/src/main/java/io/dataease/service/datafill/DataFillDataService.java @@ -227,16 +227,29 @@ public class DataFillDataService { String whereSql = ""; if (StringUtils.isNotBlank(searchRequest.getPrimaryKeyValue())) { whereSql = extDDLProvider.whereSql(dataFillForm.getTableName(), List.of(pk)); - } - - String countSql = extDDLProvider.countSql(dataFillForm.getTableName(), searchFields, whereSql); - if (StringUtils.isNotBlank(searchRequest.getPrimaryKeyValue())) { datasourceRequest.setTableFieldWithValues(List.of(new DatasourceRequest.TableFieldWithValue() .setValue(searchRequest.getPrimaryKeyValue()) .setFiledName(pk.getFieldName()) .setTypeName(pk.getFieldType()) .setType(pk.getType()))); } + + if (CollectionUtils.isNotEmpty(searchRequest.getPrimaryKeyValueList())) { + pk.setInCount(searchRequest.getPrimaryKeyValueList().size()); + whereSql = extDDLProvider.whereSql(dataFillForm.getTableName(), List.of(pk)); + List ids = new ArrayList<>(); + for (String s : searchRequest.getPrimaryKeyValueList()) { + ids.add(new DatasourceRequest.TableFieldWithValue() + .setValue(s) + .setFiledName(pk.getFieldName()) + .setTypeName(pk.getFieldType()) + .setType(pk.getType())); + } + datasourceRequest.setTableFieldWithValues(ids); + } + + String countSql = extDDLProvider.countSql(dataFillForm.getTableName(), searchFields, whereSql); + datasourceRequest.setQuery(countSql); List countData = datasourceProvider.getData(datasourceRequest); long count = NumberUtils.toLong(countData.get(0)[0]);