update 优化文档拆分速度

This commit is contained in:
lijiarao
2024-08-13 18:09:07 +08:00
parent 2fbfc3a68c
commit 12ead6324e
2 changed files with 50 additions and 10 deletions
@@ -120,6 +120,9 @@ public class FileSpiltService {
* @return
*/
public int fileCHN(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) {
long time1=System.currentTimeMillis();
long time2=System.currentTimeMillis();
log.info("耗时:"+(time2-time1)+"ms");
if (sarFileSplitInfoEO.getStopNumber() <= 0) {
sarFileSplitInfoEO.setStopNumber(200);
}
@@ -130,6 +133,8 @@ public class FileSpiltService {
String partName = "";
LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getById(sarFileSplitInfoEO.getStandardId());
LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.getById(sarFileSplitInfoEO.getStandardId());
long time3=System.currentTimeMillis();
log.info("耗时:"+(time3-time1)+"ms");
if (!Objects.isNull(lawsDomesticStandard)){
partName = lawsDomesticStandard.getPartName();
}else {
@@ -145,7 +150,8 @@ public class FileSpiltService {
// 拆分文件条款详情表中最终插入数据
List<SarFileSplitItemsValEO> itemValList = new ArrayList<>();
Long treeListDisplay = 1L;
long time4=System.currentTimeMillis();
log.info("耗时:"+(time4-time1)+"ms");
String generalCatalogueId = UUIDUtils.randomUUID20();
SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO();
// SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"总目录","",sarFileSplitInfoEO.getId(),treeListDisplay++,"");
@@ -180,19 +186,37 @@ public class FileSpiltService {
if (StringUtils.isEmpty(readFilePath)) {
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 = ObsBootUtil.getOssFile(readFilePath);InputStream is1 = ObsBootUtil.getOssFile(readFilePath)) {
long time6=System.currentTimeMillis();
log.info("耗时:"+(time6-time1)+"ms");
String fileName = readFilePath.substring((readFilePath.lastIndexOf("/") + 1));
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 inputStream = IntekeyUtils.getInputStreamByDecryptFile(mFile);
InputStream inputStream1 = IntekeyUtils.getInputStreamByDecryptFile(mFile1);
InputStream inputStream;
InputStream inputStream1;
if (IntekeyUtils.ENABLE) {
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);
long time7=System.currentTimeMillis();
log.info("耗时:"+(time7-time1)+"ms");
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);
long time9=System.currentTimeMillis();
log.info("耗时:"+(time9-time1)+"ms");
//TitleNumberVO titleNumberVO = new TitleNumberVO();
Map<String, List<String>> titleNumberMap = titleNumberVO.getTitleNumberMap();
List<String> emptyTitleList = titleNumberVO.getEmptyTitleList();
@@ -468,6 +492,8 @@ public class FileSpiltService {
log.error(e.getMessage(),e);
return -1;
}
long time10=System.currentTimeMillis();
log.info("耗时:"+(time10-time1)+"ms");
if (treeList.size() > 0 && messageList.size() > 0) {
sarFileSplitMenuEOMapper.insertForeach(treeList);
for (int i = 0; i < messageList.size(); i++) {
@@ -477,6 +503,8 @@ public class FileSpiltService {
iSarFileSplitItemsEOService.insertForeach(messageList);
iSarFileSplitItemsValEOService.insertForeach(itemValList);
long time11=System.currentTimeMillis();
log.info("耗时:"+(time11-time1)+"ms");
} else {
return -1;
}
@@ -23,18 +23,28 @@ public class AsposeUtil {
* @return
*/
public static TitleNumberVO getNumber(InputStream is) {
long time1=System.currentTimeMillis();
TitleNumberVO titleNumberVO = new TitleNumberVO();
Map<String, List<String>> titleNumberMap = new HashMap<>();
List<String> emptyTitleList = new ArrayList<>();
try {
long time9=System.currentTimeMillis();
log.info("耗时:"+(time9-time1)+"ms");
Document doc = new Document(is);
long time8=System.currentTimeMillis();
log.info("耗时:"+(time8-time1)+"ms");
DocumentBuilder builder = new DocumentBuilder(doc);
builder.insertField(FieldType.FIELD_NUM_PAGES, true);
long time7=System.currentTimeMillis();
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++) {
Node next = childNodes.get(i);
@@ -79,6 +89,8 @@ public class AsposeUtil {
}
titleNumberVO.setTitleNumberMap(titleNumberMap);
titleNumberVO.setEmptyTitleList(emptyTitleList);
long time9=System.currentTimeMillis();
log.info("耗时:"+(time9-time1)+"ms");
return titleNumberVO;
}