diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java index a6769c8e..e98b0c20 100644 --- a/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java @@ -1041,7 +1041,7 @@ public class WorkFlowController extends BaseController { @ApiOperation(value = "查找在线编辑文件") @GetMapping("/selectOnlineFile") - public ResponseMessage selectOnlineFile(@RequestParam("onlineFileId") String onlineFileId,@RequestParam("standName") String standName) { + public ResponseMessage selectOnlineFile(@RequestParam("onlineFileId") String onlineFileId,@RequestParam("standName") String standName,@RequestParam("key") String key) { logger.info("======================standName===============================!!!!!!!!!!!!!!!!!!!!!!"+standName); String path = standEditFilePath+"/hisFile/"; File file = null; @@ -1091,6 +1091,7 @@ public class WorkFlowController extends BaseController { onlineFileLog.setCreateTime(new Date()); onlineFileLog.setFileName(String.valueOf(time)); onlineFileLog.setValidFlag("0"); + onlineFileLog.setFilekey(key); onlineFileLogDao.insert(onlineFileLog); logger.info("======================日志存入成功==============================="+onlineFileLog.toString()); if(StringUtils.isNotBlank(standName)) { @@ -1516,4 +1517,10 @@ public class WorkFlowController extends BaseController { public String fushen(){ return workFlowFeignClient.fushen(); } + + @ApiOperation(value = "|在线文件调用api") + @PostMapping("/conversionOnlineFilePDF") + public void conversionOnlineFilePDF(){ + // return workFlowFeignClient.conversionOnlineFilePDF(); + } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/OnlineFileLog/entity/OnlineFileLog.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/OnlineFileLog/entity/OnlineFileLog.java index ee0ee521..4afe07b8 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/OnlineFileLog/entity/OnlineFileLog.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/OnlineFileLog/entity/OnlineFileLog.java @@ -67,6 +67,9 @@ public class OnlineFileLog extends BaseEntity { @TableField("VALID_FLAG") private String validFlag; + @ApiModelProperty(value = "文件key") + @TableField("FILE_KEY") + private String filekey; //跨服io流转换 @TableField(exist = false) private byte[] bytes; 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 413f9fef..e766f5be 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 @@ -219,6 +219,9 @@ public class SarBussionessStandServiceImpl extends ServiceImpl sarBussStandFilesList = sarBussStandFileEODao.selectList(objectQueryWrapperSarBussStandFile); if(sarBussStandFilesList.isEmpty() && sarBussStandFilesList.size()==0){ -// AttFileVo attFileVo = attFileEOService.wordConversionFilePdf(sarBussStandFiles.get(0).getOriAttId()); + //存储的名称,key 路径 + QueryWrapper onlineFileLogWrapper = new QueryWrapper<>(); + onlineFileLogWrapper.eq("ATT_FILE_ID",sarBussStandFilesList.get(0).getOriAttId()); + List onlineFileLogs = onlineFileLogDao.selectList(onlineFileLogWrapper); + if(!onlineFileLogs.isEmpty()){ + if(StringUtils.isNotBlank(onlineFileLogs.get(0).getOLdFileName()) && StringUtils.isNotBlank(onlineFileLogs.get(0).getFilekey()) && StringUtils.isNotBlank(onlineFileLogs.get(0).getFilePath())){ + try { + onlyofficePdfUtil.downloadFile(onlineFileLogs.get(0).getOLdFileName(), onlineFileLogs.get(0).getFilekey(), onlineFileLogs.get(0).getFilePath()); + File file = new File(filePath+"/onlineFile/"+onlineFileLogs.get(0).getOLdFileName()); + if(file.exists()){ + AttFileVo attFileVo = attFileEOService.saveFileInfo(file); + 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转换失败================================="); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + }else { + logger.info("======================未能查询到在线编辑的日志文件================"); + } +// AttFileVo attFileVo = attFileEOService.onlineWordConversionFilePdf(sarBussStandFiles.get(0).getOriAttId()); // if(attFileVo!=null){ // SarBussStandFile sarBussStandFile = new SarBussStandFile(); // //sarBussStandFile.setId(); @@ -4943,28 +4986,28 @@ public class SarBussionessStandServiceImpl extends ServiceImpl bussMap = new HashMap<>(); - bussMap.put("FILE_SUFFIX",sarBussStandFiles.get(0).getFileSuffix()); - bussMap.put("CONVERFILENAME",filePath+fileInfo.getFilePath()+fileInfo.getFileName()); - bussMap.put("SAVEPDFPATH",filePath+fileInfo.getFilePath()+fileName+".pdf"); - bussMap.put("STANDID",sarBussStandFiles.get(0).getStandId()); - bussMap.put("STANDFILECLASSIFY",sarBussStandFiles.get(0).getStandFileClassify()); - bussMap.put("FILENAME",filePath+fileInfo.getFilePath()+fileName+".pdf"); - bussMap.put("PASSWORD",sarBussStandFiles.get(0).getPassword()); - bussMap.put("OAIATTID",sarBussStandFiles.get(0).getOriAttId()); - logger.info("======================================word.doc发送mq================================="); - createOnlineEditingFileMQService.OnlineEditingFileMQ(bussMap); - }else { - logger.info("======================================word.doc转换失败================================="); - } +// AttFileEO fileInfo = attFileEOService.getFileInfo(sarBussStandFiles.get(0).getOriAttId()); +// if(fileInfo!=null){ +// String fileName = ""; +// if(StringUtils.isNotBlank(fileInfo.getFileName())){ +// String[] splitInfo = fileInfo.getFileName().split("\\."); +// fileName = splitInfo[0]; +// } +// +// Map bussMap = new HashMap<>(); +// bussMap.put("FILE_SUFFIX",sarBussStandFiles.get(0).getFileSuffix()); +// bussMap.put("CONVERFILENAME",filePath+fileInfo.getFilePath()+fileInfo.getFileName()); +// bussMap.put("SAVEPDFPATH",filePath+fileInfo.getFilePath()+fileName+".pdf"); +// bussMap.put("STANDID",sarBussStandFiles.get(0).getStandId()); +// bussMap.put("STANDFILECLASSIFY",sarBussStandFiles.get(0).getStandFileClassify()); +// bussMap.put("FILENAME",filePath+fileInfo.getFilePath()+fileName+".pdf"); +// bussMap.put("PASSWORD",sarBussStandFiles.get(0).getPassword()); +// bussMap.put("OAIATTID",sarBussStandFiles.get(0).getOriAttId()); +// logger.info("======================================word.doc发送mq================================="); +// createOnlineEditingFileMQService.OnlineEditingFileMQ(bussMap); +// }else { +// logger.info("======================================word.doc转换失败================================="); +// } } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/OnlyofficePdfUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/OnlyofficePdfUtil.java new file mode 100644 index 00000000..52302513 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/OnlyofficePdfUtil.java @@ -0,0 +1,310 @@ +package com.adc.da.utils.util; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.alibaba.fastjson.JSONObject; +import org.apache.http.HttpEntity; +import org.apache.http.HttpStatus; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.PostMapping; + +import java.io.*; +import java.util.HashMap; +import java.util.Map; + +public class OnlyofficePdfUtil { + + @Value("${file.path}") + private String filePathInfo;//文件存储路径 + + public ResponseMessage downloadFile(String filePdfName, String key, String onlineFilePath) throws Exception { + + String filePath = filePathInfo+"/onlineFile/"+filePdfName; + + System.out.println("================"+filePath); + + String fileUrl = convertFile(key,onlineFilePath); + + System.out.println("=============================="+fileUrl); + + // 创建HttpClientBuilder + + HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); + + // HttpClient + + CloseableHttpClient closeableHttpClient = httpClientBuilder.build(); + + HttpGet get = new HttpGet(fileUrl); + + // 设置请求和传输超时时间 + + RequestConfig requestConfig = RequestConfig.custom() + + .setSocketTimeout(60000) + + .setConnectionRequestTimeout(60000) + + .setConnectTimeout(60000) + + .build(); + + get.setConfig(requestConfig); + + CloseableHttpResponse response = null; + + try { + + //发送get请求 + + response = closeableHttpClient.execute(get); + + if (response == null || response.getStatusLine() == null) { + + throw new Exception("发送GET请求失败,返回结果为空!"); + + } + + //返回状态是否200 + + int statusCode = response.getStatusLine().getStatusCode(); + + if (statusCode == HttpStatus.SC_OK) { + + //得到请求结果 + + HttpEntity entityRes = response.getEntity(); + + if (entityRes != null) { + + InputStream content = entityRes.getContent(); + + byte[] getData = readInputStream(content); + + File file = new File(filePath); + + FileOutputStream fos = new FileOutputStream(file); + + fos.write(getData); + + fos.close(); + + } + + } else { + + throw new Exception("发送GET请求出错:" + response); + + } + + } catch (Exception e) { + + throw new Exception("发送GET请求出现异常," + e.getMessage()); + + } finally { + + try { + + // 关闭连接释放资源 + + if (response != null) { + + response.close(); + + } + + if (closeableHttpClient != null) { + + closeableHttpClient.close(); + + } + + } catch (IOException e) { + + e.printStackTrace(); + + } + + } + + return Result.success(); + + } + + public String analysisXML(String xmlString) throws DocumentException { + + Document document = DocumentHelper.parseText(xmlString); + + Element rootElement = document.getRootElement(); + + String fileUrl = rootElement.elementText("FileUrl"); + + String newFileUrl = fileUrl.replaceAll("&", "&"); + + return newFileUrl; + + } + + public String convertFile(String key,String onlineFilePath) throws Exception{ + + String url = "http://47.92.92.38:8103/7.2.1-34/ConvertService.ashx"; + + Map map = new HashMap<>(); + + map.put("async",false); + + map.put("filetype","docx"); + + map.put("key",key); + + map.put("outputtype","pdf"); + + map.put("title","test.pdf"); + map.put("url","https://srms.foton.com.cn/file/"+onlineFilePath); + //map.put("url","https://srms.foton.com.cn/file/model/task_768330d8/task_768330d8_top_768330d8_node.docx"); + + JSONObject requestJson = new JSONObject(map); + + // 创建HttpClientBuilder + + HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); + + // HttpClient + + CloseableHttpClient closeableHttpClient = httpClientBuilder.build(); + + HttpPost httpPost = new HttpPost(url); + + // 设置请求和传输超时时间 + + RequestConfig requestConfig = RequestConfig.custom() + + .setSocketTimeout(60000) + + .setConnectionRequestTimeout(60000) + + .setConnectTimeout(60000) + + .build(); + + httpPost.setConfig(requestConfig); + + CloseableHttpResponse response = null; + + try { + + //设置post请求方式为JSON + + StringEntity data = new StringEntity(String.valueOf(requestJson), "UTF-8"); + + data.setContentType("application/json; charset=UTF-8"); + + httpPost.setEntity(data); + + + + //发送post请求 + + response = closeableHttpClient.execute(httpPost); + + if (response == null || response.getStatusLine() == null) { + + throw new Exception("发送POST请求失败,返回结果为空!"); + + } + + + + //返回状态是否200 + + int statusCode = response.getStatusLine().getStatusCode(); + + if (statusCode == HttpStatus.SC_OK) { + + //得到请求结果 + + HttpEntity entityRes = response.getEntity(); + + if (entityRes != null) { + + String responsetData = EntityUtils.toString(entityRes, "UTF-8"); + + String fileUrl = analysisXML(responsetData); + + return fileUrl; + + } + + } else { + + throw new Exception("发送POST-JSON请求出错:" + response); + + } + + } catch (Exception e) { + + throw new Exception("发送POST请求出现异常," + e.getMessage()); + + } finally { + + try { + + // 关闭连接释放资源 + + if (response != null) { + + response.close(); + + } + + if (closeableHttpClient != null) { + + closeableHttpClient.close(); + + } + + } catch (IOException e) { + + e.printStackTrace(); + + } + + } + + return null; + + } + + public static byte[] readInputStream(InputStream inputStream) throws IOException { + + byte[] buffer = new byte[1024]; + + int len = 0; + + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + + while((len = inputStream.read(buffer)) != -1) { + + bos.write(buffer, 0, len); + + } + + bos.close(); + + return bos.toByteArray(); + + } +}