fix:中航富士达 修复in 语句超过1000条
This commit is contained in:
parent
5cc09af89b
commit
a56ead69ba
|
|
@ -29,12 +29,23 @@ public class CustomSearchTemplate extends AbstractCustomSqlConditionJavaCode {
|
||||||
while (rst.next()) {
|
while (rst.next()) {
|
||||||
unitList.add(Util.null2String(rst.getString("VndName").trim()));
|
unitList.add(Util.null2String(rst.getString("VndName").trim()));
|
||||||
}
|
}
|
||||||
String join = unitList.stream()
|
int batchSize = 900;
|
||||||
.map(s -> "'" + s + "'")
|
List<List<String>> batches = new ArrayList<>();
|
||||||
.collect(Collectors.joining(","));
|
for (int i = 0; i < unitList.size(); i += batchSize) {
|
||||||
rst.writeLog("CustomSearchTemplate:"+unitList.toString());
|
batches.add(unitList.subList(i, Math.min(i + batchSize, unitList.size())));
|
||||||
|
}
|
||||||
|
|
||||||
String sqlCondition = "d1.gzdw in ("+join+")";
|
// 为每批生成 IN 条件
|
||||||
|
List<String> inConditions = batches.stream()
|
||||||
|
.map(batch -> batch.stream()
|
||||||
|
.distinct()
|
||||||
|
.map(s -> "'" + s + "'")
|
||||||
|
.collect(Collectors.joining(",")))
|
||||||
|
.map(batch -> "d1.gzdw IN (" + batch + ")")
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
// 用 OR 连接多个 IN 条件
|
||||||
|
String sqlCondition = "(" + String.join(" OR ", inConditions) + ")";
|
||||||
|
|
||||||
return sqlCondition;
|
return sqlCondition;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue