diff --git a/src/com/weaver/formmode/customjavacode/forstarsecond/CustomSearchTemplate.java b/src/com/weaver/formmode/customjavacode/forstarsecond/CustomSearchTemplate.java index 02e0a74..512dcf0 100644 --- a/src/com/weaver/formmode/customjavacode/forstarsecond/CustomSearchTemplate.java +++ b/src/com/weaver/formmode/customjavacode/forstarsecond/CustomSearchTemplate.java @@ -29,12 +29,23 @@ public class CustomSearchTemplate extends AbstractCustomSqlConditionJavaCode { while (rst.next()) { unitList.add(Util.null2String(rst.getString("VndName").trim())); } - String join = unitList.stream() - .map(s -> "'" + s + "'") - .collect(Collectors.joining(",")); - rst.writeLog("CustomSearchTemplate:"+unitList.toString()); + int batchSize = 900; + List> batches = new ArrayList<>(); + for (int i = 0; i < unitList.size(); i += batchSize) { + batches.add(unitList.subList(i, Math.min(i + batchSize, unitList.size()))); + } - String sqlCondition = "d1.gzdw in ("+join+")"; + // 为每批生成 IN 条件 + List 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; }