feat: bookmark replace
This commit is contained in:
parent
0abe958069
commit
1ab8bc9f71
@ -76,7 +76,6 @@ public class BookmarkExec {
|
||||
if (bk.isListMark()) listMark.add(bk.getBookmarkName());
|
||||
}
|
||||
Map<String, BookmarkInfo> bkMap = info.stream()
|
||||
.filter(b -> !b.isListMark())
|
||||
.collect(Collectors.toMap(BookmarkInfo::getBookmarkName, bk -> bk));
|
||||
|
||||
List<Integer> 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<String> newListItems, String bookmarkName) {
|
||||
public static void handleListContent(XWPFDocument doc, List<String> newListItems, String bookmarkName, Map<String, BookmarkReplaceDataModel> 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<String, BookmarkReplaceDataModel> allDataMap) {
|
||||
List<XWPFParagraph> paragraphs = doc.getParagraphs();
|
||||
List<Integer> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user