Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseGoodsStockTableManager.java =================================================================== diff -u -r32169 -r33842 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseGoodsStockTableManager.java (.../TousseGoodsStockTableManager.java) (revision 32169) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseGoodsStockTableManager.java (.../TousseGoodsStockTableManager.java) (revision 33842) @@ -3,6 +3,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -86,7 +87,25 @@ GoodsOption goodsOption = goodsOptionManager.getGoodsOption(GoodsOption.MODEL_TOUSSEGOODSSTOCK, orgUnitCode); if (goodsOption != null && StringUtils.isNotBlank(goodsOption.getValue())){ String[] goods = goodsOption.getValue().split(";"); - String names = SqlBuilder.build_IN_Statement(" name ", SqlBuilder.IN, goods); + String names = ""; + List nameList = Arrays.asList(goods); + if(CollectionUtils.isNotEmpty(nameList)){ + //解决报错:ORA-01795: 列表中的最大表达式数为 1000 + int size = nameList.size(); + int batchNum = size / 1000 + (size % 1000 > 0 ? 1 : 0); + for(int i=0;i nameList.size()){ + endIndex = nameList.size(); + } + if(i > 0){ + names += " or "; + } + names += SqlBuilder.build_IN_Statement(" name ", SqlBuilder.IN, nameList.subList(startIndex, endIndex)); + } + names = "(" + names + ")"; + } sqlBuilder.append(" and ").append(names); }