123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package cn.cslg.pas.service.importPatent;
- import cn.cslg.pas.common.dto.UploadPatentWebDTO;
- import cn.cslg.pas.common.utils.FormatUtil;
- import cn.cslg.pas.common.vo.ImportTaskAMVO;
- import cn.cslg.pas.common.vo.PatentWithIdVO;
- import cn.cslg.pas.domain.business.ImportTask;
- import cn.cslg.pas.domain.es.ESImportTask;
- import cn.cslg.pas.domain.es.Patent;
- import cn.cslg.pas.domain.es.PatentJoin;
- import cn.cslg.pas.service.business.ImportTaskService;
- import cn.cslg.pas.service.business.es.EsService;
- import cn.cslg.pas.service.common.FileManagerService;
- import cn.cslg.pas.service.common.MessageService;
- import cn.cslg.pas.service.common.PatentStarApiService;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.ApplicationContext;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.concurrent.locks.Condition;
- import java.util.concurrent.locks.Lock;
- import java.util.concurrent.locks.ReentrantLock;
- public class SavePatentToEsThread extends Thread {
- private ApplicationContext applicationContext;
- private List<Patent> patents = new ArrayList<>();
- private final Lock taskLock = new ReentrantLock();
- private final Condition taskCondition = taskLock.newCondition();
- private TaskThread taskThread;
- private ImportTaskAMVO importTaskAMVO;
- private Boolean ifProductAll = false;
- @Override
- public void run() {
- while ((!ifProductAll || patents.size() > 0) && importTaskAMVO.getState().equals(1)) {
- try {
- //判断任务队列是否有任务,若没有则线程等待唤醒
- if (patents.size() == 0) {
- taskLock.lock();
- taskCondition.await();
- }
- } catch (Exception e) {
- }
- Patent patent = patents.remove(0);
- try {
- //根据专利号查询专利
- EsService esService = applicationContext.getBean(EsService.class);
- PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(patent.getPatentNo());
- String patentId = null;
- // 若查出专利则更新
- if (patentWithIdVO != null) {
- patentId = patentWithIdVO.getId();
- Patent orgPatent = patentWithIdVO.getPatent();
- BeanUtils.copyProperties(patent, orgPatent, FormatUtil.getNullPropertyNames(patent));
- esService.updatePatent(orgPatent, patentWithIdVO.getId());
- } else {
- PatentJoin patentJoin = new PatentJoin();
- patentJoin.setName("patent");
- patent.setPatentJoin(patentJoin);
- patentId = esService.addPatent(patent);
- }
- //判断是否和专题库或报告关联
- ImportTaskAMVO importTaskAMVO = taskThread.getImportTaskAMVO();
- //和专题库或报告进行关联
- if (importTaskAMVO.getProjectId() != null) {
- //根据projectId和专利id查询
- if (patentId != null) {
- Boolean ifInproject = esService.searchPatent(patentId, importTaskAMVO.getProjectId());
- if (!ifInproject) {
- Patent patentChild = new Patent();
- PatentJoin patentJoin = new PatentJoin();
- patentJoin.setParent(patentId);
- patentJoin.setName("project");
- patentChild.setPatentJoin(patentJoin);
- patentChild.setProjectId(importTaskAMVO.getProjectId());
- esService.addChildPatent(patentChild, patentId);
- }
- }
- //和任务关联
- if (importTaskAMVO.getId() != null) {
- if (patentId != null) {
- Boolean ifInTask = esService.ifInTask(patentId, importTaskAMVO.getProjectId(), importTaskAMVO.getId());
- if (!ifInTask) {
- Patent patentChild = new Patent();
- PatentJoin patentJoin = new PatentJoin();
- patentJoin.setParent(patentId);
- patentJoin.setName("import_task");
- patentChild.setPatentJoin(patentJoin);
- ESImportTask esImportTask = new ESImportTask();
- esImportTask.setProjectId(importTaskAMVO.getProjectId());
- esImportTask.setTaskId(importTaskAMVO.getId());
- patentChild.setImportTask(esImportTask);
- esService.addChildPatent(patentChild, patentId);
- }
- }
- }
- }
- //导入完成,通知前台
- taskThread.updateProcess(false,1,"");
- } catch (Exception e) {
- taskThread.updateProcess(true,1,"");
- }
- }
- taskThread.awakeTaskThread();
- System.out.println("done");
- }
- public SavePatentToEsThread(TaskThread taskThread, ApplicationContext applicationContext) {
- this.taskThread = taskThread;
- this.applicationContext = applicationContext;
- this.importTaskAMVO = taskThread.getImportTaskAMVO();
- }
- public void awakeTask(Patent patent) {
- patents.add(patent);
- if (taskLock.tryLock()) {
- taskCondition.signalAll();
- taskLock.unlock();
- }
- }
- public void setIfProductAll(Boolean ifProductAll) {
- this.ifProductAll = ifProductAll;
- }
- }
|