diff --git a/wmyun-framework/wmyun-spring-boot-starter-word/src/main/java/com/wmyun/farmwork/word/core/BookmarkExec.java b/wmyun-framework/wmyun-spring-boot-starter-word/src/main/java/com/wmyun/farmwork/word/core/BookmarkExec.java index 17254ea..233372e 100644 --- a/wmyun-framework/wmyun-spring-boot-starter-word/src/main/java/com/wmyun/farmwork/word/core/BookmarkExec.java +++ b/wmyun-framework/wmyun-spring-boot-starter-word/src/main/java/com/wmyun/farmwork/word/core/BookmarkExec.java @@ -76,7 +76,6 @@ public class BookmarkExec { if (bk.isListMark()) listMark.add(bk.getBookmarkName()); } Map bkMap = info.stream() - .filter(b -> !b.isListMark()) .collect(Collectors.toMap(BookmarkInfo::getBookmarkName, bk -> bk)); List waitRemoveIdx = new ArrayList<>(); @@ -117,7 +116,7 @@ public class BookmarkExec { if (allDataMap.containsKey(mk)) { BookmarkReplaceDataModel model = allDataMap.get(mk); if (model.getExtData() instanceof ListExData exData) { - handleListContent(doc, exData.getValue(), mk); + handleListContent(doc, exData.getValue(), mk, allDataMap); } } } @@ -287,7 +286,6 @@ public class BookmarkExec { BigInteger numID = paragraph.getNumID(); if (numID != null) { info.setListMark(true); - continue; } queryBookmarkIdx(paragraph, info); @@ -401,7 +399,7 @@ public class BookmarkExec { /** * 处理列表行新增 */ - public static void handleListContent(XWPFDocument doc, List newListItems, String bookmarkName) { + public static void handleListContent(XWPFDocument doc, List newListItems, String bookmarkName, Map allDataMap) { // 查找书签所在的段落 XWPFParagraph bookmarkParagraph = findBookmarkParagraph(doc, bookmarkName); if (bookmarkParagraph == null) { @@ -416,11 +414,11 @@ public class BookmarkExec { // 插入新的列表项 insertNewListItems(doc, newListItems, numId, ilvl, bookmarkParagraph, bookmarkName); // 删除原列表段落 - removeOriginalListParagraphs(doc, bookmarkName); + removeOriginalListParagraphs(doc, bookmarkName, allDataMap); } - private static void removeOriginalListParagraphs(XWPFDocument doc, String bookmarkName) { + private static void removeOriginalListParagraphs(XWPFDocument doc, String bookmarkName, Map allDataMap) { List paragraphs = doc.getParagraphs(); List indexesToRemove = new ArrayList<>(); @@ -434,8 +432,11 @@ public class BookmarkExec { for (CTBookmark bookmark : bookmarks) { if (bookmark.getName().equals(bookmarkName)) { if (bkMap.containsKey(bookmarkName) && bkMap.get(bookmarkName).isListMark()) { - indexesToRemove.add(i); - break; + BookmarkReplaceDataModel model = allDataMap.get(bookmarkName); + if (model.getExtData() instanceof ListExData) { + indexesToRemove.add(i); + break; + } } } }