lwhhszx 1 рік тому
батько
коміт
70eb13fd71
32 змінених файлів з 1453 додано та 223 видалено
  1. 5 0
      pom.xml
  2. 19 20
      src/main/java/cn/cslg/pas/common/dto/ImportTaskDTO.java
  3. 28 0
      src/main/java/cn/cslg/pas/common/dto/business/AssoImportTaskFieldVO.java
  4. 1 0
      src/main/java/cn/cslg/pas/common/model/cronModel/SqlObject.java
  5. 0 24
      src/main/java/cn/cslg/pas/common/utils/DateUtils2.java
  6. 3 2
      src/main/java/cn/cslg/pas/common/utils/FileUtils.java
  7. 0 2
      src/main/java/cn/cslg/pas/common/utils/ReadExcelUtils.java
  8. 8 4
      src/main/java/cn/cslg/pas/common/vo/ImportTaskAMVO.java
  9. 1 1
      src/main/java/cn/cslg/pas/common/vo/ProductOrCategoryVO.java
  10. 99 0
      src/main/java/cn/cslg/pas/common/vo/WorldPatentZhuLu.java
  11. 33 26
      src/main/java/cn/cslg/pas/common/vo/business/ImportTaskVO.java
  12. 4 2
      src/main/java/cn/cslg/pas/common/vo/business/PatentProjectVO.java
  13. 9 0
      src/main/java/cn/cslg/pas/controller/CommonController.java
  14. 4 3
      src/main/java/cn/cslg/pas/controller/ImportTaskController.java
  15. 4 3
      src/main/java/cn/cslg/pas/domain/business/ImportTask.java
  16. 12 4
      src/main/java/cn/cslg/pas/domain/business/ImportTaskCondition.java
  17. 40 49
      src/main/java/cn/cslg/pas/g4/EvalVisitor.java
  18. 6 0
      src/main/java/cn/cslg/pas/mapper/ImportTaskMapper.java
  19. 20 2
      src/main/java/cn/cslg/pas/service/business/CommonService.java
  20. 275 4
      src/main/java/cn/cslg/pas/service/business/ImportTaskService.java
  21. 11 6
      src/main/java/cn/cslg/pas/service/business/PatentProjectService.java
  22. 12 12
      src/main/java/cn/cslg/pas/service/common/MessageService.java
  23. 301 28
      src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java
  24. 2 6
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentFromExcelThread.java
  25. 209 0
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPDFFromWebThread.java
  26. 81 0
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromExcelThread.java
  27. 184 0
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromWebThread.java
  28. 64 16
      src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java
  29. 4 3
      src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java
  30. 6 4
      src/main/java/cn/cslg/pas/service/importPatent/SchedulingTaskService.java
  31. 6 0
      src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java
  32. 2 2
      src/main/java/cn/cslg/pas/service/query/FormatQueryService.java

+ 5 - 0
pom.xml

@@ -124,6 +124,7 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
+            <version>3.1.3</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -230,6 +231,10 @@
             <artifactId>jaxen</artifactId>
             <version>1.2.0</version> <!-- 使用你需要的版本 -->
         </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+        </dependency>
     </dependencies>
 
 

+ 19 - 20
src/main/java/cn/cslg/pas/common/dto/ImportTaskDTO.java

@@ -1,11 +1,14 @@
 package cn.cslg.pas.common.dto;
 
+import cn.cslg.pas.common.dto.business.AssoImportTaskFieldVO;
+import cn.cslg.pas.domain.business.AssoImportTaskField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 导入任务DTO类
@@ -17,29 +20,22 @@ import java.util.Date;
 @Data
 public class ImportTaskDTO {
     /**
-     * 项目id
+     * 导入id
      */
-    private Integer projectId;
+    private Integer importToId;
 
     /**
-     * 项目类型
-     * 0专题库 1报告
+     * 导入类型
+     * 0专题库 1报告 2产品
      */
+    private Integer importToType;
 
-    /**
-     * 产品id
-     */
-    private Integer productId;
 
     /**
      * 周期
      */
-    @TableField(value = "crons")
     private String crons;
 
-    /**
-     * 上次更新时间
-     */
 
     /**
      * 若是检索导入/专利号导入则必填
@@ -47,20 +43,17 @@ public class ImportTaskDTO {
      * 第1著录项目2附图
      * 3权利要求,4说明书文本,5pdf文档
      */
-    @TableField(value = "import_content")
     private Integer importContent;
 
     /**
      * 是否更新
      */
-    @TableField(value = "if_update")
-    private Integer ifUpdate;
+    private Boolean ifUpdate;
 
     /**
      * 条件
      */
-    @TableField(value = "'condition'")
-    private String condition;
+    private String searchCondition;
 
     /**
      * 1excel导入
@@ -69,20 +62,26 @@ public class ImportTaskDTO {
      * 4检索导入
      * 5pdf文档导入
      */
-    @TableField(value = "type")
     private Integer type;
 
     /**
      * 文件guid
      */
-    @TableField(value = "file_guid")
     private String fileGuid;
 
     /**
      * 若是excel导入任务,则使用到配置文件source_id
      */
-    @TableField(value = "source_id")
     private Integer sourceId;
 
+    /**
+     * 检索导入使用的数据库类型(中国or世界)
+     */
+    private String dbType;
+
+    private String orderBy;
+    private String orderByType;
+
+    private List<AssoImportTaskFieldVO> assoImportTaskFieldVOS;
 
 }

+ 28 - 0
src/main/java/cn/cslg/pas/common/dto/business/AssoImportTaskFieldVO.java

@@ -0,0 +1,28 @@
+package cn.cslg.pas.common.dto.business;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/11/24
+ */
+@Data
+public class AssoImportTaskFieldVO {
+
+    private Integer importTaskId;
+
+    private Integer projectId;
+
+
+    private Integer fieldType;
+
+
+    private Integer fieldId;
+
+
+    private Integer fieldValueId;
+
+}

+ 1 - 0
src/main/java/cn/cslg/pas/common/model/cronModel/SqlObject.java

@@ -23,5 +23,6 @@ public class SqlObject {
     private String sqlClass;
     private String option;
     private Boolean ifSearch;
+    private Boolean ifAsCondition;
 
 }

+ 0 - 24
src/main/java/cn/cslg/pas/common/utils/DateUtils2.java

@@ -88,29 +88,5 @@ public class DateUtils2 {
         return dateTimes;
     }
 
-    public static void main(String[] args) {
-        List<DateTime> dateTimeList =new ArrayList<>();
-        List<DateTime> dateTimeList2 =new ArrayList<>();
-        DateTime dateTime =DateUtils2.formStrToDateTime("1901-7-14");
-        DateTime dateTime1 =DateUtils2.formStrToDateTime("1900-1-1");
-      List<DateTime> dateTimes =   DateUtils2.formStrToDateTime(dateTime1,dateTime);
-        dateTimeList2.addAll(dateTimes);
-         while (true){
-             DateTime d1 =dateTimeList2.get(0);
-             DateTime d2 =dateTimeList2.get(1);
-             DateTime d3 =dateTimeList2.get(2);
-             DateTime d4 =dateTimeList2.get(3);
-             dateTimeList2.remove(d1);
-             dateTimeList2.remove(d2);
-             dateTimeList2.remove(d3);
-             dateTimeList2.remove(d4);
-             List<DateTime> dateTimes3 =   DateUtils2.formStrToDateTime(d1,d2);
-             List<DateTime> dateTimes4 =   DateUtils2.formStrToDateTime(d3,d4);
-             dateTimeList2.addAll(dateTimes3);
-             dateTimeList2.addAll(dateTimes4);
-             dateTimeList.addAll(dateTimes3);
-             dateTimeList.addAll(dateTimes4);
 
-         }
-    }
 }

+ 3 - 2
src/main/java/cn/cslg/pas/common/utils/FileUtils.java

@@ -1,10 +1,11 @@
 package cn.cslg.pas.common.utils;
 
 
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.springframework.boot.system.ApplicationHome;
 import org.springframework.stereotype.Service;
-
-
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.*;
 import java.nio.charset.StandardCharsets;

+ 0 - 2
src/main/java/cn/cslg/pas/common/utils/ReadExcelUtils.java

@@ -94,10 +94,8 @@ public class ReadExcelUtils {
             new File(tempFile.getPath()).delete();
             ThrowException.throwXiaoShiException("文件内容格式不正确,您选择【" + source + "】来源,Excel第一行抬头必须有【" + title + "】和【申请号】");
         }
-
         //关闭流
         fis.close();
-
         //返回文件总行数-1(即专利总数量)
         return rows - 1;
     }

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

@@ -13,7 +13,7 @@ public class ImportTaskAMVO {
     /**
      * 查询条件
      */
-    private String condition;
+    private String searchCondition;
     /**
      * 任务id
      */
@@ -68,12 +68,16 @@ public class ImportTaskAMVO {
      */
     private Integer importContent;
 
-    private  Integer status;
     private Integer endNum;
     private String orderBy;
     private  String orderByType;
-    private String dBType;
+    private String dbType;
     private Integer doneNum;
-
+    private String createId;
     private ProgressVO progressVO;
+
+    private char ifAddPicture;
+    private char ifAddFullText;
+    private char ifAddPDF;
+    private char  ifAddCatalogue;
 }

+ 1 - 1
src/main/java/cn/cslg/pas/common/vo/ProductOrCategoryVO.java

@@ -16,7 +16,7 @@ public class ProductOrCategoryVO {
      * Front:
      * Back:ID
      */
-    private String id;
+    private Integer id;
 
     /**
      * Front:

+ 99 - 0
src/main/java/cn/cslg/pas/common/vo/WorldPatentZhuLu.java

@@ -0,0 +1,99 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 专利之星世界专利著录实体类
+ *
+ * @Author chenyu
+ * @Date 2023/7/19
+ */
+@Accessors(chain = true)
+@Data
+public class WorldPatentZhuLu implements Serializable {
+    /**
+     * 公开号(DocDB)
+     */
+    private String DocdbPubNo;
+    /**
+     * 申请号(Epo)
+     */
+    private String EpoAppNo;
+    /**
+     * 申请日
+     */
+    private String AppDate;
+    /**
+     * 公开日
+     */
+    private String PubDate;
+    /**
+     * IPC分类号
+     */
+    private String Ipc;
+    /**
+     * CPC分类号
+     */
+    private String cpc;
+    /**
+     * ECLA分类号
+     */
+    private String Ecla;
+    /**
+     * 申请人
+     */
+    private String Pa;
+    /**
+     * 申请人国别
+     */
+    private String PaAllCountry;
+    /**
+     * 发明人
+     */
+    private String Iv;
+    /**
+     * 发明人国别
+     */
+    private String IvAllCountry;
+    /**
+     * 引用文献号
+     */
+    private String Patcit;
+    /**
+     * 公开号(Original)
+     */
+    private String OriPubNo;
+    /**
+     * 申请号(Original)
+     */
+    private String OriAppNo;
+    /**
+     * 申请号(DocDB)
+     */
+    private String DocdbAppNo;
+    /**
+     * 公开号(EPO)
+     */
+    private String EpoPubNo;
+    /**
+     * 优先权
+     */
+    private String Pr;
+    /**
+     * 简单同族docdb
+     */
+    private String DocdbFamily;
+    /**
+     * 标题
+     */
+    private String Title;
+    /**
+     * 摘要
+     */
+    private String Abstract;
+
+
+}

+ 33 - 26
src/main/java/cn/cslg/pas/common/vo/business/ImportTaskVO.java

@@ -2,8 +2,10 @@ package cn.cslg.pas.common.vo.business;
 
 import cn.cslg.pas.common.vo.ProgressVO;
 import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -12,55 +14,60 @@ import java.util.List;
 @Data
 public class ImportTaskVO {
     /**
-     * 条件
+     * 查询条件
      */
-    private String condition;
-
+    private String searchCondition;
     /**
-     * 项目id
+     * 任务id
      */
+    private Integer id;
 
-    private Integer importToId;
+    private String fileGuid;
 
     /**
-     * 项目类型
-     * 0专题库 1报告 2产品
+     * 导入总条数
      */
-    private Integer importToType;
+    private Integer allNum;
 
 
     /**
-     * 周期
+     * 完成条数
      */
-    private String crons;
-
+    private Integer successNum;
 
     /**
-     * 若是检索导入/专利号导入则必填
-     * 五位数字
-     * 第1著录项目2附图
-     * 3权利要求,4说明书文本,5pdf文档
+     * 失败条数
      */
-    private List<Integer> importContent;
-
+    private Integer defaultNum;
     /**
-     * 是否更新
+     * 任务类型
+     * 1.excel导入 2.专利号导入 3.专利号文件导入 4.检索导入 5.pdf文档导入
      */
-    private Integer ifUpdate;
-
     private Integer type;
-
+    private String typeStr;
     /**
-     * 文件guid
+     * 状态
      */
-    private String fileGuid;
+    private Integer state;
 
+    private String stateStr;
     /**
-     * 若是excel导入任务,则使用到配置文件source_id
+     *
      */
-    private Integer excelSourceId;
+    private String crons;
+
 
+    @Schema(description = "创建时间")
+    private Date createTime;
+    @Schema(description = "创建人")
+    private String createName;
+    @Schema(description = "创建人Id")
+    private String createId;
 
-   private List<ProjectFieldVO> projectFieldVO;
+    @Schema(description = "名称")
+    private String taskName;
 
+    private Integer projectId;
+    private Integer projectType;
+    private Integer productId;
 }

+ 4 - 2
src/main/java/cn/cslg/pas/common/vo/business/PatentProjectVO.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.common.vo.business;
 
 import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.vo.ProductOrCategoryVO;
 import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -159,8 +160,9 @@ public class PatentProjectVO {
     private List<String> eventNames;
 
     @Schema(description = "产品或产品类别名称")
-    private String productOrCategoryName;
-
+    private ProductOrCategoryVO productOrCategory;
     @Schema(description = "技术类别名称")
     private String technicalCategoryName;
+
+
 }

+ 9 - 0
src/main/java/cn/cslg/pas/controller/CommonController.java

@@ -121,4 +121,13 @@ public class CommonController {
         records.setData(systemDictService.getCrons(reportType));
         return Response.success(records);
     }
+
+
+    @GetMapping("/getExcelConfig")
+    @Operation(summary = "查找excel导入配置")
+    public Response getExcelConfig(){
+        Records records = new Records();
+        records.setData(commonService.getExcelConfig());
+        return Response.success(records);
+    }
 }

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

@@ -3,6 +3,7 @@ package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.dto.AddSelfFieldDTO;
+import cn.cslg.pas.common.dto.ImportTaskDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
@@ -54,9 +55,9 @@ public class ImportTaskController {
 
     @Operation(summary = "添加导入任务")
     @PostMapping("/addImportTask")
-    public Response addImportTask(@RequestBody StringRequest stringRequest) throws Exception {
+    public Response addImportTask(@RequestBody ImportTaskDTO importTaskDTO) throws Exception {
         Business business = businessFactory.getClass("importTaskService");
-        Records records = (Records) business.addMessage(stringRequest);
-        return Response.success(records);
+      Integer  id = (Integer) business.addMessage(importTaskDTO);
+        return Response.success(id);
     }
 }

+ 4 - 3
src/main/java/cn/cslg/pas/domain/business/ImportTask.java

@@ -17,8 +17,8 @@ public class ImportTask extends BaseEntity<ImportTask> {
     /**
      * 条件
      */
-    @TableField(value = "'condition'")
-    private String condition;
+    @TableField(value = "search_condition")
+    private String searchCondition;
 
     /**
      * 导入总条数
@@ -85,5 +85,6 @@ public class ImportTask extends BaseEntity<ImportTask> {
      */
     @TableField(value = "end_num")
     private Integer endNum;
-
+    @TableField(value = "done_num")
+    private Integer doneNum;
 }

+ 12 - 4
src/main/java/cn/cslg/pas/domain/business/ImportTaskCondition.java

@@ -19,7 +19,7 @@ public class ImportTaskCondition extends BaseEntity<ImportTaskCondition> {
      * 项目id
      */
     private Integer projectId;
-
+@TableField(exist = false)
     private List<String> patentNos;
     /**
      * 项目类型
@@ -53,12 +53,13 @@ public class ImportTaskCondition extends BaseEntity<ImportTaskCondition> {
     /**
      * 是否更新
      */
-    private Integer ifUpdate;
+    private Boolean ifUpdate;
 
     /**
      * 条件
      */
-    private String condition;
+    @TableField(value = "search_condition")
+    private String searchCondition;
 
     /**
      * 1excel导入
@@ -87,10 +88,17 @@ public class ImportTaskCondition extends BaseEntity<ImportTaskCondition> {
      */
     @TableField(value = "create_id")
     private String createId;
-
+    @TableField(value = "db_type")
+    private String dbType;
+    @TableField(value = "order_by_type")
+    private String orderByType;
+    @TableField(value = "order_by")
+    private String orderBy;
     /**
      * 创建时间
      */
     @TableField(value = "create_time")
     private Date createTime;
+
+
 }

+ 40 - 49
src/main/java/cn/cslg/pas/g4/EvalVisitor.java

@@ -1,7 +1,6 @@
 package cn.cslg.pas.g4;
 
 
-
 import org.antlr.v4.runtime.CharStream;
 import org.antlr.v4.runtime.CharStreams;
 import org.antlr.v4.runtime.CommonTokenStream;
@@ -11,12 +10,14 @@ import java.util.Map;
 import java.util.Objects;
 
 public class EvalVisitor extends ExprBaseVisitor<String> {
-    /** 计算器的“内存”,存放<变量名, 变量值> */
+    /**
+     * 计算器的“内存”,存放<变量名, 变量值>
+     */
     Map<String, Integer> memory = new HashMap<String, Integer>();
-       StringBuilder aa =new StringBuilder();
+    StringBuilder aa = new StringBuilder();
 
     @Override
-    public  String visitKeyword2(ExprParser.Keyword2Context ctx){
+    public String visitKeyword2(ExprParser.Keyword2Context ctx) {
         aa.append("(");
         visit(ctx.keyword());
         aa.append(")");
@@ -24,85 +25,75 @@ public class EvalVisitor extends ExprBaseVisitor<String> {
     }
 
     @Override
-    public  String visitKeyword3(ExprParser.Keyword3Context ctx){
-                String c= ctx.toString();
-        String bb =ctx.ALLWORD().toString();
-        Integer a =ctx.model().size();
-        Integer v =ctx.AND().size();
-        for(int i=0;i<ctx.model().size();i++){
-            if(i>0) {
-                aa.append(ctx.AND(i-1)+bb + "=" + visit(ctx.model(i)));
-            }
-            else {
+    public String visitKeyword3(ExprParser.Keyword3Context ctx) {
+        String c = ctx.toString();
+        String bb = ctx.ALLWORD().toString();
+        Integer a = ctx.model().size();
+        Integer v = ctx.AND().size();
+        for (int i = 0; i < ctx.model().size(); i++) {
+            if (i > 0) {
+                aa.append(ctx.AND(i - 1) + bb + "=" + visit(ctx.model(i)));
+            } else {
                 aa.append(bb + "=" + visit(ctx.model(i)));
             }
         }
-             return "";
+        return "";
     }
 
     @Override
-    public  String visitKeyword4(ExprParser.Keyword4Context ctx){
+    public String visitKeyword4(ExprParser.Keyword4Context ctx) {
         aa.append(ctx.ALLWORD() + "=" + visit(ctx.model()));
         return "";
     }
 
     @Override
-    public  String visitKeyword1(ExprParser.Keyword1Context ctx){
-        for (int i=0;i<ctx.keyword().size();i++){
-            if(i==0){
+    public String visitKeyword1(ExprParser.Keyword1Context ctx) {
+        for (int i = 0; i < ctx.keyword().size(); i++) {
+            if (i == 0) {
                 visit(ctx.keyword(i));
-            }
-           else {aa.append(ctx.AND().get(i-1));
+            } else {
+                aa.append(ctx.AND().get(i - 1));
                 visit(ctx.keyword(i));
-
             }
         }
-return "";
+        return "";
     }
+
     @Override
-    public  String visitAd1(ExprParser.Ad1Context ctx){
+    public String visitAd1(ExprParser.Ad1Context ctx) {
         aa.append("(");
-         for (int i=0;i<ctx.expr().size();i++){
+        for (int i = 0; i < ctx.expr().size(); i++) {
 
             visit(ctx.expr(i));
 
-         }
+        }
         aa.append(")");
         return " ";
     }
+
     @Override
-    public  String visitAd3(ExprParser.Ad3Context ctx){
-        for (int i=0;i<ctx.keyword().size();i++){
+    public String visitAd3(ExprParser.Ad3Context ctx) {
+        for (int i = 0; i < ctx.keyword().size(); i++) {
             visit(ctx.keyword(i));
         }
         return "";
     }
+
     @Override
-    public String visitProg(ExprParser.ProgContext ctx){
-         for (int i=0;i<ctx.expr().size();i++){
-             System.out.println(ctx.expr().get(i).toString());
-             visit(ctx.expr().get(i));
-         }
-return "";
+    public String visitProg(ExprParser.ProgContext ctx) {
+        for (int i = 0; i < ctx.expr().size(); i++) {
+            System.out.println(ctx.expr().get(i).toString());
+            visit(ctx.expr().get(i));
+        }
+        return "";
     }
+
     @Override
-    public  String visitModel(ExprParser.ModelContext ctx){
+    public String visitModel(ExprParser.ModelContext ctx) {
         return ctx.ALLWORD().toString();
     }
 
-    public  String getResult(){
-         return  aa.toString();
-    }
-    public static void main(String[] args) {
-        String test ="1=TR";
-        CharStream cs = CharStreams.fromString(test);
-        ExprLexer lexer = new ExprLexer(cs);
-        CommonTokenStream tokens = new CommonTokenStream(lexer);
-        ExprParser parser = new ExprParser(tokens);
-        ExprParser.KeywordContext context = parser.keyword();
-        EvalVisitor visitor = new EvalVisitor();
-        visitor.visit(context);
-      System.out.println(visitor.getResult());
-
+    public String getResult() {
+        return aa.toString();
     }
 }

+ 6 - 0
src/main/java/cn/cslg/pas/mapper/ImportTaskMapper.java

@@ -1,10 +1,14 @@
 package cn.cslg.pas.mapper;
 
 
+import cn.cslg.pas.common.vo.business.ImportTaskVO;
 import cn.cslg.pas.domain.business.ImportTask;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
+
 /**
  * 导入任务表
  *
@@ -13,4 +17,6 @@ import org.springframework.stereotype.Repository;
  */
 @Repository
 public interface ImportTaskMapper extends BaseMapper<ImportTask> {
+    public List<ImportTaskVO> getImportTask(String sql1, String sql2, String sql3);
+    public Long getImportTaskCount(String sql);
 }

+ 20 - 2
src/main/java/cn/cslg/pas/service/business/CommonService.java

@@ -2,8 +2,12 @@ package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.model.common.QueryCondition;
 import cn.cslg.pas.common.model.cronModel.GroupConfig;
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+import cn.cslg.pas.common.utils.FileUtils;
+import cn.cslg.pas.common.utils.JsonUtils;
 import cn.cslg.pas.common.vo.ConditionVO;
 import cn.cslg.pas.common.vo.EntityVO;
+import cn.cslg.pas.common.vo.UploadSettingVO;
 import cn.cslg.pas.domain.business.Event;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -12,8 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.io.*;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 公用服务类
@@ -83,4 +87,18 @@ public class CommonService {
         List<Integer> ids = eventService.listObjs(queryWrapper, f);
         return ids;
     }
+
+    public List<Map<String, Object>>  getExcelConfig() {
+        List<Map<String,Object>> maps =new ArrayList<>();
+        //创建map用于装载:1.自定义字段(标引/非树类型字段、分类/树类型字段)  2.文件夹  3.数据来源,和返回结果
+        String json = CommonService.readJsonFile("uploadSetting.json");
+        List<UploadSettingVO> uploadSettingVOs = JsonUtils.jsonToList(json, UploadSettingVO.class);
+        uploadSettingVOs.forEach(item->{
+            Map<String, Object> map =new HashMap<>();
+            map.put("name",item.getName());
+            map.put("id",item.getSourceId());
+            maps.add(map);
+        });
+        return maps;
+}
 }

+ 275 - 4
src/main/java/cn/cslg/pas/service/business/ImportTaskService.java

@@ -1,17 +1,45 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.ImportTaskDTO;
+import cn.cslg.pas.common.dto.PatentStarListDTO;
+import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.common.model.request.GroupRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
-import cn.cslg.pas.domain.business.ImportTask;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.utils.ReadExcelUtils;
+import cn.cslg.pas.common.utils.ThrowException;
+import cn.cslg.pas.common.vo.business.ImportTaskVO;
+import cn.cslg.pas.domain.business.*;
+import cn.cslg.pas.exception.UnLoginException;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.mapper.ImportTaskMapper;
+import cn.cslg.pas.service.common.FileManagerService;
+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 com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.compress.utils.IOUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.IOException;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 导入任务表业务层
@@ -22,11 +50,50 @@ import java.util.List;
 @Service
 @RequiredArgsConstructor
 public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask> implements Business {
+    @Autowired
+    private FormatQueryService formatQueryService;
 
+    @Autowired
+    private ImportTaskMapper importTaskMapper;
+
+    @Autowired
+    private FileManagerService fileManagerService;
+    @Autowired
+    private PatentStarApiService patentStarApiService;
+    @Autowired
+    private PermissionService permissionService;
+    @Autowired
+    @Lazy
+    private SchedulingTaskService schedulingTaskService;
+
+    @Autowired
+    private CacheUtils cacheUtils;
+    @Autowired
+    private LoginUtils loginUtils;
+    @Autowired
+    private SystemDictService systemDictService;
+    @Autowired
+    private ProductService productService;
+    @Autowired
+    private ProjectService projectService;
 
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
-        return null;
+        List<String> sqls = formatQueryService.reSqls(queryRequest, "importTask");
+        //根据sql查询事件信息
+        List<ImportTaskVO> importTaskVOS = importTaskMapper.getImportTask(sqls.get(0), sqls.get(1), sqls.get(2));
+
+        //查询总数
+        Long total = importTaskMapper.getImportTaskCount(sqls.get(0));
+
+        //装载事件信息
+        this.loadImportTask(importTaskVOS);
+        Records records = new Records();
+        records.setCurrent(queryRequest.getCurrent());
+        records.setSize(queryRequest.getSize());
+        records.setData(importTaskVOS);
+        records.setTotal(total);
+        return records;
     }
 
     @Override
@@ -50,12 +117,216 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Object addMessage(Object object) {
-        return null;
+        if (object == null) {
+            throw new XiaoShiException("参数不能为空");
+        }
+        //TODO 校验参数
+        ImportTaskDTO importTaskDTO = (ImportTaskDTO) object;
+
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        ImportTaskCondition importTaskCondition = new ImportTaskCondition();
+        if (importTaskDTO.getImportToType().equals(0)) {
+            importTaskCondition.setProjectType(0);
+            importTaskCondition.setProjectId(importTaskDTO.getImportToId());
+        } else if (importTaskDTO.getImportToType().equals(1)) {
+            importTaskCondition.setProjectType(1);
+            importTaskCondition.setProjectId(importTaskDTO.getImportToId());
+        } else if (importTaskDTO.getImportToType().equals(2)) {
+            importTaskCondition.setProductId(importTaskDTO.getImportToId());
+        }
+
+        importTaskCondition.setImportContent(importTaskDTO.getImportContent());
+        importTaskCondition.setCrons(importTaskDTO.getCrons());
+        importTaskCondition.setIfUpdate(importTaskDTO.getIfUpdate());
+        importTaskCondition.setSearchCondition(importTaskDTO.getSearchCondition());
+        importTaskCondition.setType(importTaskDTO.getType());
+        importTaskCondition.setFileGuid(importTaskDTO.getFileGuid());
+        importTaskCondition.setSourceId(importTaskDTO.getSourceId());
+        importTaskCondition.setDbType(importTaskDTO.getDbType());
+        importTaskCondition.setOrderBy(importTaskDTO.getOrderBy());
+        importTaskCondition.setOrderByType(importTaskDTO.getOrderByType());
+        importTaskCondition.setCreateId(personnelVO.getId());
+        importTaskCondition.insert();
+
+        //装载任务
+        ImportTask importTask = new ImportTask();
+        importTask.setImportTaskConditionId(importTaskCondition.getId());
+        importTask.setType(importTaskDTO.getType());
+        importTask.setSearchCondition(importTaskDTO.getSearchCondition());
+        importTask.setCreateId(personnelVO.getId());
+        if (importTaskCondition.getType().equals(1)) {
+            try {
+                String res = fileManagerService.getSystemFileFromFMS(Arrays.asList(importTaskCondition.getFileGuid()));
+                List<SystemFile> systemFiles = JSONArray.parseArray(res, SystemFile.class);
+                SystemFile systemFile = systemFiles.get(0);
+                String suffix = systemFile.getFileName().substring(systemFile.getFileName().lastIndexOf("."));
+                //调用文件系统取出文件接口,获得文件流
+                byte[] bytes = fileManagerService.downloadSystemFileFromFMS(importTaskCondition.getFileGuid());
+                //创建临时文件tempFile,并将文件读取到tempFile
+                File tempFile = File.createTempFile(systemFile.getFileName() + "temp", suffix);
+                try (
+                        InputStream inputStream = new ByteArrayInputStream(bytes);
+                        FileOutputStream outputStream = new FileOutputStream(tempFile)
+                ) {
+                    IOUtils.copy(inputStream, outputStream); // 将输入流复制到临时文件
+                }
+                Integer totalNum = ReadExcelUtils.textExcel(tempFile, importTaskCondition.getSourceId().toString());
+                importTask.setAllNum(totalNum);
+                //删除临时文件tempFile
+                new File(tempFile.getPath()).delete();
+            } catch (Exception e) {
+                throw new XiaoShiException("文件错误");
+            }
+        }
+        if (importTaskCondition.getType().equals(2)) {
+            try {
+                PatentStarListDTO patentStarListDto = new PatentStarListDTO()
+                        .setCurrentQuery(importTaskCondition.getSearchCondition())
+                        .setOrderBy(importTaskCondition.getOrderBy())
+                        .setOrderByType(importTaskCondition.getOrderByType())
+                        .setPageNum(0)
+                        .setRowCount(50)
+                        .setDBType(importTaskCondition.getDbType());
+                //调用一般接口返回一批专利著录相关数据
+                Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
+                if (resultMap == null || (Integer) resultMap.get("total") == 0) {
+                    ThrowException.throwXiaoShiException("未检索到相关专利");
+                } else {
+                    importTask.setAllNum((Integer) resultMap.get("total"));
+                }
+            } catch (Exception e) {
+                throw new XiaoShiException("文件错误");
+            }
+        }
+        importTask.setProgress(0.0);
+        importTask.insert();
+
+        schedulingTaskService.startTask();
+        return importTask.getId();
+
     }
 
     @Override
     public Object updateMessage(Object object) {
         return null;
     }
+
+
+    private void loadImportTask(List<ImportTaskVO> importTaskVOS) throws IOException {
+        List<String> createIds = new ArrayList<>();
+        List<Integer> projectIds = new ArrayList<>();
+        List<Integer> productIds = new ArrayList<>();
+        importTaskVOS.forEach(item -> {
+            if (item.getCreateId() != null) {
+                createIds.add(item.getCreateId());
+            }
+            if (item.getProductId() != null) {
+                productIds.add(item.getProductId());
+            }
+            if (item.getProjectId() != null) {
+                projectIds.add(item.getProjectId());
+            }
+        });
+        List<Personnel> personnels = new ArrayList<>();
+        List<Product> products = new ArrayList<>();
+        List<Project> projects = new ArrayList<>();
+        //查询创建人名称
+        if (createIds.size() != 0) {
+            String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+        }
+
+        //查询专题库或报告
+        if (projects.size() != 0) {
+            LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(Project::getId, projectIds);
+            projects = projectService.list(queryWrapper);
+        }
+
+        //查询专题库或报告
+        if (products.size() != 0) {
+            LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(Product::getId, productIds);
+            products = productService.list(queryWrapper);
+        }
+
+
+        LambdaQueryWrapper<SystemDict> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(SystemDict::getGroupType, "IMPORT_TASK");
+        List<SystemDict> systemDictList = systemDictService.list(lambdaQueryWrapper);
+        for (ImportTaskVO importTaskVO : importTaskVOS) {
+
+            //装载创建人
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(importTaskVO.getCreateId())).findFirst().orElse(null);
+            if (personnel != null) {
+                importTaskVO.setCreateName(personnel.getPersonnelName());
+            }
+
+            //装载名称
+            String type = "";
+            String toName = "";
+            String to = "";
+            String taskName = "";
+            if (importTaskVO.getType().equals(2)) {
+//                    TaskCondition taskCondition = taskConditionService.getById(task.getTaskConditionId());
+//                    String conditions = taskCondition.getConditions();
+//                    String taskNameSuffix = conditions.substring(conditions.indexOf("AN=(") + 4, conditions.indexOf(")")).replace(" OR ", "|");
+//                    type = "专利号" + taskNameSuffix;
+                type = "【专利号】";
+            } else if (importTaskVO.getType().equals(3) || importTaskVO.getType().equals(4)) {
+                type = "【检索式】";
+            } else if (importTaskVO.getType().equals(1)) {
+                type = "【Excel】";
+            }
+            if (importTaskVO.getProjectId() != null && importTaskVO.getProjectType().equals(0)) {
+                to = "专题库";
+                Project project = projects.stream().filter(item -> item.getId().equals(importTaskVO.getProjectId())).findFirst().orElse(null);
+                if (project != null) {
+                    toName = project.getName();
+                }
+            } else if (importTaskVO.getProjectId() != null && importTaskVO.getProjectType().equals(1)) {
+                to = "报告";
+                Project project = projects.stream().filter(item -> item.getId().equals(importTaskVO.getProjectId())).findFirst().orElse(null);
+                if (project != null) {
+                    toName = project.getName();
+                }
+            } else if (importTaskVO.getProductId() != null) {
+                to = "产品";
+                Product product = products.stream().filter(item -> item.getId().equals(importTaskVO.getProductId())).findFirst().orElse(null);
+                if (product != null) {
+                    toName = product.getName();
+                }
+            }
+            //导入任务
+            taskName = type + "导入到" + to + "【" + toName + "】 - " + personnel.getPersonnelName();
+
+            importTaskVO.setTaskName(taskName);
+
+
+            //装载状态
+            SystemDict systemDict1 = systemDictList.stream()
+                    .filter(item -> item.getType().equals("IMPORT_TASK_TYPE") && item.getType()
+                            .equals(importTaskVO.getType().toString())).findFirst().orElse(null);
+
+            SystemDict systemDict2 = systemDictList.stream()
+                    .filter(item -> item.getType().equals("IMPORT_TASk_STATE") && item.getType()
+                            .equals(importTaskVO.getState().toString())).findFirst().orElse(null);
+            if(systemDict1!=null){
+                importTaskVO.setTypeStr(systemDict1.getLabel());
+            }
+            if(systemDict2!=null){
+                importTaskVO.setStateStr(systemDict2.getLabel());
+            }
+        }
+
+
+    }
 }

+ 11 - 6
src/main/java/cn/cslg/pas/service/business/PatentProjectService.java

@@ -10,6 +10,7 @@ import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.DepartmentVO;
 
+import cn.cslg.pas.common.vo.ProductOrCategoryVO;
 import cn.cslg.pas.common.vo.business.PatentProjectVO;
 import cn.cslg.pas.common.vo.business.ReportCountVO;
 import cn.cslg.pas.domain.business.*;
@@ -837,7 +838,6 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
             patentProjectVO.setMatterNames(matterTmpNames);
             patentProjectVO.setEventNames(eventTmpNames);
 
-
             //装载产品,产品分类,技术分类
             if (assoProjectTreeNodes != null) {
                 AssoProjectTreeNode assoProjectTreeNode = assoProjectTreeNodes.stream().filter(item -> item.getProjectId().equals(patentProjectVO.getId()) && (item.getTreeType().equals(2) || item.getTreeType().equals(3))).
@@ -846,19 +846,24 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
                     if (assoProjectTreeNode.getTreeType().equals(2)) {
                         Product product = products.stream().filter(item -> item.getId().equals(assoProjectTreeNode.getFieldId())).findFirst().orElse(null);
                         if (product != null) {
-                            patentProjectVO.setProductOrCategoryName(product.getName());
+                            ProductOrCategoryVO productOrCategoryVO =new ProductOrCategoryVO();
+                             productOrCategoryVO.setName(product.getName());
+                            productOrCategoryVO.setId(product.getId());
+                            productOrCategoryVO.setType(2);
+                            patentProjectVO.setProductOrCategory(productOrCategoryVO);
                         }
                     } else if (assoProjectTreeNode.getTreeType().equals(3)) {
                         ProductCategory productCategory = productCategories.stream().filter(item -> item.getId().equals(assoProjectTreeNode.getFieldId())).findFirst().orElse(null);
                         if (productCategory != null) {
-                            patentProjectVO.setProductOrCategoryName(productCategory.getName());
+                            ProductOrCategoryVO productOrCategoryVO =new ProductOrCategoryVO();
+                            productOrCategoryVO.setName(productCategory.getName());
+                            productOrCategoryVO.setId(productCategory.getId());
+                            productOrCategoryVO.setType(3);
+                            patentProjectVO.setProductOrCategory(productOrCategoryVO);
                         }
                     }
-
-                    //TODO 装载技术分类名称
                 }
             }
-
         }
 
     }

+ 12 - 12
src/main/java/cn/cslg/pas/service/common/MessageService.java

@@ -25,29 +25,29 @@ public class MessageService {
     /**
      * 通过WebSocket 在每一次循环结束后 向前端发送完成进度
      *
-     * @param total      专利总数量
-     * @param i          当前专利下标
-     * @param percentage 进度(需要计算)
+
      */
-    public void sendWebsocketMessage(ImportTaskAMVO importTaskAMVO, Integer total, Integer i, Long percentage) {
+    public void sendWebsocketMessage(ImportTaskAMVO importTaskAMVO) {
+        long percentage = (long) Math.floor((importTaskAMVO.getDoneNum() + 0D) / importTaskAMVO.getAllNum() * 100D);
         //通过WebSocket 在每一次循环结束后 向前端发送完成进度
-        //percentage:total == 0 ? 0 : Math.round((total.equals(i) ? (i * 1D) : (i + 1D)) / total * 100D)
         //当任务状态为完成时,flag为true
-        boolean flag = importTaskAMVO.getStatus().equals(2);
+        boolean flag = importTaskAMVO.getState().equals(2);
         WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
                 .setTaskId(importTaskAMVO.getId())
-                .setTaskStatus(importTaskAMVO.getStatus())
-//                .setProjectId(importTaskAMVO.getProjectId())
-//                .setReportId(importTaskAMVO.getReportId())
-//                .setProductId(importTaskAMVO.getProductId())
+                .setTaskStatus(importTaskAMVO.getState())
                 .setComplete(flag)
-                .setIndex(i)
+                .setIndex(importTaskAMVO.getDoneNum())
                 .setTaskType(importTaskAMVO.getType())
                 .setPercentage(percentage)
                 .setFileName(importTaskAMVO.getFileGuid())
                 .setOldName("")
                 .setUrl("")
-                .setTotal(total), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), 1 + "");
+                .setTotal(importTaskAMVO.getAllNum()), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), importTaskAMVO.getCreateId());
     }
+    public void sendAllDoneMessage(ImportTaskAMVO importTaskAMVO) {
 
+        //通过WebSocket 在每一次循环结束后 向前端发送完成进度
+        //当任务状态为完成时,flag为true
+        WebSocketServer.sendInfo("任务已完成", importTaskAMVO.getCreateId());
+    }
 }

+ 301 - 28
src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java

@@ -37,14 +37,15 @@ public class GetCataloguingFromWebThread extends Thread {
     private ApplicationContext applicationContext;
     private ImportFromWebToEsService importFromWebToEsService;
     private PatentStarApiService patentStarApiService;
-    private List<UploadPatentWebDTO> uploadPatentWebDTOs;
+    private List<UploadPatentWebDTO> uploadPatentWebDTOs = new ArrayList<>();
     private final Lock taskLock = new ReentrantLock();
     private final Condition taskCondition = taskLock.newCondition();
+    private Boolean ifProductAll = false;
 
     @Override
     public void run() {
         try {
-            while (uploadPatentWebDTOs.size() > 0 || importTaskAMVO.getProgressVO().equals(1)) {
+            while ((!ifProductAll || uploadPatentWebDTOs.size() > 0) && importTaskAMVO.getProgressVO().equals(1)) {
 
                 //判断任务队列是否有任务,若没有则线程等待唤醒
                 if (uploadPatentWebDTOs.size() == 0) {
@@ -53,14 +54,21 @@ public class GetCataloguingFromWebThread extends Thread {
                 }
                 //根据专利申请号查询著录并装载信息
                 UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOs.remove(0);
-
-                String chinaPatentZhuLuStr = patentStarApiService.getCnBibApi(uploadPatentWebDTO.getPatent().getAppNo());
-                if (chinaPatentZhuLuStr != null && !chinaPatentZhuLuStr.trim().equals("") && !chinaPatentZhuLuStr.equals("{}") && !chinaPatentZhuLuStr.contains("请求不合法")) {
-                    List<ChinaPatentZhuLu> chinaPatentZhuLus = JSON.parseArray(chinaPatentZhuLuStr, ChinaPatentZhuLu.class);
-                    ChinaPatentZhuLu chinaPatentZhuLu = chinaPatentZhuLus.get(0);
-                    this.loadPatent(uploadPatentWebDTO, chinaPatentZhuLu);
-                    importFromWebToEsService.savePatentToEs(uploadPatentWebDTO);
+                String patentZhuLuStr = "";
+                if (importTaskAMVO.getDbType().equals("CN")) {
+                    patentZhuLuStr = patentStarApiService.getCnBibApi(uploadPatentWebDTO.getPatent().getAppNo());
+                } else {
+                    patentZhuLuStr = patentStarApiService.getENBibApi(uploadPatentWebDTO.getPatent().getAppNo());
+                }
+                if (patentZhuLuStr != null && !patentZhuLuStr.trim().equals("") && !patentZhuLuStr.equals("{}") && !patentZhuLuStr.contains("请求不合法")) {
+                    this.loadPatent(uploadPatentWebDTO);
+                    if (importTaskAMVO.getDbType().equals("CN")) {
+                        this.loadCNPatent(patentZhuLuStr, uploadPatentWebDTO.getPatent());
+                    } else {
+                        this.loadWorldPatent(patentZhuLuStr, uploadPatentWebDTO.getPatent());
+                    }
                 }
+                importFromWebToEsService.savePatentToEs(uploadPatentWebDTO);
             }
 
         } catch (Exception e) {
@@ -83,9 +91,15 @@ public class GetCataloguingFromWebThread extends Thread {
         }
     }
 
+    public void setIfProductAll(Boolean ifProductAll) {
+
+        this.ifProductAll = ifProductAll;
+
+    }
 
     //装载专利信息
-    private void loadPatent(UploadPatentWebDTO uploadPatentWebDTO, ChinaPatentZhuLu chinaPatentZhuLu) {
+    private void loadPatent(UploadPatentWebDTO uploadPatentWebDTO) {
+        String country = "";
         Patent patent = uploadPatentWebDTO.getPatent();
         StarPatentVO starPatentVO = uploadPatentWebDTO.getStarPatentVO();
         //装载专利类型
@@ -103,8 +117,8 @@ public class GetCataloguingFromWebThread extends Thread {
         //装载申请人地址
         if (starPatentVO.getApplicationAddress() != null && !starPatentVO.getApplicationAddress().equals("")) {
             String applicationAddress = starPatentVO.getApplicationAddress();
-        List<String> addresses =    AddressSplitter.splitAddress(applicationAddress);
-            PersonAddress personAddress =new PersonAddress();
+            List<String> addresses = AddressSplitter.splitAddress(applicationAddress);
+            PersonAddress personAddress = new PersonAddress();
             personAddress.setProvince(addresses.get(0));
             personAddress.setCity(addresses.get(1));
             personAddress.setDistrict(addresses.get(2));
@@ -113,16 +127,16 @@ public class GetCataloguingFromWebThread extends Thread {
 
         //装载IPC分类号
         if (starPatentVO.getIpcListStr() != null && !starPatentVO.getIpcListStr().equals("")) {
-            List<PatentClassify> patentClassifies =new ArrayList<>();
-            List<String> ipcArr =Arrays.asList(starPatentVO.getIpcListStr().split(";"));
-            for(int i=0;i<ipcArr.size();i++){
+            List<PatentClassify> patentClassifies = new ArrayList<>();
+            List<String> ipcArr = Arrays.asList(starPatentVO.getIpcListStr().split(";"));
+            for (int i = 0; i < ipcArr.size(); i++) {
                 PatentClassify patentClassify = PatentClassifySplitter.split(ipcArr.get(i));
                 patentClassifies.add(patentClassify);
-               if(i==0){
-                   patent.setMipc(patentClassify);
-               }
+                if (i == 0) {
+                    patent.setMipc(patentClassify);
+                }
             }
-          patent.setIpc(patentClassifies);
+            patent.setIpc(patentClassifies);
         }
 
         //装载公告日
@@ -133,7 +147,7 @@ public class GetCataloguingFromWebThread extends Thread {
 
         //装载摘要
         if (starPatentVO.getAbstractStr() != null && !starPatentVO.getAbstractStr().equals("")) {
-            Text text =new Text();
+            Text text = new Text();
             text.setLanguage(patent.getAppCountry());
             text.setIfOrigin(true);
             text.setTextContent(starPatentVO.getAbstractStr());
@@ -149,26 +163,285 @@ public class GetCataloguingFromWebThread extends Thread {
         //装载发明人
         if (starPatentVO.getInventorStr() != null && !starPatentVO.getInventorStr().equals("")) {
             List<String> patentInventorNames = Arrays.asList(starPatentVO.getInventorStr().split(";"));
-           List<PatentPerson> patentPeople =new ArrayList<>();
-            for (int i =0;i<patentInventorNames.size() ; i++) {
-                PatentPerson patentPerson =new PatentPerson();
+            List<PatentPerson> patentPeople = new ArrayList<>();
+            for (int i = 0; i < patentInventorNames.size(); i++) {
+                PatentPerson patentPerson = new PatentPerson();
                 patentPerson.setOrder(0);
                 patentPerson.setType("1");
                 patentPerson.setName(patentInventorNames.get(i));
                 patentPeople.add(patentPerson);
             }
+            patent.setInventor(patentPeople);
+        }
+
+        //装载申请号
+        if (starPatentVO.getApplicationNo() != null && !starPatentVO.getApplicationNo().equals("")) {
+            patent.setAppNo(starPatentVO.getApplicationNo());
+            country = starPatentVO.getApplicationNo().substring(0, 2);
+
+        }
+
+        //装载公开号
+        if (starPatentVO.getPublicNo() != null && !starPatentVO.getPublicNo().equals("")) {
+            patent.setPublicNo(starPatentVO.getPublicNo());
+        }
+
+        if (starPatentVO.getPublicAccreditNo() != null && !starPatentVO.getPublicAccreditNo().equals("")) {
+            patent.setGrantNo(starPatentVO.getPublicAccreditNo());
+        }
+
+        //装载申请人
+        if (starPatentVO.getApplicantStr() != null && !starPatentVO.getApplicantStr().equals("")) {
+            List<String> names = Arrays.asList(starPatentVO.getApplicantStr().split(";"));
+            List<PatentPerson> patentPeople = new ArrayList<>();
+            for (int i = 0; i < names.size(); i++) {
+                PatentPerson patentPerson = new PatentPerson();
+                patentPerson.setOrder(0);
+                patentPerson.setType("1");
+                patentPerson.setName(names.get(i));
+                patentPeople.add(patentPerson);
+            }
             patent.setApplicant(patentPeople);
         }
+
+        //装载代理人
+        if (starPatentVO.getAgentStr() != null && !starPatentVO.getAgentStr().equals("")) {
+            List<String> patentAgents = Arrays.asList(starPatentVO.getAgentStr().split(";"));
+            if (patentAgents != null && patentAgents.size() != 0) {
+                patent.setAgent(patentAgents);
+            }
+        }
+
+        //装载公开日
+        if (starPatentVO.getPublicDate() != null && !starPatentVO.getPublicDate().equals("")) {
+//            int timeStamp = stringDateToTimeStamp(starPatent.getPublicDate());
+//            uploadParamsVO.getPatent().setPublicDate(timeStamp);
+        }
+
+        //装载标题
+        if (starPatentVO.getName() != null && !starPatentVO.getName().equals("")) {
+            Text text = new Text();
+            text.setLanguage(country);
+            text.setIfOrigin(true);
+            text.setTextContent(starPatentVO.getName());
+            patent.setTitle(Arrays.asList(text));
+        }
+
+        //装载权利人
+        if (starPatentVO.getCurrentApplicantStr() != null && !starPatentVO.getCurrentApplicantStr().equals("")) {
+            List<String> names = Arrays.asList(starPatentVO.getCurrentApplicantStr().split(";"));
+            List<PatentPerson> patentPeople = new ArrayList<>();
+            for (int i = 0; i < names.size(); i++) {
+                PatentPerson patentPerson = new PatentPerson();
+                patentPerson.setOrder(0);
+                patentPerson.setType("1");
+                patentPerson.setName(names.get(i));
+                patentPeople.add(patentPerson);
+            }
+            patent.setRightHolder(patentPeople);
+        }
+
+        //装载法律状态(os_patent表status字段值)
+        Integer status = starPatentVO.getLG();
+        if (status != null) {
+            //有效(有权)
+            if (status == 1) {
+                patent.setSimpleStatus("3");
+                //失效(无权)
+            } else if (status == 2) {
+                patent.setSimpleStatus("2");
+                //审中(审中)
+            } else if (status == 3) {
+                patent.setSimpleStatus("1");
+            }
+        }
+
+        //装载优先权
+        if (starPatentVO.getPriorityNo() != null && !starPatentVO.getPriorityNo().equals("")) {
+            Priorities priorities = new Priorities();
+            priorities.setPriorityNo(starPatentVO.getPriorityNo());
+            String pCountry = starPatentVO.getApplicationNo().substring(0, 2);
+            priorities.setPriorityCountry(pCountry);
+            //装载优先权日
+            if (starPatentVO.getPriorityDate() != null && !starPatentVO.getPriorityDate().equals("")) {
+
+            }
+            patent.setPriorities(Arrays.asList(priorities));
+        }
+
+        //装载受理局
+        if (starPatentVO.getBureau() != null && !starPatentVO.getBureau().equals("")) {
+            patent.setAppCountry(starPatentVO.getBureau());
+        }
     }
 
     //装载中国专利
- private void loadCNPatent(){
+    private void loadCNPatent(String chinaPatentZhuLuStr, Patent patent) {
 
- }
+        if (chinaPatentZhuLuStr != null && !chinaPatentZhuLuStr.trim().equals("") && !chinaPatentZhuLuStr.equals("{}") && !chinaPatentZhuLuStr.contains("请求不合法")) {
+            List<ChinaPatentZhuLu> chinaPatentZhuLus = JSON.parseArray(chinaPatentZhuLuStr, ChinaPatentZhuLu.class);
+            ChinaPatentZhuLu chinaPatentZhuLu = chinaPatentZhuLus.get(0);
+            //装载申请人地址
+            if (patent.getApplicantAddr() == null) {
+                if (chinaPatentZhuLu.getDZ() != null && !chinaPatentZhuLu.getDZ().equals("")) {
+                    List<String> addresses = AddressSplitter.splitAddress(chinaPatentZhuLu.getDZ());
+                    PersonAddress personAddress = new PersonAddress();
+                    personAddress.setProvince(addresses.get(0));
+                    personAddress.setCity(addresses.get(1));
+                    personAddress.setDistrict(addresses.get(2));
+                    patent.setApplicantAddr(personAddress);
+                }
+            }
+            //装载代理人
+            if (patent.getAgent() == null || patent.getAgent().size() == 0) {
+                if (chinaPatentZhuLu.getAT() != null && !chinaPatentZhuLu.getAT().equals("")) {
+                    List<String> patentAgents = Arrays.asList(chinaPatentZhuLu.getAT().split(";"));
+                    if (patentAgents != null && patentAgents.size() != 0) {
+                        patent.setAgent(patentAgents);
+                    }
+                }
+            }
 
- // 装载世界专利
- private void loadWorldPatent(){
+            //装载发明人
+            if (patent.getInventor() == null || patent.getInventor().size() == 0) {
 
+                if (chinaPatentZhuLu.getIV() != null && !chinaPatentZhuLu.getIV().equals("")) {
+                    List<String> patentInventorNames = Arrays.asList(chinaPatentZhuLu.getIV().split(";"));
+                    List<PatentPerson> patentPeople = new ArrayList<>();
+                    for (int i = 0; i < patentInventorNames.size(); i++) {
+                        PatentPerson patentPerson = new PatentPerson();
+                        patentPerson.setOrder(0);
+                        patentPerson.setType("1");
+                        patentPerson.setName(patentInventorNames.get(i));
+                        patentPeople.add(patentPerson);
+                    }
+                    patent.setInventor(patentPeople);
+                }
+            }
+            //装载优先权号、优先权国家、优先权日
+            if (patent.getPriorities() == null) {
+                Priorities priorities = new Priorities();
+                priorities.setPriorityNo(chinaPatentZhuLu.getPR());
+                String pCountry = chinaPatentZhuLu.getPR().substring(0, 2);
+                priorities.setPriorityCountry(pCountry);
+                patent.setPriorities(Arrays.asList(priorities));
+            }
+
+        }
+    }
+
+    // 装载世界专利
+    private void loadWorldPatent(String worldPatentZhuLuStr, Patent patent) {
+        String country = "";
+        List<WorldPatentZhuLu> worldPatentZhuLus = JSON.parseArray(worldPatentZhuLuStr, WorldPatentZhuLu.class);
+        WorldPatentZhuLu worldPatentZhuLu = worldPatentZhuLus.get(0);
+
+        //装载公开号
+        if (patent.getPublicNo() == null || patent.getPublicNo().equals("")) {
+            patent.setPublicNo(worldPatentZhuLu.getDocdbPubNo());
+        }
+        //装载申请号
+        if (patent.getAppNo() == null || patent.getAppNo().equals("")) {
+            patent.setAppNo(worldPatentZhuLu.getEpoAppNo());
+        }
+        //装载申请日
+        if (patent.getAppDate() == null) {
+//                int timeStamp = stringDateToTimeStamp(worldPatentZhuLu.getAppDate());
+//                uploadParamsVO.getPatent().setApplicationDate(timeStamp);
+        }
+        //装载公开日
+        if (patent.getPublicDate() == null) {
+//                int timeStamp = stringDateToTimeStamp(worldPatentZhuLu.getPubDate());
+//                uploadParamsVO.getPatent().setPublicDate(timeStamp);
+        }
+        //装载IPC分类号
+        if (patent.getIpc() == null || patent.getIpc().size() == 0) {
+            List<PatentClassify> patentClassifies = new ArrayList<>();
+            List<String> ipcArr = Arrays.asList(worldPatentZhuLu.getIpc().split(";"));
+            for (int i = 0; i < ipcArr.size(); i++) {
+                PatentClassify patentClassify = PatentClassifySplitter.split(ipcArr.get(i));
+                patentClassifies.add(patentClassify);
+                if (i == 0) {
+                    patent.setMipc(patentClassify);
+                }
+            }
+            patent.setIpc(patentClassifies);
+        }
+
+        //装载CPC分类号
+        if (patent.getCpc() == null || patent.getCpc().size() == 0) {
+            if (worldPatentZhuLu.getCpc() != null && !worldPatentZhuLu.getCpc().equals("")) {
+                List<PatentClassify> patentClassifies = new ArrayList<>();
+                List<String> cpcArr = Arrays.asList(worldPatentZhuLu.getCpc().split(";"));
+                for (int i = 0; i < cpcArr.size(); i++) {
+                    PatentClassify patentClassify = PatentClassifySplitter.split(cpcArr.get(i));
+                    patentClassifies.add(patentClassify);
+                    if (i == 0) {
+                        patent.setMipc(patentClassify);
+                    }
+                }
+                patent.setCpc(patentClassifies);
+            }
+        }
 
- }
+        //装载申请人
+        if (patent.getApplicant() == null || patent.getApplicant().size() == 0) {
+            List<String> names = Arrays.asList(worldPatentZhuLu.getPa().split(";"));
+            List<PatentPerson> patentPeople = new ArrayList<>();
+            for (int i = 0; i < names.size(); i++) {
+                PatentPerson patentPerson = new PatentPerson();
+                patentPerson.setOrder(0);
+                patentPerson.setType("1");
+                patentPerson.setName(names.get(i));
+                patentPeople.add(patentPerson);
+            }
+            patent.setApplicant(patentPeople);
+
+        }
+
+
+        //装载发明人
+        if (patent.getInventor() == null || patent.getInventor().size() == 0) {
+            if (worldPatentZhuLu.getIv() != null && !worldPatentZhuLu.getIv().equals("")) {
+                List<String> patentInventorNames = Arrays.asList(worldPatentZhuLu.getIv().split(";"));
+                List<PatentPerson> patentPeople = new ArrayList<>();
+                for (int i = 0; i < patentInventorNames.size(); i++) {
+                    PatentPerson patentPerson = new PatentPerson();
+                    patentPerson.setOrder(0);
+                    patentPerson.setType("1");
+                    patentPerson.setName(patentInventorNames.get(i));
+                    patentPeople.add(patentPerson);
+                }
+                patent.setInventor(patentPeople);
+            }
+        }
+
+        //装载优先权号、优先权国家、优先权日
+        if (patent.getPriorities() == null) {
+            Priorities priorities = new Priorities();
+            priorities.setPriorityNo(worldPatentZhuLu.getPr());
+            String pCountry = worldPatentZhuLu.getPr().substring(0, 2);
+            priorities.setPriorityCountry(pCountry);
+            patent.setPriorities(Arrays.asList(priorities));
+        }
+
+        //装载标题
+        if (patent.getTitle() == null || patent.getTitle().size() != 0) {
+            Text text = new Text();
+            text.setLanguage(country);
+            text.setIfOrigin(true);
+            text.setTextContent(worldPatentZhuLu.getTitle());
+            patent.setTitle(Arrays.asList(text));
+        }
+        //装载摘要
+        if (patent.getAbstractStr() == null || patent.getAbstractStr().equals("")) {
+            Text text = new Text();
+            text.setLanguage(patent.getAppCountry());
+            text.setIfOrigin(true);
+            text.setTextContent(worldPatentZhuLu.getAbstract());
+            patent.setAbstractStr(Arrays.asList(text));
+        }
+
+
+    }
 }

+ 2 - 6
src/main/java/cn/cslg/pas/service/importPatent/GetPatentFromExcelThread.java

@@ -14,10 +14,8 @@ import cn.cslg.pas.service.common.FileManagerService;
 import com.alibaba.fastjson.JSONArray;
 import org.apache.commons.compress.utils.IOUtils;
 import org.apache.poi.ss.usermodel.Sheet;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Configurable;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 
 import java.io.*;
 import java.util.ArrayList;
@@ -67,6 +65,8 @@ public class GetPatentFromExcelThread extends Thread {
                 }
                 Thread.sleep(10000);
                 PatentData patentData = ReadExcelUtils.readExcelOneRow(tempFile, sheet, i + 1);
+
+
                 //调用装载数据类(根据数据源配置文件对象和专利源数据生成专利数据)
                 UploadParamsVO uploadParamsVO = excuteDataToVOService.fileToPatentVO(patentData, jsonData);
                 this.loadPatent(uploadParamsVO);
@@ -162,8 +162,4 @@ public class GetPatentFromExcelThread extends Thread {
         }
 
 
-
-        //装载权利要求
-
-
 }

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

@@ -0,0 +1,209 @@
+package cn.cslg.pas.service.importPatent;
+
+import cn.cslg.pas.common.core.IgnoreDTDEntityResolver;
+import cn.cslg.pas.common.dto.UploadPatentWebDTO;
+import cn.cslg.pas.common.vo.ImportTaskAMVO;
+import cn.cslg.pas.common.vo.StarPatentVO;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.Text;
+import cn.cslg.pas.service.common.PatentStarApiService;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.XPath;
+import org.dom4j.io.SAXReader;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.context.ApplicationContext;
+
+import java.io.Reader;
+import java.io.StringReader;
+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 GetPatentPDFFromWebThread extends Thread {
+    private ImportTaskAMVO importTaskAMVO;
+    private ApplicationContext applicationContext;
+    private ImportFromWebToEsService importFromWebToEsService;
+    private PatentStarApiService patentStarApiService;
+    private List<UploadPatentWebDTO> uploadPatentWebDTOs;
+    private final Lock taskLock = new ReentrantLock();
+    private final Condition taskCondition = taskLock.newCondition();
+
+    @Override
+    public void run() {
+        try {
+            while (uploadPatentWebDTOs.size() > 0 || importTaskAMVO.getProgressVO().equals(1)) {
+//                String usedPatentNo;
+//                UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOs.remove(0);
+//                StarPatentVO starPatentVO = uploadPatentWebDTO.getStarPatentVO();
+//                if (starPatentVO.getPublicNo() != null && !starPatentVO.getPublicNo().equals("")) {
+//                    usedPatentNo = starPatentVO.getPublicNo();
+//                } else {
+//                    usedPatentNo = starPatentVO.getPatentNo();
+//                }
+//
+//                String pdfUrl = "", pdfUrl1 = "", pdfUrl2 = "";
+//                //先根据公开号判断国家,若没有公开号再根据申请号判断,调用"获得中国专利pdf"接口,获得1个或2个pdf的url地址
+//                if ((starPatentVO.getPublicNo() != null && starPatentVO.getPublicNo().contains("CN")) || (starPatentVO.getPublicNo() == null && starPatentVO.getPatentNo().contains("CN"))) {
+//                    String pdfUrlStr = patentStarApiService.getCnPdfApi(starPatentVO.getRowApplicationNo());
+//
+//                    //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
+//                    if (pdfUrlStr.equals("")) {
+//                        recordQuestionPatent(starPatent.getApplicationNo(), task.getId(), 4);
+//                        return;
+//                    }
+//
+//                    if (pdfUrlStr.contains("|http")) {  //若包含公开和授权两个pdf
+//                        String[] pdfUrlArr = pdfUrlStr.split("\\|http");
+//                        pdfUrl1 = pdfUrlArr[0].substring(pdfUrlArr[0].indexOf("http"), pdfUrlArr[0].indexOf("?"));
+//                        pdfUrlArr[1] = "http" + pdfUrlArr[1];
+//                        pdfUrl2 = pdfUrlArr[1].substring(pdfUrlArr[1].indexOf("http"), pdfUrlArr[1].indexOf("?"));
+//
+//                        UploadFileDTO fileDTO = downLoadPdf(pdfUrl1);
+//                        UploadFileDTO fileDTO2 = downLoadPdf(pdfUrl2);
+//
+//                        if (pdfUrl1.contains("0A_CN_0.pdf")) {
+//                            uploadParamsVO.setPdf1FileDTO(fileDTO);
+//                            uploadParamsVO.setPdf2FileDTO(fileDTO2);
+//                        } else {
+//                            uploadParamsVO.setPdf1FileDTO(fileDTO2);
+//                            uploadParamsVO.setPdf2FileDTO(fileDTO);
+//                        }
+//                    } else {  //若只有一个
+//                        pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("?"));
+//                        UploadFileDTO fileDTO = downLoadPdf(pdfUrl1);
+//                        if (pdfUrl1.contains("0A_CN_0.pdf")) {
+//                            uploadParamsVO.setPdf1FileDTO(fileDTO);
+//                        } else {
+//                            uploadParamsVO.setPdf2FileDTO(fileDTO);
+//                        }
+//                    }
+//
+//                    //根据专利号调用"获得世界专利pdf"接口,获得pdf的url地址
+//                } else {
+//                    pdfUrl = patentStarApiService.getEnPdfApi(usedPatentNo);
+//
+//                    //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
+//                    if (pdfUrl.equals("") || pdfUrl.equals("{}")) {
+//                        recordQuestionPatent(starPatent.getApplicationNo(), task.getId(), 4);
+//                        return;
+//                    }
+//
+//                    UploadFileDTO fileDTO = downLoadPdf(pdfUrl);
+//                    uploadParamsVO.setPdf1FileDTO(fileDTO);
+//                }
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    public GetPatentPDFFromWebThread(TaskThread taskThread, ImportFromWebToEsService importFromWebToEsService) {
+        this.importTaskAMVO = taskThread.getImportTaskAMVO();
+        this.importFromWebToEsService = importFromWebToEsService;
+        this.applicationContext = taskThread.getApplicationContext();
+    }
+
+    public void awakeTask(UploadPatentWebDTO uploadPatentWebDTO) {
+        uploadPatentWebDTOs.add(uploadPatentWebDTO);
+        if (taskLock.tryLock()) {
+            taskCondition.signalAll();
+            taskLock.unlock();
+        }
+    }
+
+
+    //装载权利要求
+    private void loadClaim(UploadPatentWebDTO uploadPatentWebDTO,String cnFullXmlStr) {
+        Patent patent = uploadPatentWebDTO.getPatent();
+        try {
+            if(cnFullXmlStr!=null&&cnFullXmlStr!="") {
+                SAXReader reader = new SAXReader();
+                reader.setEntityResolver(new IgnoreDTDEntityResolver());
+                Reader stringReader = new StringReader(cnFullXmlStr);
+                Document document = reader.read(stringReader);
+                XPath xpath = document.createXPath("//claim-text");
+                List<Element> element = (List<Element>) xpath.selectNodes(document);
+                if (element.size() == 0) {
+                    xpath = document.createXPath("//business:ClaimText");
+                    element = (List<Element>) xpath.selectNodes(document);
+                }
+                List<String> reClaims = new ArrayList<>();
+                element.forEach(item -> {
+                    String claim = item.getText();
+                    reClaims.add(claim);
+                });
+                String reClaim = "";
+                if (reClaims.size() != 0) {
+                    reClaim = cn.cslg.pas.common.utils.StringUtils.join(reClaims, "\r\n");
+                }
+                //装载权利要求原文
+                Text text = new Text();
+                text.setLanguage(patent.getAppCountry());
+                text.setTextContent(reClaim);
+                text.setIfOrigin(true);
+                patent.setClaim(Arrays.asList(text));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+    }
+
+     //装载说明书文档
+    private void loadFullText(UploadPatentWebDTO uploadPatentWebDTO,String cnFullXmlStr) {
+        Patent patent = uploadPatentWebDTO.getPatent();
+        try {
+            //若没有取到全文文本,即取不到说明书文本,则将当前申请号或专利号和备注信息记录到问题记录表
+            if (cnFullXmlStr.equals("")) {
+                return ;
+            }
+
+            SAXReader reader = new SAXReader();
+            reader.setEntityResolver(new IgnoreDTDEntityResolver());
+            Reader stringReader = new StringReader(cnFullXmlStr);
+            Document document = reader.read(stringReader);
+            XPath xpath = document.createXPath("//description//p");
+            List<Element> elements = (List<Element>) xpath.selectNodes(document);
+            if (elements.size() == 0) {
+                xpath = document.createXPath("//business:Description//base:Paragraphs");
+                elements = (List<Element>) xpath.selectNodes(document);
+            }
+            List<String> fullTexts = new ArrayList<>();
+            Integer count=1;
+            for (Element item:elements){
+                String fullText = item.getText().replaceAll("<br/>", "");
+                if (!fullText.trim().equals("技术领域")
+                        && !fullText.trim().equals("发明内容")
+                        && !fullText.trim().equals("附图说明")
+                        && !fullText.trim().equals("具体实施方式")
+                        &&!fullText.trim().equals("背景技术"))
+                {String formattedNum = String.format("%04d", count);
+                    fullText ="["+formattedNum+"]"+fullText;
+                    count++;
+                }
+                fullTexts.add(fullText);
+            }
+            String fullText = "";
+            if (fullTexts.size() != 0) {
+                fullText = cn.cslg.pas.common.utils.StringUtils.join(fullTexts, "\r\n");
+            }
+            Text text =new Text();
+            text.setIfOrigin(true);
+            text.setTextContent(fullText);
+            text.setLanguage(patent.getAppCountry());
+            patent.setPublicFullText(Arrays.asList(text));
+    } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+    }
+}

+ 81 - 0
src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromExcelThread.java

@@ -0,0 +1,81 @@
+package cn.cslg.pas.service.importPatent;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.ReadExcelUtils;
+import cn.cslg.pas.common.vo.ImportTaskAMVO;
+import cn.cslg.pas.common.vo.PatentData;
+import cn.cslg.pas.common.vo.UploadParamsVO;
+import cn.cslg.pas.common.vo.UploadSettingVO;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.Text;
+import cn.cslg.pas.service.common.ExcuteDataToVOService;
+import cn.cslg.pas.service.common.ExcuteUploadSettingService;
+import cn.cslg.pas.service.common.FileManagerService;
+import cn.hutool.core.util.IdUtil;
+import com.alibaba.fastjson.JSONArray;
+import org.apache.commons.compress.utils.IOUtils;
+import org.apache.poi.ss.usermodel.PictureData;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.context.ApplicationContext;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@Configurable
+public class GetPatentPictureFromExcelThread extends Thread {
+
+    private ImportTaskAMVO importTaskAMVO;
+    private ApplicationContext applicationContext;
+    private SavePatentToEsThread savePatentToEsThread;
+    private Boolean ifProductAll = false;
+    private List<UploadParamsVO> uploadParamsVOS;
+
+    @Override
+    public void run() {
+        try {
+            while (!ifProductAll || uploadParamsVOS.size() > 0 || importTaskAMVO.getProgressVO().equals(1)) {
+                UploadParamsVO uploadParamsVO = uploadParamsVOS.remove(0);
+                PictureData pictureData =uploadParamsVO.getPictureData();
+                String ext = pictureData.suggestFileExtension();
+                byte[] data = pictureData.getData();
+                MultipartFile multipartFile = new MockMultipartFile("file", "filename.txt", "text/plain", data);
+                String picName = IdUtil.simpleUUID() + "." + ext;
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public GetPatentPictureFromExcelThread(ImportTaskAMVO importTaskAMVO, ApplicationContext applicationContext) {
+        this.importTaskAMVO = importTaskAMVO;
+        this.savePatentToEsThread = savePatentToEsThread;
+        this.applicationContext = applicationContext;
+    }
+
+    public void awakeTask(Patent patent) {
+//        patents.add(patent);
+//        if (taskLock.tryLock()) {
+//            taskCondition.signalAll();
+//            taskLock.unlock();
+//        }
+    }
+
+    //
+    public void setIfProductAll(Boolean ifProductAll) {
+
+        this.ifProductAll = ifProductAll;
+
+    }
+
+
+}

+ 184 - 0
src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromWebThread.java

@@ -0,0 +1,184 @@
+package cn.cslg.pas.service.importPatent;
+
+import cn.cslg.pas.common.core.IgnoreDTDEntityResolver;
+import cn.cslg.pas.common.dto.UploadPatentWebDTO;
+import cn.cslg.pas.common.vo.ImportTaskAMVO;
+import cn.cslg.pas.common.vo.StarPatentVO;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.Text;
+import cn.cslg.pas.service.common.PatentStarApiService;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.XPath;
+import org.dom4j.io.SAXReader;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.context.ApplicationContext;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.*;
+import java.net.URL;
+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 GetPatentPictureFromWebThread extends Thread {
+    private ImportTaskAMVO importTaskAMVO;
+    private ApplicationContext applicationContext;
+    private ImportFromWebToEsService importFromWebToEsService;
+    private PatentStarApiService patentStarApiService;
+    private List<UploadPatentWebDTO> uploadPatentWebDTOs;
+    private final Lock taskLock = new ReentrantLock();
+    private final Condition taskCondition = taskLock.newCondition();
+
+    @Override
+    public void run() {
+        try {
+            while (uploadPatentWebDTOs.size() > 0 || importTaskAMVO.getProgressVO().equals(1)) {
+               UploadPatentWebDTO uploadPatentWebDTO= uploadPatentWebDTOs.remove(0);
+                String pictureUrl = patentStarApiService.getPictureApi(uploadPatentWebDTO.getStarPatentVO().getPublicNo());
+                URL url = new URL(pictureUrl);  //想要读取的url地址
+                InputStream in = url.openStream();
+                File file = File.createTempFile("new_url", ".jpg");  //创建文件
+                OutputStream os = new FileOutputStream(file);  //创建文件输出流
+                int bytesRead;
+                byte[] buffer = new byte[8192];
+                int len = 8192;
+                while ((bytesRead = in.read(buffer, 0, len)) != -1) {
+                    os.write(buffer, 0, bytesRead);
+                }
+                //关闭释放流
+                os.close();
+                in.close();
+
+                DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);
+                FileItem item = diskFileItemFactory.createItem(file.getName(), "text/plain", true, file.getName());
+                buffer = new byte[8192];
+                FileInputStream fis = new FileInputStream(file);
+                OutputStream fos = item.getOutputStream();
+                len = 8192;
+                while ((bytesRead = fis.read(buffer, 0, len)) != -1) {
+                    fos.write(buffer, 0, bytesRead);
+                }
+                //关闭释放流
+                fos.close();
+                fis.close();
+//                MultipartFile multipartFile = new MockMultipartFile(item);
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    public GetPatentPictureFromWebThread(TaskThread taskThread, ImportFromWebToEsService importFromWebToEsService) {
+        this.importTaskAMVO = taskThread.getImportTaskAMVO();
+        this.importFromWebToEsService = importFromWebToEsService;
+        this.applicationContext = taskThread.getApplicationContext();
+    }
+
+    public void awakeTask(UploadPatentWebDTO uploadPatentWebDTO) {
+        uploadPatentWebDTOs.add(uploadPatentWebDTO);
+        if (taskLock.tryLock()) {
+            taskCondition.signalAll();
+            taskLock.unlock();
+        }
+    }
+
+
+    //装载权利要求
+    private void loadClaim(UploadPatentWebDTO uploadPatentWebDTO,String cnFullXmlStr) {
+        Patent patent = uploadPatentWebDTO.getPatent();
+        try {
+            if(cnFullXmlStr!=null&&cnFullXmlStr!="") {
+                SAXReader reader = new SAXReader();
+                reader.setEntityResolver(new IgnoreDTDEntityResolver());
+                Reader stringReader = new StringReader(cnFullXmlStr);
+                Document document = reader.read(stringReader);
+                XPath xpath = document.createXPath("//claim-text");
+                List<Element> element = (List<Element>) xpath.selectNodes(document);
+                if (element.size() == 0) {
+                    xpath = document.createXPath("//business:ClaimText");
+                    element = (List<Element>) xpath.selectNodes(document);
+                }
+                List<String> reClaims = new ArrayList<>();
+                element.forEach(item -> {
+                    String claim = item.getText();
+                    reClaims.add(claim);
+                });
+                String reClaim = "";
+                if (reClaims.size() != 0) {
+                    reClaim = cn.cslg.pas.common.utils.StringUtils.join(reClaims, "\r\n");
+                }
+                //装载权利要求原文
+                Text text = new Text();
+                text.setLanguage(patent.getAppCountry());
+                text.setTextContent(reClaim);
+                text.setIfOrigin(true);
+                patent.setClaim(Arrays.asList(text));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+    }
+
+     //装载说明书文档
+    private void loadFullText(UploadPatentWebDTO uploadPatentWebDTO,String cnFullXmlStr) {
+        Patent patent = uploadPatentWebDTO.getPatent();
+        try {
+            //若没有取到全文文本,即取不到说明书文本,则将当前申请号或专利号和备注信息记录到问题记录表
+            if (cnFullXmlStr.equals("")) {
+                return ;
+            }
+
+            SAXReader reader = new SAXReader();
+            reader.setEntityResolver(new IgnoreDTDEntityResolver());
+            Reader stringReader = new StringReader(cnFullXmlStr);
+            Document document = reader.read(stringReader);
+            XPath xpath = document.createXPath("//description//p");
+            List<Element> elements = (List<Element>) xpath.selectNodes(document);
+            if (elements.size() == 0) {
+                xpath = document.createXPath("//business:Description//base:Paragraphs");
+                elements = (List<Element>) xpath.selectNodes(document);
+            }
+            List<String> fullTexts = new ArrayList<>();
+            Integer count=1;
+            for (Element item:elements){
+                String fullText = item.getText().replaceAll("<br/>", "");
+                if (!fullText.trim().equals("技术领域")
+                        && !fullText.trim().equals("发明内容")
+                        && !fullText.trim().equals("附图说明")
+                        && !fullText.trim().equals("具体实施方式")
+                        &&!fullText.trim().equals("背景技术"))
+                {String formattedNum = String.format("%04d", count);
+                    fullText ="["+formattedNum+"]"+fullText;
+                    count++;
+                }
+                fullTexts.add(fullText);
+            }
+            String fullText = "";
+            if (fullTexts.size() != 0) {
+                fullText = cn.cslg.pas.common.utils.StringUtils.join(fullTexts, "\r\n");
+            }
+            Text text =new Text();
+            text.setIfOrigin(true);
+            text.setTextContent(fullText);
+            text.setLanguage(patent.getAppCountry());
+            patent.setPublicFullText(Arrays.asList(text));
+    } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+    }
+}

+ 64 - 16
src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java

@@ -34,6 +34,11 @@ public class ImportFromWebToEsService implements PatentImportImp {
     private SavePatentToEsThread savePatentToEsThread;
 
     private GetCataloguingFromWebThread getCataloguingFromWebThread;
+
+    private GetPDFfromWebThread getPDFfromWebThread;
+    private GetPictureFromWebThread getPictureFromWebThread;
+    private GetRightAndFullTextFromWebThread getRightAndFullTextFromWebThread;
+
     @Override
     public void startPatentThread() {
         //十进制转二进制
@@ -42,36 +47,53 @@ public class ImportFromWebToEsService implements PatentImportImp {
         char[] importCells = imContents.toCharArray();
         char ifCataloguing = importCells[0];
         char ifAddPicture = importCells[1];
-        char ifClaim = importCells[2];
-        char ifFullText = importCells[3];
-        char ifPdf = importCells[4];
+        char ifFullText = importCells[2];
+        char ifPdf = importCells[3];
         //若本次下载任务是超过一万条专利的全部下载任务
+        importTaskAMVO.setIfAddCatalogue(ifCataloguing);
+        importTaskAMVO.setIfAddPicture(ifAddPicture);
+        importTaskAMVO.setIfAddFullText(ifFullText);
+        importTaskAMVO.setIfAddPDF(ifPdf);
         int patentNum = 10000;
+        savePatentToEsThread = new SavePatentToEsThread(taskThread, taskThread.getApplicationContext());
+        if (ifAddPicture == '1') {
+            getPictureFromWebThread = new GetPictureFromWebThread(taskThread, this);
+            getPictureFromWebThread.start();
+        }
+        if (ifFullText == '1') {
+            getRightAndFullTextFromWebThread = new GetRightAndFullTextFromWebThread(taskThread, this);
+            getRightAndFullTextFromWebThread.start();
+        }
+        if (ifPdf == '1') {
+            getPDFfromWebThread = new GetPDFfromWebThread(taskThread, this);
+            getPDFfromWebThread.start();
+        }
         if (importTaskAMVO.getEndNum() <= patentNum) {
+            if (ifCataloguing == '1') {
+                getCataloguingFromWebThread = new GetCataloguingFromWebThread(taskThread, this);
+                getCataloguingFromWebThread.start();
+            }
             excuteLessThan10000(importTaskAMVO);
         } else {
         }
-         savePatentToEsThread = new SavePatentToEsThread(taskThread, taskThread.getApplicationContext());
-        if (ifCataloguing == 1) {
-           getCataloguingFromWebThread = new GetCataloguingFromWebThread(taskThread, this);
-            getCataloguingFromWebThread.start();
-        }
 
-        GetPatentFromExcelThread getPatentFromExcelThread = new GetPatentFromExcelThread(taskThread.getImportTaskAMVO(), savePatentToEsThread, taskThread.getApplicationContext());
         savePatentToEsThread.start();
-        getPatentFromExcelThread.start();
     }
 
 
     private void excuteLessThan10000(ImportTaskAMVO importTaskAMVO) {
         try {
             Integer successNum = importTaskAMVO.getSuccessNum();  //成功条数(即上一次下载到的位置)
-            String conditions = importTaskAMVO.getCondition();  //检索式
+            String conditions = importTaskAMVO.getSearchCondition();  //检索式
             String orderBy = importTaskAMVO.getOrderBy();  //排序字段
             String orderByType = importTaskAMVO.getOrderByType();  //排序类型
-            String dbType = importTaskAMVO.getDBType();  //检索数据库类型
+            String dbType = importTaskAMVO.getDbType();  //检索数据库类型
             Integer importContent = importTaskAMVO.getImportContent();  //下载字段
-            Integer doneNum = importTaskAMVO.getDoneNum();
+            Integer doneNum = 0;
+            char ifCataloguing = importTaskAMVO.getIfAddCatalogue();
+            char ifAddPicture = importTaskAMVO.getIfAddPicture();
+            char ifAddFullText = importTaskAMVO.getIfAddFullText();
+            char ifPdf = importTaskAMVO.getIfAddPDF();
             //十进制转二进制
             String imContents = MathUtils.fun(2, importContent);
             //下载字段
@@ -87,7 +109,7 @@ public class ImportFromWebToEsService implements PatentImportImp {
                         .setCurrentQuery(conditions)
                         .setOrderBy(orderBy)
                         .setOrderByType(orderByType)
-                        .setPageNum(i)
+                        .setPageNum(i + 1)
                         .setRowCount(50)
                         .setDBType(dbType);
                 //调用一般接口返回一批专利著录相关数据
@@ -100,10 +122,29 @@ public class ImportFromWebToEsService implements PatentImportImp {
                 //遍历这一页的专利
                 for (int j = 0; j < starPatents.size(); j++) {
                     UploadPatentWebDTO uploadPatentWebDTO = new UploadPatentWebDTO();
+                    Patent patent = new Patent();
+
                     //装载start
                     uploadPatentWebDTO.setStarPatentVO(starPatents.get(i));
+                    uploadPatentWebDTO.setPatent(patent);
                     uploadPatentWebDTO.setCounter(0);
-                    getCataloguingFromWebThread.awakeTask(uploadPatentWebDTO);
+
+                    if (ifCataloguing == '1') {
+                        getCataloguingFromWebThread.awakeTask(uploadPatentWebDTO);
+                        uploadPatentWebDTO.setCounter(uploadPatentWebDTO.getCounter()+1);
+                    }
+                    if (ifAddPicture == '1') {
+                        getPictureFromWebThread.awakeTask(uploadPatentWebDTO);
+                        uploadPatentWebDTO.setCounter(uploadPatentWebDTO.getCounter()+1);
+                    }
+                    if (ifAddFullText == '1') {
+                        getRightAndFullTextFromWebThread.awakeTask(uploadPatentWebDTO);
+                        uploadPatentWebDTO.setCounter(uploadPatentWebDTO.getCounter()+1);
+                    }
+                    if(ifPdf=='1'){
+                        getPDFfromWebThread.awakeTask(uploadPatentWebDTO);
+                        uploadPatentWebDTO.setCounter(uploadPatentWebDTO.getCounter()+1);
+                    }
                 }
 
             }
@@ -122,12 +163,19 @@ public class ImportFromWebToEsService implements PatentImportImp {
         this.taskThread = taskThread;
         ApplicationContext applicationContext = taskThread.getApplicationContext();
         this.patentStarApiService = applicationContext.getBean(PatentStarApiService.class);
+        this.importTaskAMVO = taskThread.getImportTaskAMVO();
     }
 
     public void savePatentToEs(UploadPatentWebDTO uploadPatentWebDTO) {
+        uploadPatentWebDTO.setCounter(uploadPatentWebDTO.getCounter() + 1);
         if (uploadPatentWebDTO.getTotalCounter().equals(uploadPatentWebDTO.getCounter())) {
-            uploadPatentWebDTO.getPatent();
+            Patent patent = uploadPatentWebDTO.getPatent();
+            savePatentToEsThread.awakeTask(patent);
         }
+    }
+
+
+    private void loadPatent(StarPatentVO starPatentVO, Patent patent) {
 
 
     }

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

@@ -3,8 +3,10 @@ package cn.cslg.pas.service.importPatent;
 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.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;
@@ -77,9 +79,8 @@ public class SavePatentToEsThread extends Thread {
                 }
                 //导入完成,通知前台
                 MessageService messageService = applicationContext.getBean(MessageService.class);
-
-                messageService.sendWebsocketMessage(importTaskAMVO, 1, 1, Long.parseLong("11"));
-                System.out.println("patent" + patent.getPatentNo() + "done");
+                importTaskAMVO.setDoneNum(importTaskAMVO.getDoneNum()+1);
+                messageService.sendWebsocketMessage(importTaskAMVO);
             } catch (Exception e) {
                 System.out.println(e);
             }

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

@@ -24,9 +24,11 @@ import java.util.stream.Collectors;
 public class SchedulingTaskService {
     @Autowired
     private ImportTaskService importTaskService;
+
     @Autowired
     private ApplicationContext applicationContext;
     private ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(Constants.MAX_IMPORT_TASK_COUNT);
+
     @Autowired
     private ImportTaskConditionService importTaskConditionService;
 
@@ -55,9 +57,6 @@ public class SchedulingTaskService {
 
 
     public List<ImportTaskAMVO> loadTaskAMVOS(List<ImportTask> importTaskList) {
-
-
-
         List<ImportTaskAMVO> importTaskAMVOS = new ArrayList<>();
         List<Integer> taskConditionIds = new ArrayList<>();
         List<ImportTaskCondition> importTaskConditions = new ArrayList<>();
@@ -78,7 +77,10 @@ public class SchedulingTaskService {
                 importTaskAMVO.setSourceId(importTaskCondition.getSourceId());
                 importTaskAMVO.setProjectId(importTaskCondition.getProjectId());
                 importTaskAMVO.setProductId(importTaskCondition.getProductId());
-                importTaskAMVO.setImportContent(1);
+                importTaskAMVO.setImportContent(importTaskCondition.getImportContent());
+                importTaskAMVO.setDbType(importTaskCondition.getDbType());
+                importTaskAMVO.setOrderBy(importTaskCondition.getOrderBy());
+                importTaskAMVO.setOrderByType(importTaskCondition.getOrderByType());
             }
             ProgressVO progressVO =new ProgressVO();
             progressVO.setState(0);

+ 6 - 0
src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java

@@ -4,6 +4,7 @@ import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.model.cronModel.ImportTaskConfig;
 import cn.cslg.pas.common.model.cronModel.OrderConfig;
 import cn.cslg.pas.common.vo.ImportTaskAMVO;
+import cn.cslg.pas.domain.business.ImportTask;
 import cn.cslg.pas.factorys.PatentImportFactory.PatentImportFactory;
 import cn.cslg.pas.factorys.PatentImportFactory.PatentImportImp;
 import cn.cslg.pas.service.business.CommonService;
@@ -55,11 +56,16 @@ 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());
         System.out.println("任务结束");
     }
 
 
     public void awakeTaskThread() {
+
         if (taskThreadLock.tryLock()) {
             //taskLock.lock();
             taskThreadCondition.signalAll();

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

@@ -178,7 +178,7 @@ public class FormatQueryService {
                     //判断 参数类型
                     String json = CommonService.readJsonFile(tableName + ".json");
                     List<SqlObject> sqlObjects = JSON.parseArray(json, SqlObject.class);
-                    SqlObject sqlObject = sqlObjects.stream().filter(item -> item.getValue().equals(field) && item.getIfSearch().equals(true)).findFirst().orElse(null);
+                    SqlObject sqlObject = sqlObjects.stream().filter(item -> item.getValue().equals(field) && item.getIfAsCondition().equals(true)).findFirst().orElse(null);
                     if (sqlObject != null) {
                         getSqlObjectLocal = getSqlFactory.getClass(sqlObject.getSqlClass());
                         sqlObject.setOption(optionName);
@@ -377,7 +377,7 @@ public class FormatQueryService {
         }
         //格式化检索式
         String reQuery = this.webQueryToString((operateNode) tree, null, configName);
-
+         reQuery="F XX ("+reQuery+")";
         return reQuery;
     }