update 优化文档拆分速度

This commit is contained in:
lijiarao
2024-08-15 09:21:49 +08:00
parent dee02fa2ee
commit b81242833d
2 changed files with 50 additions and 10 deletions
@@ -124,6 +124,9 @@ public class FileSpiltService {
* @return * @return
*/ */
public int fileCHN(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { public int fileCHN(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) {
long time1=System.currentTimeMillis();
long time2=System.currentTimeMillis();
log.info("耗时:"+(time2-time1)+"ms");
if (sarFileSplitInfoEO.getStopNumber() <= 0) { if (sarFileSplitInfoEO.getStopNumber() <= 0) {
sarFileSplitInfoEO.setStopNumber(200); sarFileSplitInfoEO.setStopNumber(200);
} }
@@ -134,6 +137,8 @@ public class FileSpiltService {
String partName = ""; String partName = "";
LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getById(sarFileSplitInfoEO.getStandardId()); LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getById(sarFileSplitInfoEO.getStandardId());
LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.getById(sarFileSplitInfoEO.getStandardId()); LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.getById(sarFileSplitInfoEO.getStandardId());
long time3=System.currentTimeMillis();
log.info("耗时:"+(time3-time1)+"ms");
if (!Objects.isNull(lawsDomesticStandard)){ if (!Objects.isNull(lawsDomesticStandard)){
partName = lawsDomesticStandard.getPartName(); partName = lawsDomesticStandard.getPartName();
}else { }else {
@@ -149,7 +154,8 @@ public class FileSpiltService {
// 拆分文件条款详情表中最终插入数据 // 拆分文件条款详情表中最终插入数据
List<SarFileSplitItemsValEO> itemValList = new ArrayList<>(); List<SarFileSplitItemsValEO> itemValList = new ArrayList<>();
Long treeListDisplay = 1L; Long treeListDisplay = 1L;
long time4=System.currentTimeMillis();
log.info("耗时:"+(time4-time1)+"ms");
String generalCatalogueId = UUIDUtils.randomUUID20(); String generalCatalogueId = UUIDUtils.randomUUID20();
SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(); SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO();
// SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"总目录","",sarFileSplitInfoEO.getId(),treeListDisplay++,""); // SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"总目录","",sarFileSplitInfoEO.getId(),treeListDisplay++,"");
@@ -184,19 +190,37 @@ public class FileSpiltService {
if (StringUtils.isEmpty(readFilePath)) { if (StringUtils.isEmpty(readFilePath)) {
throw new JeroBootException("当前文件未找到,请重新选择!"); throw new JeroBootException("当前文件未找到,请重新选择!");
} }
long time5=System.currentTimeMillis();
log.info("耗时:"+(time5-time1)+"ms");
// try (InputStream is = MinioUtil.download(readFilePath);InputStream is1 = MinioUtil.download(readFilePath)) { // try (InputStream is = MinioUtil.download(readFilePath);InputStream is1 = MinioUtil.download(readFilePath)) {
try (InputStream is = ObsBootUtil.getOssFile(readFilePath);InputStream is1 = ObsBootUtil.getOssFile(readFilePath)) { try (InputStream is = ObsBootUtil.getOssFile(readFilePath);InputStream is1 = ObsBootUtil.getOssFile(readFilePath)) {
long time6=System.currentTimeMillis();
log.info("耗时:"+(time6-time1)+"ms");
String fileName = readFilePath.substring((readFilePath.lastIndexOf("/") + 1)); String fileName = readFilePath.substring((readFilePath.lastIndexOf("/") + 1));
MultipartFile mFile = new MockMultipartFile(fileName, fileName, ContentType.APPLICATION_OCTET_STREAM.toString(), is); InputStream inputStream;
MultipartFile mFile1 = new MockMultipartFile(fileName, fileName, ContentType.APPLICATION_OCTET_STREAM.toString(), is1); InputStream inputStream1;
InputStream inputStream = IntekeyUtils.getInputStreamByDecryptFile(mFile); if (IntekeyUtils.ENABLE) {
InputStream inputStream1 = IntekeyUtils.getInputStreamByDecryptFile(mFile1); MultipartFile mFile = new MockMultipartFile(fileName, fileName, ContentType.APPLICATION_OCTET_STREAM.toString(), is);
MultipartFile mFile1 = new MockMultipartFile(fileName, fileName, ContentType.APPLICATION_OCTET_STREAM.toString(), is1);
inputStream = IntekeyUtils.getInputStreamByDecryptFile(mFile);
inputStream1 = IntekeyUtils.getInputStreamByDecryptFile(mFile1);
}else {
inputStream = is;
inputStream1 = is1;
}
ZipSecureFile.setMinInflateRatio(-1.0d); ZipSecureFile.setMinInflateRatio(-1.0d);
long time7=System.currentTimeMillis();
log.info("耗时:"+(time7-time1)+"ms");
XWPFDocument doc = new XWPFDocument(inputStream); XWPFDocument doc = new XWPFDocument(inputStream);
long time8=System.currentTimeMillis();
log.info("耗时:"+(time8-time1)+"ms");
// 获取文档中的图片 // 获取文档中的图片
List<XWPFPictureData> allPictures = doc.getAllPictures(); //List<XWPFPictureData> allPictures = doc.getAllPictures();
//获得序号标题和无标题序号 //获得序号标题和无标题序号
TitleNumberVO titleNumberVO = AsposeUtil.getNumber(inputStream1); TitleNumberVO titleNumberVO = AsposeUtil.getNumber(inputStream1);
long time9=System.currentTimeMillis();
log.info("耗时:"+(time9-time1)+"ms");
//TitleNumberVO titleNumberVO = new TitleNumberVO(); //TitleNumberVO titleNumberVO = new TitleNumberVO();
Map<String, List<String>> titleNumberMap = titleNumberVO.getTitleNumberMap(); Map<String, List<String>> titleNumberMap = titleNumberVO.getTitleNumberMap();
List<String> emptyTitleList = titleNumberVO.getEmptyTitleList(); List<String> emptyTitleList = titleNumberVO.getEmptyTitleList();
@@ -472,6 +496,8 @@ public class FileSpiltService {
log.error(e.getMessage(),e); log.error(e.getMessage(),e);
return -1; return -1;
} }
long time10=System.currentTimeMillis();
log.info("耗时:"+(time10-time1)+"ms");
if (treeList.size() > 0 && messageList.size() > 0) { if (treeList.size() > 0 && messageList.size() > 0) {
sarFileSplitMenuEOMapper.insertForeach(treeList); sarFileSplitMenuEOMapper.insertForeach(treeList);
for (int i = 0; i < messageList.size(); i++) { for (int i = 0; i < messageList.size(); i++) {
@@ -481,6 +507,8 @@ public class FileSpiltService {
iSarFileSplitItemsEOService.insertForeach(messageList); iSarFileSplitItemsEOService.insertForeach(messageList);
iSarFileSplitItemsValEOService.insertForeach(itemValList); iSarFileSplitItemsValEOService.insertForeach(itemValList);
long time11=System.currentTimeMillis();
log.info("耗时:"+(time11-time1)+"ms");
} else { } else {
return -1; return -1;
} }
@@ -23,18 +23,28 @@ public class AsposeUtil {
* @return * @return
*/ */
public static TitleNumberVO getNumber(InputStream is) { public static TitleNumberVO getNumber(InputStream is) {
long time1=System.currentTimeMillis();
TitleNumberVO titleNumberVO = new TitleNumberVO(); TitleNumberVO titleNumberVO = new TitleNumberVO();
Map<String, List<String>> titleNumberMap = new HashMap<>(); Map<String, List<String>> titleNumberMap = new HashMap<>();
List<String> emptyTitleList = new ArrayList<>(); List<String> emptyTitleList = new ArrayList<>();
try { try {
long time9=System.currentTimeMillis();
log.info("耗时:"+(time9-time1)+"ms");
Document doc = new Document(is); Document doc = new Document(is);
long time8=System.currentTimeMillis();
log.info("耗时:"+(time8-time1)+"ms");
DocumentBuilder builder = new DocumentBuilder(doc); DocumentBuilder builder = new DocumentBuilder(doc);
long time7=System.currentTimeMillis();
builder.insertField(FieldType.FIELD_NUM_PAGES, true); log.info("耗时:"+(time7-time1)+"ms");
//builder.insertField(FieldType.FIELD_NUM_PAGES, true);
long time6=System.currentTimeMillis();
log.info("耗时:"+(time6-time1)+"ms");
//获取段落 //获取段落
NodeCollection childNodes = doc.getChildNodes(NodeType.ANY, true); NodeCollection childNodes = doc.getChildNodes(NodeType.PARAGRAPH, true);
long time2=System.currentTimeMillis();
log.info("耗时:"+(time2-time1)+"ms");
for (int i = 0; i < childNodes.getCount(); i++) { for (int i = 0; i < childNodes.getCount(); i++) {
Node next = childNodes.get(i); Node next = childNodes.get(i);
@@ -79,6 +89,8 @@ public class AsposeUtil {
} }
titleNumberVO.setTitleNumberMap(titleNumberMap); titleNumberVO.setTitleNumberMap(titleNumberMap);
titleNumberVO.setEmptyTitleList(emptyTitleList); titleNumberVO.setEmptyTitleList(emptyTitleList);
long time9=System.currentTimeMillis();
log.info("耗时:"+(time9-time1)+"ms");
return titleNumberVO; return titleNumberVO;
} }