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());
|
if (bk.isListMark()) listMark.add(bk.getBookmarkName());
|
||||||
}
|
}
|
||||||
Map<String, BookmarkInfo> bkMap = info.stream()
|
Map<String, BookmarkInfo> bkMap = info.stream()
|
||||||
.filter(b -> !b.isListMark())
|
|
||||||
.collect(Collectors.toMap(BookmarkInfo::getBookmarkName, bk -> bk));
|
.collect(Collectors.toMap(BookmarkInfo::getBookmarkName, bk -> bk));
|
||||||
|
|
||||||
List<Integer> waitRemoveIdx = new ArrayList<>();
|
List<Integer> waitRemoveIdx = new ArrayList<>();
|
||||||
@ -117,7 +116,7 @@ public class BookmarkExec {
|
|||||||
if (allDataMap.containsKey(mk)) {
|
if (allDataMap.containsKey(mk)) {
|
||||||
BookmarkReplaceDataModel model = allDataMap.get(mk);
|
BookmarkReplaceDataModel model = allDataMap.get(mk);
|
||||||
if (model.getExtData() instanceof ListExData exData) {
|
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();
|
BigInteger numID = paragraph.getNumID();
|
||||||
if (numID != null) {
|
if (numID != null) {
|
||||||
info.setListMark(true);
|
info.setListMark(true);
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
queryBookmarkIdx(paragraph, info);
|
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);
|
XWPFParagraph bookmarkParagraph = findBookmarkParagraph(doc, bookmarkName);
|
||||||
if (bookmarkParagraph == null) {
|
if (bookmarkParagraph == null) {
|
||||||
@ -416,11 +414,11 @@ public class BookmarkExec {
|
|||||||
// 插入新的列表项
|
// 插入新的列表项
|
||||||
insertNewListItems(doc, newListItems, numId, ilvl, bookmarkParagraph, bookmarkName);
|
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<XWPFParagraph> paragraphs = doc.getParagraphs();
|
||||||
List<Integer> indexesToRemove = new ArrayList<>();
|
List<Integer> indexesToRemove = new ArrayList<>();
|
||||||
|
|
||||||
@ -434,8 +432,11 @@ public class BookmarkExec {
|
|||||||
for (CTBookmark bookmark : bookmarks) {
|
for (CTBookmark bookmark : bookmarks) {
|
||||||
if (bookmark.getName().equals(bookmarkName)) {
|
if (bookmark.getName().equals(bookmarkName)) {
|
||||||
if (bkMap.containsKey(bookmarkName) && bkMap.get(bookmarkName).isListMark()) {
|
if (bkMap.containsKey(bookmarkName) && bkMap.get(bookmarkName).isListMark()) {
|
||||||
indexesToRemove.add(i);
|
BookmarkReplaceDataModel model = allDataMap.get(bookmarkName);
|
||||||
break;
|
if (model.getExtData() instanceof ListExData) {
|
||||||
|
indexesToRemove.add(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user