Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java
#	src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java
xiexiang 1 year ago
parent
commit
0ca1679f6a
24 changed files with 578 additions and 181 deletions
  1. 26 0
      src/main/java/cn/cslg/pas/common/dto/ComparedPatentDTO.java
  2. 4 3
      src/main/java/cn/cslg/pas/controller/FTOController.java
  3. 62 0
      src/main/java/cn/cslg/pas/domain/ReportDocument.java
  4. 7 0
      src/main/java/cn/cslg/pas/domain/es/LegalEvent.java
  5. 9 0
      src/main/java/cn/cslg/pas/domain/es/QuotePatent.java
  6. 16 0
      src/main/java/cn/cslg/pas/mapper/ReportDocumentMapper.java
  7. 169 137
      src/main/java/cn/cslg/pas/service/ReportExportService.java
  8. 1 1
      src/main/java/cn/cslg/pas/service/business/CompareLiteratureService.java
  9. 5 4
      src/main/java/cn/cslg/pas/service/business/CustomFieldService.java
  10. 49 9
      src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java
  11. 34 6
      src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java
  12. 4 1
      src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java
  13. 69 0
      src/main/java/cn/cslg/pas/service/business/es/EsQuotePatentService.java
  14. 11 4
      src/main/java/cn/cslg/pas/service/business/es/EsService.java
  15. 36 1
      src/main/java/cn/cslg/pas/service/common/FileManagerService.java
  16. 6 6
      src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java
  17. 1 0
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentFromExcelThread.java
  18. 6 2
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromExcelThread.java
  19. 1 0
      src/main/java/cn/cslg/pas/service/importPatent/ImportFromExcelToEsService.java
  20. 3 1
      src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java
  21. 5 3
      src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java
  22. 1 1
      src/test/java/cn/cslg/pas/service/EsPatentServiceTests.java
  23. 51 0
      src/test/java/cn/cslg/pas/service/EsQuotePatentTests.java
  24. 2 2
      src/test/java/cn/cslg/pas/service/FTOCompareRecordServiceTests.java

+ 26 - 0
src/main/java/cn/cslg/pas/common/dto/ComparedPatentDTO.java

@@ -0,0 +1,26 @@
+package cn.cslg.pas.common.dto;
+
+import cn.cslg.pas.domain.es.PatentPerson;
+import cn.cslg.pas.domain.es.Priorities;
+import cn.cslg.pas.domain.es.Text;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class ComparedPatentDTO {
+    private Integer projectId;
+
+    private Integer compareResult;
+    /**
+     * 当前页
+     */
+    private Long current;
+    /**
+     * 每页条数
+     */
+    private Long size;
+}

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

@@ -1,6 +1,7 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.ComparedPatentDTO;
 import cn.cslg.pas.common.dto.ComparedPatentVO;
 import cn.cslg.pas.common.dto.business.GetFeatureSplitDTO;
 import cn.cslg.pas.common.dto.business.ProductMessageDTO;
@@ -122,9 +123,9 @@ public class FTOController {
     }
 
     @Operation(summary = "获得对比过的专利")
-    @GetMapping("/getComparedPatent")
-    public Response getComparedPatent(Integer projectId,Integer compareResult) {
-        List<ComparedPatentVO> comparedPatentVOS = ftoCompareRecordService.getComparedPatent(projectId,compareResult);
+    @PostMapping("/getComparedPatent")
+    public Response getComparedPatent(@RequestBody ComparedPatentDTO comparedPatentDTO) {
+        List<ComparedPatentVO> comparedPatentVOS = ftoCompareRecordService.getComparedPatent(comparedPatentDTO);
         Records records = new Records();
         records.setData(comparedPatentVOS);
         return Response.success(records);

+ 62 - 0
src/main/java/cn/cslg/pas/domain/ReportDocument.java

@@ -0,0 +1,62 @@
+package cn.cslg.pas.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 报告文件导出表
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+@TableName(value = "report_document")
+public class ReportDocument extends BaseEntity<ReportDocument> {
+
+    /**
+     * 报告ID
+     */
+    @Schema(description = "报告ID")
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+    /**
+     * 文件名称
+     */
+    @Schema(description = "文件名称")
+    @TableField(value = "file_name")
+    private String fileName;
+
+    /**
+     * 导出人
+     */
+    @Schema(description = "导出人Id")
+    @TableField(value = "create_id")
+    private String createId;
+
+
+    /**
+     * 模板名称
+     */
+    @Schema(description = "模板名称")
+    @TableField(value = "template_name")
+    private String templateName;
+
+    /**
+     * 模板
+     */
+    @Schema(description = "模板")
+    @TableField(value = "template_id")
+    private Integer templateId;
+
+    @Schema(description = "文件路径")
+    @TableField(value = "file_guid")
+    private String fileGuid;
+
+    @Schema(description = "导出时间")
+    @TableField(value = "create_time")
+    private String createTime;
+}

+ 7 - 0
src/main/java/cn/cslg/pas/domain/es/LegalEvent.java

@@ -47,5 +47,12 @@ public class LegalEvent {
      */
     @JsonProperty("app_no")
     private String appNo;
+    /**
+     * 公开号
+     */
+    @JsonProperty("public_no")
+    private String publicNo;
+    @JsonProperty("grant_no")
+    private String grantNo;
 
 }

+ 9 - 0
src/main/java/cn/cslg/pas/domain/es/QuotePatent.java

@@ -7,6 +7,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
 import java.util.List;
 
 @Component
@@ -29,4 +30,12 @@ public class QuotePatent {
 
     @JsonProperty("app_no")
     private String appNo;
+    /**
+     * 公开号
+     */
+    @JsonProperty("public_no")
+    private String publicNo;
+    @JsonProperty("grant_no")
+    private String grantNo;
+
 }

+ 16 - 0
src/main/java/cn/cslg/pas/mapper/ReportDocumentMapper.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.ReportDocument;
+import cn.cslg.pas.domain.business.AssoEventFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 报告导出记录
+ *
+ * @author lrj
+ * @date 2023/12/20
+ */
+@Repository
+public interface ReportDocumentMapper extends BaseMapper<ReportDocument> {
+}

+ 169 - 137
src/main/java/cn/cslg/pas/service/ReportExportService.java

@@ -1,28 +1,26 @@
 package cn.cslg.pas.service;
 
+import cn.cslg.pas.common.dto.PatentColumnDTO;
+import cn.cslg.pas.common.dto.PatentDTO;
 import cn.cslg.pas.common.dto.PatentDetailDTO;
 import cn.cslg.pas.common.dto.es.EsCustomFieldDTO;
 import cn.cslg.pas.common.dto.es.EsCustomFieldValueDTO;
 import cn.cslg.pas.common.model.SystemMO;
-import cn.cslg.pas.common.utils.DateUtils;
-import cn.cslg.pas.common.utils.FileUtils;
-import cn.cslg.pas.common.utils.FormatUtil;
-import cn.cslg.pas.common.utils.PatentRightUtils;
-import cn.cslg.pas.common.vo.AvoidFeaturesVO;
-import cn.cslg.pas.common.vo.FieldValueVO;
-import cn.cslg.pas.common.vo.PatentRightParams;
-import cn.cslg.pas.common.vo.RePatentClaim;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.request.StringRequest;
+import cn.cslg.pas.common.utils.*;
+import cn.cslg.pas.common.vo.*;
 import cn.cslg.pas.common.vo.business.AllCustomFieldVO;
 import cn.cslg.pas.common.vo.business.PatentNoVO;
+import cn.cslg.pas.domain.ReportDocument;
 import cn.cslg.pas.domain.business.*;
 import cn.cslg.pas.domain.es.Text;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AvoidDesignMapper;
-import cn.cslg.pas.service.business.CustomFieldService;
-import cn.cslg.pas.service.business.ReportProjectService;
-import cn.cslg.pas.service.business.TemplateConfigService;
-import cn.cslg.pas.service.business.TempleService;
+import cn.cslg.pas.service.business.*;
+import cn.cslg.pas.service.business.es.EsFamilyService;
 import cn.cslg.pas.service.business.es.EsPatentService;
+import cn.cslg.pas.service.business.es.EsQuotePatentService;
 import cn.cslg.pas.service.business.es.EsService;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.hutool.core.util.IdUtil;
@@ -36,6 +34,7 @@ import com.deepoove.poi.data.PictureType;
 import com.deepoove.poi.data.Pictures;
 import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.usermodel.PictureData;
 import org.ddr.poi.html.HtmlRenderPolicy;
 import org.joda.time.format.FormatUtils;
@@ -70,6 +69,19 @@ public class ReportExportService {
     private CustomFieldService customFieldService;
     @Autowired
     private EsService esService;
+    @Autowired
+    private FTOCompareRecordService ftoCompareRecordService;
+
+    @Autowired
+    private EsQuotePatentService esQuotePatentService;
+
+    @Autowired
+    private EsFamilyService esFamilyService;
+
+    @Autowired
+    private LoginUtils loginUtils;
+    @Autowired
+    private CacheUtils cacheUtils;
 
     /**
      * @param projectId
@@ -100,7 +112,7 @@ public class ReportExportService {
         if (report.getReportType() == 0 || report.getReportType() == 2) {
 //           template = this.getstabilityTemplate(report, filePath);
         } else if (report.getReportType() == 3) {
-//            template = this.FTOtemplate(reportId, filePath, templeId);
+            template = this.FTOTemplate(projectId, templateFilePath, templeId);
         } else if (report.getReportType() == 4) {
 //         template = this.Torttemplate(reportId, filePath, templeId);
         } else if (report.getReportType() == 5) {
@@ -111,25 +123,30 @@ public class ReportExportService {
         // 读取模板、数据并渲染
 //         文件是否已存在,则删除
         File file = new File(outPath);
-        if (file.exists()) {
-            file.delete();
-        }
+
 //      生成word保存在指定目录
         template.writeToFile(outPath);
         template.close();
         //导出成功后,导出报告记录入库
-//        String url = fileUtils.getDirectory2(directoryName) + fileName;
+
+        List<String> ids = fileManagerService.uploadFileGetGuid2(Arrays.asList(file));
+        if (ids == null || ids.size() == 0) {
+            throw new XiaoShiException("保存记录失败");
+        }
 //        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-//        ReportDocument reportDocument = new ReportDocument();
-//        reportDocument.setReportId(reportId);
-//        reportDocument.setFileName(fileName);
-//        reportDocument.setFilePath(url);
-//        reportDocument.setPersonId(personnelVO.getId());
-//        reportDocument.setTemplateId(reportTemplate.getId());
-//        reportDocument.setTemplateName(reportTemplate.getTemplateName());
-//        reportDocument.setPersonName(personnelVO.getName());
-//        reportDocument.insert();
-//        return Response.success(url);
+        PersonnelVO personnelVO =new PersonnelVO();
+        personnelVO.setId("1");
+        ReportDocument reportDocument = new ReportDocument();
+        reportDocument.setProjectId(projectId);
+        reportDocument.setFileName(fileName);
+        reportDocument.setFileGuid(ids.get(0));
+        reportDocument.setCreateId(personnelVO.getId());
+        reportDocument.setTemplateId(reportTemplate.getId());
+        reportDocument.setTemplateName(reportTemplate.getTemplateName());
+        reportDocument.insert();
+        if (file.exists()) {
+            file.delete();
+        }
         return "";
     }
 
@@ -360,126 +377,141 @@ public class ReportExportService {
      * @description 装载FTO模板
      */
     private XWPFTemplate FTOTemplate(Integer projectId, String filePath, Integer templateId) throws IOException {
-        //根据报告ID获得自定义字段值的信息
-
         //获得模板的配置信息
         LambdaQueryWrapper<TemplateConfig> templateConfigWrapper = new LambdaQueryWrapper<TemplateConfig>();
         templateConfigWrapper.eq(TemplateConfig::getTemplateId, templateId);
         List<TemplateConfig> templateConfigs = templateConfigService.list(templateConfigWrapper);
-
+        List<Map<String, Object>> classifyMaps = new ArrayList<>();
         for (TemplateConfig templateConfig : templateConfigs) {
+            Map<String, Object> classifyMap = new HashMap<>();
+
             String value = templateConfig.getValueName();
             //根据value 查询专利
-            List<EsCustomFieldDTO> esCustomFieldDTOS = customFieldService.getCustomFieldByValueName(value,projectId);
-            if(esCustomFieldDTOS.size()!=0){
-
-
+            List<EsCustomFieldValueDTO> esCustomFieldDTOS = customFieldService.getCustomFieldByValueName(value, projectId);
+            if (esCustomFieldDTOS.size() != 0) {
+                classifyMap.put("classify", templateConfig.getMapName());
+                StringRequest stringRequest = new StringRequest();
+                stringRequest.setCustomFields(esCustomFieldDTOS);
+                stringRequest.setProjectId(projectId);
+                List<PatentColumnDTO> patentColumnDTOS = new ArrayList<>();
+                try {
+                    PatentDTO patentDTO = esService.esSearch(stringRequest);
+                    patentColumnDTOS = patentDTO.getPatents();
+                } catch (Exception e) {
+                    return null;
+                }
+                //存放公告专利
+                List<Map<String, Object>> announcePatents = new ArrayList<>();
+                //存放公开专利
+                List<Map<String, Object>> publicPatents = new ArrayList<>();
+                //存放失效专利信息
+                List<Map<String, Object>> lapsePatents = new ArrayList<>();
+                for (PatentColumnDTO patent : patentColumnDTOS) {
+                    String applicants = "";
+                    StringBuilder rightPerson = new StringBuilder();
+                    if (patent.getApplicant() != null && patent.getApplicant().size() != 0) {
+                        applicants = StringUtils.join(patent.getApplicant(), "\r");
+                    }
+
+//                    //装载法律状态
+//                    StringBuilder affair = new StringBuilder();
+//                    List<JSONObject> affaires = JSON.parseArray(patent.get("affair").toString(), JSONObject.class);
+//                    affaires.forEach(item -> {
+//                                affair.append(item.get("status") + "\r");
+//                            }
+//
+//                    );
+                    //装载单个专利的信息
+                    Map<String, Object> patentMap = new HashMap<>();
+
+                    //同族专利
+                    try {
+                        //装载同族信息
+                        List<Map<String, Object>> familyMaps = esFamilyService.getPatentFamilyByNos(Arrays.asList(patent.getPatentNo()), "inpadoc");
+                        if (familyMaps != null && familyMaps.size() > 0) {
+                            Map<String, Object> familyMap = familyMaps.get(0);
+                            if (familyMap.get("nos") != null) {
+                                List<String> nos = (List<String>) familyMap.get("nos");
+                                if (nos != null && nos.size() > 0) {
+                                    String nosStr = StringUtils.join(nos, "\r");
+                                    patentMap.put("simpleFamilys", nosStr);
+                                }
+                            }
+                        }
+                    } catch (Exception e) {
+                    }
+                    //引用专利
+                    try {
+                        Map<String, Object> map = esQuotePatentService.getEsQutePatentByNos(patent.getPatentNo());
+                        if (map.get("nos") != null) {
+                            List<String> nos = (List<String>) map.get("nos");
+                            if (nos != null && nos.size() > 0) {
+                                String nosStr = StringUtils.join(nos, "\r");
+                                patentMap.put("quotePatents", nosStr);
+                            }
+                        }
+
+                    } catch (Exception e) {
+
+                    }
+                    //申请日
+                    patentMap.put("applicationDate", patent.getAppDate());
+                    //公开日
+                    patentMap.put("publicDate", patent.getPublicDate());
+                    //专利号
+                    patentMap.put("publicNo", patent.getPatentNo());
+                    patentMap.put("firstPublicDate", patent.getPublicDate());
+                    patentMap.put("applicant", applicants);
+                    patentMap.put("rightPerson", rightPerson);
+//                    patentMap.put("affair", affair);
+
+                    //优先权日
+                    if (patent.getPriorities() != null && patent.getPriorities().size() != 0) {
+                        patentMap.put("priorityDate", patent.getPriorities().get(0).getPriorityDate());
+                    }
+
+                    //图示
+                    String guid = FormatUtil.getPictureFormat(patent.getAppNo());
+                    PictureRenderData pictureData = this.guidToStream(guid);
+                    if (pictureData != null) {
+                        patentMap.put("abstractPath", pictureData);
+                    }
+                    //获得专利对比记录的信息
+                    Map<String, Object> temMap = ftoCompareRecordService.LoadCompareMessageForExport(projectId, patent.getPatentNo());
+                    List<CompareMessageVO> compareMessageVOS = (List<CompareMessageVO>) temMap.get("compareMessageVOs");
+                    //装载对比记录的信息
+                    patentMap.put("cM", compareMessageVOS);
+                    patentMap.put("rightNum", temMap.get("right"));
+                    patentMap.put("mainRightNum", temMap.get("mainRight"));
+                    Integer status = Integer.parseInt(patent.getSimpleStatus());
+                    if (status == 1 || status == 5 || status == 6) {
+                        announcePatents.add(patentMap);
+                    } else if (status == 2) {
+                        lapsePatents.add(patentMap);
+                    } else if (status == 3) {
+                        publicPatents.add(patentMap);
+                    }
+                    classifyMap.put("publicPatents", publicPatents);
+                    classifyMap.put("lapsePatents", lapsePatents);
+                    classifyMap.put("announcePatents", announcePatents);
+                }
+                classifyMaps.add(classifyMap);
             }
         }
 
-        //
-        List<Map<String, Object>> classifyMaps = new ArrayList<>();
-        //装载信息
-//        for (TemplateConfig templateConfig : templateConfigs) {
-//            Map<String, Object> classifyMap = new HashMap<>();
-//            classifyMap.put("classify", map.get("CName"));
-//            //根据自定义字段ID和值Id查询专利号
-//            List<String> patentNos = reportFieldPatentLinkService.getPatentNos(Integer.parseInt(map.get("FId").toString()), Integer.parseInt(map.get("CId").toString()));
-//            PatentVO patentVO = new PatentVO();
-//            patentVO.setPatentNos(patentNos);
-//            //根据专利号查询专利详细信息
-//            String resBody = outInterfaceService.getPatentDTOListForRMS(patentVO);
-//            JSONObject jsonObject = JSONObject.parseObject(resBody);
-//            List<JSONObject> patentDTOS = JSON.parseArray(jsonObject.get("data").toString(), JSONObject.class);
-//            //根据专利号和报告Id获得对比记录
-//            //存放公告专利
-//            List<Map<String, Object>> announcePatents = new ArrayList<>();
-//            //存放公开专利
-//            List<Map<String, Object>> publicPatents = new ArrayList<>();
-//            //存放失效专利信息
-//            List<Map<String, Object>> lapsePatents = new ArrayList<>();
-//            for (JSONObject patent : patentDTOS) {
-//                List<JSONObject> applicantJSONs = JSON.parseArray(patent.get("applicant").toString(), JSONObject.class);
-//                StringBuilder applicants = new StringBuilder();
-//                StringBuilder rightPerson = new StringBuilder();
-//                applicantJSONs.forEach(tem -> {
-//                    if (Integer.parseInt(tem.get("dataType").toString()) == 1) {
-//                        applicants.append(tem.get("name") + "\r");
-//                    } else {
-//                        rightPerson.append(tem.get("name") + "\r");
-//                    }
-//                });
-//                //装载同族信息
-//                JSONObject familys = JSONObject.parseObject(patent.get("family").toString());
-//                List<String> patSnaps = JSON.parseArray(familys.get("patSnap").toString(), String.class);
-//                List<String> simples = JSON.parseArray(familys.get("simple").toString(), String.class);
-//                List<String> inpadocs = JSON.parseArray(familys.get("inpadoc").toString(), String.class);
-//                patSnaps.addAll(simples);
-//                patSnaps.addAll(inpadocs);
-//                String familyStr = StringUtils.join(patSnaps, ",");
-//                //装载法律状态
-//                StringBuilder affair = new StringBuilder();
-//                List<JSONObject> affaires = JSON.parseArray(patent.get("affair").toString(), JSONObject.class);
-//                affaires.forEach(item -> {
-//                            affair.append(item.get("status") + "\r");
-//                        }
-//
-//                );
-//                //装载单个专利的信息
-//                Map<String, Object> patentMap = new HashMap<>();
-//                //同族专利
-//                patentMap.put("simpleFamilys", familyStr);
-//                //引用专利
-//                patentMap.put("quotePatents", patent.get("quote"));
-//                //申请日
-//                patentMap.put("applicationDate", patent.get("applicationDate"));
-//                //公开日
-//                patentMap.put("publicDate", patent.get("publicDate"));
-//                //专利号
-//                patentMap.put("publicNo", patent.get("publicNo"));
-//                patentMap.put("firstPublicDate", patent.get("firstPublicDate"));
-//                patentMap.put("applicant", applicants);
-//                patentMap.put("rightPerson", rightPerson);
-//                patentMap.put("affair", affair);
-//                //优先权日
-//                patentMap.put("priorityDate", patent.get("priorityDate"));
-//                //图示
-//                patentMap.put("abstractPath", "http://139.224.24.90:8081" + patent.get("abstractPath"));
-//                //获得专利对比记录的信息
-//                Map<String, Object> temMap = compareMessageService.queryforTemplate(patent.get("patentNo").toString(), reportId);
-//                List<CompareMessageVO> compareMessageVOS = (List<CompareMessageVO>) temMap.get("compareMessageVOs");
-//                //装载对比记录的信息
-//                patentMap.put("cM", compareMessageVOS);
-//                patentMap.put("rightNum", temMap.get("right"));
-//                patentMap.put("mainRightNum", temMap.get("mainRight"));
-//                Integer status = Integer.parseInt(patent.get("simpleStatusInt").toString());
-//                if (status == 1 || status == 5 || status == 6) {
-//                    announcePatents.add(patentMap);
-//                } else if (status == 2) {
-//                    lapsePatents.add(patentMap);
-//                } else if (status == 3) {
-//                    publicPatents.add(patentMap);
-//                }
-//                classifyMap.put("publicPatents", publicPatents);
-//                classifyMap.put("lapsePatents", lapsePatents);
-//                classifyMap.put("announcePatents", announcePatents);
-//            }
-//            classifyMaps.add(classifyMap);
-//        }
-//        Map<String, Object> map = new HashMap<>();
-//        String date = DateUtils.formatDate(new Date(), DateUtils.YYYY_MM_DD);
-//        String[] ds = date.split("-");
-//        map.put("sys", new SystemMO(ds[0], ds[1], ds[2], "", "reportName"));
-//        map.put("classifys", classifyMaps);
-//        // 为表格的显示绑定行循环
-//        LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
-//        HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy();
-//        // 将bz设置为行循环绑定的数据源的key,即key是bz的value会在模板中的{{bz}}处进行解析
-//        Configure configure = Configure.builder().bind("cM", policy).bind("targetDescription", htmlRenderPolicy).build();
-//        XWPFTemplate template = XWPFTemplate.compile(filePath, configure).render(map);
-//        return template;
-        return null;
-    }
+        Map<String, Object> map = new HashMap<>();
+        String date = DateUtils.formatDate(new Date(), DateUtils.YYYY_MM_DD);
+        String[] ds = date.split("-");
+        map.put("sys", new SystemMO(ds[0], ds[1], ds[2], "", "reportName"));
+        map.put("classifys", classifyMaps);
+        // 为表格的显示绑定行循环
+        LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
+        HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy();
+        // 将bz设置为行循环绑定的数据源的key,即key是bz的value会在模板中的{{bz}}处进行解析
+        Configure configure = Configure.builder().bind("cM", policy).bind("targetDescription", htmlRenderPolicy).build();
+        XWPFTemplate template = XWPFTemplate.compile(filePath, configure).render(map);
+        return template;
 
+    }
 
 }

+ 1 - 1
src/main/java/cn/cslg/pas/service/business/CompareLiteratureService.java

@@ -128,7 +128,7 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
 
         if (patentNos.size() > 0) {
             try {
-                patentList = esPatentService.getPatentsByNo(patentNos,false);
+                patentList = esPatentService.getPatentsByNo(patentNos,false,null,null);
             } catch (Exception e) {
                 throw new XiaoShiException("装载文献信息失败");
             }

+ 5 - 4
src/main/java/cn/cslg/pas/service/business/CustomFieldService.java

@@ -4,6 +4,7 @@ import cn.cslg.pas.common.dto.AllFieldOrderDTO;
 import cn.cslg.pas.common.dto.business.CustomFieldDTO;
 import cn.cslg.pas.common.dto.business.UpdateCustomFieldDTO;
 import cn.cslg.pas.common.dto.es.EsCustomFieldDTO;
+import cn.cslg.pas.common.dto.es.EsCustomFieldValueDTO;
 import cn.cslg.pas.common.dto.es.QueryEsCustomFieldDTO;
 import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
@@ -482,8 +483,8 @@ public class CustomFieldService extends ServiceImpl<CustomFieldMapper, CustomFie
      * @param name
      * @param projectId
      */
-    public List<EsCustomFieldDTO> getCustomFieldByValueName(String name, Integer projectId) {
-        List<EsCustomFieldDTO> esCustomFieldDTOS = new ArrayList<>();
+    public List<EsCustomFieldValueDTO> getCustomFieldByValueName(String name, Integer projectId) {
+        List<EsCustomFieldValueDTO> esCustomFieldDTOS = new ArrayList<>();
         //根据名称获得标引栏位以及标引值
         LambdaQueryWrapper<CustomField> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.in(CustomField::getType, Arrays.asList(4, 5, 6))
@@ -507,7 +508,7 @@ public class CustomFieldService extends ServiceImpl<CustomFieldMapper, CustomFie
 
         if (options != null && options.size() != 0) {
             options.forEach(item -> {
-                EsCustomFieldDTO esCustomFieldDTO = esCustomFieldDTOS.stream()
+                EsCustomFieldValueDTO esCustomFieldDTO = esCustomFieldDTOS.stream()
                         .filter(i -> i.getFieldId()
                                 .equals(item.getCustomFieldId()))
                         .findFirst().orElse(null);
@@ -524,7 +525,7 @@ public class CustomFieldService extends ServiceImpl<CustomFieldMapper, CustomFie
 
         if (treeNodes != null && treeNodes.size() != 0) {
             treeNodes.forEach(item -> {
-                EsCustomFieldDTO esCustomFieldDTO = esCustomFieldDTOS.stream()
+                EsCustomFieldValueDTO esCustomFieldDTO = esCustomFieldDTOS.stream()
                         .filter(i -> i.getFieldId()
                                 .equals(item.getTypeId()))
                         .findFirst().orElse(null);

+ 49 - 9
src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.ComparedPatentDTO;
 import cn.cslg.pas.common.dto.ComparedPatentVO;
 import cn.cslg.pas.common.dto.business.GetFeatureSplitDTO;
 import cn.cslg.pas.common.dto.business.TortCompareRecordDTO;
@@ -8,6 +9,7 @@ import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.CompareMessageVO;
 import cn.cslg.pas.common.vo.PatentRightVo;
 import cn.cslg.pas.common.vo.RePatentClaim;
 import cn.cslg.pas.common.vo.business.*;
@@ -28,15 +30,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
  * FTO
+ *
  * @Author xiexiang
  * @Date 2023/12/13
  */
@@ -77,6 +77,7 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
 
     /**
      * 查询FTO对比结果VO
+     *
      * @param getFeatureSplitDTO
      * @return
      */
@@ -254,8 +255,8 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
         LambdaQueryWrapper<Feature> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.select(Feature::getId)
                 .eq(Feature::getProjectTaskId, taskId);
-        Function<Object,Integer> f = (o -> Integer.parseInt(o.toString()));
-        List<Integer> featureIds = featureService.listObjs(queryWrapper,f);
+        Function<Object, Integer> f = (o -> Integer.parseInt(o.toString()));
+        List<Integer> featureIds = featureService.listObjs(queryWrapper, f);
         // 删除特征
         List<Integer> ids = new ArrayList<>();
         if (!featureIds.isEmpty()) {
@@ -465,7 +466,7 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
             if (type == 1) {//查询协同前后对比结果
                 tortRightVOS = this.loadBeforeAndAfter(taskId, patentNo, patentRightVos);
             } else if (type == 2) {//发起人的查询
-                tortRightVOS = this.loadTortRightVOS2(taskId, patentNo, projectId, patentRightVos);
+                tortRightVOS = this.loadTortRightVOS2(taskId, patentRightVos);
             }
             tortCompareRecordVO.setTortRightVOS(tortRightVOS);
         } catch (Exception e) {
@@ -840,7 +841,18 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
         return tortVOS;
     }
 
-    public List<ComparedPatentVO> getComparedPatent(Integer projectId, Integer compareResult) {
+    /**
+     * 获得已经对比过的专利
+     *
+     * @param
+     * @param
+     * @return
+     */
+    public List<ComparedPatentVO> getComparedPatent(ComparedPatentDTO comparedPatentDTO) {
+        Integer projectId = comparedPatentDTO.getProjectId();
+        Integer compareResult = comparedPatentDTO.getCompareResult();
+        Long current = comparedPatentDTO.getCurrent();
+        Long size = comparedPatentDTO.getSize();
         //根据projectId 查询出对比过的专利号
         List<String> patentNos = this.getBaseMapper().getComparedPatents(projectId, compareResult);
         List<ComparedPatentVO> comparedPatentVOS = new ArrayList<>();
@@ -850,7 +862,7 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
             if (patentNos != null && patentNos.size() != 0) {
                 //查询专利状态字典
                 List<SystemDict> systemDicts = systemDictService.getSystemDictListByType(Arrays.asList("PATENT_SIMPLE_STATUS"));
-                patents = esPatentService.getPatentsByNo(patentNos, true);
+                patents = esPatentService.getPatentsByNo(patentNos, true, current, size);
                 List<Map<String, Object>> maps = esFamilyService.getPatentFamilyByNos(patentNos, "inpadoc");
                 patents.forEach(item -> {
                     ComparedPatentVO comparedPatentVO = new ComparedPatentVO();
@@ -874,6 +886,34 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     }
 
     /**
+     * 为导出装载对比记录
+     *
+     * @param projectId
+     * @param patentNo
+     */
+    public Map<String, Object> LoadCompareMessageForExport(Integer projectId, String patentNo) {
+        Map<String, Object> map = new HashMap<>();
+        Integer rightNum = 0;
+        Integer mainRightNum = 0;
+        TortCompareRecordVO tortCompareRecordVO = this.getLastRecord(projectId, patentNo);
+        List<CompareMessageVO> compareMessageVOS = new ArrayList<>();
+        if (tortCompareRecordVO != null) {
+            List<TortRightVO> tortRightVOS = tortCompareRecordVO.getTortRightVOS();
+
+            for (TortRightVO item : tortRightVOS) {
+                compareMessageVOS.addAll((item.getCompareMessageVOS()));
+                if (item.getType().equals(0)) {
+                    mainRightNum++;
+                }
+                rightNum++;
+            }
+        }
+        map.put("compareMessageVOs", compareMessageVOS);
+        map.put("rightNum", rightNum);
+        map.put("mainRightNum", mainRightNum);
+        return map;
+    }
+    /**
      * 从FTO中获得对比结果,并复制保存
      * @param projectId
      * @param taskId

+ 34 - 6
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -266,7 +266,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                     if (item.getCreateId() != null) {
                         createIds.add(item.getCreateId());
                     }
-                    if (item.getHandler() != null) {
+                    if (item.getHandler() != null && item.getHandlerType() != null && item.getHandlerType().equals(0)) {
                         handlerIds.add(item.getHandler());
                     }
                     if (item.getProjectId() != null) {
@@ -295,16 +295,23 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         }
         //装载信息
         for (ProjectTaskVO projectTaskVO : projectTaskVOS) {
+            Integer handlerType = projectTaskVO.getHandlerType();
             //装载人员信息
             Personnel personnel = personnels.stream().filter(item -> item.getId().equals(projectTaskVO.getCreateId())).findFirst().orElse(null);
-            Personnel personnel2 = personnels2.stream().filter(item -> item.getId().equals(projectTaskVO.getHandler())).findFirst().orElse(null);
             if (personnel != null) {
                 projectTaskVO.setCreateName(personnel.getPersonnelName());
-            } else if (personnel2 != null) {
-                projectTaskVO.setHandlerName(personnel2.getPersonnelName());
+            }
+
+            if (handlerType != null && handlerType.equals(0)) {
+                Personnel personnel2 = personnels2.stream().filter(item -> item.getId().equals(projectTaskVO.getHandler())).findFirst().orElse(null);
+                if (personnel2 != null) {
+                    projectTaskVO.setHandlerName(personnel2.getPersonnelName());
+                }
             } else {
-                throw new XiaoShiException("未获取到当前登陆人信息");
+                projectTaskVO.setHandlerName(projectTaskVO.getHandler());
             }
+
+
             String name = patentDigProjectFilesService.getProcessName(projectTaskVO.getProcessId());
             projectTaskVO.setProcessName(name);
             Project project = projects.stream().filter(item -> item.getId().equals(projectTaskVO.getProjectId())).findFirst().orElse(null);
@@ -604,7 +611,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         ProjectTask projectTask = this.getOne(queryWrapper, false);
         if (projectTask != null) {
             //查询出当前任务的类型
-            //如果是分配任务
+            //如果是分配任务/或者协同任务
             if (projectTask.getType() == 6) {
                 //类型为0,需要完成任务
                 if (type == 0) {
@@ -699,6 +706,25 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                     }
                 }
             }
+            //处理协同任务完成
+            else if (projectTask.getType() == 4) {
+                //获得请求人
+                PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+                if (type == 0) {
+                    //判断请求人是否为创建人
+                    if (personnelVO.getId() != null && personnelVO.getId().equals(projectTask.getCreateId())) {
+                        projectTask.setStatus(3);
+                        projectTask.updateById();
+                    } else {
+                        projectTask.setStatus(6);
+                        projectTask.updateById();
+                    }
+                } else if (type == 1) {
+                    projectTask.setStatus(5);
+                    projectTask.updateById();
+                }
+
+            }
         } else {
             throw new XiaoShiException("该任务不存在");
         }
@@ -832,6 +858,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
     /**
      * 根据任务id查询专利号
+     *
      * @param taskId
      * @return
      */
@@ -1135,6 +1162,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                 assoTaskField.setProjectId(projectId);
                 assoTaskFields.add(assoTaskField);
             });
+
         }
         assoTaskFieldService.saveBatch(assoTaskFields);
     }

+ 4 - 1
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -211,7 +211,7 @@ public class EsPatentService {
      * @return
      * @throws Exception
      */
-    public List<Patent> getPatentsByNo(List<String> patentNos,Boolean ifGetAll) throws Exception {
+    public List<Patent> getPatentsByNo(List<String> patentNos,Boolean ifGetAll,Long current,Long size) throws Exception {
         List<Patent> patentList = new ArrayList<>();
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
@@ -234,6 +234,9 @@ public class EsPatentService {
                     .filter(fieldSourceBuilder -> fieldSourceBuilder
                             .includes(reSources)));
         }
+        if (current > 0 && size > 0&&current!=null&&size!=null) {
+            builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
+        }
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
         List<Hit<Patent>> hits = response.hits().hits();
         if (hits != null && hits.size() > 0) {

+ 69 - 0
src/main/java/cn/cslg/pas/service/business/es/EsQuotePatentService.java

@@ -0,0 +1,69 @@
+package cn.cslg.pas.service.business.es;
+
+import cn.cslg.pas.domain.es.FamilyPatent;
+import cn.cslg.pas.domain.es.PatentFamilyMessage;
+import cn.cslg.pas.domain.es.PatentQuoteMessage;
+import cn.cslg.pas.domain.es.QuotePatent;
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.elasticsearch.core.SearchRequest;
+import co.elastic.clients.elasticsearch.core.SearchResponse;
+import co.elastic.clients.elasticsearch.core.search.Hit;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class EsQuotePatentService {
+    private final ElasticsearchClient client;
+
+    //根据专利号查询同族专利号
+    public  Map<String, Object> getEsQutePatentByNos(String patentNo) throws Exception {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("quote_patent");
+        List<Query> querys = new ArrayList<>();
+
+        Query q1 = QueryBuilders.term(t -> t.field("patent.app_no.keyword").value(patentNo));
+        //公开号
+        Query q2 = QueryBuilders.term(t -> t.field("patent.public_no.keyword").value(patentNo));
+        //授权号
+        Query q3 = QueryBuilders.term(t -> t.field("patent.grant_no.keyword").value(patentNo));
+        Query query = QueryBuilders.bool(i -> i.should(q1, q2, q3));
+
+        builder.query(query);
+        SearchResponse<PatentQuoteMessage> response = client.search(builder.build(), PatentQuoteMessage.class);
+        List<Hit<PatentQuoteMessage>> hits = response.hits().hits();
+        Map<String, Object> reQuotePatent = new HashMap<>();
+        if(hits.size()<=0){
+            return reQuotePatent;
+        }
+         Hit<PatentQuoteMessage> hit  =hits.get(0);
+            PatentQuoteMessage quoteMessage = hit.source();
+            List<QuotePatent> patentList = quoteMessage.getQuotedPatents();
+            if (!CollectionUtils.isEmpty(patentList)) {
+                List<String> nos = new ArrayList<>();
+                patentList.forEach(item -> {
+                    if (item.getGrantNo() != null && !item.getGrantNo().trim().equals("")) {
+                        nos.add(item.getGrantNo());
+                    } else if (item.getPublicNo() != null && !item.getPublicNo().trim().equals("")) {
+                        nos.add(item.getPublicNo());
+                    } else if (item.getAppNo() != null && !item.getAppNo().trim().equals("")) {
+                        nos.add(item.getAppNo());
+                    }
+                });
+                reQuotePatent.put("nos", nos);
+                reQuotePatent.put("id", hit.id());
+            }
+        return reQuotePatent;
+    }
+
+}

+ 11 - 4
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -204,9 +204,9 @@ public class EsService {
 //        }
 
         //分页
-//        if (current > 0 && size > 0) {
-//            builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
-//        }
+        if (current > 0 && size > 0) {
+            builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
+        }
 
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
         List<PatentColumnDTO> list = new ArrayList<>();
@@ -774,7 +774,10 @@ public class EsService {
             }
             quotePatent.setRightHolder(patentPeople);
         }
+
         quotePatent.setAppNo(starPatentVO.getApplicationNo());
+        quotePatent.setGrantNo(starPatentVO.getPublicAccreditNo());
+        quotePatent.setPublicNo(starPatentVO.getPublicNo());
         return quotePatent;
     }
 
@@ -796,7 +799,9 @@ public class EsService {
             builder.index("legal_event");
             //申请号
             Query q1 = QueryBuilders.term(t -> t.field("app_no").value(starPatentVO.getApplicationNo()));
-            Query bool = QueryBuilders.bool(i -> i.must(q1));
+            Query q2 =QueryBuilders.term((t->t.field("grant_no").value(starPatentVO.getPublicAccreditNo())));
+            Query q3 =QueryBuilders.term((t->t.field("public_no").value(starPatentVO.getPublicNo())));
+            Query bool = QueryBuilders.bool(i -> i.should(q1,q2,q3));
             builder.query(bool);
             SearchResponse<LegalEvent> response = null;
             try {
@@ -820,6 +825,8 @@ public class EsService {
                         legalEvent1.setEventDate(item.getLegalDate());
                         legalEvent1.setCode(item.getLegalCode());
                         legalEvent1.setAppNo(starPatentVO.getApplicationNo());
+                        legalEvent1.setGrantNo(starPatentVO.getPublicAccreditNo());
+                        legalEvent1.setPublicNo(starPatentVO.getPublicNo());
                         legalEvent1.setDescription(item.getLegalStatusInfo());
                         legalEvent1.setName(item.getLegalStatus());
                         try {

+ 36 - 1
src/main/java/cn/cslg/pas/service/common/FileManagerService.java

@@ -175,6 +175,41 @@ public class FileManagerService {
     /**
      * 调用文件系统上传文件接口
      *
-     * @param files 文件
+
      */
+    public String uploadFile2(List<File> files) throws IOException {
+
+        MultipartBody.Builder multipartBodyBuilder = new MultipartBody.Builder()
+                .setType(MultipartBody.FORM);
+        for (File file : files) {
+            //根据文件名获取文件的MIME类型
+            String mimeType = getMimeType(file.getPath());
+            multipartBodyBuilder.addFormDataPart("files", file.getName(), RequestBody.create(MediaType.parse(mimeType), file));
+        }
+        RequestBody requestBody = multipartBodyBuilder
+                .addFormDataPart("sourceId", String.valueOf(FileSource))
+                .build();
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(FMSUrl + "/fileManager/uploadNormalFile")
+                .post(requestBody)
+                .build();
+        Response response = null;
+        response = okHttpClient.newCall(request).execute();
+        // 最后记得删除临时文件
+        for (File file : files) {
+            FileUtils.deleteQuietly(file);
+        }
+        return Objects.requireNonNull(response.body()).string();
+    }
+    public List<String> uploadFileGetGuid2(List<File> files) throws IOException {
+        String res= this.uploadFile2(files);
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        List<String> guids = JSONArray.parseArray(jsonObject.get("data").toString(), String.class);
+        return guids;
+    }
 }

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

@@ -114,14 +114,14 @@ public class GetCataloguingFromWebThread extends Thread {
                 }
 //
 //                //添加法律事务
-//                esService.addEsLegalEvent(uploadPatentWebDTO.getStarPatentVO().getPublicNo());
+                esService.addEsLegalEvent(uploadPatentWebDTO.getStarPatentVO().getPublicNo());
 //
 //                //添加引用专利
-//                String nos = starPatentVO.getQuoteNos();
-//                if (nos != null) {
-//                    List<String> quotedNos = this.reQuotedNos(nos);
-//                    esService.addEsQuotePatent(uploadPatentWebDTO.getPatent().getPublicNo(), quotedNos);
-//                }
+                String nos = starPatentVO.getQuoteNos();
+                if (nos != null) {
+                    List<String> quotedNos = this.reQuotedNos(nos);
+                    esService.addEsQuotePatent(uploadPatentWebDTO.getPatent().getPublicNo(), quotedNos);
+                }
                 //加入es保存队列
                 importFromWebToEsService.loadPatentMessageDone(uploadPatentWebDTO);
             } catch (Exception e) {

+ 1 - 0
src/main/java/cn/cslg/pas/service/importPatent/GetPatentFromExcelThread.java

@@ -75,6 +75,7 @@ public class GetPatentFromExcelThread extends Thread {
                 uploadPatentWebDTO.setPictureData(uploadParamsVO.getPictureData());
                 uploadPatentWebDTO.setPatent(uploadParamsVO.getPatent());
                 //专利丢入消费者队列,并唤醒消费者线程
+
                 savePatentToEsThread.awakeTask(uploadPatentWebDTO.getPatent());
                 getPatentPictureFromExcelThread.awakeTask(uploadPatentWebDTO);
             }

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

@@ -20,6 +20,7 @@ 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.BeanUtils;
 import org.springframework.beans.factory.annotation.Configurable;
 import org.springframework.context.ApplicationContext;
 import org.springframework.mock.web.MockMultipartFile;
@@ -76,8 +77,9 @@ public class GetPatentPictureFromExcelThread extends Thread {
                     taskThread.updateProcess(true,2,"");
                     e.printStackTrace();
                 }
+            }
             taskThread.awakeTaskThread();
-        }
+
     }
 
     public GetPatentPictureFromExcelThread(TaskThread taskThread) {
@@ -88,7 +90,9 @@ public class GetPatentPictureFromExcelThread extends Thread {
     }
 
     public void awakeTask(UploadPatentWebDTO uploadPatentWebDTO) {
-        uploadPatentWebDTOS.add(uploadPatentWebDTO);
+        UploadPatentWebDTO uploadPatentWebDTO1 = new UploadPatentWebDTO();
+        BeanUtils.copyProperties(uploadPatentWebDTO,uploadPatentWebDTO1);
+        uploadPatentWebDTOS.add(uploadPatentWebDTO1);
         if (taskLock.tryLock()) {
             taskCondition.signalAll();
             taskLock.unlock();

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

@@ -13,6 +13,7 @@ private TaskThread taskThread;
     public void startPatentThread() {
         taskThread.getImportTaskAMVO().setShouldSaveCounter(2);
         taskThread.getImportTaskAMVO().setHaveSaveCounter(0);
+
         GetPatentPictureFromExcelThread getPatentPictureFromExcelThread =new GetPatentPictureFromExcelThread(taskThread);
         SavePatentToEsThread savePatentToEsThread = new SavePatentToEsThread(taskThread,taskThread.getApplicationContext());
         GetPatentFromExcelThread getPatentFromExcelThread = new GetPatentFromExcelThread(taskThread, savePatentToEsThread,getPatentPictureFromExcelThread);

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

@@ -126,7 +126,9 @@ public class SavePatentToEsThread extends Thread {
     }
 
     public void awakeTask(Patent patent) {
-        patents.add(patent);
+        Patent patent1 =new Patent();
+        BeanUtils.copyProperties(patent,patent1);
+        patents.add(patent1);
         if (taskLock.tryLock()) {
             taskCondition.signalAll();
             taskLock.unlock();

+ 5 - 3
src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java

@@ -50,7 +50,10 @@ public class TaskThread extends Thread {
         this.importTaskAMVO = importTaskAMVO;
         //十进制转二进制
         String imContents = "0000";
-        if (!importTaskAMVO.getImportContent().equals(0)) {
+        //当任务为
+        if(importTaskAMVO.getType().equals(1))
+        {   imContents = "1100";}
+      else  if (!importTaskAMVO.getImportContent().equals(0)) {
             imContents = MathUtils.fun(2, importTaskAMVO.getImportContent());
         }
         //下载字段
@@ -63,12 +66,11 @@ public class TaskThread extends Thread {
         importTaskAMVO.setIfAddPicture(ifAddPicture);
         importTaskAMVO.setIfAddFullText(ifFullText);
         importTaskAMVO.setIfAddPDF(ifPdf);
-        importTaskAMVO.setPatentMessageShouldSaveCounter(2);
         importTaskAMVO.setHaveSaveCounter(0);
-        importTaskAMVO.setShouldSaveCounter(0);
         importTaskAMVO.setHaveSaveMessageCounter(0);
         Integer shouldSaveCount = 0;
         Integer messageShouldSaveCount = 0;
+
         if (ifAddPicture == '1') {
             shouldSaveCount += 1;
             this.patentProcess.setPictureDoneNum(0);

+ 1 - 1
src/test/java/cn/cslg/pas/service/EsPatentServiceTests.java

@@ -39,7 +39,7 @@ public class EsPatentServiceTests {
         List<String> patentNos =new ArrayList<>();
         patentNos.add("CN201910069334.7");
         patentNos.add("CN201110286649.0");
-        esPatentService.getPatentsByNo(patentNos,true);
+        esPatentService.getPatentsByNo(patentNos,true,null,null);
     }
     @Test
     public  void getFamilys() throws Exception{

+ 51 - 0
src/test/java/cn/cslg/pas/service/EsQuotePatentTests.java

@@ -0,0 +1,51 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.dto.es.EsCustomFieldDTO;
+import cn.cslg.pas.common.vo.PatentWithIdVO;
+import cn.cslg.pas.domain.es.ESCustomField;
+import cn.cslg.pas.service.business.es.EsCustomFieldService;
+import cn.cslg.pas.service.business.es.EsQuotePatentService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.*;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/11/16
+ */
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class EsQuotePatentTests {
+    @Autowired
+    private EsQuotePatentService esQuotePatentService;
+
+    @Test
+    public void addEsCustomField() throws Exception {
+        String patentNo = "CN201910069334.7";
+    Map<String,Object> map = esQuotePatentService.getEsQutePatentByNos(patentNo);
+    System.out.println(map);
+    }
+
+    @Test
+    public void getEsCustomField() throws Exception {
+    }
+
+    @Test
+    public void getTree() {
+        List<String> a = new ArrayList<>();
+        a.add("s");
+        a.removeAll(new ArrayList<>());
+        System.out.println(
+                a
+        );
+    }
+
+    @Test
+    public void getBackTo() throws Exception {
+        System.out.println("a");
+    }
+}

+ 2 - 2
src/test/java/cn/cslg/pas/service/FTOCompareRecordServiceTests.java

@@ -33,7 +33,7 @@ public class FTOCompareRecordServiceTests {
 
     @Test
     public void getComparedPatent() throws Exception {
-        List<ComparedPatentVO> comparedPatentVOS =ftoCompareRecordService.getComparedPatent(101,3);
-        System.out.println(comparedPatentVOS);
+//        List<ComparedPatentVO> comparedPatentVOS =ftoCompareRecordService.getComparedPatent(101,3);
+//        System.out.println(comparedPatentVOS);
     }
 }