From fb92e09a5e65998f3f0006f4c92a23e5358d8c7a Mon Sep 17 00:00:00 2001 From: gaojiabao Date: Thu, 1 Jun 2023 15:30:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=BC=96=E8=BE=91pdf?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SarBussionessStandServiceImpl.java | 42 +++++++++------- adc-da-sys/pom.xml | 11 ++++ .../att/controller/AttFileEOController.java | 7 +++ .../adc/da/att/service/IAttFileEOService.java | 2 + .../service/impl/AttFileEOServiceImpl.java | 50 +++++++++++++++++-- 5 files changed, 89 insertions(+), 23 deletions(-) diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java index 08fdeeba..fe6d7639 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java @@ -4895,28 +4895,32 @@ public class SarBussionessStandServiceImpl extends ServiceImpl objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("ORI_ATT_ID",fileId); objectQueryWrapper.eq("USE_MODEL","SOURCE_FILE"); - objectQueryWrapper.ne("FILE_SUFFIX","pdf"); - objectQueryWrapper.ne("FILE_SUFFIX","PDF"); + objectQueryWrapper.eq("FILE_SUFFIX","docx"); +// objectQueryWrapper.ne("FILE_SUFFIX","pdf"); +// objectQueryWrapper.ne("FILE_SUFFIX","PDF"); List sarBussStandFiles = sarBussStandFileEODao.selectList(objectQueryWrapper); // 为空暂不处理 不为空则意味pdf生成失败 if(!sarBussStandFiles.isEmpty() && sarBussStandFiles.size()==1){ -// createStandFileAppend(\); - AttFileEO fileInfo = attFileEOService.getFileInfo(sarBussStandFiles.get(0).getOriAttId()); - String filePath = fileInfo.getFilePath() + fileInfo.getFileName(); - OtConvertMq convert = new OtConvertMq(); - convert.setLawsId(sarBussStandFiles.get(0).getStandId()); - convert.setAttId(fileInfo.getId()); - convert.setFilePath(filePath); - convert.setAddOrUp("0"); - convert.setFileSuffix(fileInfo.getFileSuffix()); - convert.setStandFileClassify(sarBussStandFiles.get(0).getStandFileClassify()); - convert.setConvertType(SarTypeEnum.BUSINESS.getValue()); - if(elasflag) { - try { - convertMq.sendMQ(convert); - } catch (Exception e) { - e.printStackTrace(); - } + AttFileVo attFileVo = attFileEOService.wordConversionFilePdf(sarBussStandFiles.get(0).getOriAttId()); + if(attFileVo!=null){ + SarBussStandFile sarBussStandFile = new SarBussStandFile(); + //sarBussStandFile.setId(); + String uuId = com.adc.da.util.utils.UUID.randomUUID(20); + sarBussStandFile.setId(uuId); + sarBussStandFile.setStandId(sarBussStandFiles.get(0).getStandId()); + sarBussStandFile.setStandFileClassify(sarBussStandFiles.get(0).getStandFileClassify()); + sarBussStandFile.setAttId(attFileVo.getId()); + sarBussStandFile.setFileName(filePath+attFileVo.getFilePath()+attFileVo.getFileName()); + sarBussStandFile.setFileSuffix(attFileVo.getFileSuffix()); + sarBussStandFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); + sarBussStandFile.setPassword(sarBussStandFiles.get(0).getPassword()); + sarBussStandFile.setValidFlag(0); + sarBussStandFile.setCreationTime(new Date()); + sarBussStandFile.setModifyTime(new Date()); + sarBussStandFile.setOriAttId(sarBussStandFiles.get(0).getOriAttId()); + sarBussStandFileEODao.insert(sarBussStandFile); + }else { + logger.info("======================================word.doc转换失败================================="); } } } diff --git a/adc-da-sys/pom.xml b/adc-da-sys/pom.xml index 9c0f819c..c928a9e0 100644 --- a/adc-da-sys/pom.xml +++ b/adc-da-sys/pom.xml @@ -22,6 +22,17 @@ + + com.documents4j + documents4j-local + 1.0.3 + + + com.documents4j + documents4j-transformer-msoffice-word + 1.0.3 + + org.springframework spring-test diff --git a/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java b/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java index 79754c64..4320f1d9 100644 --- a/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java @@ -761,4 +761,11 @@ public class AttFileEOController { return Result.success(attFileEO); } + @ApiOperation(value = "word转换pdf") + @GetMapping("/wordConversionFilePdf") + public ResponseMessage wordConversionFilePdf(@Param("fileId") String fileId) { + AttFileVo attFileVo = attFileEOService.wordConversionFilePdf(fileId); + return Result.success(attFileVo); + } + } diff --git a/adc-da-sys/src/main/java/com/adc/da/att/service/IAttFileEOService.java b/adc-da-sys/src/main/java/com/adc/da/att/service/IAttFileEOService.java index d7ef8220..3a59dde6 100644 --- a/adc-da-sys/src/main/java/com/adc/da/att/service/IAttFileEOService.java +++ b/adc-da-sys/src/main/java/com/adc/da/att/service/IAttFileEOService.java @@ -34,4 +34,6 @@ public interface IAttFileEOService extends IService { void downLoadFileList(List multiFileInfos, String fileNowPath) throws IOException; void deleteById(String id); + + AttFileVo wordConversionFilePdf(String fileId); } diff --git a/adc-da-sys/src/main/java/com/adc/da/att/service/impl/AttFileEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/att/service/impl/AttFileEOServiceImpl.java index 9b178b8b..12df17d0 100644 --- a/adc-da-sys/src/main/java/com/adc/da/att/service/impl/AttFileEOServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/att/service/impl/AttFileEOServiceImpl.java @@ -8,6 +8,9 @@ import com.adc.da.sys.constant.ValidFlagEnum; import com.adc.da.util.FileUtil; import com.adc.da.util.UUIDUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.documents4j.api.DocumentType; +import com.documents4j.api.IConverter; +import com.documents4j.job.LocalConverter; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; @@ -19,10 +22,7 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; +import java.io.*; import java.util.*; @Service("attFileEOService") @@ -594,5 +594,47 @@ public class AttFileEOServiceImpl extends ServiceImpl i return attFileVo; } + @Override + public AttFileVo wordConversionFilePdf(String fileId) { + String src = "/data/slrs/file"; + AttFileEO fileInfo = getFileInfo(fileId); + AttFileVo attFileVoPdf = null; + if(fileInfo != null){ + File fileWord = new File(src+fileInfo.getFilePath()+fileInfo.getFileName()); + AttFileVo attFileVo = saveFileInfo(fileWord); + // 保存后 开始转换为 pdf版本 + File inputWord = new File(src+attFileVo.getFilePath()+attFileVo.getFileName()); + String filePdfName = ""; + if(StringUtils.isNotBlank(attFileVo.getFileName())){ + String[] split = attFileVo.getFileName().split("\\."); + filePdfName = split[0]+".pdf"; + } + File outputFile = new File(src+fileInfo.getFilePath(),filePdfName); + try { + InputStream docxInputStream = new FileInputStream(inputWord); + OutputStream outputStream = new FileOutputStream(outputFile); + IConverter converter = LocalConverter.builder().build(); + converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute(); + outputStream.close(); + // 合法存入当前文件 + if(outputFile.exists()){ + logger.info("==================================word.docx转换成功========================"); + attFileVoPdf = saveFileInfo(outputFile); + //存入成功以后 删除word 版本 + if(attFileVoPdf != null) { + if (inputWord.exists()) { + inputWord.delete(); + deleteById(attFileVo.getId()); + logger.info("==================================word.docx删除成功========================"); + } + } + } + } catch (Exception e) { + log.error(e.getMessage(),e); + e.printStackTrace(); + } + } + return attFileVoPdf; + } }