lwhhszx 1 gadu atpakaļ
vecāks
revīzija
470219ee22
21 mainītis faili ar 301 papildinājumiem un 122 dzēšanām
  1. 4 0
      src/main/java/cn/cslg/pas/common/dto/UploadPatentWebDTO.java
  2. 35 0
      src/main/java/cn/cslg/pas/common/utils/FileUtils.java
  3. 5 0
      src/main/java/cn/cslg/pas/common/utils/FormatUtil.java
  4. 4 0
      src/main/java/cn/cslg/pas/common/vo/ImportTaskAMVO.java
  5. 10 4
      src/main/java/cn/cslg/pas/controller/ImportTaskController.java
  6. 21 11
      src/main/java/cn/cslg/pas/service/business/ImportTaskService.java
  7. 16 2
      src/main/java/cn/cslg/pas/service/business/PatentService.java
  8. 27 0
      src/main/java/cn/cslg/pas/service/common/FileManagerService.java
  9. 0 2
      src/main/java/cn/cslg/pas/service/common/PersonFieldService.java
  10. 16 7
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentFromExcelThread.java
  11. 4 4
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPDFFromWebThread.java
  12. 36 18
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromExcelThread.java
  13. 3 1
      src/main/java/cn/cslg/pas/service/importPatent/ImportFromExcelToEsService.java
  14. 3 2
      src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java
  15. 13 7
      src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java
  16. 2 0
      src/main/java/cn/cslg/pas/service/importPatent/SchedulingTaskService.java
  17. 31 13
      src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java
  18. 2 3
      src/main/java/cn/cslg/pas/service/query/EsQuery.java
  19. 35 23
      src/main/resources/jsons/patent.json
  20. 2 8
      src/main/resources/jsons/uploadSetting.json
  21. 32 17
      src/test/java/cn/cslg/pas/service/CommonServiceTests.java

+ 4 - 0
src/main/java/cn/cslg/pas/common/dto/UploadPatentWebDTO.java

@@ -4,6 +4,7 @@ import cn.cslg.pas.common.vo.StarPatentVO;
 import cn.cslg.pas.common.vo.UploadParamsVO;
 import cn.cslg.pas.domain.es.Patent;
 import lombok.Data;
+import org.apache.poi.ss.usermodel.PictureData;
 
 @Data
 public class UploadPatentWebDTO {
@@ -11,4 +12,7 @@ public class UploadPatentWebDTO {
     private Patent patent;
     private Integer counter;
     private Integer totalCounter;
+    private PictureData pictureData;
+    private Boolean ifAddPatent;
+    private Boolean ifAddPicture;
 }

+ 35 - 0
src/main/java/cn/cslg/pas/common/utils/FileUtils.java

@@ -62,6 +62,41 @@ public class FileUtils {
         }
         return last.toString();
     }
+    public static   File  getFileByBytes(byte[] bytes, String prefix, String suffix) {
+        BufferedOutputStream bos = null;
+        FileOutputStream fos = null;
+        File file = null;
+        try {
 
+            file = File.createTempFile(prefix, suffix);
 
+            //输出流
+            fos = new FileOutputStream(file);
+
+            //缓冲流
+            bos = new BufferedOutputStream(fos);
+
+            //将字节数组写出
+            bos.write(bytes);
+            return file;
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (bos != null) {
+                try {
+                    bos.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (fos != null) {
+                try {
+                    fos.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            return  file;
+        }
+    }
 }

+ 5 - 0
src/main/java/cn/cslg/pas/common/utils/FormatUtil.java

@@ -56,4 +56,9 @@ public class FormatUtil {
 
 
     }
+
+    public  static String getPictureFormat(String appAn){
+        return appAn+"_p";
+
+    }
 }

+ 4 - 0
src/main/java/cn/cslg/pas/common/vo/ImportTaskAMVO.java

@@ -80,4 +80,8 @@ public class ImportTaskAMVO {
     private char ifAddFullText;
     private char ifAddPDF;
     private char  ifAddCatalogue;
+
+    private Boolean ifAddPictureDone;
+
+    private Boolean ifAddPatentDone;
 }

+ 10 - 4
src/main/java/cn/cslg/pas/controller/ImportTaskController.java

@@ -13,10 +13,7 @@ import cn.cslg.pas.common.vo.PersonSelfFieldVO;
 import cn.cslg.pas.domain.business.SystemDict;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.factorys.businessFactory.BusinessFactory;
-import cn.cslg.pas.service.business.AssoScenarioMatterService;
-import cn.cslg.pas.service.business.CommonService;
-import cn.cslg.pas.service.business.ScenarioService;
-import cn.cslg.pas.service.business.SystemDictService;
+import cn.cslg.pas.service.business.*;
 import cn.cslg.pas.service.common.PersonFieldService;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
@@ -60,4 +57,13 @@ public class ImportTaskController {
       Integer  id = (Integer) business.addMessage(importTaskDTO);
         return Response.success(id);
     }
+
+    @Operation(summary = "任务状态更新")
+    @PostMapping("/updateImportTaskState")
+    public Response updateImportTaskState(Integer taskId,Integer state) throws Exception {
+        Business business = businessFactory.getClass("importTaskService");
+        ImportTaskService importTaskService =(ImportTaskService)business;
+        importTaskService.updateImportTaskState(taskId,state);
+        return Response.success("id");
+    }
 }

+ 21 - 11
src/main/java/cn/cslg/pas/service/business/ImportTaskService.java

@@ -23,6 +23,7 @@ import cn.cslg.pas.service.common.PatentStarApiService;
 import cn.cslg.pas.service.importPatent.SchedulingTaskService;
 import cn.cslg.pas.service.permissions.PermissionService;
 import cn.cslg.pas.service.query.FormatQueryService;
+import cn.hutool.cron.task.Task;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -207,8 +208,8 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         }
 
         importTask.setProgress(0.0);
-    String taskName =    this.setImportTaskName(importTaskCondition,personnelVO.getName());
-         importTask.setName(taskName);
+        String taskName = this.setImportTaskName(importTaskCondition, personnelVO.getName());
+        importTask.setName(taskName);
         importTask.insert();
 
         schedulingTaskService.startTask();
@@ -259,10 +260,10 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
             SystemDict systemDict2 = systemDictList.stream()
                     .filter(item -> item.getType().equals("IMPORT_TASk_STATE") && item.getType()
                             .equals(importTaskVO.getState().toString())).findFirst().orElse(null);
-            if(systemDict1!=null){
+            if (systemDict1 != null) {
                 importTaskVO.setTypeStr(systemDict1.getLabel());
             }
-            if(systemDict2!=null){
+            if (systemDict2 != null) {
                 importTaskVO.setStateStr(systemDict2.getLabel());
             }
         }
@@ -271,7 +272,7 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
     }
 
 
-    private String setImportTaskName(ImportTaskCondition importTaskCondition,String name){
+    private String setImportTaskName(ImportTaskCondition importTaskCondition, String name) {
 
 
         //装载名称
@@ -291,8 +292,8 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
             to = "专题库";
             LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.in(Project::getId, importTaskCondition.getProjectId());
-           List<Project> projects = projectService.list(queryWrapper);
-            if (projects.size()!=0) {
+            List<Project> projects = projectService.list(queryWrapper);
+            if (projects.size() != 0) {
                 toName = projects.get(0).getName();
             }
         } else if (importTaskCondition.getProjectId() != null && importTaskCondition.getProjectType().equals(1)) {
@@ -300,15 +301,15 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
             LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.in(Project::getId, importTaskCondition.getProjectId());
             List<Project> projects = projectService.list(queryWrapper);
-            if (projects.size()!=0) {
+            if (projects.size() != 0) {
                 toName = projects.get(0).getName();
             }
         } else if (importTaskCondition.getProductId() != null) {
             to = "产品";
             LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.in(Product::getId, importTaskCondition.getProductId());
-        List<Product>    products = productService.list(queryWrapper);
-            if (products.size()!=0) {
+            List<Product> products = productService.list(queryWrapper);
+            if (products.size() != 0) {
                 toName = products.get(0).getName();
             }
         }
@@ -316,6 +317,15 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         taskName = type + "导入到" + to + "【" + toName + "】 - " + name;
 
 
-return taskName;
+        return taskName;
+    }
+
+    public void updateImportTaskState(Integer taskId, Integer state) {
+        ImportTask importTask = this.getById(taskId);
+        importTask.updateById();
+        if (state.equals(4)) {
+            schedulingTaskService.pauseTask(taskId);
+        }
+
     }
 }

+ 16 - 2
src/main/java/cn/cslg/pas/service/business/PatentService.java

@@ -1,23 +1,39 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.PatentDTO;
+import cn.cslg.pas.common.dto.business.EventDTO;
+import cn.cslg.pas.common.dto.business.UpdateEventDTO;
 import cn.cslg.pas.common.model.cronModel.*;
 import cn.cslg.pas.common.model.request.GroupRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
+import cn.cslg.pas.common.model.request.StringRequest;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.vo.business.EventCountVO;
+import cn.cslg.pas.common.vo.business.EventVO;
+import cn.cslg.pas.domain.business.AssoEventFile;
+import cn.cslg.pas.domain.business.Event;
+import cn.cslg.pas.domain.business.SystemDict;
 import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.exception.UnLoginException;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.mapper.PatentMapper;
 import cn.cslg.pas.service.business.es.EsService;
+
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+
 import java.util.List;
 
+
 @Service
 @Slf4j
 public class PatentService extends ServiceImpl<PatentMapper, Patent> implements Business {
@@ -69,5 +85,3 @@ public class PatentService extends ServiceImpl<PatentMapper, Patent> implements
 
 
 }
-
-

+ 27 - 0
src/main/java/cn/cslg/pas/service/common/FileManagerService.java

@@ -145,4 +145,31 @@ public class FileManagerService {
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
 
+    public String uploadFileWithGuid(File file ,String guid)  throws IOException {
+        MultipartBody.Builder multipartBodyBuilder = new MultipartBody.Builder()
+                .setType(MultipartBody.FORM);
+            //根据文件名获取文件的MIME类型
+            String mimeType = getMimeType(file.getPath());
+            multipartBodyBuilder.addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse(mimeType), file));
+        RequestBody requestBody = multipartBodyBuilder
+                .addFormDataPart("sourceId", String.valueOf(FileSource))
+                .addFormDataPart("fileGuid",guid)
+                .build();
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(FMSUrl + "/fileManager/replaceFile")
+                .post(requestBody)
+                .build();
+        Response response = null;
+        response = okHttpClient.newCall(request).execute();
+        // 最后记得删除临时文件
+            FileUtils.deleteQuietly(file);
+
+        return Objects.requireNonNull(response.body()).string();
+    }
+
 }

+ 0 - 2
src/main/java/cn/cslg/pas/service/common/PersonFieldService.java

@@ -75,7 +75,6 @@ public class PersonFieldService {
         //保存到redis
         redisUtil.set(RedisConf.USER_FIELD + RedisConf.SYMBOL_COLON + key, JsonUtils.objectToJson(fieldVOS));
 
-
         return fieldVOS;
     }
 
@@ -103,7 +102,6 @@ public class PersonFieldService {
          }
         }
 
-
         Integer order = 0;
 
         for (PersonSelfFieldVO item : fieldVOS) {

+ 16 - 7
src/main/java/cn/cslg/pas/service/importPatent/GetPatentFromExcelThread.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.service.importPatent;
 
+import cn.cslg.pas.common.dto.UploadPatentWebDTO;
 import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.common.utils.ReadExcelUtils;
 import cn.cslg.pas.common.vo.ImportTaskAMVO;
@@ -28,7 +29,7 @@ public class GetPatentFromExcelThread extends Thread {
     private ImportTaskAMVO importTaskAMVO;
     private ApplicationContext applicationContext;
     private SavePatentToEsThread savePatentToEsThread;
-
+     private  GetPatentPictureFromExcelThread getPatentPictureFromExcelThread;
     @Override
     public void run() {
         try {
@@ -63,18 +64,24 @@ public class GetPatentFromExcelThread extends Thread {
                     System.out.println(importTaskAMVO.getId());
                     break;
                 }
-                Thread.sleep(10000);
                 PatentData patentData = ReadExcelUtils.readExcelOneRow(tempFile, sheet, i + 1);
 
-
                 //调用装载数据类(根据数据源配置文件对象和专利源数据生成专利数据)
                 UploadParamsVO uploadParamsVO = excuteDataToVOService.fileToPatentVO(patentData, jsonData);
                 this.loadPatent(uploadParamsVO);
+
+                UploadPatentWebDTO uploadPatentWebDTO =new UploadPatentWebDTO();
+                uploadPatentWebDTO.setIfAddPatent(false);
+                uploadPatentWebDTO.setIfAddPicture(false);
+                uploadPatentWebDTO.setPictureData(uploadParamsVO.getPictureData());
+                uploadPatentWebDTO.setPatent(uploadParamsVO.getPatent());
                 //专利丢入消费者队列,并唤醒消费者线程
-                savePatentToEsThread.awakeTask(uploadParamsVO.getPatent());
+                savePatentToEsThread.awakeTask(uploadPatentWebDTO);
+                getPatentPictureFromExcelThread.awakeTask(uploadPatentWebDTO);
             }
             //专利取完通知消费者线程
             savePatentToEsThread.setIfProductAll(true);
+            getPatentPictureFromExcelThread.setIfProductAll(true);
             //删除临时文件tempFile
             new File(tempFile.getPath()).delete();
         } catch (Exception e) {
@@ -82,10 +89,12 @@ public class GetPatentFromExcelThread extends Thread {
         }
     }
 
-    public GetPatentFromExcelThread(ImportTaskAMVO importTaskAMVO, SavePatentToEsThread savePatentToEsThread, ApplicationContext applicationContext) {
-        this.importTaskAMVO = importTaskAMVO;
+    public GetPatentFromExcelThread(TaskThread taskThread, SavePatentToEsThread savePatentToEsThread, GetPatentPictureFromExcelThread getPatentPictureFromExcelThread) {
+        this.importTaskAMVO = taskThread.getImportTaskAMVO();
         this.savePatentToEsThread = savePatentToEsThread;
-        this.applicationContext = applicationContext;
+        this.applicationContext = taskThread.getApplicationContext();
+        this.getPatentPictureFromExcelThread=getPatentPictureFromExcelThread;
+
     }
 
 

+ 4 - 4
src/main/java/cn/cslg/pas/service/importPatent/GetPatentPDFFromWebThread.java

@@ -36,7 +36,7 @@ public class GetPatentPDFFromWebThread extends Thread {
     @Override
     public void run() {
         try {
-            while (uploadPatentWebDTOs.size() > 0 || importTaskAMVO.getProgressVO().equals(1)) {
+//            while (uploadPatentWebDTOs.size() > 0 || importTaskAMVO.getProgressVO().equals(1)) {
 //                String usedPatentNo;
 //                UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOs.remove(0);
 //                StarPatentVO starPatentVO = uploadPatentWebDTO.getStarPatentVO();
@@ -53,7 +53,7 @@ public class GetPatentPDFFromWebThread extends Thread {
 //
 //                    //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
 //                    if (pdfUrlStr.equals("")) {
-//                        recordQuestionPatent(starPatent.getApplicationNo(), task.getId(), 4);
+////                        recordQuestionPatent(starPatent.getApplicationNo(), task.getId(), 4);
 //                        return;
 //                    }
 //
@@ -96,8 +96,8 @@ public class GetPatentPDFFromWebThread extends Thread {
 //                    UploadFileDTO fileDTO = downLoadPdf(pdfUrl);
 //                    uploadParamsVO.setPdf1FileDTO(fileDTO);
 //                }
-
-            }
+//
+//            }
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 36 - 18
src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromExcelThread.java

@@ -1,6 +1,9 @@
 package cn.cslg.pas.service.importPatent;
 
+import cn.cslg.pas.common.dto.UploadPatentWebDTO;
 import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.FileUtils;
+import cn.cslg.pas.common.utils.FormatUtil;
 import cn.cslg.pas.common.utils.ReadExcelUtils;
 import cn.cslg.pas.common.vo.ImportTaskAMVO;
 import cn.cslg.pas.common.vo.PatentData;
@@ -28,6 +31,9 @@ import java.io.InputStream;
 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;
 
 @Configurable
 public class GetPatentPictureFromExcelThread extends Thread {
@@ -36,38 +42,50 @@ public class GetPatentPictureFromExcelThread extends Thread {
     private ApplicationContext applicationContext;
     private SavePatentToEsThread savePatentToEsThread;
     private Boolean ifProductAll = false;
-    private List<UploadParamsVO> uploadParamsVOS;
-
+    private List<UploadPatentWebDTO> uploadPatentWebDTOS =new ArrayList<>();
+    private TaskThread taskThread;
+    private final Lock taskLock = new ReentrantLock();
+    private final Condition taskCondition = taskLock.newCondition();
     @Override
     public void run() {
         try {
-            while (!ifProductAll || uploadParamsVOS.size() > 0 || importTaskAMVO.getProgressVO().equals(1)) {
-                UploadParamsVO uploadParamsVO = uploadParamsVOS.remove(0);
-                PictureData pictureData =uploadParamsVO.getPictureData();
+            while ((!ifProductAll || uploadPatentWebDTOS.size() > 0 )&& importTaskAMVO.getState().equals(1)) {
+                if (uploadPatentWebDTOS.size() == 0) {
+                    taskLock.lock();
+                    taskCondition.await();
+                }
+                UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOS.remove(0);
+                String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getPatent().getAppNo());
+                PictureData pictureData =uploadPatentWebDTO.getPictureData();
                 String ext = pictureData.suggestFileExtension();
                 byte[] data = pictureData.getData();
-                MultipartFile multipartFile = new MockMultipartFile("file", "filename.txt", "text/plain", data);
-                String picName = IdUtil.simpleUUID() + "." + ext;
-
+                String picName = IdUtil.simpleUUID() ;
+               File file = FileUtils.getFileByBytes(data,picName,"."+ext);
+               FileManagerService fileManagerService =applicationContext.getBean(FileManagerService.class);
+               fileManagerService.uploadFileWithGuid(file,guid);
+                uploadPatentWebDTO.setIfAddPicture(true);
+                taskThread.ifPatentDone(uploadPatentWebDTO);
             }
-
+            importTaskAMVO.setIfAddPictureDone(true);
+               taskThread.awakeTaskThread();
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
-    public GetPatentPictureFromExcelThread(ImportTaskAMVO importTaskAMVO, ApplicationContext applicationContext) {
-        this.importTaskAMVO = importTaskAMVO;
+    public GetPatentPictureFromExcelThread(TaskThread taskThread) {
+        this.importTaskAMVO = taskThread.getImportTaskAMVO();
         this.savePatentToEsThread = savePatentToEsThread;
-        this.applicationContext = applicationContext;
+        this.applicationContext = taskThread.getApplicationContext();
+        this.taskThread =taskThread;
     }
 
-    public void awakeTask(Patent patent) {
-//        patents.add(patent);
-//        if (taskLock.tryLock()) {
-//            taskCondition.signalAll();
-//            taskLock.unlock();
-//        }
+    public void awakeTask(UploadPatentWebDTO uploadPatentWebDTO) {
+        uploadPatentWebDTOS.add(uploadPatentWebDTO);
+        if (taskLock.tryLock()) {
+            taskCondition.signalAll();
+            taskLock.unlock();
+        }
     }
 
     //

+ 3 - 1
src/main/java/cn/cslg/pas/service/importPatent/ImportFromExcelToEsService.java

@@ -11,10 +11,12 @@ public class ImportFromExcelToEsService implements PatentImportImp {
 private TaskThread taskThread;
     @Override
     public void startPatentThread() {
+        GetPatentPictureFromExcelThread getPatentPictureFromExcelThread =new GetPatentPictureFromExcelThread(taskThread);
         SavePatentToEsThread savePatentToEsThread = new SavePatentToEsThread(taskThread,taskThread.getApplicationContext());
-        GetPatentFromExcelThread getPatentFromExcelThread = new GetPatentFromExcelThread(taskThread.getImportTaskAMVO(), savePatentToEsThread,taskThread.getApplicationContext());
+        GetPatentFromExcelThread getPatentFromExcelThread = new GetPatentFromExcelThread(taskThread, savePatentToEsThread,getPatentPictureFromExcelThread);
         savePatentToEsThread.start();
         getPatentFromExcelThread.start();
+        getPatentPictureFromExcelThread.start();
     }
     @Override
     public void setTaskThread(TaskThread taskThread) {

+ 3 - 2
src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java

@@ -169,8 +169,9 @@ public class ImportFromWebToEsService implements PatentImportImp {
     public void savePatentToEs(UploadPatentWebDTO uploadPatentWebDTO) {
         uploadPatentWebDTO.setCounter(uploadPatentWebDTO.getCounter() + 1);
         if (uploadPatentWebDTO.getTotalCounter().equals(uploadPatentWebDTO.getCounter())) {
-            Patent patent = uploadPatentWebDTO.getPatent();
-            savePatentToEsThread.awakeTask(patent);
+          uploadPatentWebDTO.setIfAddPatent(false);
+            uploadPatentWebDTO.setIfAddPicture(false);
+            savePatentToEsThread.awakeTask(uploadPatentWebDTO);
         }
     }
 

+ 13 - 7
src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java

@@ -1,5 +1,6 @@
 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;
@@ -24,7 +25,7 @@ import java.util.concurrent.locks.ReentrantLock;
 
 public class SavePatentToEsThread extends Thread {
     private ApplicationContext applicationContext;
-    private List<Patent> patents = new ArrayList<>();
+    private List<UploadPatentWebDTO> uploadPatentWebDTOS = new ArrayList<>();
     private final Lock taskLock = new ReentrantLock();
     private final Condition taskCondition = taskLock.newCondition();
     private TaskThread taskThread;
@@ -33,19 +34,19 @@ public class SavePatentToEsThread extends Thread {
 
     @Override
     public void run() {
-        while (!ifProductAll || patents.size() > 0||importTaskAMVO.getProgressVO().equals(1)) {
+        while ((!ifProductAll || uploadPatentWebDTOS.size() > 0)&&importTaskAMVO.getState().equals(1)) {
             try {
 
                 //判断任务队列是否有任务,若没有则线程等待唤醒
-                if (patents.size() == 0) {
+                if (uploadPatentWebDTOS.size() == 0) {
                     taskLock.lock();
                     taskCondition.await();
                 }
-                Patent patent = patents.remove(0);
+                UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOS.remove(0);
+                Patent patent =uploadPatentWebDTO.getPatent();
                 //根据专利号查询专利
                 EsService esService = applicationContext.getBean(EsService.class);
                 PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(patent.getPatentNo());
-
                 String patentId =null;
                 // 若查出专利则更新
                 if (patentWithIdVO != null) {
@@ -65,6 +66,7 @@ public class SavePatentToEsThread extends Thread {
 
                 //和专题库或报告进行关联
                 if (importTaskAMVO.getProjectId() != null) {
+                    //根据projectId和专利id查询
                     if(patentId!=null){
                         Patent patentChild =new Patent();
                         PatentJoin patentJoin =new PatentJoin();
@@ -81,10 +83,14 @@ public class SavePatentToEsThread extends Thread {
                 MessageService messageService = applicationContext.getBean(MessageService.class);
                 importTaskAMVO.setDoneNum(importTaskAMVO.getDoneNum()+1);
                 messageService.sendWebsocketMessage(importTaskAMVO);
+                uploadPatentWebDTO.setIfAddPatent(true);
+                taskThread.ifPatentDone(uploadPatentWebDTO);
             } catch (Exception e) {
                 System.out.println(e);
             }
+
         }
+        importTaskAMVO.setIfAddPatentDone(true);
         taskThread.awakeTaskThread();
     }
 
@@ -94,8 +100,8 @@ public class SavePatentToEsThread extends Thread {
         this.importTaskAMVO =taskThread.getImportTaskAMVO();
     }
 
-    public void awakeTask(Patent patent) {
-        patents.add(patent);
+    public void awakeTask(UploadPatentWebDTO uploadPatentWebDTO) {
+        uploadPatentWebDTOS.add(uploadPatentWebDTO);
         if (taskLock.tryLock()) {
             taskCondition.signalAll();
             taskLock.unlock();

+ 2 - 0
src/main/java/cn/cslg/pas/service/importPatent/SchedulingTaskService.java

@@ -46,7 +46,9 @@ public class SchedulingTaskService {
             if (importTaskList.size() > 0) {
                 // 装载任务信息
               importTaskAMVOS = this.loadTaskAMVOS(importTaskList);
+
                 importTaskAMVOS.forEach(item -> {
+                    item.setState(1);
                     TaskThread taskThread = new TaskThread(item,applicationContext);
                     executor.execute(taskThread);
                 });

+ 31 - 13
src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.service.importPatent;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.UploadPatentWebDTO;
 import cn.cslg.pas.common.model.cronModel.ImportTaskConfig;
 import cn.cslg.pas.common.model.cronModel.OrderConfig;
 import cn.cslg.pas.common.vo.ImportTaskAMVO;
@@ -20,6 +21,7 @@ import java.util.List;
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
+
 @Configurable
 public class TaskThread extends Thread {
     @Autowired
@@ -34,9 +36,9 @@ public class TaskThread extends Thread {
     /**
      * 从任务队列取出并执行任务
      */
-    public TaskThread(ImportTaskAMVO importTaskAMVO,ApplicationContext applicationContext) {
+    public TaskThread(ImportTaskAMVO importTaskAMVO, ApplicationContext applicationContext) {
         this.importTaskAMVO = importTaskAMVO;
-        this.applicationContext =applicationContext;
+        this.applicationContext = applicationContext;
     }
 
     @Override
@@ -44,10 +46,10 @@ public class TaskThread extends Thread {
         //TODO 判断任务的类型
         String json = CommonService.readJsonFile(Constants.IMPORT_TASK_CONFIG + ".json");
         List<ImportTaskConfig> configs = JSON.parseArray(json, ImportTaskConfig.class);
-        PatentImportFactory patentImportFactory =applicationContext.getBean(PatentImportFactory.class);
+        PatentImportFactory patentImportFactory = applicationContext.getBean(PatentImportFactory.class);
         //根据任务类型使用不同的导入类
-    ImportTaskConfig config =    configs.stream().filter(item -> item.getTaskType().equals(importTaskAMVO.getType()) && item.getImportTo().equals(Constants.IMPORT_PATENT_TO)).findFirst().orElse(null);
-        PatentImportImp patentImportImp= patentImportFactory.getClass(config.getImportClass());
+        ImportTaskConfig config = configs.stream().filter(item -> item.getTaskType().equals(importTaskAMVO.getType()) && item.getImportTo().equals(Constants.IMPORT_PATENT_TO)).findFirst().orElse(null);
+        PatentImportImp patentImportImp = patentImportFactory.getClass(config.getImportClass());
         patentImportImp.setTaskThread(this);
         patentImportImp.startPatentThread();
         taskThreadLock.lock();
@@ -56,20 +58,36 @@ public class TaskThread extends Thread {
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
-        ImportTaskService importTaskService =applicationContext.getBean(ImportTaskService.class);
-      ImportTask task =  importTaskService.getById(importTaskAMVO.getId());
-      task.setState(2);
-      task.setEndNum(task.getAllNum());
+        ImportTaskService importTaskService = applicationContext.getBean(ImportTaskService.class);
+        ImportTask task = importTaskService.getById(importTaskAMVO.getId());
+        task.setState(2);
+        task.setEndNum(task.getAllNum());
+        task.updateById();
         System.out.println("任务结束");
     }
 
 
     public void awakeTaskThread() {
+        if (importTaskAMVO.getType() == 1) {
+            if (importTaskAMVO.getIfAddPictureDone() != null && importTaskAMVO.getIfAddPatentDone() != null
+                    && importTaskAMVO.getIfAddPictureDone() && importTaskAMVO.getIfAddPatentDone()) {
+                if (taskThreadLock.tryLock()) {
+                    //taskLock.lock();
+                    taskThreadCondition.signalAll();
+                    taskThreadLock.unlock();
+                }
+            }
+
+        }
+
+    }
+
+    public void ifPatentDone(UploadPatentWebDTO uploadPatentWebDTO) {
+        if (importTaskAMVO.getType() == 1) {
+            if (uploadPatentWebDTO.getIfAddPicture() && uploadPatentWebDTO.getIfAddPicture()) {
+                importTaskAMVO.setDoneNum(importTaskAMVO.getDoneNum() + 1);
+            }
 
-        if (taskThreadLock.tryLock()) {
-            //taskLock.lock();
-            taskThreadCondition.signalAll();
-            taskThreadLock.unlock();
         }
     }
 

+ 2 - 3
src/main/java/cn/cslg/pas/service/query/EsQuery.java

@@ -1,9 +1,8 @@
 package cn.cslg.pas.service.query;
 
-public class EsQuery implements Query{
+public class EsQuery implements Query {
     @Override
-    public void queryMessage(){
-
+    public void queryMessage() {
 
 
     }

+ 35 - 23
src/main/resources/jsons/patent.json

@@ -5,7 +5,11 @@
     "value": "patentNo",
     "field": "patentNo",
     "esField": "patent_no",
-    "esClass": "keyWordQueryBuilder"
+    "esClass": "keyWordQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
   },
   {
     "name": "标题",
@@ -13,7 +17,11 @@
     "value": "titleTextContent",
     "field": "titleTextContent",
     "esField": "title.text_content",
-    "esClass": "nestedQueryBuilder"
+    "esClass": "nestedQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
   },
   {
     "name": "公开日期",
@@ -21,7 +29,11 @@
     "value": "publicDate",
     "field": "publicDate",
     "esField": "public_date",
-    "esClass": "dateQueryBuilder"
+    "esClass": "dateQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
   },
   {
     "name": "申请日期",
@@ -29,7 +41,11 @@
     "value": "appDate",
     "field": "appDate",
     "esField": "app_date",
-    "esClass": "dateQueryBuilder"
+    "esClass": "dateQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
   },
   {
     "name": "授权日期",
@@ -37,7 +53,11 @@
     "value": "grantDate",
     "field": "grantDate",
     "esField": "grant_date",
-    "esClass": "dateQueryBuilder"
+    "esClass": "dateQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
   },
   {
     "name": "家族号",
@@ -45,30 +65,22 @@
     "value": "simpleFamilyNum",
     "field": "simpleFamilyNum",
     "esField": "simple_family_num",
-    "esClass": "numberQueryBuilder"
+    "esClass": "numberQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "ifAsCondition": "true"
   },
   {
     "name": "子文档号",
     "type": "String",
-    "value": "childId",
-    "field": "childId",
-    "esField": "child_id",
-    "esClass": "childQueryBuilder"
-  },
-  {
-    "name": "父文档号",
-    "type": "String",
-    "value": "parentId",
-    "field": "parentId",
-    "esField": "parent_id",
-    "esClass": "parentQueryBuilder"
-  },
-  {
-    "name": "文档号",
-    "type": "String",
     "value": "projectId",
     "field": "projectId",
     "esField": "project_id",
-    "esClass": "projectQueryBuilder"
+    "esClass": "childQueryBuilder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
+    "ifAsCondition": "true"
   }
 ]

+ 2 - 8
src/main/resources/jsons/uploadSetting.json

@@ -53,7 +53,7 @@
 			},
 			{
 				"setName": "申请号",
-				"column": "patent.applicationNo",
+				"column": "patent.appNo",
 				"splitSymbol": "",
 				"handler": "cn.cslg.pas.common.utils.handler.StringHandler",
 				"jarOrClassPath": "./Wispro-CodeWarehouse-BackEnd.jar"
@@ -589,13 +589,7 @@
 				"handler": "cn.cslg.pas.common.utils.handler.TimeHandler",
 				"jarOrClassPath": "./Wispro-CodeWarehouse-BackEnd.jar"
 			},
-			{
-				"setName": "申请号",
-				"column": "patent.applicationNo",
-				"splitSymbol": "",
-				"handler": "cn.cslg.pas.common.utils.handler.StringHandler",
-				"jarOrClassPath": "./Wispro-CodeWarehouse-BackEnd.jar"
-			},
+
 			{
 				"setName": "文献种类代码",
 				"column": "patent.code",

+ 32 - 17
src/test/java/cn/cslg/pas/service/CommonServiceTests.java

@@ -12,6 +12,7 @@ import cn.cslg.pas.controller.CommonController;
 import cn.cslg.pas.controller.EventController;
 import cn.cslg.pas.domain.business.Matter;
 import cn.cslg.pas.service.business.CommonService;
+import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.importPatent.SchedulingTaskService;
 import cn.cslg.pas.service.permissions.PermissionService;
 import cn.cslg.pas.service.query.FormatQueryService;
@@ -22,6 +23,7 @@ import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -41,27 +43,30 @@ public class CommonServiceTests {
     private SchedulingTaskService schedulingTaskService;
     @Autowired
     private FormatQueryService formatQueryService;
+    @Autowired
+    private FileManagerService fileManagerService;
+
     @Test
     void test() throws Exception {
-     String aa=   permissionService.getPersonIdByNamePCS("朱",false);
-     System.out.println(aa);
+        String aa = permissionService.getPersonIdByNamePCS("朱", false);
+        System.out.println(aa);
     }
 
     @Test
     void getQueryConditions() throws Exception {
-        List<String> list =new ArrayList<>();
+        List<String> list = new ArrayList<>();
         list.add("event");
         commonController.getQueryConditions(list);
     }
 
     @Test
-    void getScenarios(){
+    void getScenarios() {
         Response scenarioVOS = commonController.queryAllScenario();
         System.out.println(scenarioVOS);
     }
 
     @Test
-    void getMatter(){
+    void getMatter() {
         List<Integer> scenarioIds = new ArrayList<>();
         scenarioIds.add(1);
         scenarioIds.add(2);
@@ -73,29 +78,39 @@ public class CommonServiceTests {
         List<String> scenarioIds = new ArrayList<>();
         scenarioIds.add("1");
         scenarioIds.add("2");
-     String   json = permissionService.getDepartmentByIdsFromPCS(scenarioIds);
-     List<DepartmentVO> departmentVOS = JSON.parseArray(json,DepartmentVO.class);
-     System.out.println(departmentVOS);
+        String json = permissionService.getDepartmentByIdsFromPCS(scenarioIds);
+        List<DepartmentVO> departmentVOS = JSON.parseArray(json, DepartmentVO.class);
+        System.out.println(departmentVOS);
 
     }
+
     @Test
     void testImportTask() throws IOException, InterruptedException {
         schedulingTaskService.startTask();
 //        Thread.sleep(10000);
 //        schedulingTaskService.pauseTask(1);
-         Thread.sleep(1000000);
+        Thread.sleep(1000000);
+    }
+
+    @Test
+    void test23() {
+        String a = MathUtils.fun(2, 2);
+        char[] ab = a.toCharArray();
+        System.out.println(a);
+        System.out.println(ab);
     }
+
     @Test
-    void test23()  {
-    String a=    MathUtils.fun(2,2);
-       char[] ab =  a.toCharArray();
-    System.out.println(a);
-    System.out.println(ab);
+    void reQuerys() {
+        String re = formatQueryService.reQuery("TX=泳池", "webSearchConfig");
+        System.out.println(re);
     }
+
     @Test
-    void reQuerys()  {
-   String re =formatQueryService.reQuery("TX=泳池","webSearchConfig");
-   System.out.println(re);
+   public void upLoadFileByFileGuid() throws IOException {
+        String guid = "111111";
+        File file = new File("src/main/resources/jsons/" + "patent.json");
+        fileManagerService.uploadFileWithGuid(file, "1111");
     }
 
 }