public String init(String targetPath,String sourcePath,List<Integer> pagination,List<WordPaginationVO> wordPaginationVOS, OssTemplate template){ InputStream is = null; XWPFDocument doc=null; BladeFile bladeFile=null; OutputStream out=null; InputStream imgIs = null; int i = 0; int j=0; String aa=null; String startLelvl = ""; try { XWPFDocument createDoc = new XWPFDocument(); URL url = new URL(sourcePath); is = url.openStream(); doc = new XWPFDocument(is); //获取段落 List<XWPFParagraph> paras=doc.getParagraphs(); for (XWPFParagraph para : paras){ String titleLvl = getTitleLvl(doc,para);//获取段落级别 if("a5".equals(titleLvl)||"HTML".equals(titleLvl)||"".equals(titleLvl)||null==titleLvl){ titleLvl = "8"; } if(!"8".equals(titleLvl)){ if (!Func.isEmpty(pagination)){ for (Integer paginations:pagination){ if ( i == paginations){ if (startLelvl.equals(titleLvl)){ break; } List<String> stringList=new ArrayList<>(); stringList.add(para.getParagraphText()); for (String string:stringList){ XWPFParagraph xwpfParagraph=createDoc.createParagraph(); XWPFRun xwpfRun=xwpfParagraph.createRun(); xwpfRun.setText(string); } if (StringUtils.isBlank(startLelvl)) startLelvl = titleLvl; } } out=new FileOutputStream(targetPath); createDoc.write(out); imgIs = new FileInputStream(targetPath); bladeFile=template.putFile(targetPath,imgIs); bladeFile.getLink(); }else { WordPaginationVO wordPaginationVO=new WordPaginationVO(); wordPaginationVO.setId(i); if(titleLvl.equals("0")){ wordPaginationVO.setParentId(-1); } if(titleLvl.equals("1")){ wordPaginationVO.setParentId(0); } if(titleLvl.equals("2")){ if (titleLvl.equals(aa)){ wordPaginationVO.setParentId(j); j=0; aa=null; }else { wordPaginationVO.setParentId(i-1); j=i-1; aa=titleLvl; } } if(titleLvl.equals("3")){ if (titleLvl.equals(aa)){ wordPaginationVO.setParentId(j); j=0; aa=null; }else { wordPaginationVO.setParentId(i-2); j=i-2; aa=titleLvl; } } if(titleLvl.equals("4")){ if (titleLvl.equals(aa)){ wordPaginationVO.setParentId(j); j=0; aa=null; }else { wordPaginationVO.setParentId(i-1); j=i-1; aa=titleLvl; } } if(titleLvl.equals("5")){ throw new ServiceException("暂不支持6级目录,"); } wordPaginationVO.setName(para.getParagraphText()); wordPaginationVO.setSort(i); wordPaginationVOS.add(wordPaginationVO); } i++; } } return bladeFile.getLink(); } catch (Exception e) { e.printStackTrace(); } finally{ try { if(null!=out){ out.close(); } if(null!=is){ is.close(); } }catch (IOException e) { e.printStackTrace(); } } return null; }
static List<WordPaginationVO> buildTree(List<WordPaginationVO> list,Integer pid){ List<WordPaginationVO> tree=new ArrayList<>(); for(WordPaginationVO wordPaginationVO:list){ if(Objects.equals(wordPaginationVO.getParentId(),pid)){ tree.add(findChild(wordPaginationVO,list)); } } return tree; } static WordPaginationVO findChild(WordPaginationVO wordPaginationVO, List<WordPaginationVO> list){ for(WordPaginationVO wordPaginationVO1:list){ if(Objects.equals(wordPaginationVO1.getParentId(),wordPaginationVO.getSort())){ if(wordPaginationVO.getChildren() == null){ wordPaginationVO.setChildren(new ArrayList<WordPaginationVO>()); } wordPaginationVO.getChildren().add(findChild(wordPaginationVO1,list)); } } return wordPaginationVO; }