diff --git a/src/main/java/com/peanut/modules/book/service/impl/BookServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/BookServiceImpl.java index 4c812b0b..307bba16 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/BookServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/BookServiceImpl.java @@ -17,6 +17,7 @@ import com.peanut.common.utils.Query; import com.peanut.modules.book.dao.BookDao; import com.peanut.modules.book.entity.*; import com.peanut.modules.book.entity.SysDictDataEntity; +import com.peanut.modules.book.service.BookChapterContentService; import com.peanut.modules.book.service.BookChapterService; import com.peanut.modules.book.service.BookService; import com.peanut.modules.book.service.PublisherService; @@ -52,6 +53,8 @@ public class BookServiceImpl extends ServiceImpl implements private BookChapterService bookChapterService; @Autowired ConstantPropertiesUtils constantPropertiesUtils; + @Autowired + private BookChapterContentService bookChapterContentService; @Override @@ -452,86 +455,43 @@ public class BookServiceImpl extends ServiceImpl implements String novel = bookEntity.getNovel(); InputStream inputStream = FileDownloadUtil.getInputStream(novel); Document doc = new Document(inputStream); - String title2Text = ""; - Map> paraMap = new HashMap<>(); - Map headMap = new HashMap<>(); - List title_list = new ArrayList<>(); + int index = 0; + int x1 = 0; + int x2 = 0; + String chapterName = ""; + int chapterId = 0; for (int i = 0; i < doc.getSections().getCount(); i++) { - String currentTitle = ""; Section section = doc.getSections().get(i); for (int j = 0; j < section.getParagraphs().getCount() - 1; j++) { Paragraph paragraph = section.getParagraphs().get(j); - if (paragraph.getStyleName().equals("Heading1")) { - String textq = paragraph.getText(); - currentTitle = textq; - title_list.add(currentTitle); - List secondTitleList = new ArrayList<>(); - paraMap.put(currentTitle, secondTitleList); - if (!section.getParagraphs().get(j + 1).getStyleName().matches("Heading2")) { - int head_index = j; - StringBuilder builder = new StringBuilder(); - do { - builder.append(section.getParagraphs().get(head_index).getText()); - head_index++; - //防止index超出异常发生 - if (head_index >= section.getParagraphs().getCount()) { - break; - } - } while (!section.getParagraphs().get(head_index).getStyleName().equals("Heading2")); - String head_text = builder.toString(); - headMap.put(currentTitle, head_text); - + BookChapterEntity chapter = new BookChapterEntity(); + chapter.setBookId(bookId); + chapter.setNumber(index++); + chapter.setSort(j); + if (paragraph.getStyleName().equals("Heading1")&&StringUtils.isNotBlank(paragraph.getText())) { + x1 = j; + chapterName = paragraph.getText(); + }else if (paragraph.getStyleName().equals("Heading2")&&StringUtils.isNotBlank(paragraph.getText())){ + x2 = j; + chapter.setChapter(chapterName); + chapter.setContent(paragraph.getText()); + System.out.println(paragraph.getText()); + bookChapterService.save(chapter); + chapterId = chapter.getId(); + }else if (StringUtils.isNotBlank(paragraph.getText())){ + if (x1 > x2){ + chapter.setChapter(chapterName); + chapter.setContent(paragraph.getText()); + System.out.println(paragraph.getText()); + bookChapterService.save(chapter); + }else { + BookChapterContentEntity content = new BookChapterContentEntity(); + content.setBookId(bookId); + content.setBookChatperId(chapterId); + content.setNumber(index); + content.setContent(paragraph.getText()); + bookChapterContentService.save(content); } - } else if (paragraph.getStyleName().equals("Heading2") && StringUtils.isNotBlank(paragraph.getText().trim())) { - StringBuilder builder = new StringBuilder(); - boolean isRun = false; - do { - if (isRun) { - builder.append(section.getParagraphs().get(j).getText()); - } - isRun = true; - j++; - //防止index超出异常发生 - if (j >= section.getParagraphs().getCount()) { - break; - } - } while (!section.getParagraphs().get(j).getStyleName().equals("Heading2") && !section.getParagraphs().get(j).getStyleName().equals("Heading1")); - j--; - String text = builder.toString(); - title2Text = paragraph.getText(); // 获取标题二的文本内容 - if (null != title2Text && !"".equals(title2Text)) { - String[] s = new String[]{title2Text, text}; - paraMap.get(currentTitle).add(s); - } - } - } - } - int index = 0; - for (String title : title_list) { - if (null == paraMap.get(title) || paraMap.get(title).size() == 0) { - index++; - BookChapterEntity bookChapterEntity = new BookChapterEntity(); - - bookChapterEntity.setBookId(bookId); - bookChapterEntity.setNumber(index); - bookChapterEntity.setChapter(title); - bookChapterEntity.setSort(1); - if (null != headMap.get(title)) { - bookChapterEntity.setContent(headMap.get(title)); - } else { - bookChapterEntity.setContent(""); - } - bookChapterService.save(bookChapterEntity); - } else { - for (String[] t : paraMap.get(title)) { - index++; - BookChapterEntity bookChapterEntity = new BookChapterEntity(); - bookChapterEntity.setBookId(bookId); - bookChapterEntity.setSort(2); - bookChapterEntity.setNumber(index); - bookChapterEntity.setChapter(title + "," + t[0]); - bookChapterEntity.setContent(t[1]); - bookChapterService.save(bookChapterEntity); } } }