package com.example.xiaoshiweixinback.service.importPatent; import com.example.xiaoshiweixinback.business.utils.FileUtils; import com.example.xiaoshiweixinback.business.utils.FormatUtil; import com.example.xiaoshiweixinback.business.utils.ImageUtil; import com.example.xiaoshiweixinback.domain.es.Patent; import com.example.xiaoshiweixinback.domain.es.PatentClassify; import com.example.xiaoshiweixinback.domain.es.PatentVector; import com.example.xiaoshiweixinback.entity.dto.patent.UploadPatentWebDTO; import com.example.xiaoshiweixinback.entity.ops.GetFuTuParamsDTO; import com.example.xiaoshiweixinback.entity.ops.ImagesInfoVO; import com.example.xiaoshiweixinback.service.common.FileManagerService; import com.example.xiaoshiweixinback.service.common.GetVectorService; import com.example.xiaoshiweixinback.service.common.OPSService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileFilter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @Service public class GetPatentPictureFromWebService { @Autowired private PatentStarApiService patentStarApiService; @Autowired private FileManagerService fileManagerService; @Autowired private EsService esService; @Autowired private GetVectorService getVectorService; @Autowired private OPSService opsService; public void getPatentPicture(UploadPatentWebDTO uploadPatentWebDTO) { String appNo = uploadPatentWebDTO.getPatent().getAppNo(); if (appNo == null) { return; } if (appNo.contains("CN")) { this.getCNPatentPicture(uploadPatentWebDTO); } else { this.getWdPatentPicture(uploadPatentWebDTO); } } public void getCNPatentPicture(UploadPatentWebDTO uploadPatentWebDTO) { try { Long startMillis = System.currentTimeMillis(); List pictureUrls = patentStarApiService.getExternalFigure(uploadPatentWebDTO.getStarPatentVO().getRowApplicationNo()); Long endMillis = System.currentTimeMillis(); System.out.println("获取图片时间"+(endMillis-startMillis)); Patent patent = uploadPatentWebDTO.getPatent(); if (pictureUrls != null && pictureUrls.size() > 0) { for (int i = 0; i < pictureUrls.size(); i++) { PatentVector patentVectorOrg = esService.getVectorByIndex(patent.getAppNo(), i); Long s1 = System.currentTimeMillis(); String pictureUrl = pictureUrls.get(i); Long s4 = System.currentTimeMillis(); File file = FileUtils.getPictureFileByUrl(pictureUrl); Long e4 = System.currentTimeMillis(); System.out.println("下载文件耗时"+(e4-s4)); String guid = FormatUtil.getPictureFormat(patent.getAppNo()) + i; // fileManagerService.uploadFileWithGuid(file, guid); Long e1 = System.currentTimeMillis(); System.out.println("上传文件耗时"+(e1-s1)); System.out.println("P" + i); if (patentVectorOrg != null) { continue; } Long s2 = System.currentTimeMillis(); this.addPatentVector(uploadPatentWebDTO, file, i, patentVectorOrg); Long e2 = System.currentTimeMillis(); System.out.println("向量部分耗时"+(e2-s2)); Long s3 =System.currentTimeMillis(); file.delete(); Long e3 =System.currentTimeMillis(); System.out.println("删除文件耗时"+(e3-s3)); } } } catch (Exception e) { e.printStackTrace(); } } public void getWdPatentPicture(UploadPatentWebDTO uploadPatentWebDTO) { try { Patent patent = uploadPatentWebDTO.getPatent(); String appNo = patent.getAppNo(); List imagesInfoVOS = opsService.getImageInfos(patent.getPublicNo()); ImagesInfoVO infoVO = imagesInfoVOS.stream().filter(item -> item.getImageType().equals("Drawing")).findFirst().orElse(null); List files = opsService.getImageFiles(infoVO, appNo); if (files != null && files.size() > 0) { for (int i = 0; i < files.size(); i++) { String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getPatent().getAppNo()) + i; File file = files.get(i); fileManagerService.uploadFileWithGuid(file, guid); PatentVector patentVectorOrg = esService.getVectorByIndex(patent.getAppNo(), i); this.addPatentVector(uploadPatentWebDTO, file, i, patentVectorOrg); org.apache.commons.io.FileUtils.deleteQuietly(file); } } } catch (Exception e) { e.printStackTrace(); } } public void addPatentVector(UploadPatentWebDTO uploadPatentWebDTO, File file, Integer index, PatentVector patentVectorOrg) throws Exception { String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getPatent().getAppNo()) + index; Patent patent = uploadPatentWebDTO.getPatent(); PatentVector patentVector = new PatentVector(); patentVector.setAppNo(patent.getAppNo()); patentVector.setTitle(patent.getTitle()); patentVector.setRightHolder(patent.getRightHolder()); patentVector.setAppDate(patent.getAppDate()); patentVector.setAbstractStr(patent.getAbstractStr()); patentVector.setAppCountry(patent.getAppCountry()); patentVector.setLoc(uploadPatentWebDTO.getPatent().getIpc()); patentVector.setImageIndex(index); patentVector.setGuid(guid); Long s1= System.currentTimeMillis(); List stringList = getVectorService.getVectorByFile(file); Long e1 =System.currentTimeMillis(); System.out.println("获取向量耗时"+(e1-s1)); List floats = new ArrayList<>(); stringList.forEach(item -> { Float a = Float.parseFloat(item); floats.add(a); }); patentVector.setMyVector(floats); if (patentVectorOrg != null) { esService.updatePatentVector(patentVector, patentVectorOrg.getId()); } else { Long s2= System.currentTimeMillis(); esService.addPatentVector(patentVector); Long e2 =System.currentTimeMillis(); System.out.println("保存向量耗时"+(e2-s2)); } } }