From 422de0ec29d4c53b63885f2e11851fd7f4bffb19 Mon Sep 17 00:00:00 2001 From: gaojiabao Date: Wed, 28 Dec 2022 10:42:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=88=86=E6=B5=81=E7=A8=8B=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E5=B1=95=E7=A4=BA=E4=BB=A5=E5=8F=8A=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=87=BA=E7=89=87=E8=B6=85=E9=93=BE=E6=8E=A5=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.properties | 3 + .../SarFileSplitItemsEOController.java | 60 +++++++++++++++--- .../impl/SarFileSplitInfoEOServiceImpl.java | 61 ++++++++++++++++++- .../impl/SarFileSplitItemsEOServiceImpl.java | 3 + .../adc/da/att/service/IAttFileEOService.java | 2 + .../service/impl/AttFileEOServiceImpl.java | 27 +++++++- 6 files changed, 144 insertions(+), 12 deletions(-) diff --git a/adc-da-main/src/main/resources/application.properties b/adc-da-main/src/main/resources/application.properties index 3805e720..3729a0d3 100644 --- a/adc-da-main/src/main/resources/application.properties +++ b/adc-da-main/src/main/resources/application.properties @@ -150,6 +150,9 @@ elasticsearch.port=9306 elasticsearch.poolSize=5 elas.flag=true +# 拆分的图片调用 (修改ip时此处也应该被修改) +elasticsearch.img=http://localhost:9090 + # \u6587\u6863\u8F6C\u6362TCP\u901A\u8BAF\u5730\u5740 convert.host=127.0.0.1 diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java index 112b4ca0..9f73defb 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java @@ -3,6 +3,7 @@ package com.adc.da.slrs.standardSplit.controller; import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ImportParams; import cn.hutool.core.util.ZipUtil; +import com.adc.da.att.controller.AttFileEOController; import com.adc.da.att.entity.AttFileEO; import com.adc.da.att.service.IAttFileEOService; import com.adc.da.base.web.BaseController; @@ -18,11 +19,13 @@ import com.adc.da.sys.util.UUIDUtils; import com.adc.da.util.exception.AdcDaBaseException; import com.adc.da.util.http.ResponseMessage; import com.adc.da.util.http.Result; +import com.adc.da.util.utils.FileUtil; import com.adc.da.util.utils.IOUtils; import com.adc.da.utils.util.POIReadExcelToHtml; import com.adc.da.common.ReadExcel; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.apache.poi.common.usermodel.HyperlinkType; @@ -217,12 +220,34 @@ public class SarFileSplitItemsEOController extends BaseController allImgList = new ArrayList<>(); List allRelevFileList = new ArrayList<>(); int countMaxFile = 1; + String fileIds = ""; if (allItemsList != null && !allItemsList.isEmpty()) { for (FileSplitItemsExportDto itemsExportDto : allItemsList) { SarFileSplitItemsValEOPage valEOPage = new SarFileSplitItemsValEOPage(); valEOPage.setItemId(itemsExportDto.getId()); valEOPage.setOrderBy("DISPLAY_SEQ,ID"); List getValList = sarFileSplitItemsValEOService.queryByList(valEOPage); + + for (SarFileSplitItemsValEO sarFileSplitItemsValEO : getValList){ + //鍒ゆ柇鏁版嵁鏄惁鏄痠mg + if(sarFileSplitItemsValEO.getType().equals("img") || sarFileSplitItemsValEO.getType().equals("IMG")){ + //杩涜鍒嗗壊 + String[] split = sarFileSplitItemsValEO.getItemContent().split("="); + //鑾峰彇鍥剧墖id + String[] split1 = split[3].split("'"); + sarFileSplitItemsValEO.setItemContent(split1[0]); + //寰幆鏁版嵁 鑾峰彇id + if(StringUtils.isBlank(fileIds)){ + fileIds = split1[0]; + }else { + fileIds += ","+split1[0]; + } + AttFileEO fileInfo = attFileEOService.getFileInfo(sarFileSplitItemsValEO.getItemContent()); + String excelImageUrl = "src='file:///E:/data/slrs/file"+fileInfo.getFilePath()+fileInfo.getOldFileName(); + // 鏁版嵁鍔犲伐 + sarFileSplitItemsValEO.setItemContent(excelImageUrl); + } + } List valContentList = sarFileSplitItemsEOService.combineItemValInfo(getValList,allTableList,allImgList,page); itemsExportDto.setItemValContent(valContentList); } @@ -278,7 +303,8 @@ public class SarFileSplitItemsEOController extends BaseController multiFileInfos = this.attFileEOService.getMultiFileInfos(fileIds); + if(CollectionUtils.isNotEmpty(multiFileInfos)){ + this.attFileEOService.downLoadFileList(multiFileInfos,fileNowPath); + + ZipUtil.zip(fileNowPath,fileNowPath+".zip"); + FileInputStream fis = new FileInputStream(fileNowPath+".zip"); + int len = 0; + while ((len = fis.read()) != -1) { + os.write(len); + } + os.flush(); + os.close(); // 鍚庡紑鍏堝叧 + fis.close(); // 鍏堝紑鍚庡叧 } - os.flush(); - os.close(); // 鍚庡紑鍏堝叧 - fis.close(); // 鍏堝紑鍚庡叧 } catch (Exception e) { logger.error(e.getMessage(), e); throw new AdcDaBaseException("涓嬭浇鏂囦欢澶辫触锛岃閲嶈瘯"); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java index 40bc2020..f960aea5 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java @@ -1,6 +1,7 @@ package com.adc.da.slrs.standardSplit.service.impl; import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.att.vo.AttFileVo; import com.adc.da.person.entity.PersonMsgEO; import com.adc.da.slrs.sarStandAttrDetails.service.ISarStandAttrDetailsService; import com.adc.da.slrs.sarStandItems.entity.SarStandItems; @@ -68,6 +69,10 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService */ @Value("${file.downloadUrl}") private String downloadUrl; + + @Value("${elasticsearch.img}") + private String elasticsearchImg;//鍥剧墖鎷嗗垎鑷皟鍦板潃 + @Autowired private PersonShareEODao personShareEODao; @Autowired @@ -174,6 +179,8 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService // 璁板綍word鑷姩鐢熸垚鐨勭紪鍙锋暟鎹 Map numberMap = new HashMap(); boolean menuCanAdd = false; // 鍒ゆ柇褰撳墠鐩綍涓嬫槸鍚﹀彲浠ユ甯稿~鍐欐暟鎹 + boolean firstFlag = true; + String regex = "^[0-9]*$"; for (IBodyElement element : elements) { // 娈佃惤 if (element instanceof XWPFParagraph) { @@ -185,6 +192,40 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService paragraphString = paragraphString.replace((char) 12288, ' '); paragraphString = paragraphString.trim(); } + if(StringUtils.isEmpty(paragraphString)){ + // 澶勭悊褰撳墠娈佃惤浠呬负鍥剧墖鐨勬儏鍐 + List imageBundleList = readImageInParagraph((XWPFParagraph) p); + if (CollectionUtils.isNotEmpty(imageBundleList)) { + if (messageList.size() > 0) { + addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); + //attFileEOService.saveFileInfo(); + } + } + continue; + } + paragraphString = paragraphString.replaceAll("\r\n",""); + paragraphString = paragraphString.replaceAll("\n",""); + paragraphString = paragraphString.trim(); + if ("鍓嶈█".equals(getChinese(paragraphString)) && (paragraphString.replaceAll("\t", "") + .replaceAll("\b", "").replaceAll(" ", "").length() == 2)) { // 鍓嶈█鍚庨潰鏈夋枃鏈紝鍒ゅ畾涓烘槸鐩綍涓殑鍓嶈█ + firstFlag = false; + } + if(firstFlag) { + continue; + } + + if (paragraphString.toLowerCase().contains("scope")) { + String pp = paragraphString.replaceAll("\t", "") + .replaceAll("\b", "").replaceAll(" ", ""); + if (!pp.substring(pp.length()-1).matches(regex)) { + firstFlag = false; + } + } + if (firstFlag) { + continue; + } + + if (StringUtils.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) { String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf(".")); if (numberMap.containsKey(numberParent)){ @@ -339,7 +380,6 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService } } } - } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -491,7 +531,12 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService FileOutputStream fos = new FileOutputStream(filepathandname); fos.write(bytev); String path = splitFilePath +"/" + imageName; - String imgCon = ""; + //瀛樺叆鏂囦欢 + File file = new File(path); + AttFileVo attFileVo = attFileEOService.saveFileInfo(file); + //String imgCon = ""; + String pathSrc = elasticsearchImg+"/api/att/attFile/getFileInfo?fileId="+attFileVo.getId(); + String imgCon = ""; message.getItemsCondi().add(imgCon); message.setItermsConditions(message.getItermsConditions() + imgCon); itemsValList.add(getSplitItemsValObject(message.getId(), SplitFilePragraTypeEnum.IMG.getValue(), imgCon, message.getItemsCondi().size(), null)); @@ -757,4 +802,16 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService return dao.querySame(sarFileSplitInfoEO); }; + public String getChinese(String source) { + char[] chars = source.toCharArray(); + StringBuilder stringBuilder = new StringBuilder(); + for (char aChar : chars) { + int length = String.valueOf(aChar).getBytes().length; + if (length == 3) { + stringBuilder.append(aChar); + } + } + return stringBuilder.toString(); + } + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsEOServiceImpl.java index 725cf34f..f3a28e60 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsEOServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsEOServiceImpl.java @@ -408,6 +408,9 @@ public class SarFileSplitItemsEOServiceImpl implements SarFileSplitItemsEOServic String imgPath = imgContent.substring(pathIndex+16,imgContent.length()-2); String imgName = imgUUIndex + "-" +imgPath.substring(imgPath.lastIndexOf("/")+1,imgPath.length()); lastOne.setValContent(imgUUIndex+".png"); + final String[] split = imgName.split("-"); + final String[] split1 = split[1].split("\\."); + lastOne.setValContent(split1[0]+".png"); valContent.add(lastOne); FileSplitValImgExportDto fileSplitValImgExportDto = new FileSplitValImgExportDto(); fileSplitValImgExportDto.setImgName(imgUUIndex+".png"); 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 9f6a3b41..ad3edad4 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 @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.springframework.web.multipart.MultipartFile; import java.io.File; +import java.io.IOException; import java.util.List; public interface IAttFileEOService extends IService { @@ -30,4 +31,5 @@ public interface IAttFileEOService extends IService { public AttFileVo insertFileInfo(File file,String fileName); + void downLoadFileList(List multiFileInfos, String fileNowPath) throws IOException; } 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 30004a37..7d759ce5 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 @@ -20,6 +20,8 @@ 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.util.ArrayList; import java.util.Comparator; @@ -426,7 +428,30 @@ public class AttFileEOServiceImpl extends ServiceImpl i } return fileObj; } - + public void downLoadFileList(List AttFileList,String fileNowPath) throws IOException { + for(AttFileEO fileExportDto : AttFileList){ + String oldPath = filePath+ "/" + fileExportDto.getFilePath() + fileExportDto.getFileName(); + String newPath = fileNowPath + "/" + fileExportDto.getOldFileName(); + File oldFile = new File(oldPath); + if (oldFile.exists()){ + copyFile1(oldPath, newPath); + } + } + } + public static void copyFile1(String srcPath, String destPath) throws IOException { + // 鎵撳紑杈撳叆娴 + FileInputStream fis = new FileInputStream(srcPath); + // 鎵撳紑杈撳嚭娴 + FileOutputStream fos = new FileOutputStream(destPath); + // 璇诲彇鍜屽啓鍏ヤ俊鎭 + int len = 0; + while ((len = fis.read()) != -1) { + fos.write(len); + } + // 鍏抽棴娴 鍏堝紑鍚庡叧 鍚庡紑鍏堝叧 + fos.close(); // 鍚庡紑鍏堝叧 + fis.close(); // 鍏堝紑鍚庡叧 + } /**