|
@@ -72,7 +72,9 @@ public class UploadFromWebService {
|
|
|
//conditions = this.formatConditions(conditions);
|
|
|
//根据id 获得网站配置
|
|
|
WebConfig webConfig = webConfigService.getConfigById(id);
|
|
|
- if (webConfig == null) {
|
|
|
+ //根据网站id和用户的租户获得登录信息
|
|
|
+ WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webConfig.getId(),qrtzTask.getTenantId());
|
|
|
+ if (webLoginConfig == null) {
|
|
|
qrtzTaskDetail.setTaskDetailState(3);
|
|
|
qrtzTaskDetail.setSuccessNum(successNum);
|
|
|
qrtzTaskDetail.setDefaultNum(qrtzTaskDetail.getAllNum() - successNum);
|
|
@@ -91,8 +93,6 @@ public class UploadFromWebService {
|
|
|
.setTotal(successNum), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
|
|
|
return null;
|
|
|
}
|
|
|
- //根据网站id和用户的租户获得登录信息
|
|
|
- WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webConfig.getId());
|
|
|
//1.获得驱动
|
|
|
// System.setProperty("webdriver.chrome.driver", "D:\\driver\\chromedriver.exe");
|
|
|
System.setProperty("webdriver.chrome.driver", url);
|
|
@@ -514,24 +514,43 @@ public class UploadFromWebService {
|
|
|
public List<PatentCell> getEPO(WebQueryDTO webQueryDTO) throws Exception {
|
|
|
log.info("开始处理【下载欧专局专利数据】的业务,参数为:{}", webQueryDTO);
|
|
|
List<PatentCell> patentCells = new ArrayList<>();
|
|
|
- //当前任务执行情况
|
|
|
-// QrtzTaskDetail qrtzTaskDetail = qrTaskDetailService.getById(webQueryDTO.getTaskId());
|
|
|
-// Integer successNum = qrtzTaskDetail.getSuccessNum();
|
|
|
-// int startPage = successNum / 5;
|
|
|
-// int startNum = successNum % 5;
|
|
|
-// //当前任务条件
|
|
|
-// QrtzTask qrtzTask = qrTaskService.getById(qrtzTaskDetail.getTaskId());
|
|
|
-
|
|
|
+ QrtzTaskDetail qrtzTaskDetail = qrTaskDetailService.getById(webQueryDTO.getTaskId());
|
|
|
+ Integer successNum = qrtzTaskDetail.getSuccessNum();
|
|
|
+ int startPage = successNum / 5;
|
|
|
+ int startNum = successNum % 5;
|
|
|
+ //当前任务条件
|
|
|
+ QrtzTask qrtzTask = qrTaskService.getById(qrtzTaskDetail.getTaskId());
|
|
|
//1.从DTO中取出网站id、检索信息条件、下载字段、专题库id、报告id
|
|
|
Integer webId = webQueryDTO.getWebConfigId();
|
|
|
List<String> cells = webQueryDTO.getConCells();
|
|
|
String conditions = webQueryDTO.getConditions();
|
|
|
Integer projectId = webQueryDTO.getProjectId();
|
|
|
Integer reportId = webQueryDTO.getReportId();
|
|
|
-
|
|
|
+ //根据id 获得网站配置
|
|
|
+ WebConfig webConfig = webConfigService.getConfigById(webId);
|
|
|
+ //根据网站id和用户的租户获得登录信息
|
|
|
+ WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webConfig.getId(),qrtzTask.getTenantId());
|
|
|
+ if (webLoginConfig == null) {
|
|
|
+ qrtzTaskDetail.setTaskDetailState(3);
|
|
|
+ qrtzTaskDetail.setSuccessNum(successNum);
|
|
|
+ qrtzTaskDetail.setDefaultNum(qrtzTaskDetail.getAllNum() - successNum);
|
|
|
+ qrtzTaskDetail.setFailure("未配置登录信息");
|
|
|
+ qrtzTaskDetail.setEndTime(new Date());
|
|
|
+ qrtzTaskDetail.updateById();
|
|
|
+ WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
|
|
|
+ .setId(webQueryDTO.getTaskId())
|
|
|
+ .setProjectId(webQueryDTO.getProjectId())
|
|
|
+ .setComplete(true)
|
|
|
+ .setIndex(successNum)
|
|
|
+ .setPercentage(0.0)
|
|
|
+ .setTaskDetailState(3)
|
|
|
+ .setFileName("")
|
|
|
+ .setUrl("")
|
|
|
+ .setTotal(successNum), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
|
|
|
+ return null;
|
|
|
+ }
|
|
|
//定义每次检索的专利数量(每次检索50件)
|
|
|
int size = 50;
|
|
|
-
|
|
|
//2.根据检索式conditions先检索一件专利著录信息【此操作主要是为了获得专利总数量count】
|
|
|
SerachBiblioData serachBiblioData = getSerachBiblioData(conditions, 1, 1);
|
|
|
if (serachBiblioData == null || serachBiblioData.getTotals() == 0) {
|
|
@@ -541,9 +560,40 @@ public class UploadFromWebService {
|
|
|
|
|
|
//获得专利总数量
|
|
|
Integer count = serachBiblioData.getTotals();
|
|
|
-
|
|
|
+ //计算进度值
|
|
|
+ double percentage = count == 0 ? 0 : (count.equals(successNum) ? (successNum * 1D) : (successNum + 1D) / count * 100D);
|
|
|
+ percentage = MathUtils.saveTwoDecimal(percentage);
|
|
|
//3.根据专利总数量count计算检索次数,来循环检索
|
|
|
for (int i = 1; i <= count; i += size) {
|
|
|
+ //查看任务状态
|
|
|
+ QrtzTaskDetail qrtzTaskDetail1 = qrTaskDetailService.getById(webQueryDTO.getTaskId());
|
|
|
+ if (qrtzTaskDetail1.getTaskDetailState().equals(7)) {
|
|
|
+ qrtzTaskDetail1.setTaskDetailState(5);
|
|
|
+ qrtzTaskDetail1.setSuccessNum(successNum);
|
|
|
+ qrtzTaskDetail1.setTaskProcess(percentage);
|
|
|
+ qrtzTaskDetail1.updateById();
|
|
|
+ WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
|
|
|
+ .setId(webQueryDTO.getTaskId())
|
|
|
+ .setProjectId(webQueryDTO.getProjectId())
|
|
|
+ .setComplete(false)
|
|
|
+ .setIndex(successNum)
|
|
|
+ .setTaskDetailState(5)
|
|
|
+ .setTotal(count), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
|
|
|
+ return null;
|
|
|
+ } else if (qrtzTaskDetail1.getTaskDetailState().equals(8)) {
|
|
|
+ qrtzTaskDetail1.setTaskDetailState(6);
|
|
|
+ qrtzTaskDetail1.setSuccessNum(successNum);
|
|
|
+ qrtzTaskDetail1.setTaskProcess(percentage);
|
|
|
+ qrtzTaskDetail1.updateById();
|
|
|
+ WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
|
|
|
+ .setId(webQueryDTO.getTaskId())
|
|
|
+ .setProjectId(webQueryDTO.getProjectId())
|
|
|
+ .setComplete(false)
|
|
|
+ .setIndex(successNum)
|
|
|
+ .setTaskDetailState(6)
|
|
|
+ .setTotal(count), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
|
|
|
+ return null;
|
|
|
+ }
|
|
|
//3.1根据检索式conditions、专利开始数i、专利最后数i + size - 1检索专利著录信息
|
|
|
serachBiblioData = getSerachBiblioData(conditions, i, i + size - 1);
|
|
|
//获取检索结果中的所有专利著录信息
|
|
@@ -551,11 +601,10 @@ public class UploadFromWebService {
|
|
|
continue;
|
|
|
}
|
|
|
List<PatentZhuLu> patents = serachBiblioData.getPatents();
|
|
|
-
|
|
|
//3.2遍历专利
|
|
|
for (PatentZhuLu patent : patents) {
|
|
|
PatentCell patentCell = new PatentCell();
|
|
|
- patentCell.setProjectId(projectId);
|
|
|
+ patentCell.setProjectId(qrtzTask.getProjectId());
|
|
|
PubNo pubNO = new PubNo();
|
|
|
//装载专利著录
|
|
|
if (cells.contains("1")) {
|
|
@@ -635,33 +684,93 @@ public class UploadFromWebService {
|
|
|
if (cells.contains("7")) {
|
|
|
setFuJian(drawingLink, drawingPage, drawingType, patentCell, ".tiff");
|
|
|
}
|
|
|
+ if (patentCell.getPatentNo() != null) {
|
|
|
+ String res = outInterfaceService.importPatents(patentCell);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(res);
|
|
|
+ if (jsonObject.get("code").toString().equals("500")) {
|
|
|
+ //任务执行情况状态设为失败,任务条件状态设为已完成(若是任务条件是定时任务则设为等待下一次执行)
|
|
|
+ qrtzTaskDetail.setTaskDetailState(3);
|
|
|
+ qrtzTaskDetail.setSuccessNum(successNum);
|
|
|
+ qrtzTaskDetail.setDefaultNum(count - successNum);
|
|
|
+ qrtzTaskDetail.setEndTime(new Date());
|
|
|
+ qrtzTaskDetail.updateById();
|
|
|
+ if (qrtzTask.getTaskType() == 1) {
|
|
|
+ qrtzTask.setTaskState(4);
|
|
|
+ } else {
|
|
|
+ qrtzTask.setTaskState(3);
|
|
|
+ }
|
|
|
+ qrtzTask.updateById();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ QrtzTaskDetail qrtzTaskDetail11 = qrTaskDetailService.getById(qrtzTaskDetail.getId());
|
|
|
+ percentage = count == 0 ? 0 : (count.equals(successNum) ? (successNum * 1D) : (successNum + 1D) / count * 100D);
|
|
|
+ percentage = MathUtils.saveTwoDecimal(percentage);
|
|
|
+ WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
|
|
|
+ .setId(webQueryDTO.getTaskId())
|
|
|
+ .setProjectId(webQueryDTO.getProjectId())
|
|
|
+ .setComplete(false)
|
|
|
+ .setIndex(successNum)
|
|
|
+ .setPercentage(percentage)
|
|
|
+ .setTaskDetailState(qrtzTaskDetail11.getTaskDetailState())
|
|
|
+ .setFileName("")
|
|
|
+ .setUrl("")
|
|
|
+ .setTotal(count), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
|
|
|
} catch (XiaoShiException e) {
|
|
|
//虽然拿不到所有附图,但是可以拿其他的,能拿到啥是啥
|
|
|
log.info(e.getMessage());
|
|
|
+ qrtzTaskDetail.setTaskDetailState(3);
|
|
|
+ qrtzTaskDetail.setSuccessNum(successNum);
|
|
|
+ qrtzTaskDetail.setDefaultNum(qrtzTaskDetail.getAllNum() - successNum);
|
|
|
+ qrtzTaskDetail.setFailure("拉取节点失败");
|
|
|
+ qrtzTaskDetail.setEndTime(new Date());
|
|
|
+ qrtzTaskDetail.updateById();
|
|
|
+ if (qrtzTask.getTaskType() == 1) {
|
|
|
+ qrtzTask.setTaskState(4);
|
|
|
+ } else {
|
|
|
+ qrtzTask.setTaskState(3);
|
|
|
+ }
|
|
|
+ qrtzTask.updateById();
|
|
|
+ WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
|
|
|
+ .setId(webQueryDTO.getTaskId())
|
|
|
+ .setProjectId(webQueryDTO.getProjectId())
|
|
|
+ .setComplete(true)
|
|
|
+ .setIndex(successNum)
|
|
|
+ .setPercentage(100D)
|
|
|
+ .setTaskDetailState(qrtzTaskDetail.getTaskDetailState())
|
|
|
+ .setFileName("")
|
|
|
+ .setUrl("")
|
|
|
+ .setTotal(successNum), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "");
|
|
|
}
|
|
|
|
|
|
//4.保存专利信息(发送给专题库)
|
|
|
- String res = outInterfaceService.importPatents(patentCell);
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(res);
|
|
|
- if (jsonObject.get("code").toString().equals("500")) {
|
|
|
-// //任务执行情况状态设为失败,任务条件状态设为已完成(若是任务条件是定时任务则设为等待下一次执行)
|
|
|
-// qrtzTaskDetail.setTaskDetailState(3);
|
|
|
-// qrtzTaskDetail.setSuccessNum(successNum);
|
|
|
-// qrtzTaskDetail.setDefaultNum(count - successNum);
|
|
|
-// qrtzTaskDetail.setEndTime(new Date());
|
|
|
-// qrtzTaskDetail.updateById();
|
|
|
-// if (qrtzTask.getTaskType() == 1) {
|
|
|
-// qrtzTask.setTaskState(4);
|
|
|
-// } else {
|
|
|
-// qrtzTask.setTaskState(3);
|
|
|
-// }
|
|
|
-// qrtzTask.updateById();
|
|
|
-// return null;
|
|
|
- }
|
|
|
patentCells.add(patentCell);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
|
|
|
+ .setId(webQueryDTO.getTaskId())
|
|
|
+ .setProjectId(webQueryDTO.getProjectId())
|
|
|
+ .setComplete(true)
|
|
|
+ .setIndex(count)
|
|
|
+ .setPercentage(100D)
|
|
|
+ .setTaskDetailState(qrtzTaskDetail.getTaskDetailState())
|
|
|
+ .setFileName("")
|
|
|
+ .setUrl("")
|
|
|
+ .setTotal(count), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "");
|
|
|
+ //任务执行情况状态设为成功,任务条件状态设为已完成(若是任务条件是定时任务则设为等待下一次执行)
|
|
|
+ qrtzTaskDetail.setTaskDetailState(2);
|
|
|
+ qrtzTaskDetail.setSuccessNum(successNum);
|
|
|
+ qrtzTaskDetail.setDefaultNum(qrtzTaskDetail.getAllNum() - successNum);
|
|
|
+ qrtzTaskDetail.setTaskProcess(100);
|
|
|
+ qrtzTaskDetail.setEndTime(new Date());
|
|
|
+ qrtzTaskDetail.updateById();
|
|
|
+ if (qrtzTask.getTaskType() == 1) {
|
|
|
+ qrtzTask.setTaskState(4);
|
|
|
+ } else {
|
|
|
+ qrtzTask.setTaskState(2);
|
|
|
+ }
|
|
|
+ qrtzTask.updateById();
|
|
|
return patentCells;
|
|
|
|
|
|
}
|
|
@@ -722,71 +831,49 @@ public class UploadFromWebService {
|
|
|
byte[] buffer = outInterfaceService.getPatentFile(getFuTuParamsDTO);
|
|
|
InputStream inputStream = new ByteArrayInputStream(buffer);
|
|
|
streams[i - 1] = inputStream;
|
|
|
- //如果不是说明书pdf
|
|
|
- if (!FuJianSuffix.equals(".pdf")) {
|
|
|
- File file = File.createTempFile("new_url", FuJianSuffix);
|
|
|
- FileOutputStream out = new FileOutputStream(file);
|
|
|
- out.write(buffer);
|
|
|
- out.close();
|
|
|
- streams[i - 1] = new FileInputStream(file);
|
|
|
- DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);
|
|
|
- FileItem item = diskFileItemFactory.createItem(file.getName(), "text/plain", true, file.getName());
|
|
|
- int bytesRead = 0;
|
|
|
- buffer = new byte[8192];
|
|
|
- try {
|
|
|
- FileInputStream fis = new FileInputStream(file);
|
|
|
- OutputStream os = item.getOutputStream();
|
|
|
- int len = 8192;
|
|
|
- while ((bytesRead = fis.read(buffer, 0, len)) != -1) {
|
|
|
- os.write(buffer, 0, bytesRead);
|
|
|
- }
|
|
|
- os.close();
|
|
|
- fis.close();
|
|
|
- } catch (IOException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- MultipartFile multipartFile = new CommonsMultipartFile(item);
|
|
|
- UploadFileDTO fileDTO = fileUtils.uploadFile(multipartFile);
|
|
|
- //如果是摘要附图
|
|
|
- if (FuJianSuffix.equals(".jpeg")) {
|
|
|
- patentCell.setPicUrl(fileDTO.getPath());
|
|
|
- }
|
|
|
- //如果是其他附图
|
|
|
- if (FuJianSuffix.equals(".tiff")) {
|
|
|
- otherUrls.add(fileDTO.getPath());
|
|
|
- }
|
|
|
- }
|
|
|
+// File file = File.createTempFile("new_url", FuJianSuffix);
|
|
|
+// FileOutputStream out = new FileOutputStream(file);
|
|
|
+// out.write(buffer);
|
|
|
+// out.close();
|
|
|
+// streams[i - 1] = new FileInputStream(file);
|
|
|
+// DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);
|
|
|
+// FileItem item = diskFileItemFactory.createItem(file.getName(), "text/plain", true, file.getName());
|
|
|
+// int bytesRead = 0;
|
|
|
+// buffer = new byte[8192];
|
|
|
+// try {
|
|
|
+// FileInputStream fis = new FileInputStream(file);
|
|
|
+// OutputStream os = item.getOutputStream();
|
|
|
+// int len = 8192;
|
|
|
+// while ((bytesRead = fis.read(buffer, 0, len)) != -1) {
|
|
|
+// os.write(buffer, 0, bytesRead);
|
|
|
+// }
|
|
|
+// os.close();
|
|
|
+// fis.close();
|
|
|
+// } catch (IOException e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+// MultipartFile multipartFile = new CommonsMultipartFile(item);
|
|
|
+// UploadFileDTO fileDTO = fileUtils.uploadFile(multipartFile);
|
|
|
+// switch (FuJianSuffix) {
|
|
|
+// case ".pdf":
|
|
|
+// streams[i - 1] = new FileInputStream(fileDTO.getPath());
|
|
|
+// break;
|
|
|
+// case ".jpeg":
|
|
|
+// patentCell.setPicUrl(fileDTO.getPath());
|
|
|
+// break;
|
|
|
+// case ".tiff":
|
|
|
+// otherUrls.add(fileDTO.getPath());
|
|
|
+// break;
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
- //如果是说明书pdf
|
|
|
if (FuJianSuffix.equals(".pdf")) {
|
|
|
- //合并说明书多个pdf文件
|
|
|
+ //合并 说明书多个pdf文件
|
|
|
PdfDocumentBase doc = PdfDocument.mergeFiles(streams);
|
|
|
//保存结果文件
|
|
|
doc.save("merge.pdf", FileFormat.PDF);
|
|
|
- doc.close();
|
|
|
|
|
|
- //手动将合并后的pdf文件转成MultipartFile,上传文件并获取path装载到patentCell
|
|
|
- File file = new File("merge.pdf");
|
|
|
- DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);
|
|
|
- FileItem item = diskFileItemFactory.createItem(file.getName(), "text/plain", true, file.getName());
|
|
|
- int bytesRead = 0;
|
|
|
- byte[] buffer = new byte[8192];
|
|
|
- try {
|
|
|
- FileInputStream fis = new FileInputStream(file);
|
|
|
- OutputStream os = item.getOutputStream();
|
|
|
- int len = 8192;
|
|
|
- while ((bytesRead = fis.read(buffer, 0, len)) != -1) {
|
|
|
- os.write(buffer, 0, bytesRead);
|
|
|
- }
|
|
|
- os.close();
|
|
|
- fis.close();
|
|
|
- } catch (IOException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- MultipartFile multipartFile = new CommonsMultipartFile(item);
|
|
|
- UploadFileDTO fileDTO = fileUtils.uploadFile(multipartFile);
|
|
|
- patentCell.setPdf(fileDTO);
|
|
|
+ doc.close();
|
|
|
} else if (FuJianSuffix.equals(".tiff")) {
|
|
|
patentCell.setOtherUrls(otherUrls);
|
|
|
}
|
|
@@ -885,7 +972,7 @@ public class UploadFromWebService {
|
|
|
}
|
|
|
}
|
|
|
//装载申请日
|
|
|
- patentCell.setApplicationDate(patent.getAppDate().substring(0, patent.getAppDate().indexOf("T")));
|
|
|
+ patentCell.setApplicationDate(patent.getAppDate());
|
|
|
//装载国家/省市
|
|
|
patentCell.setCountry(patent.getAppCountry());
|
|
|
//装载公开号
|
|
@@ -898,16 +985,20 @@ public class UploadFromWebService {
|
|
|
//装载专利号
|
|
|
patentCell.setPatentNo(patentCell.getPublicNo());
|
|
|
//装载公开日
|
|
|
- patentCell.setPubilcDate(patent.getPubDate().substring(0, patent.getPubDate().indexOf("T")));
|
|
|
+ patentCell.setPubilcDate(patent.getPubDate());
|
|
|
//装载授权公告号(未找到)
|
|
|
//装载授权公告日(未找到)
|
|
|
//装载主分类号
|
|
|
List<String> ipCs = patent.getIpCs();
|
|
|
List<String> cpCs = patent.getCpCs();
|
|
|
ipCs.addAll(cpCs);
|
|
|
- patentCell.setMainIpc(ipCs.get(0));
|
|
|
+ if(ipCs!=null&&ipCs.size()>0) {
|
|
|
+ patentCell.setMainIpc(ipCs.get(0));
|
|
|
+ }
|
|
|
//装载分类号
|
|
|
- patentCell.setIpc(ipCs);
|
|
|
+ if(ipCs!=null&&ipCs.size()>0) {
|
|
|
+ patentCell.setIpc(ipCs);
|
|
|
+ }
|
|
|
//装载申请人
|
|
|
ArrayList<String> applicationPersons = new ArrayList<>();
|
|
|
for (Application application : patent.getApplications()) {
|
|
@@ -953,7 +1044,7 @@ public class UploadFromWebService {
|
|
|
Priority priority = new Priority()
|
|
|
.setPriorityNo(number.getNumber().substring(2))
|
|
|
.setPriorityCountry(number.getNumber().substring(0, 2))
|
|
|
- .setPriorityDate(priorty.getDate().substring(0, priorty.getDate().indexOf("T")));
|
|
|
+ .setPriorityDate(priorty.getDate());
|
|
|
priorities.add(priority);
|
|
|
}
|
|
|
}
|
|
@@ -988,7 +1079,7 @@ public class UploadFromWebService {
|
|
|
* @throws IOException
|
|
|
* @throws InterruptedException
|
|
|
*/
|
|
|
- public List<PatentCell> getPatentya(String patentVO) throws IOException, InterruptedException {
|
|
|
+ public List<PatentCell> getPatentya(String patentVO) throws InterruptedException {
|
|
|
//1.获得驱动
|
|
|
System.setProperty("webdriver.chrome.driver", "D:\\driver\\chromedriver.exe");
|
|
|
// 2.页面最大化
|