123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- 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<String> 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<ImagesInfoVO> imagesInfoVOS = opsService.getImageInfos(patent.getPublicNo());
- ImagesInfoVO infoVO = imagesInfoVOS.stream().filter(item -> item.getImageType().equals("Drawing")).findFirst().orElse(null);
- List<File> 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<String> stringList = getVectorService.getVectorByFile(file);
- Long e1 =System.currentTimeMillis();
- System.out.println("获取向量耗时"+(e1-s1));
- List<Float> 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));
- }
- }
- }
|