ソースを参照

20240929 添加查新对比记录

lwhhszx 11 ヶ月 前
コミット
c4f2e2436d

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

@@ -10,6 +10,7 @@ import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.ImportTaskAMVO;
 import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
 import cn.cslg.pas.common.vo.PatentWithIdVO;
 import cn.cslg.pas.common.vo.WebSocketMessageVO;
@@ -721,4 +722,13 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
         compareLiterature.updateById();
         return compareLiterature;
     }
+
+
+    public void addCompareLiteratureToProject(ImportTaskAMVO importTaskAMVO,Patent patent){
+        if (importTaskAMVO.getProjectType() != null && (importTaskAMVO.getProjectType().equals(1)||importTaskAMVO.getProjectType().equals(4))) {
+            if (importTaskAMVO.getReportType()==null||importTaskAMVO.getReportType().equals(7) || importTaskAMVO.getReportType().equals(1) || importTaskAMVO.getReportType().equals(2)||importTaskAMVO.getProjectType().equals(4)) {
+                this.addPatentCompareLiterature(patent, importTaskAMVO.getProjectId(), importTaskAMVO.getCreateId());
+            }
+        }
+    }
 }

+ 76 - 27
src/main/java/cn/cslg/pas/service/business/ProjectService.java

@@ -6,9 +6,11 @@ import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.vo.ImportTaskAMVO;
 import cn.cslg.pas.common.vo.PatentWithIdVO;
 import cn.cslg.pas.domain.business.AssoProjectPerson;
 import cn.cslg.pas.domain.business.Project;
+import cn.cslg.pas.domain.business.ReportProject;
 import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.domain.es.PatentJoin;
 import cn.cslg.pas.mapper.ProjectMapper;
@@ -43,7 +45,11 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
     @Autowired
     private EsPatentService esPatentService;
     @Autowired
-    private EsService esService;
+    @Lazy
+    private CompareLiteratureService compareLiteratureService;
+    @Autowired
+    @Lazy
+    private ReportProjectService reportProjectService;
 
     public Optional<Project> getByIdOpt(Integer id) {
         Project project = projectMapper.selectById(id);
@@ -96,36 +102,71 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
 
     /**
      * 复制专利到另一个报告或专题库
+     *
      * @param addProjectPatentToReportDTO
      */
     public void addProjectPatentToReport(AddProjectPatentToReportDTO addProjectPatentToReportDTO) {
-
         //查询专利号
         StringRequest stringRequest = addProjectPatentToReportDTO.getStringRequest();
         Integer toProjectId = addProjectPatentToReportDTO.getToProjectId();
         List<String> notInNos = addProjectPatentToReportDTO.getIsDelete();
-     Long startNum =addProjectPatentToReportDTO.getStartNumber();
-     Long endNum =addProjectPatentToReportDTO.getEndNumber();
+        Long startNum = addProjectPatentToReportDTO.getStartNumber();
+        Long endNum = addProjectPatentToReportDTO.getEndNumber();
         List<PatentNoWithIdVO> patentWithIdVOS = new ArrayList<>();
         List<String> InPatentNos = addProjectPatentToReportDTO.getIsAdd();
+
+        Project project = this.getById(toProjectId);
+        Integer projectType = project.getType();
+        Integer reportType = null;
+        if (projectType.equals(2)) {
+            LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(ReportProject::getProjectId, project);
+            ReportProject reportProject = reportProjectService.getOne(queryWrapper);
+            reportType = reportProject.getReportType();
+        }
         try {
-            patentWithIdVOS = esPatentService.getPatentIdsWithNotNo(stringRequest, notInNos,startNum,endNum);
+            patentWithIdVOS = esPatentService.getPatentIdsWithNotNo(stringRequest, notInNos, startNum, endNum);
+
             if (patentWithIdVOS != null && patentWithIdVOS.size() > 0) {
-                this.addAssoToEs(patentWithIdVOS, toProjectId);
+
+                if (reportType != null || (projectType.equals(4))) {
+                    ImportTaskAMVO importTaskAMVO =new ImportTaskAMVO();
+                    PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
+                    importTaskAMVO.setCreateId(personnelVO.getId());
+                    importTaskAMVO.setReportType(reportType);
+                    importTaskAMVO.setProjectType(projectType);
+                    importTaskAMVO.setProjectId(toProjectId);
+                    this.addAssoToCompareFile(patentWithIdVOS,importTaskAMVO);
+                }
+                else {
+                    this.addAssoToEs(patentWithIdVOS, toProjectId);
+                }
             }
 
-            if(InPatentNos!=null&&InPatentNos.size()>0){
-                List<PatentNoWithIdVO> patentNoWithIdVOS =new ArrayList<>();
-                InPatentNos.forEach(item->{
-                    PatentNoWithIdVO patentNoWithIdVO =new PatentNoWithIdVO();
+            if (InPatentNos != null && InPatentNos.size() > 0) {
+                List<PatentNoWithIdVO> patentNoWithIdVOS = new ArrayList<>();
+                InPatentNos.forEach(item -> {
+                    PatentNoWithIdVO patentNoWithIdVO = new PatentNoWithIdVO();
                     patentNoWithIdVO.setPatentNo(item);
                     patentNoWithIdVOS.add(patentNoWithIdVO);
                 });
-                this.addAssoToEs(patentNoWithIdVOS,toProjectId);
+                if (reportType != null || (projectType.equals(4))) {
+                    ImportTaskAMVO importTaskAMVO =new ImportTaskAMVO();
+                    PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
+                    importTaskAMVO.setCreateId(personnelVO.getId());
+                    importTaskAMVO.setReportType(reportType);
+                    importTaskAMVO.setProjectType(projectType);
+                    importTaskAMVO.setProjectId(toProjectId);
+                    this.addAssoToCompareFile(patentWithIdVOS,importTaskAMVO);
+                }
+                else {
+                    this.addAssoToEs(patentNoWithIdVOS, toProjectId);
+
+                }
             }
 
         } catch (Exception e) {
-e.printStackTrace();
+            e.printStackTrace();
         }
 
     }
@@ -133,6 +174,7 @@ e.printStackTrace();
 
     /**
      * 添加报告或专题库与专利关联
+     *
      * @param patentWithIdVOS
      * @param projectId
      * @throws Exception
@@ -144,22 +186,30 @@ e.printStackTrace();
             patentWithIdVOS.forEach(item -> {
                 if (item != null) {
                     try {
-                        String id = item.getId();
-                        if(id==null){
-                         PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(item.getPatentNo());
-                         id =patentWithIdVO.getId();
-                        }
-                        Boolean ifInproject = esService.searchPatent(id, projectId);
-                        if (!ifInproject && id != null && !id.trim().equals("")) {
-                            Patent patent = new Patent();
-                            PatentJoin patentJoin = new PatentJoin();
-                            patentJoin.setParent(id);
-                            patentJoin.setName("project");
-                            patent.setPatentJoin(patentJoin);
-                            patent.setProjectId(projectId);
-                            esService.addChildPatent(patent, id);
+                        PatentNoWithIdVO patentNoWithIdVO = esPatentService.addPatentToProject(item, projectId);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            });
+        }
+    }
 
+
+    private void addAssoToCompareFile(List<PatentNoWithIdVO> patentWithIdVOS, ImportTaskAMVO importTaskAMVO) throws Exception {
+        if (patentWithIdVOS == null || patentWithIdVOS.size() == 0) {
+            return;
+        } else {
+            patentWithIdVOS.forEach(item -> {
+                if (item != null) {
+                    try {
+                        PatentNoWithIdVO patentNoWithIdVO = esPatentService.addPatentToProject(item, importTaskAMVO.getProjectId());
+                        List<Patent> patentList = esPatentService.getPatentsByNo(Arrays.asList(patentNoWithIdVO.getPatentNo()), false, null, null);
+                        if (patentList != null && patentList.size() > 0) {
+                            Patent patent = patentList.get(0);
+                            compareLiteratureService.addCompareLiteratureToProject(importTaskAMVO,patent);
                         }
+
                     } catch (Exception e) {
                         e.printStackTrace();
                     }
@@ -167,7 +217,6 @@ e.printStackTrace();
             });
         }
     }
-
 }
 
 

+ 32 - 0
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -26,6 +26,8 @@ import cn.cslg.pas.common.vo.business.PatentNoVO;
 import cn.cslg.pas.common.vo.business.SelectProductVO;
 import cn.cslg.pas.common.vo.es.EsPatentCommonVO;
 import cn.cslg.pas.domain.es.*;
+import cn.cslg.pas.exception.ExceptionEnum;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.ProductCategoryMapper;
 import cn.cslg.pas.mapper.ProductMapper;
 import cn.cslg.pas.service.business.CommonService;
@@ -867,4 +869,34 @@ public class EsPatentService {
         return projectIds;
 
     }
+
+
+
+    public PatentNoWithIdVO addPatentToProject(PatentNoWithIdVO patentWithIdVO, Integer projectId) {
+
+        try {
+
+
+            String patentId = patentWithIdVO.getId();
+            if(patentId==null){
+                PatentWithIdVO patentWithIdVO1 = esService.getIdByPatentNo(patentWithIdVO.getPatentNo());
+                patentId =patentWithIdVO1.getId();
+            }
+            Boolean ifInproject = esService.searchPatent(patentId, projectId);
+            if (!ifInproject) {
+                Patent patentChild = new Patent();
+                PatentJoin patentJoin = new PatentJoin();
+                patentJoin.setParent(patentId);
+                patentJoin.setName("project");
+                patentChild.setPatentJoin(patentJoin);
+                patentChild.setProjectId(projectId);
+                esService.addChildPatent(patentChild, patentId);
+
+            }
+            return patentWithIdVO;
+        } catch (Exception e) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, e.getMessage());
+        }
+
+    }
 }

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

@@ -133,12 +133,9 @@ public class SavePatentToEsThread extends Thread {
                         }
 
                         //添加报告对比文件
-                        if (importTaskAMVO.getProjectType() != null && (importTaskAMVO.getProjectType().equals(1)||importTaskAMVO.getProjectType().equals(3))) {
-                            if (importTaskAMVO.getReportType()==null||importTaskAMVO.getReportType().equals(7) || importTaskAMVO.getReportType().equals(1) || importTaskAMVO.getReportType().equals(2)||importTaskAMVO.getProjectType().equals(3)) {
-                                CompareLiteratureService compareLiteratureService = applicationContext.getBean(CompareLiteratureService.class);
-                                compareLiteratureService.addPatentCompareLiterature(patent, importTaskAMVO.getProjectId(), importTaskAMVO.getCreateId());
-                            }
-                        }
+                        CompareLiteratureService compareLiteratureService = applicationContext.getBean(CompareLiteratureService.class);
+                        compareLiteratureService.addCompareLiteratureToProject(importTaskAMVO,patent);
+
 
                     }
                     //和任务关联

+ 40 - 0
src/test/java/cn/cslg/pas/novelty/NoveltyTransformProjectTest.java

@@ -0,0 +1,40 @@
+package cn.cslg.pas.novelty;
+
+import cn.cslg.pas.common.dto.NoveltyProjectDTO.NoveltyReportReferenceDTO;
+import cn.cslg.pas.common.model.addPatentToReport.AddProjectPatentToReportDTO;
+import cn.cslg.pas.service.business.ProjectService;
+import com.alibaba.fastjson.JSONObject;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+public class NoveltyTransformProjectTest {
+    @Autowired
+    private ProjectService projectService;
+
+    @Test
+    public void transFormProject() throws Exception {
+
+        String jsons = "{\n" +
+                "  \"stringRequest\": {\n" +
+                "    \"projectId\": \"494\",\n" +
+                "    \"searchQuery\": \"\",\n" +
+                "    \"customFields\": [],\n" +
+                "    \"orderDTOList\": [],\n" +
+                "    \"groupField\": \"0\"\n" +
+                "  },\n" +
+                "  \"fromProjectId\": \"494\",\n" +
+                "  \"startNumber\": 1,\n" +
+                "  \"endNumber\": 5,\n" +
+                "  \"toProjectId\": \"553\",\n" +
+                "  \"isAdd\": [],\n" +
+                "  \"isDelete\": []\n" +
+                "}";
+        AddProjectPatentToReportDTO addProjectPatentToReportDTO = JSONObject.parseObject(jsons, AddProjectPatentToReportDTO.class);
+        addProjectPatentToReportDTO.setToProjectId(552);
+
+        projectService.addProjectPatentToReport(addProjectPatentToReportDTO);
+    }
+
+}