package com.xly.util; import java.util.*; import java.util.stream.Collectors; public class UserChoseIntentParser { /** * @param input 用户输入:全部确认 / 合并确认 / 1,3行确认 * @param rowMap 上面parse出来的全量数据 * @return 最终要生成订单的明细列表 */ public static Map getSelectedRows(String input, Map> rowMap) { List> sRowData = new ArrayList<>(); Map rMap = new HashMap<>(); String sHandleType = "merge";//单个的 就是全部确认 否则就是合并确认 if (input.contains("全部确认") || input.contains("合并确认")) { if(input.contains("全部确认")){ sHandleType = "single"; } sRowData = new ArrayList<>(rowMap.values()); rMap.put("sRowData",sRowData); rMap.put("sHandleType",sHandleType); return rMap; } // 解析 1,3,5-7 这类行号 Set selected = new HashSet<>(); String[] parts = input.replaceAll("[^0-9,-]", "").split("[,,]"); for (String part : parts) { try { if (part.contains("-")) { String[] range = part.split("-"); int start = Integer.parseInt(range[0]); int end = Integer.parseInt(range[1]); for (int i = start; i <= end; i++) { selected.add(i); } } else { selected.add(Integer.parseInt(part)); } } catch (Exception ignored) {} } rMap.put("sRowData",selected.stream() .filter(rowMap::containsKey) .map(rowMap::get) .collect(Collectors.toList())); rMap.put("sHandleType",sHandleType); return rMap; } }