Explorar o código

20250214 审核任务

lrj hai 7 meses
pai
achega
c7b039d500
Modificáronse 37 ficheiros con 2705 adicións e 271 borrados
  1. 1 0
      src/main/java/cn/cslg/pas/common/dto/business/PatentDigProjectDTO.java
  2. 1 0
      src/main/java/cn/cslg/pas/common/model/projectTask/GetExamineHistoryDTO.java
  3. 1 0
      src/main/java/cn/cslg/pas/common/model/projectTask/TaskFormDTO.java
  4. 1 1
      src/main/java/cn/cslg/pas/common/model/projectTask/TaskResultVO.java
  5. 5 3
      src/main/java/cn/cslg/pas/common/vo/business/PatentDigProjectFilesVO.java
  6. 1 2
      src/main/java/cn/cslg/pas/controller/PatentDigProjectFilesController.java
  7. 1 1
      src/main/java/cn/cslg/pas/controller/novelty/NoveltyReportReferenceController.java
  8. 2 1
      src/main/java/cn/cslg/pas/controller/projectTask/ExamineController.java
  9. 2 0
      src/main/java/cn/cslg/pas/domain/business/PatentDigProjectFiles.java
  10. 177 0
      src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetCommonTempalte.java
  11. 211 0
      src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetDahuaTempalte.java
  12. 216 0
      src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetShenNanTempalte.java
  13. 24 0
      src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetTemplateMapsImp.java
  14. 212 0
      src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetVisionoxTempalte.java
  15. 211 0
      src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetVisionoxcxTempalte.java
  16. 214 0
      src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetaiqijiTempalte.java
  17. 216 0
      src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetlingpaoTempalte.java
  18. 279 0
      src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetningdeTempalte.java
  19. 246 0
      src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetshidaixinganTempalte.java
  20. 27 0
      src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/NoveltyTempalteUtil.java
  21. 42 0
      src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/NoveltyTemplateFactory.java
  22. 1 4
      src/main/java/cn/cslg/pas/service/business/AssoTaskFileService.java
  23. 61 23
      src/main/java/cn/cslg/pas/service/business/PatentDigProjectFilesService.java
  24. 110 111
      src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java
  25. 137 64
      src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java
  26. 155 29
      src/main/java/cn/cslg/pas/service/business/TaskHandleResultService.java
  27. 10 10
      src/main/java/cn/cslg/pas/service/business/TechnicalCaseService.java
  28. 1 0
      src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java
  29. 92 6
      src/main/java/cn/cslg/pas/service/novelty/NoveltyReportReferencesService.java
  30. 36 13
      src/main/java/cn/cslg/pas/service/novelty/NoveltySearchRecordService.java
  31. BIN=BIN
      src/main/resources/file/reportTemple/noveltyTemplate-aiqiji.docx
  32. BIN=BIN
      src/main/resources/file/reportTemple/noveltyTemplate-dahua.docx
  33. BIN=BIN
      src/main/resources/file/reportTemple/noveltyTemplate-lingpao.docx
  34. BIN=BIN
      src/main/resources/file/reportTemple/noveltyTemplate-ningde.docx
  35. BIN=BIN
      src/main/resources/file/reportTemple/noveltyTemplate-shennan.docx
  36. BIN=BIN
      src/main/resources/file/reportTemple/noveltyTemplate-shidaixinan.docx
  37. 12 3
      src/test/java/cn/cslg/pas/test/PersonFiledTests.java

+ 1 - 0
src/main/java/cn/cslg/pas/common/dto/business/PatentDigProjectDTO.java

@@ -21,6 +21,7 @@ import java.util.List;
 /*数据库中的表对应的类
  */
 public class PatentDigProjectDTO {
+    private Integer id;
     /**
      * 名称
      */

+ 1 - 0
src/main/java/cn/cslg/pas/common/model/projectTask/GetExamineHistoryDTO.java

@@ -6,5 +6,6 @@ import lombok.Data;
 public class GetExamineHistoryDTO {
     private Integer taskId;
     private String fileGuid;
+    private Boolean ifGetLast;
 
 }

+ 1 - 0
src/main/java/cn/cslg/pas/common/model/projectTask/TaskFormDTO.java

@@ -22,4 +22,5 @@ public class TaskFormDTO {
     private String description;
     private Integer lastTaskId;
     private Integer taskType;
+    private Integer assoTaskId;
 }

+ 1 - 1
src/main/java/cn/cslg/pas/common/model/projectTask/TaskResultVO.java

@@ -9,6 +9,7 @@ import java.util.List;
 
 @Data
 public class TaskResultVO {
+    private Integer status;
     /**
      * 任务处理结果
      */
@@ -30,7 +31,6 @@ public class TaskResultVO {
     private Boolean ifInner;
 
 
-
     /**
      * 任务id
      */

+ 5 - 3
src/main/java/cn/cslg/pas/common/vo/business/PatentDigProjectFilesVO.java

@@ -85,9 +85,11 @@ public class PatentDigProjectFilesVO {
 
     /**
      * 来源:1 PatentDigProjectFiles
-     *      2 AssoHandleResultFile
-     *      3 AssoProjectFile
-     *      4 AssoTaskFile
+     * 2 AssoHandleResultFile
+     * 3 AssoProjectFile
+     * 4 AssoTaskFile
      */
     private Integer source;
+    private String handleResult;
+    private Integer status;
 }

+ 1 - 2
src/main/java/cn/cslg/pas/controller/PatentDigProjectFilesController.java

@@ -33,7 +33,6 @@ import java.util.Map;
 public class PatentDigProjectFilesController {
     @Autowired
     private BusinessFactory businessFactory;
-
     @Autowired
     private PatentDigProjectFilesService patentDigProjectFilesService;
 
@@ -72,7 +71,7 @@ public class PatentDigProjectFilesController {
 
     @Operation(summary = "上传文件后的提交审核")
     @PostMapping("/addPDProjectFilesTask")
-    public Response addPDProjectFilesTask(@RequestBody PatentDigProjectFilesDTO patentDigProjectFilesDTO){
+    public Response addPDProjectFilesTask(@RequestBody PatentDigProjectFilesDTO patentDigProjectFilesDTO) throws Exception{
         Integer taskId = patentDigProjectFilesService.addPDProjectFilesTask(patentDigProjectFilesDTO);
         return Response.success(taskId);
     }

+ 1 - 1
src/main/java/cn/cslg/pas/controller/novelty/NoveltyReportReferenceController.java

@@ -35,7 +35,7 @@ public class NoveltyReportReferenceController {
     @Operation(summary = "添加或编辑查新报告文档")
     @PostMapping("/edit")
     public Response edit(@RequestBody NoveltyReportReferenceDTO noveltyCompareRecordDTO)throws Exception{
-      Integer id=  noveltyReportReferencesService.addOrUpdate(noveltyCompareRecordDTO);
+      Integer id=  noveltyReportReferencesService.addOrUpdate2(noveltyCompareRecordDTO);
         return Response.success(id);
     }
 

+ 2 - 1
src/main/java/cn/cslg/pas/controller/projectTask/ExamineController.java

@@ -43,6 +43,7 @@ public class ExamineController {
     @Operation(summary = "添加文件审核任务")
     @PostMapping("/addFileExamineTask")
     public Response addFileExamineTask(@RequestBody AddFileExamineTaskDTO addFileExamineTaskDTO) {
+         addFileExamineTaskDTO.getTaskForm().setTaskType(7);
         Integer id = projectTaskService.addFileExamineTask(addFileExamineTaskDTO);
         return Response.success(id);
     }
@@ -64,7 +65,7 @@ public class ExamineController {
 
     @Operation(summary = "提交结果")
     @PostMapping("/submitResult")
-    public Response submitResult(@RequestBody SubmitResultDTO submitResultDTO) throws IOException {
+    public Response submitResult(@RequestBody SubmitResultDTO submitResultDTO) throws Exception {
         Integer id = taskHandleResultService.addTaskAuditResult(submitResultDTO);
         return Response.success(id);
     }

+ 2 - 0
src/main/java/cn/cslg/pas/domain/business/PatentDigProjectFiles.java

@@ -85,5 +85,7 @@ public class PatentDigProjectFiles extends BaseEntity<PatentDigProjectFiles> {
      */
     @TableField(value = "create_time")
     private Date createTime;
+    @TableField(value = "handle_result")
+    private String handleResult;
 
 }

+ 177 - 0
src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetCommonTempalte.java

@@ -0,0 +1,177 @@
+package cn.cslg.pas.factorys.noveltyTemplateFacotry;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.common.vo.TechnicalCaseVO;
+import cn.cslg.pas.domain.es.PatentClassify;
+import cn.cslg.pas.domain.es.PatentPerson;
+import cn.cslg.pas.factorys.PatentExportFactory.GetValueImp;
+import cn.cslg.pas.service.novelty.NoveltySearchRecordService;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Field;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author lrj
+ * @Date 2025/02/20
+ */
+@Component
+public class GetCommonTempalte implements GetTemplateMapsImp {
+    public  Map<String,Object> getMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs,TechnicalCaseVO technicalCaseVO,List<CompareLiteratureVO> compareLiteratureVOS,List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS,List<RetrieveRecordVO> retrieveRecordVOS){
+        Map<String,Object> map =new HashMap<>();
+        Map<String, Object> baseMap = this.getBaseMap(queryNoveltyProjectVOs);
+        Map<String, Object> technicalCaseMap = this.getTechnicalCaseMap(technicalCaseVO);
+        List<Map<String, Object>> compareLiteratureMap = this.getCompareLiteratureMap(compareLiteratureVOS);
+        List<Map<String, Object>> compareRecordMap = this.getCompareRecordMap(noveltyCompareRecordQueryVOS, compareLiteratureVOS);
+        List<Map<String, Object>> searchRecordMap = this.getSearchRecordMap(retrieveRecordVOS);
+        map.put("baseMessage", baseMap);
+        map.put("technicalCase", technicalCaseMap);
+        map.put("compareLiterature", compareLiteratureMap);
+        map.put("compareRecord", compareRecordMap);
+        map.put("searchRecord", searchRecordMap);
+        return map;
+    }
+    @Override
+    public Map<String, Object> getTechnicalCaseMap(TechnicalCaseVO technicalCaseVO) {
+        Map<String, Object> technicalMap = new HashMap<>();
+        technicalMap.put("inventionPoint", technicalCaseVO.getInventionPoint());
+        List<SystemFile> systemFileList = technicalCaseVO.getSystemFileList();
+        if (systemFileList != null && systemFileList.size() != 0) {
+            List<String> fileGuids = systemFileList.stream().map(SystemFile::getGuid).collect(Collectors.toList());
+            technicalMap.put("picture", fileGuids);
+        }
+        return technicalMap;
+    }
+
+    @Override
+    public Map<String, Object> getBaseMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs) {
+        Map<String, Object> baseMap = new HashMap<>();
+        if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) {
+            return baseMap;
+        }
+        QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0);
+        baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact());
+        baseMap.put("applicants", queryNoveltyProjectVO.getApplicants());
+        baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber());
+        baseMap.put("caseName", queryNoveltyProjectVO.getCaseName());
+        baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact());
+        baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit());
+
+        baseMap.put("inventor", queryNoveltyProjectVO.getInventor());
+        baseMap.put("inventorContact", "");
+        baseMap.put("distinguishTechnical", "");
+        baseMap.put("remark", queryNoveltyProjectVO.getRemark());
+        baseMap.put("analyse", "");
+        baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions());
+        baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice());
+        baseMap.put("finalConclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice())));
+
+        return baseMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareLiteratureMap(List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (compareLiteratureVOS != null) {
+            List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+            patentNos.forEach(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("patentNo", item);
+                maps.add(map);
+            });
+        }
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareRecordMap(List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs, List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
+            return maps;
+        }
+        Integer index = 1;
+        for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+            String patentNo = compareLiteratureVO.getLiteratureNo();
+            Map<String, Object> map = new HashMap<>();
+            map.put("index", index);
+            map.put("publicNo", compareLiteratureVO.getPublicNo());
+            List<PatentPerson> patentPeople = compareLiteratureVO.getApplicant();
+
+            if (patentPeople != null && patentPeople.size() > 0) {
+                List<String> names = patentPeople.stream().map(PatentPerson::getName).collect(Collectors.toList());
+                String nameStr = StringUtils.join(names, "、");
+                map.put("applicant", nameStr);
+            }
+
+            Integer temIndex = 1;
+            List<String> contentList = new ArrayList<>();
+            List<NoveltyCompareRecordVO> noveltyCompareRecordVOS = compareLiteratureVO.getNoveltyCompareRecordVOS();
+            if (noveltyCompareRecordVOS != null) {
+                for (NoveltyCompareRecordVO item : noveltyCompareRecordVOS) {
+                    String markText = item.getMarkNoteText();
+                    if (markText != null && !markText.trim().equals("")) {
+                        markText = (temIndex) + "、" + markText;
+                        contentList.add(markText);
+                        temIndex++;
+                    }
+                }
+            }
+
+            List<NoveltyCompareRecordQueryVO> tempRecordVos = noveltyCompareRecordQueryVOs.stream().filter(item -> item.getPatentNo().equals(patentNo)).collect(Collectors.toList());
+            if (tempRecordVos != null && tempRecordVos.size() != 0) {
+                for (int i = 0; i < tempRecordVos.size(); i++) {
+                    NoveltyCompareRecordQueryVO vo = tempRecordVos.get(i);
+                    String markSelectField = vo.getMarkSelectField();
+                    String markSelectText = vo.getMarkSelectText();
+                    String technicalFeature = vo.getTechnicalFeature();
+                    String markNoteText = vo.getMarkNoteText();
+                    StringBuilder stringBuilder = new StringBuilder();
+                    stringBuilder.append(temIndex + "、");
+                    stringBuilder.append(markSelectField);
+                    stringBuilder.append(markSelectText);
+                    if (technicalFeature != null && !technicalFeature.trim().equals("")) {
+                        stringBuilder.append("揭示了" + technicalFeature);
+                    }
+                    stringBuilder.append(markNoteText);
+                    contentList.add(stringBuilder.toString());
+                    temIndex++;
+                }
+
+            }
+            if (contentList.size() > 0) {
+                String content = StringUtils.join(contentList, "<br>");
+                map.put("content", content);
+            }
+            maps.add(map);
+            index++;
+        }
+
+
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSearchRecordMap(List<RetrieveRecordVO> retrieveRecordVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (retrieveRecordVOS != null) {
+            retrieveRecordVOS.forEach(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("conditions", item.getConditions());
+                map.put("dbType", item.getDbType());
+                map.put("totalNum", item.getTotalNum());
+                maps.add(map);
+            });
+        }
+        return maps;
+    }
+}

+ 211 - 0
src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetDahuaTempalte.java

@@ -0,0 +1,211 @@
+package cn.cslg.pas.factorys.noveltyTemplateFacotry;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.common.vo.TechnicalCaseVO;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentPerson;
+import cn.cslg.pas.service.business.es.EsPatentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author lrj
+ * @Date 2025/02/20
+ */
+@Component
+public class GetDahuaTempalte implements GetTemplateMapsImp {
+    @Autowired
+    private EsPatentService esPatentService;
+
+    @Override
+    public Map<String, Object> getMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs, TechnicalCaseVO technicalCaseVO, List<CompareLiteratureVO> compareLiteratureVOS, List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS, List<RetrieveRecordVO> retrieveRecordVOS) {
+        Map<String, Object> map = new HashMap<>();
+        Map<String, Object> baseMap = this.getBaseMap(queryNoveltyProjectVOs);
+        Map<String, Object> technicalCaseMap = this.getTechnicalCaseMap(technicalCaseVO);
+        List<Map<String, Object>> compareLiteratureMap = this.getCompareLiteratureMap(compareLiteratureVOS);
+        List<Map<String, Object>> compareRecordMap = this.getCompareRecordMap(noveltyCompareRecordQueryVOS, compareLiteratureVOS);
+        List<Map<String, Object>> searchRecordMap = this.getSearchRecordMap(retrieveRecordVOS);
+        map.put("baseMessage", baseMap);
+        map.put("technicalCase", technicalCaseMap);
+        map.put("compareLiterature", compareLiteratureMap);
+        map.put("compareRecord", compareRecordMap);
+        map.put("searchRecord", searchRecordMap);
+        return map;
+    }
+
+    @Override
+    public Map<String, Object> getTechnicalCaseMap(TechnicalCaseVO technicalCaseVO) {
+        Map<String, Object> technicalMap = new HashMap<>();
+        technicalMap.put("inventionPoint", technicalCaseVO.getInventionPoint());
+        List<SystemFile> systemFileList = technicalCaseVO.getSystemFileList();
+        if (systemFileList != null && systemFileList.size() != 0) {
+            List<String> fileGuids = systemFileList.stream().map(SystemFile::getGuid).collect(Collectors.toList());
+            technicalMap.put("picture", fileGuids);
+        }
+        technicalMap.put("remark", technicalCaseVO.getRemark());
+        return technicalMap;
+    }
+
+    @Override
+    public Map<String, Object> getBaseMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs) {
+        Map<String, Object> baseMap = new HashMap<>();
+        if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) {
+            return baseMap;
+        }
+        QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0);
+        baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact());
+        baseMap.put("applicants", queryNoveltyProjectVO.getApplicants());
+        baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber());
+        baseMap.put("caseName", queryNoveltyProjectVO.getCaseName());
+        baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact());
+        baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit());
+
+        baseMap.put("inventor", queryNoveltyProjectVO.getInventor());
+        baseMap.put("inventorContact", "");
+        baseMap.put("distinguishTechnical", "");
+        baseMap.put("remark", queryNoveltyProjectVO.getRemark());
+        baseMap.put("analyse", "");
+        baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions());
+        baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice());
+        baseMap.put("finalConclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice())));
+        baseMap.put("ifPatentability", "是");
+        baseMap.put("ipr", queryNoveltyProjectVO.getIpr());
+        if (queryNoveltyProjectVO.getHeadName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getHeadName());
+        } else if (queryNoveltyProjectVO.getCaseName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getCreateName());
+        }
+        return baseMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareLiteratureMap(List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS != null) {
+
+            int index = 1;
+            for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+                String no = compareLiteratureVO.getLiteratureNo();
+                String name = compareLiteratureVO.getName();
+                String content = "对比文件" + index + ":" + no + "-" + name;
+                Map<String, Object> map = new HashMap<>();
+                map.put("content", content);
+                maps.add(map);
+                index++;
+            }
+        }
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareRecordMap(List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs, List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
+            return maps;
+        }
+        List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+        List<Patent> patents = new ArrayList<>();
+        try {
+            patents = esPatentService.getPatentsByNo(patentNos, false, null, null);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Integer index = 1;
+        for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+            String patentNo = compareLiteratureVO.getLiteratureNo();
+            Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(patentNo)).findFirst().orElse(null);
+
+            Map<String, Object> map = new HashMap<>();
+            String name = compareLiteratureVO.getName();
+            String fileName = "对比文件" + index + ":" + patentNo + "-" + name + ":";
+            map.put("compareFile", fileName);
+
+            List<Map<String, Object>> compareMaps = new ArrayList<>();
+            List<NoveltyCompareRecordVO> noveltyCompareRecordVOS = compareLiteratureVO.getNoveltyCompareRecordVOS();
+
+            if (noveltyCompareRecordVOS != null) {
+
+                for (NoveltyCompareRecordVO item : noveltyCompareRecordVOS) {
+                    Map<String, Object> compareMap = new HashMap<>();
+                    String compareText = "";
+                    if (patent != null && patent.getAbstractStr() != null && patent.getAbstractStr().size() > 0) {
+                        compareText = "[摘要原文]" + patent.getAbstractStr().get(0).getTextContent();
+                    }
+                    compareMap.put("compareText", compareText);
+
+                    String markText = item.getMarkNoteText();
+                    if (markText != null && !markText.trim().equals("")) {
+                        compareMap.put("compareDescription", markText);
+                    }
+                    compareMaps.add(compareMap);
+                }
+            }
+
+            List<NoveltyCompareRecordQueryVO> tempRecordVos = noveltyCompareRecordQueryVOs.stream().filter(item -> item.getPatentNo().equals(patentNo)).collect(Collectors.toList());
+            if (tempRecordVos != null && tempRecordVos.size() != 0) {
+                for (int i = 0; i < tempRecordVos.size(); i++) {
+                    Map<String, Object> compareMap = new HashMap<>();
+                    NoveltyCompareRecordQueryVO vo = tempRecordVos.get(i);
+                    String markSelectField = vo.getMarkSelectField();
+                    String markSelectText = vo.getMarkSelectText();
+                    String technicalFeature = vo.getTechnicalFeature();
+                    String markNoteText = vo.getMarkNoteText();
+                    String compareText = "";
+                    compareText = "[" + markSelectField + "]" + markSelectText;
+                    compareMap.put("compareText", compareText);
+                    String compareDescription = markNoteText;
+                    if (technicalFeature != null && !technicalFeature.trim().equals("")) {
+                        compareDescription = compareDescription + "揭示了" + technicalFeature;
+                    }
+                    compareMap.put("compareDescription", compareDescription);
+                    compareMaps.add(compareMap);
+                }
+
+            }
+
+            map.put("compareRecord", compareMaps);
+            maps.add(map);
+            index++;
+        }
+
+
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSearchRecordMap(List<RetrieveRecordVO> retrieveRecordVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (retrieveRecordVOS != null) {
+            retrieveRecordVOS.forEach(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("searchCondition", item.getConditions());
+                String dbType = item.getDbType();
+                if (dbType == null || dbType.trim().equals("")) {
+                    dbType = "小世系统";
+                }
+                String re = NoveltyTempalteUtil.getDbTypes(dbType);
+                if (re == null) {
+                    re = "";
+                }
+                map.put("area", re);
+                map.put("dbType", dbType);
+                map.put("totalNum", item.getTotalNum());
+
+                maps.add(map);
+            });
+        }
+        return maps;
+    }
+}

+ 216 - 0
src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetShenNanTempalte.java

@@ -0,0 +1,216 @@
+package cn.cslg.pas.factorys.noveltyTemplateFacotry;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.DateUtils;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.common.vo.TechnicalCaseVO;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentPerson;
+import cn.cslg.pas.service.business.es.EsPatentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author lrj
+ * @Date 2025/02/20
+ */
+@Component
+public class GetShenNanTempalte implements GetTemplateMapsImp {
+    @Autowired
+    private EsPatentService esPatentService;
+    @Override
+    public  Map<String,Object> getMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs,TechnicalCaseVO technicalCaseVO,List<CompareLiteratureVO> compareLiteratureVOS,List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS,List<RetrieveRecordVO> retrieveRecordVOS){
+        Map<String,Object> map =new HashMap<>();
+        Map<String, Object> baseMap = this.getBaseMap(queryNoveltyProjectVOs);
+        Map<String, Object> technicalCaseMap = this.getTechnicalCaseMap(technicalCaseVO);
+        List<Map<String, Object>> compareLiteratureMap = this.getCompareLiteratureMap(compareLiteratureVOS);
+        List<Map<String, Object>> compareRecordMap = this.getCompareRecordMap(noveltyCompareRecordQueryVOS, compareLiteratureVOS);
+        List<Map<String, Object>> searchRecordMap = this.getSearchRecordMap(retrieveRecordVOS);
+        map.put("baseMessage", baseMap);
+        map.put("technicalCase", technicalCaseMap);
+        map.put("compareLiterature", compareLiteratureMap);
+        map.put("compareRecord", compareRecordMap);
+        map.put("searchRecord", searchRecordMap);
+        return map;
+    }
+    @Override
+    public Map<String, Object> getTechnicalCaseMap(TechnicalCaseVO technicalCaseVO) {
+        Map<String, Object> technicalMap = new HashMap<>();
+        technicalMap.put("inventionPoint", technicalCaseVO.getInventionPoint());
+        List<SystemFile> systemFileList = technicalCaseVO.getSystemFileList();
+        if (systemFileList != null && systemFileList.size() != 0) {
+            List<String> fileGuids = systemFileList.stream().map(SystemFile::getGuid).collect(Collectors.toList());
+            technicalMap.put("picture", fileGuids);
+        }
+        return technicalMap;
+    }
+
+    @Override
+    public Map<String, Object> getBaseMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs) {
+        Map<String, Object> baseMap = new HashMap<>();
+        if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) {
+            return baseMap;
+        }
+        QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0);
+        baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact());
+        baseMap.put("applicants", queryNoveltyProjectVO.getApplicants());
+        baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber());
+        baseMap.put("caseName", queryNoveltyProjectVO.getCaseName());
+        baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact());
+        baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit());
+
+        baseMap.put("inventor", queryNoveltyProjectVO.getInventor());
+        baseMap.put("inventorContact", "");
+        baseMap.put("distinguishTechnical", "");
+        baseMap.put("remark", queryNoveltyProjectVO.getRemark());
+        baseMap.put("analyse", "");
+        baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions());
+        baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice());
+        baseMap.put("conclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice())));
+        baseMap.put("ifPatentability", "是");
+        baseMap.put("ipr", queryNoveltyProjectVO.getIpr());
+        if (queryNoveltyProjectVO.getHeadName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getHeadName());
+        } else if (queryNoveltyProjectVO.getCaseName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getCreateName());
+        }
+        return baseMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareLiteratureMap(List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS != null) {
+
+
+            int index = 1;
+            for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+                String no = compareLiteratureVO.getLiteratureNo();
+                String name = compareLiteratureVO.getName();
+                String content = "对比文件" + index + ":" + no + "-" + name;
+                Map<String, Object> map = new HashMap<>();
+                map.put("content", content);
+                maps.add(map);
+                index++;
+            }
+        }
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareRecordMap(List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs, List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
+            return maps;
+        }
+        List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+        List<Patent> patents = new ArrayList<>();
+        try {
+            patents = esPatentService.getPatentsByNo(patentNos, false, null, null);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Integer index = 1;
+        for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+            Map<String, Object> map = new HashMap<>();
+            String patentNo = compareLiteratureVO.getLiteratureNo();
+            StringBuilder str = new StringBuilder("对比文件");
+            str.append(index);
+            str.append(":");
+            str.append(patentNo);
+            String abstr = "";
+            Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(patentNo)).findFirst().orElse(null);
+            if (patent != null && patent.getTitle() != null && patent.getTitle().size() != 0) {
+                str.append(patent.getTitle().get(0).getTextContent());
+            }
+            str.append("<br>");
+            if (patent != null && patent.getAbstractStr() != null && patent.getAbstractStr().size() > 0) {
+                abstr = "[摘要原文]" + patent.getAbstractStr().get(0).getTextContent();
+            }
+
+
+            List<String> contentList = new ArrayList<>();
+            List<NoveltyCompareRecordVO> noveltyCompareRecordVOS = compareLiteratureVO.getNoveltyCompareRecordVOS();
+            if (noveltyCompareRecordVOS != null) {
+                for (NoveltyCompareRecordVO item : noveltyCompareRecordVOS) {
+                    String markText = item.getMarkNoteText();
+                    String finText = abstr + "(" + markText + ")";
+                    contentList.add(finText);
+                }
+            }
+
+            List<NoveltyCompareRecordQueryVO> tempRecordVos = noveltyCompareRecordQueryVOs.stream().filter(item -> item.getPatentNo().equals(patentNo)).collect(Collectors.toList());
+            if (tempRecordVos != null && tempRecordVos.size() != 0) {
+                for (int i = 0; i < tempRecordVos.size(); i++) {
+                    NoveltyCompareRecordQueryVO vo = tempRecordVos.get(i);
+                    String markSelectField = vo.getMarkSelectField();
+                    String markSelectText = vo.getMarkSelectText();
+                    String technicalFeature = vo.getTechnicalFeature();
+                    String markNoteText = vo.getMarkNoteText();
+                    StringBuilder stringBuilder = new StringBuilder();
+
+                    stringBuilder.append("[" + markSelectField + "]");
+                    stringBuilder.append(markSelectText);
+                    if (technicalFeature != null && !technicalFeature.trim().equals("")) {
+                        stringBuilder.append("揭示了" + technicalFeature);
+                    }
+                    stringBuilder.append(markNoteText);
+                    contentList.add(stringBuilder.toString());
+                }
+
+            }
+            String content = "";
+            if (contentList.size() > 0) {
+                content = StringUtils.join(contentList, "<br>");
+
+            }
+            str.append(content);
+            map.put("content", str);
+            maps.add(map);
+            index++;
+        }
+
+
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSearchRecordMap(List<RetrieveRecordVO> retrieveRecordVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (retrieveRecordVOS != null) {
+            retrieveRecordVOS.forEach(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("searchCondition", item.getConditions());
+                String dbType = item.getDbType();
+                if (dbType == null || dbType.trim().equals("")) {
+                    dbType = "小世系统";
+                }
+                String re = NoveltyTempalteUtil.getDbTypes(dbType);
+                if (re == null) {
+                    re = "";
+                }
+                map.put("area", re);
+                map.put("dbType", dbType);
+                map.put("totalNum", item.getTotalNum());
+                Date retrieveTime = item.getRetrieveTime();
+                if (retrieveTime != null) {
+                    String dateStr = DateUtils.formatDate(retrieveTime, "yyyy-MM-dd");
+                    map.put("retrieveTime", dateStr);
+                }
+                maps.add(map);
+            });
+        }
+        return maps;
+    }
+}

+ 24 - 0
src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetTemplateMapsImp.java

@@ -0,0 +1,24 @@
+package cn.cslg.pas.factorys.noveltyTemplateFacotry;
+
+
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.common.vo.TechnicalCaseVO;
+
+import java.util.List;
+import java.util.Map;
+
+public interface GetTemplateMapsImp {
+    public  Map<String,Object> getMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs,TechnicalCaseVO technicalCaseVO,List<CompareLiteratureVO> compareLiteratureVOS,List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS,List<RetrieveRecordVO> retrieveRecordVOS);
+    public Map<String, Object> getTechnicalCaseMap(TechnicalCaseVO technicalCaseVO);
+
+    public Map<String, Object> getBaseMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs);
+
+    public List<Map<String, Object>> getCompareLiteratureMap(List<CompareLiteratureVO> compareLiteratureVOS);
+
+    public List<Map<String, Object>> getCompareRecordMap(List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs, List<CompareLiteratureVO> compareLiteratureVOS);
+
+    public List<Map<String, Object>> getSearchRecordMap(List<RetrieveRecordVO> retrieveRecordVOS);
+}

+ 212 - 0
src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetVisionoxTempalte.java

@@ -0,0 +1,212 @@
+package cn.cslg.pas.factorys.noveltyTemplateFacotry;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.common.vo.TechnicalCaseVO;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentPerson;
+import cn.cslg.pas.service.business.es.EsPatentService;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author lrj
+ * @Date 2025/02/20
+ */
+@Component
+public class GetVisionoxTempalte implements GetTemplateMapsImp {
+    @Autowired
+    private EsPatentService esPatentService;
+    @Override
+    public  Map<String,Object> getMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs,TechnicalCaseVO technicalCaseVO,List<CompareLiteratureVO> compareLiteratureVOS,List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS,List<RetrieveRecordVO> retrieveRecordVOS){
+        Map<String,Object> map =new HashMap<>();
+        Map<String, Object> baseMap = this.getBaseMap(queryNoveltyProjectVOs);
+        Map<String, Object> technicalCaseMap = this.getTechnicalCaseMap(technicalCaseVO);
+        List<Map<String, Object>> compareLiteratureMap = this.getCompareLiteratureMap(compareLiteratureVOS);
+        List<Map<String, Object>> compareRecordMap = this.getCompareRecordMap(noveltyCompareRecordQueryVOS, compareLiteratureVOS);
+        List<Map<String, Object>> searchRecordMap = this.getSearchRecordMap(retrieveRecordVOS);
+        map.put("baseMessage", baseMap);
+        map.put("technicalCase", technicalCaseMap);
+        map.put("compareLiterature", compareLiteratureMap);
+        map.put("compareRecord", compareRecordMap);
+        map.put("searchRecord", searchRecordMap);
+        return map;
+    }
+    @Override
+    public Map<String, Object> getTechnicalCaseMap(TechnicalCaseVO technicalCaseVO) {
+        Map<String, Object> technicalMap = new HashMap<>();
+        technicalMap.put("inventionPoint", technicalCaseVO.getInventionPoint());
+        List<SystemFile> systemFileList = technicalCaseVO.getSystemFileList();
+        if (systemFileList != null && systemFileList.size() != 0) {
+            List<String> fileGuids = systemFileList.stream().map(SystemFile::getGuid).collect(Collectors.toList());
+            technicalMap.put("picture", fileGuids);
+        }
+        return technicalMap;
+    }
+
+    @Override
+    public Map<String, Object> getBaseMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs) {
+        Map<String, Object> baseMap = new HashMap<>();
+        if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) {
+            return baseMap;
+        }
+        QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0);
+        baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact());
+        baseMap.put("applicants", queryNoveltyProjectVO.getApplicants());
+        baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber());
+        baseMap.put("caseName", queryNoveltyProjectVO.getCaseName());
+        baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact());
+        baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit());
+
+        baseMap.put("inventor", queryNoveltyProjectVO.getInventor());
+        baseMap.put("inventorContact", "");
+        baseMap.put("distinguishTechnical", "");
+        baseMap.put("remark", queryNoveltyProjectVO.getRemark());
+        baseMap.put("analyse", "");
+        baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions());
+        baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice());
+        baseMap.put("finalConclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice())));
+        baseMap.put("ifPatentability", "是");
+        baseMap.put("ipr", queryNoveltyProjectVO.getIpr());
+        if (queryNoveltyProjectVO.getHeadName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getHeadName());
+        } else if (queryNoveltyProjectVO.getCaseName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getCreateName());
+        }
+        return baseMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareLiteratureMap(List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (compareLiteratureVOS != null) {
+            List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+            patentNos.forEach(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("patentNo", item);
+                maps.add(map);
+            });
+        }
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareRecordMap(List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs, List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
+            return maps;
+        }
+        List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+        List<Patent> patents = new ArrayList<>();
+        try {
+            patents = esPatentService.getPatentsByNo(patentNos, false, null, null);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Integer index = 1;
+        for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+            String patentNo = compareLiteratureVO.getLiteratureNo();
+            Map<String, Object> map = new HashMap<>();
+            map.put("index", index);
+            map.put("publicNo", compareLiteratureVO.getPublicNo());
+
+            Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(patentNo)).findFirst().orElse(null);
+            if (patent != null) {
+                List<PatentPerson> patentPeople = patent.getRightHolder();
+
+                if (patentPeople != null && patentPeople.size() > 0) {
+                    List<String> names = patentPeople.stream().map(PatentPerson::getName).collect(Collectors.toList());
+                    String nameStr = StringUtils.join(names, "、");
+                    map.put("rightHolder", nameStr);
+                }
+            }
+
+            Integer temIndex = 1;
+            List<String> contentList = new ArrayList<>();
+            List<NoveltyCompareRecordVO> noveltyCompareRecordVOS = compareLiteratureVO.getNoveltyCompareRecordVOS();
+            if (noveltyCompareRecordVOS != null) {
+                for (NoveltyCompareRecordVO item : noveltyCompareRecordVOS) {
+                    String markText = item.getMarkNoteText();
+                    if (markText != null && !markText.trim().equals("")) {
+                        markText = (temIndex) + "、" + markText;
+                        contentList.add(markText);
+                        temIndex++;
+                    }
+                }
+            }
+
+            List<NoveltyCompareRecordQueryVO> tempRecordVos = noveltyCompareRecordQueryVOs.stream().filter(item -> item.getPatentNo().equals(patentNo)).collect(Collectors.toList());
+            if (tempRecordVos != null && tempRecordVos.size() != 0) {
+                for (int i = 0; i < tempRecordVos.size(); i++) {
+                    NoveltyCompareRecordQueryVO vo = tempRecordVos.get(i);
+                    String markSelectField = vo.getMarkSelectField();
+                    String markSelectText = vo.getMarkSelectText();
+                    String technicalFeature = vo.getTechnicalFeature();
+                    String markNoteText = vo.getMarkNoteText();
+                    StringBuilder stringBuilder = new StringBuilder();
+                    stringBuilder.append(temIndex + "、");
+                    stringBuilder.append(markSelectField);
+                    stringBuilder.append(markSelectText);
+                    if (technicalFeature != null && !technicalFeature.trim().equals("")) {
+                        stringBuilder.append("揭示了" + technicalFeature);
+                    }
+                    stringBuilder.append(markNoteText);
+                    contentList.add(stringBuilder.toString());
+                    temIndex++;
+                }
+
+            }
+            String content = "";
+            if (contentList.size() > 0) {
+                content = StringUtils.join(contentList, "<br>");
+
+            }
+            String tpoint = compareLiteratureVO.getTechnicalPoints();
+            if (tpoint != null) {
+                content = content + "<br>" + tpoint;
+            }
+            map.put("technicalPoints", content);
+            maps.add(map);
+            index++;
+        }
+
+
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSearchRecordMap(List<RetrieveRecordVO> retrieveRecordVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (retrieveRecordVOS != null) {
+            retrieveRecordVOS.forEach(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("conditions", item.getConditions());
+                String dbType = item.getDbType();
+                if (dbType == null || dbType.trim().equals("")) {
+                    dbType = "小世系统";
+                }
+                String re = NoveltyTempalteUtil.getDbTypes(dbType);
+                if (re == null) {
+                    re = "";
+                }
+                map.put("area", re);
+                map.put("dbType", dbType);
+                map.put("totalNum", item.getTotalNum());
+
+                maps.add(map);
+            });
+        }
+        return maps;
+    }
+}

+ 211 - 0
src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetVisionoxcxTempalte.java

@@ -0,0 +1,211 @@
+package cn.cslg.pas.factorys.noveltyTemplateFacotry;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.common.vo.TechnicalCaseVO;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentPerson;
+import cn.cslg.pas.service.business.es.EsPatentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author lrj
+ * @Date 2025/02/20
+ */
+@Component
+public class GetVisionoxcxTempalte implements GetTemplateMapsImp {
+    @Autowired
+    private EsPatentService esPatentService;
+    @Override
+    public  Map<String,Object> getMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs,TechnicalCaseVO technicalCaseVO,List<CompareLiteratureVO> compareLiteratureVOS,List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS,List<RetrieveRecordVO> retrieveRecordVOS){
+        Map<String,Object> map =new HashMap<>();
+        Map<String, Object> baseMap = this.getBaseMap(queryNoveltyProjectVOs);
+        Map<String, Object> technicalCaseMap = this.getTechnicalCaseMap(technicalCaseVO);
+        List<Map<String, Object>> compareLiteratureMap = this.getCompareLiteratureMap(compareLiteratureVOS);
+        List<Map<String, Object>> compareRecordMap = this.getCompareRecordMap(noveltyCompareRecordQueryVOS, compareLiteratureVOS);
+        List<Map<String, Object>> searchRecordMap = this.getSearchRecordMap(retrieveRecordVOS);
+        map.put("baseMessage", baseMap);
+        map.put("technicalCase", technicalCaseMap);
+        map.put("compareLiterature", compareLiteratureMap);
+        map.put("compareRecord", compareRecordMap);
+        map.put("searchRecord", searchRecordMap);
+        return map;
+    }
+    @Override
+    public Map<String, Object> getTechnicalCaseMap(TechnicalCaseVO technicalCaseVO) {
+        Map<String, Object> technicalMap = new HashMap<>();
+        technicalMap.put("inventionPoint", technicalCaseVO.getInventionPoint());
+        List<SystemFile> systemFileList = technicalCaseVO.getSystemFileList();
+        if (systemFileList != null && systemFileList.size() != 0) {
+            List<String> fileGuids = systemFileList.stream().map(SystemFile::getGuid).collect(Collectors.toList());
+            technicalMap.put("picture", fileGuids);
+        }
+        return technicalMap;
+    }
+
+    @Override
+    public Map<String, Object> getBaseMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs) {
+        Map<String, Object> baseMap = new HashMap<>();
+        if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) {
+            return baseMap;
+        }
+        QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0);
+        baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact());
+        baseMap.put("applicants", queryNoveltyProjectVO.getApplicants());
+        baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber());
+        baseMap.put("caseName", queryNoveltyProjectVO.getCaseName());
+        baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact());
+        baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit());
+
+        baseMap.put("inventor", queryNoveltyProjectVO.getInventor());
+        baseMap.put("inventorContact", "");
+        baseMap.put("distinguishTechnical", "");
+        baseMap.put("remark", queryNoveltyProjectVO.getRemark());
+        baseMap.put("analyse", "");
+        baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions());
+        baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice());
+        baseMap.put("finalConclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice())));
+        baseMap.put("ifPatentability", "是");
+        baseMap.put("ipr", queryNoveltyProjectVO.getIpr());
+        if (queryNoveltyProjectVO.getHeadName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getHeadName());
+        } else if (queryNoveltyProjectVO.getCaseName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getCreateName());
+        }
+        return baseMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareLiteratureMap(List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (compareLiteratureVOS != null) {
+            List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+            patentNos.forEach(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("patentNo", item);
+                maps.add(map);
+            });
+        }
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareRecordMap(List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs, List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
+            return maps;
+        }
+        List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+        List<Patent> patents = new ArrayList<>();
+        try {
+            patents = esPatentService.getPatentsByNo(patentNos, false, null, null);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Integer index = 1;
+        for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+            String patentNo = compareLiteratureVO.getLiteratureNo();
+            Map<String, Object> map = new HashMap<>();
+            map.put("index", index);
+            map.put("publicNo", compareLiteratureVO.getPublicNo());
+
+            Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(patentNo)).findFirst().orElse(null);
+            if (patent != null) {
+                List<PatentPerson> patentPeople = patent.getRightHolder();
+
+                if (patentPeople != null && patentPeople.size() > 0) {
+                    List<String> names = patentPeople.stream().map(PatentPerson::getName).collect(Collectors.toList());
+                    String nameStr = StringUtils.join(names, "、");
+                    map.put("rightHolder", nameStr);
+                }
+            }
+
+            Integer temIndex = 1;
+            List<String> contentList = new ArrayList<>();
+            List<NoveltyCompareRecordVO> noveltyCompareRecordVOS = compareLiteratureVO.getNoveltyCompareRecordVOS();
+            if (noveltyCompareRecordVOS != null) {
+                for (NoveltyCompareRecordVO item : noveltyCompareRecordVOS) {
+                    String markText = item.getMarkNoteText();
+                    if (markText != null && !markText.trim().equals("")) {
+                        markText = (temIndex) + "、" + markText;
+                        contentList.add(markText);
+                        temIndex++;
+                    }
+                }
+            }
+
+            List<NoveltyCompareRecordQueryVO> tempRecordVos = noveltyCompareRecordQueryVOs.stream().filter(item -> item.getPatentNo().equals(patentNo)).collect(Collectors.toList());
+            if (tempRecordVos != null && tempRecordVos.size() != 0) {
+                for (int i = 0; i < tempRecordVos.size(); i++) {
+                    NoveltyCompareRecordQueryVO vo = tempRecordVos.get(i);
+                    String markSelectField = vo.getMarkSelectField();
+                    String markSelectText = vo.getMarkSelectText();
+                    String technicalFeature = vo.getTechnicalFeature();
+                    String markNoteText = vo.getMarkNoteText();
+                    StringBuilder stringBuilder = new StringBuilder();
+                    stringBuilder.append(temIndex + "、");
+                    stringBuilder.append(markSelectField);
+                    stringBuilder.append(markSelectText);
+                    if (technicalFeature != null && !technicalFeature.trim().equals("")) {
+                        stringBuilder.append("揭示了" + technicalFeature);
+                    }
+                    stringBuilder.append(markNoteText);
+                    contentList.add(stringBuilder.toString());
+                    temIndex++;
+                }
+
+            }
+            String content = "";
+            if (contentList.size() > 0) {
+                content = StringUtils.join(contentList, "<br>");
+
+            }
+            String tpoint = compareLiteratureVO.getTechnicalPoints();
+            if (tpoint != null) {
+                content = content + "<br>" + tpoint;
+            }
+            map.put("technicalPoints", content);
+            maps.add(map);
+            index++;
+        }
+
+
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSearchRecordMap(List<RetrieveRecordVO> retrieveRecordVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (retrieveRecordVOS != null) {
+            retrieveRecordVOS.forEach(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("conditions", item.getConditions());
+                String dbType = item.getDbType();
+                if (dbType == null || dbType.trim().equals("")) {
+                    dbType = "小世系统";
+                }
+                String re = NoveltyTempalteUtil.getDbTypes(dbType);
+                if (re == null) {
+                    re = "";
+                }
+                map.put("area", re);
+                map.put("dbType", dbType);
+                map.put("totalNum", item.getTotalNum());
+
+                maps.add(map);
+            });
+        }
+        return maps;
+    }
+}

+ 214 - 0
src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetaiqijiTempalte.java

@@ -0,0 +1,214 @@
+package cn.cslg.pas.factorys.noveltyTemplateFacotry;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.DateUtils;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.common.vo.TechnicalCaseVO;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.service.business.es.EsPatentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author lrj
+ * @Date 2025/02/20
+ */
+@Component
+public class GetaiqijiTempalte implements GetTemplateMapsImp {
+    @Autowired
+    private EsPatentService esPatentService;
+    public  Map<String,Object> getMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs,TechnicalCaseVO technicalCaseVO,List<CompareLiteratureVO> compareLiteratureVOS,List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS,List<RetrieveRecordVO> retrieveRecordVOS){
+        Map<String,Object> map =new HashMap<>();
+        Map<String, Object> baseMap = this.getBaseMap(queryNoveltyProjectVOs);
+        Map<String, Object> technicalCaseMap = this.getTechnicalCaseMap(technicalCaseVO);
+        List<Map<String, Object>> compareLiteratureMap = this.getCompareLiteratureMap(compareLiteratureVOS);
+        List<Map<String, Object>> compareRecordMap = this.getCompareRecordMap(noveltyCompareRecordQueryVOS, compareLiteratureVOS);
+        List<Map<String, Object>> searchRecordMap = this.getSearchRecordMap(retrieveRecordVOS);
+        map.put("baseMessage", baseMap);
+        map.put("technicalCase", technicalCaseMap);
+        map.put("compareLiterature", compareLiteratureMap);
+        map.put("compareRecord", compareRecordMap);
+        map.put("searchRecord", searchRecordMap);
+        return map;
+    }
+    @Override
+    public Map<String, Object> getTechnicalCaseMap(TechnicalCaseVO technicalCaseVO) {
+        Map<String, Object> technicalMap = new HashMap<>();
+        technicalMap.put("inventionPoint", technicalCaseVO.getInventionPoint());
+        List<SystemFile> systemFileList = technicalCaseVO.getSystemFileList();
+        if (systemFileList != null && systemFileList.size() != 0) {
+            List<String> fileGuids = systemFileList.stream().map(SystemFile::getGuid).collect(Collectors.toList());
+            technicalMap.put("picture", fileGuids);
+        }
+        return technicalMap;
+    }
+
+    @Override
+    public Map<String, Object> getBaseMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs) {
+        Map<String, Object> baseMap = new HashMap<>();
+        if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) {
+            return baseMap;
+        }
+        QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0);
+        baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact());
+        baseMap.put("applicants", queryNoveltyProjectVO.getApplicants());
+        baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber());
+        baseMap.put("caseName", queryNoveltyProjectVO.getCaseName());
+        baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact());
+        baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit());
+
+        baseMap.put("inventor", queryNoveltyProjectVO.getInventor());
+        baseMap.put("inventorContact", "");
+        baseMap.put("distinguishTechnical", "");
+        baseMap.put("remark", queryNoveltyProjectVO.getRemark());
+        baseMap.put("analyse", "");
+        baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions());
+        baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice());
+        baseMap.put("conclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice())));
+        baseMap.put("ifPatentability", "是");
+        baseMap.put("ipr", queryNoveltyProjectVO.getIpr());
+        if (queryNoveltyProjectVO.getHeadName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getHeadName());
+        } else if (queryNoveltyProjectVO.getCaseName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getCreateName());
+        }
+        return baseMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareLiteratureMap(List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS != null) {
+
+
+            int index = 1;
+            for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+                String no = compareLiteratureVO.getLiteratureNo();
+                String name = compareLiteratureVO.getName();
+                String content = "对比文件" + index + ":" + no + "-" + name;
+                Map<String, Object> map = new HashMap<>();
+                map.put("content", content);
+                maps.add(map);
+                index++;
+            }
+        }
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareRecordMap(List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs, List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
+            return maps;
+        }
+        List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+        List<Patent> patents = new ArrayList<>();
+        try {
+            patents = esPatentService.getPatentsByNo(patentNos, false, null, null);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Integer index = 1;
+        for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+            Map<String, Object> map = new HashMap<>();
+            String patentNo = compareLiteratureVO.getLiteratureNo();
+            StringBuilder str = new StringBuilder("对比文件");
+            str.append(index);
+            str.append(":");
+            str.append(patentNo);
+            String abstr = "";
+            Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(patentNo)).findFirst().orElse(null);
+            if (patent != null && patent.getTitle() != null && patent.getTitle().size() != 0) {
+                str.append(patent.getTitle().get(0).getTextContent());
+            }
+            str.append("<br>");
+            if (patent != null && patent.getAbstractStr() != null && patent.getAbstractStr().size() > 0) {
+                abstr = "[摘要原文]" + patent.getAbstractStr().get(0).getTextContent();
+            }
+
+
+            List<String> contentList = new ArrayList<>();
+            List<NoveltyCompareRecordVO> noveltyCompareRecordVOS = compareLiteratureVO.getNoveltyCompareRecordVOS();
+            if (noveltyCompareRecordVOS != null) {
+                for (NoveltyCompareRecordVO item : noveltyCompareRecordVOS) {
+                    String markText = item.getMarkNoteText();
+                    String finText = abstr + "(" + markText + ")";
+                    contentList.add(finText);
+                }
+            }
+
+            List<NoveltyCompareRecordQueryVO> tempRecordVos = noveltyCompareRecordQueryVOs.stream().filter(item -> item.getPatentNo().equals(patentNo)).collect(Collectors.toList());
+            if (tempRecordVos != null && tempRecordVos.size() != 0) {
+                for (int i = 0; i < tempRecordVos.size(); i++) {
+                    NoveltyCompareRecordQueryVO vo = tempRecordVos.get(i);
+                    String markSelectField = vo.getMarkSelectField();
+                    String markSelectText = vo.getMarkSelectText();
+                    String technicalFeature = vo.getTechnicalFeature();
+                    String markNoteText = vo.getMarkNoteText();
+                    StringBuilder stringBuilder = new StringBuilder();
+
+                    stringBuilder.append("[" + markSelectField + "]");
+                    stringBuilder.append(markSelectText);
+                    if (technicalFeature != null && !technicalFeature.trim().equals("")) {
+                        stringBuilder.append("揭示了" + technicalFeature);
+                    }
+                    stringBuilder.append(markNoteText);
+                    contentList.add(stringBuilder.toString());
+                }
+
+            }
+            String content = "";
+            if (contentList.size() > 0) {
+                content = StringUtils.join(contentList, "<br>");
+
+            }
+            str.append(content);
+            map.put("content", str);
+            maps.add(map);
+            index++;
+        }
+
+
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSearchRecordMap(List<RetrieveRecordVO> retrieveRecordVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (retrieveRecordVOS != null) {
+            retrieveRecordVOS.forEach(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("searchCondition", item.getConditions());
+                String dbType = item.getDbType();
+                if (dbType == null || dbType.trim().equals("")) {
+                    dbType = "小世系统";
+                }
+                String re = NoveltyTempalteUtil.getDbTypes(dbType);
+                if (re == null) {
+                    re = "";
+                }
+                map.put("area", re);
+                map.put("dbType", dbType);
+                map.put("totalNum", item.getTotalNum());
+                Date retrieveTime = item.getRetrieveTime();
+                if (retrieveTime != null) {
+                    String dateStr = DateUtils.formatDate(retrieveTime, "yyyy-MM-dd");
+                    map.put("retrieveTime", dateStr);
+                }
+                maps.add(map);
+            });
+        }
+        return maps;
+    }
+}

+ 216 - 0
src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetlingpaoTempalte.java

@@ -0,0 +1,216 @@
+package cn.cslg.pas.factorys.noveltyTemplateFacotry;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.DateUtils;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.common.vo.TechnicalCaseVO;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.service.business.es.EsPatentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author lrj
+ * @Date 2025/02/20
+ */
+@Component
+public class GetlingpaoTempalte implements GetTemplateMapsImp {
+    @Autowired
+    private EsPatentService esPatentService;
+
+    @Override
+    public Map<String, Object> getMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs, TechnicalCaseVO technicalCaseVO, List<CompareLiteratureVO> compareLiteratureVOS, List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS, List<RetrieveRecordVO> retrieveRecordVOS) {
+        Map<String, Object> map = new HashMap<>();
+        Map<String, Object> baseMap = this.getBaseMap(queryNoveltyProjectVOs);
+        Map<String, Object> technicalCaseMap = this.getTechnicalCaseMap(technicalCaseVO);
+        List<Map<String, Object>> compareLiteratureMap = this.getCompareLiteratureMap(compareLiteratureVOS);
+        List<Map<String, Object>> compareRecordMap = this.getCompareRecordMap(noveltyCompareRecordQueryVOS, compareLiteratureVOS);
+        List<Map<String, Object>> searchRecordMap = this.getSearchRecordMap(retrieveRecordVOS);
+        map.put("baseMessage", baseMap);
+        map.put("technicalCase", technicalCaseMap);
+        map.put("compareLiterature", compareLiteratureMap);
+        map.put("compareRecord", compareRecordMap);
+        map.put("searchRecord", searchRecordMap);
+        return map;
+    }
+    @Override
+    public Map<String, Object> getTechnicalCaseMap(TechnicalCaseVO technicalCaseVO) {
+        Map<String, Object> technicalMap = new HashMap<>();
+        technicalMap.put("inventionPoint", technicalCaseVO.getInventionPoint());
+        List<SystemFile> systemFileList = technicalCaseVO.getSystemFileList();
+        if (systemFileList != null && systemFileList.size() != 0) {
+            List<String> fileGuids = systemFileList.stream().map(SystemFile::getGuid).collect(Collectors.toList());
+            technicalMap.put("picture", fileGuids);
+        }
+        return technicalMap;
+    }
+
+    @Override
+    public Map<String, Object> getBaseMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs) {
+        Map<String, Object> baseMap = new HashMap<>();
+        if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) {
+            return baseMap;
+        }
+        QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0);
+        baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact());
+        baseMap.put("applicants", queryNoveltyProjectVO.getApplicants());
+        baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber());
+        baseMap.put("caseName", queryNoveltyProjectVO.getCaseName());
+        baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact());
+        baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit());
+
+        baseMap.put("inventor", queryNoveltyProjectVO.getInventor());
+        baseMap.put("inventorContact", "");
+        baseMap.put("distinguishTechnical", "");
+        baseMap.put("remark", queryNoveltyProjectVO.getRemark());
+        baseMap.put("analyse", "");
+        baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions());
+        baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice());
+        baseMap.put("conclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice())));
+        baseMap.put("ifPatentability", "是");
+        baseMap.put("ipr", queryNoveltyProjectVO.getIpr());
+        if (queryNoveltyProjectVO.getHeadName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getHeadName());
+        } else if (queryNoveltyProjectVO.getCaseName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getCreateName());
+        }
+        return baseMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareLiteratureMap(List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS != null) {
+
+
+            int index = 1;
+            for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+                String no = compareLiteratureVO.getLiteratureNo();
+                String name = compareLiteratureVO.getName();
+                String content = "对比文件" + index + ":" + no + "-" + name;
+                Map<String, Object> map = new HashMap<>();
+                map.put("content", content);
+                maps.add(map);
+                index++;
+            }
+        }
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareRecordMap(List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs, List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
+            return maps;
+        }
+        List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+        List<Patent> patents = new ArrayList<>();
+        try {
+            patents = esPatentService.getPatentsByNo(patentNos, false, null, null);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Integer index = 1;
+        for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+            Map<String, Object> map = new HashMap<>();
+            String patentNo = compareLiteratureVO.getLiteratureNo();
+            StringBuilder str = new StringBuilder("对比文件");
+            str.append(index);
+            str.append(":");
+            str.append(patentNo);
+            String abstr = "";
+            Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(patentNo)).findFirst().orElse(null);
+            if (patent != null && patent.getTitle() != null && patent.getTitle().size() != 0) {
+                str.append(patent.getTitle().get(0).getTextContent());
+            }
+            str.append("<br>");
+            if (patent != null && patent.getAbstractStr() != null && patent.getAbstractStr().size() > 0) {
+                abstr = "[摘要原文]" + patent.getAbstractStr().get(0).getTextContent();
+            }
+
+
+            List<String> contentList = new ArrayList<>();
+            List<NoveltyCompareRecordVO> noveltyCompareRecordVOS = compareLiteratureVO.getNoveltyCompareRecordVOS();
+            if (noveltyCompareRecordVOS != null) {
+                for (NoveltyCompareRecordVO item : noveltyCompareRecordVOS) {
+                    String markText = item.getMarkNoteText();
+                    String finText = abstr + "(" + markText + ")";
+                    contentList.add(finText);
+                }
+            }
+
+            List<NoveltyCompareRecordQueryVO> tempRecordVos = noveltyCompareRecordQueryVOs.stream().filter(item -> item.getPatentNo().equals(patentNo)).collect(Collectors.toList());
+            if (tempRecordVos != null && tempRecordVos.size() != 0) {
+                for (int i = 0; i < tempRecordVos.size(); i++) {
+                    NoveltyCompareRecordQueryVO vo = tempRecordVos.get(i);
+                    String markSelectField = vo.getMarkSelectField();
+                    String markSelectText = vo.getMarkSelectText();
+                    String technicalFeature = vo.getTechnicalFeature();
+                    String markNoteText = vo.getMarkNoteText();
+                    StringBuilder stringBuilder = new StringBuilder();
+
+                    stringBuilder.append("[" + markSelectField + "]");
+                    stringBuilder.append(markSelectText);
+                    if (technicalFeature != null && !technicalFeature.trim().equals("")) {
+                        stringBuilder.append("揭示了" + technicalFeature);
+                    }
+                    stringBuilder.append(markNoteText);
+                    contentList.add(stringBuilder.toString());
+                }
+
+            }
+            String content = "";
+            if (contentList.size() > 0) {
+                content = StringUtils.join(contentList, "<br>");
+
+            }
+            str.append(content);
+            map.put("content", str);
+            maps.add(map);
+            index++;
+        }
+
+
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSearchRecordMap(List<RetrieveRecordVO> retrieveRecordVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (retrieveRecordVOS != null) {
+            retrieveRecordVOS.forEach(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("searchCondition", item.getConditions());
+                String dbType = item.getDbType();
+                if (dbType == null || dbType.trim().equals("")) {
+                    dbType = "小世系统";
+                }
+                String re = NoveltyTempalteUtil.getDbTypes(dbType);
+                if (re == null) {
+                    re = "";
+                }
+                map.put("area", re);
+                map.put("dbType", dbType);
+                map.put("totalNum", item.getTotalNum());
+                Date retrieveTime = item.getRetrieveTime();
+                if (retrieveTime != null) {
+                    String dateStr = DateUtils.formatDate(retrieveTime, "yyyy-MM-dd");
+                    map.put("retrieveTime", dateStr);
+                }
+                maps.add(map);
+            });
+        }
+        return maps;
+    }
+}

+ 279 - 0
src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetningdeTempalte.java

@@ -0,0 +1,279 @@
+package cn.cslg.pas.factorys.noveltyTemplateFacotry;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.DateUtils;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.common.vo.TechnicalCaseVO;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentPerson;
+import cn.cslg.pas.service.business.es.EsPatentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author lrj
+ * @Date 2025/02/20
+ */
+@Component
+public class GetningdeTempalte implements GetTemplateMapsImp {
+    @Autowired
+    private EsPatentService esPatentService;
+
+    @Override
+    public Map<String, Object> getMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs, TechnicalCaseVO technicalCaseVO, List<CompareLiteratureVO> compareLiteratureVOS, List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS, List<RetrieveRecordVO> retrieveRecordVOS) {
+        Map<String, Object> map = new HashMap<>();
+        Map<String, Object> baseMap = this.getBaseMap(queryNoveltyProjectVOs, retrieveRecordVOS);
+        Map<String, Object> technicalCaseMap = this.getTechnicalCaseMap(technicalCaseVO);
+        List<Map<String, Object>> compareLiteratureMap = this.getCompareLiteratureMap(compareLiteratureVOS);
+        List<Map<String, Object>> compareRecordMap = this.getCompareRecordMap(noveltyCompareRecordQueryVOS, compareLiteratureVOS);
+        List<Map<String, Object>> searchRecordMap = this.getSearchRecordMap(retrieveRecordVOS);
+        map.put("baseMessage", baseMap);
+        map.put("technicalCase", technicalCaseMap);
+        map.put("compareLiterature", compareLiteratureMap);
+        map.put("compareRecord", compareRecordMap);
+        map.put("searchRecord", searchRecordMap);
+        return map;
+    }
+
+    @Override
+    public Map<String, Object> getTechnicalCaseMap(TechnicalCaseVO technicalCaseVO) {
+        Map<String, Object> technicalMap = new HashMap<>();
+        technicalMap.put("inventionPoint", technicalCaseVO.getInventionPoint());
+        technicalMap.put("solvedProblem", technicalCaseVO.getSolvedProblem());
+        List<SystemFile> systemFileList = technicalCaseVO.getSystemFileList();
+        if (systemFileList != null && systemFileList.size() != 0) {
+            List<String> fileGuids = systemFileList.stream().map(SystemFile::getGuid).collect(Collectors.toList());
+            technicalMap.put("picture", fileGuids);
+        }
+        return technicalMap;
+    }
+
+    @Override
+    public Map<String, Object> getBaseMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs) {
+        Map<String, Object> baseMap = new HashMap<>();
+        if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) {
+            return baseMap;
+        }
+        QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0);
+        baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact());
+        baseMap.put("applicants", queryNoveltyProjectVO.getApplicants());
+        baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber());
+        baseMap.put("caseName", queryNoveltyProjectVO.getCaseName());
+        baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact());
+        baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit());
+
+        baseMap.put("inventor", queryNoveltyProjectVO.getInventor());
+        baseMap.put("inventorContact", "");
+        baseMap.put("distinguishTechnical", "");
+        baseMap.put("remark", queryNoveltyProjectVO.getRemark());
+        baseMap.put("analyse", "");
+        baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions());
+        baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice());
+        baseMap.put("conclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice())));
+        baseMap.put("ifPatentability", "是");
+        baseMap.put("ipr", queryNoveltyProjectVO.getIpr());
+        if (queryNoveltyProjectVO.getHeadName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getHeadName());
+        } else if (queryNoveltyProjectVO.getCaseName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getCreateName());
+        }
+        return baseMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareLiteratureMap(List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        List<Patent> patents = new ArrayList<>();
+        if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
+            return maps;
+        }
+        try {
+            List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+            patents = esPatentService.getPatentsByNo(patentNos, false, null, null);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        if (compareLiteratureVOS != null) {
+            int index = 1;
+            for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+                String no = compareLiteratureVO.getLiteratureNo();
+                Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(no)).findFirst().orElse(null);
+                String pubilcNo = patent.getGrantNo();
+                if (pubilcNo == null) {
+                    pubilcNo = patent.getPublicNo();
+                }
+                Date publicDate = patent.getGrantDate();
+                if (publicDate == null) {
+                    publicDate = patent.getPublicDate();
+                }
+
+                Map<String, Object> map = new HashMap<>();
+                map.put("index", "D" + index);
+                map.put("publicNo", pubilcNo);
+                if (patent != null && patent.getTitle() != null && patent.getTitle().size() > 0) {
+                    String content = patent.getTitle().get(0).getTextContent();
+                    map.put("title", content);
+                }
+                if (publicDate != null) {
+                    String dateStr = DateUtils.formatDate(publicDate, "yyyy-MM-dd");
+                    map.put("publicDate", dateStr);
+                }
+                if (patent != null && patent.getApplicant() != null && patent.getApplicant().size() > 0) {
+                    List<String> names = patent.getApplicant().stream().map(PatentPerson::getName).collect(Collectors.toList());
+                    String nameStr = StringUtils.join(names, "、");
+                    map.put("applicant", nameStr);
+                }
+                maps.add(map);
+                index++;
+            }
+        }
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareRecordMap(List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs, List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
+            return maps;
+        }
+        List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+        List<Patent> patents = new ArrayList<>();
+        try {
+            patents = esPatentService.getPatentsByNo(patentNos, false, null, null);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Integer index = 1;
+        for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+            Map<String, Object> map = new HashMap<>();
+            String patentNo = compareLiteratureVO.getLiteratureNo();
+            StringBuilder str = new StringBuilder("对比文件");
+            str.append(index);
+            str.append(":");
+            str.append(patentNo);
+            String abstr = "";
+            Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(patentNo)).findFirst().orElse(null);
+            if (patent != null && patent.getTitle() != null && patent.getTitle().size() != 0) {
+                str.append(patent.getTitle().get(0).getTextContent());
+            }
+            str.append("<br>");
+            if (patent != null && patent.getAbstractStr() != null && patent.getAbstractStr().size() > 0) {
+                abstr = "[摘要原文]" + patent.getAbstractStr().get(0).getTextContent();
+            }
+
+
+            List<String> contentList = new ArrayList<>();
+            List<NoveltyCompareRecordVO> noveltyCompareRecordVOS = compareLiteratureVO.getNoveltyCompareRecordVOS();
+            if (noveltyCompareRecordVOS != null) {
+                for (NoveltyCompareRecordVO item : noveltyCompareRecordVOS) {
+                    String markText = item.getMarkNoteText();
+                    String finText = abstr + "(" + markText + ")";
+                    contentList.add(finText);
+                }
+            }
+
+            List<NoveltyCompareRecordQueryVO> tempRecordVos = noveltyCompareRecordQueryVOs.stream().filter(item -> item.getPatentNo().equals(patentNo)).collect(Collectors.toList());
+            if (tempRecordVos != null && tempRecordVos.size() != 0) {
+                for (int i = 0; i < tempRecordVos.size(); i++) {
+                    NoveltyCompareRecordQueryVO vo = tempRecordVos.get(i);
+                    String markSelectField = vo.getMarkSelectField();
+                    String markSelectText = vo.getMarkSelectText();
+                    String technicalFeature = vo.getTechnicalFeature();
+                    String markNoteText = vo.getMarkNoteText();
+                    StringBuilder stringBuilder = new StringBuilder();
+
+                    stringBuilder.append("[" + markSelectField + "]");
+                    stringBuilder.append(markSelectText);
+                    if (technicalFeature != null && !technicalFeature.trim().equals("")) {
+                        stringBuilder.append("揭示了" + technicalFeature);
+                    }
+                    stringBuilder.append(markNoteText);
+                    contentList.add(stringBuilder.toString());
+                }
+
+            }
+            String content = "";
+            if (contentList.size() > 0) {
+                content = StringUtils.join(contentList, "<br>");
+
+            }
+            str.append(content);
+            map.put("content", str);
+            maps.add(map);
+            index++;
+        }
+
+
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSearchRecordMap(List<RetrieveRecordVO> retrieveRecordVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (retrieveRecordVOS != null) {
+            retrieveRecordVOS.forEach(item -> {
+                Map<String, Object> map = new HashMap<>();
+
+                map.put("conditions", item.getConditions());
+
+                maps.add(map);
+            });
+        }
+        return maps;
+    }
+
+
+    public Map<String, Object> getBaseMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs, List<RetrieveRecordVO> retrieveRecordVOS) {
+        Map<String, Object> baseMap = new HashMap<>();
+        if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) {
+            return baseMap;
+        }
+        if (retrieveRecordVOS != null && retrieveRecordVOS.size() > 0) {
+            List<String> tools = Arrays.asList("智慧芽", "Patentics", "IncoPat", "DI(科睿唯安)", "obrit", "万象云");
+            List<String> dbTypes = new ArrayList<>();
+            retrieveRecordVOS.forEach(item -> {
+                if (tools.contains(item.getDbType())) {
+                    dbTypes.add(item.getDbType());
+                }
+            });
+            if (dbTypes.size() == 0) {
+                dbTypes.add("其他");
+            }
+            baseMap.put("searchTool", dbTypes);
+        }
+        QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0);
+        baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact());
+        baseMap.put("applicants", queryNoveltyProjectVO.getApplicants());
+        baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber());
+        baseMap.put("caseName", queryNoveltyProjectVO.getCaseName());
+        baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact());
+        baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit());
+        baseMap.put("inventor", queryNoveltyProjectVO.getInventor());
+        baseMap.put("inventorContact", "");
+        baseMap.put("distinguishTechnical", "");
+        baseMap.put("remark", queryNoveltyProjectVO.getRemark());
+        baseMap.put("analyse", "");
+        baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions());
+        baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice());
+        baseMap.put("conclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice())));
+        baseMap.put("ifPatentability", "是");
+        baseMap.put("ipr", queryNoveltyProjectVO.getIpr());
+        if (queryNoveltyProjectVO.getHeadName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getHeadName());
+        } else if (queryNoveltyProjectVO.getCaseName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getCreateName());
+        }
+        return baseMap;
+    }
+
+}

+ 246 - 0
src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/GetshidaixinganTempalte.java

@@ -0,0 +1,246 @@
+package cn.cslg.pas.factorys.noveltyTemplateFacotry;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.DateUtils;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.common.vo.TechnicalCaseVO;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentPerson;
+import cn.cslg.pas.service.business.es.EsPatentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author lrj
+ * @Date 2025/02/20
+ */
+@Component
+public class GetshidaixinganTempalte implements GetTemplateMapsImp {
+    @Autowired
+    private EsPatentService esPatentService;
+    @Override
+    public  Map<String,Object> getMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs,TechnicalCaseVO technicalCaseVO,List<CompareLiteratureVO> compareLiteratureVOS,List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS,List<RetrieveRecordVO> retrieveRecordVOS){
+        Map<String,Object> map =new HashMap<>();
+        Map<String, Object> baseMap = this.getBaseMap(queryNoveltyProjectVOs);
+        Map<String, Object> technicalCaseMap = this.getTechnicalCaseMap(technicalCaseVO);
+        List<Map<String, Object>> compareLiteratureMap = this.getCompareLiteratureMap(compareLiteratureVOS);
+        List<Map<String, Object>> compareRecordMap = this.getCompareRecordMap(noveltyCompareRecordQueryVOS, compareLiteratureVOS);
+        List<Map<String, Object>> searchRecordMap = this.getSearchRecordMap(retrieveRecordVOS);
+        map.put("baseMessage", baseMap);
+        map.put("technicalCase", technicalCaseMap);
+        map.put("compareLiterature", compareLiteratureMap);
+        map.put("compareRecord", compareRecordMap);
+        map.put("searchRecord", searchRecordMap);
+        return map;
+    }
+    @Override
+    public Map<String, Object> getTechnicalCaseMap(TechnicalCaseVO technicalCaseVO) {
+        Map<String, Object> technicalMap = new HashMap<>();
+        technicalMap.put("inventionPoint", technicalCaseVO.getInventionPoint());
+        technicalMap.put("solvedProblem", technicalCaseVO.getSolvedProblem());
+        List<SystemFile> systemFileList = technicalCaseVO.getSystemFileList();
+        if (systemFileList != null && systemFileList.size() != 0) {
+            List<String> fileGuids = systemFileList.stream().map(SystemFile::getGuid).collect(Collectors.toList());
+            technicalMap.put("picture", fileGuids);
+        }
+        return technicalMap;
+    }
+
+    @Override
+    public Map<String, Object> getBaseMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs) {
+        Map<String, Object> baseMap = new HashMap<>();
+        if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) {
+            return baseMap;
+        }
+        QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0);
+        baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact());
+        baseMap.put("applicants", queryNoveltyProjectVO.getApplicants());
+        baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber());
+        baseMap.put("caseName", queryNoveltyProjectVO.getCaseName());
+        baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact());
+        baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit());
+
+        baseMap.put("inventor", queryNoveltyProjectVO.getInventor());
+        baseMap.put("inventorContact", "");
+        baseMap.put("distinguishTechnical", "");
+        baseMap.put("remark", queryNoveltyProjectVO.getRemark());
+        baseMap.put("analyse", "");
+        baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions());
+        baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice());
+        baseMap.put("conclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice())));
+        baseMap.put("ifPatentability", "是");
+        baseMap.put("ipr", queryNoveltyProjectVO.getIpr());
+        if (queryNoveltyProjectVO.getHeadName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getHeadName());
+        } else if (queryNoveltyProjectVO.getCaseName() != null) {
+            baseMap.put("searchName", queryNoveltyProjectVO.getCreateName());
+        }
+        return baseMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareLiteratureMap(List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        List<Patent> patents = new ArrayList<>();
+        if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
+            return maps;
+        }
+        try {
+            List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+            patents = esPatentService.getPatentsByNo(patentNos, false, null, null);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        if (compareLiteratureVOS != null) {
+            int index = 1;
+            for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+                String no = compareLiteratureVO.getLiteratureNo();
+                Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(no)).findFirst().orElse(null);
+                String pubilcNo = patent.getGrantNo();
+                if (pubilcNo == null) {
+                    pubilcNo = patent.getPublicNo();
+                }
+                Date publicDate = patent.getGrantDate();
+                if (publicDate == null) {
+                    publicDate = patent.getPublicDate();
+                }
+
+                Map<String, Object> map = new HashMap<>();
+
+                map.put("publicNo", pubilcNo);
+                if(patent!=null&&patent.getTitle()!=null&&patent.getTitle().size()>0){
+                    String content=patent.getTitle().get(0).getTextContent();
+                    map.put("title", content);
+                }
+                if (publicDate != null) {
+                    String dateStr = DateUtils.formatDate(publicDate, "yyyy-MM-dd");
+                    map.put("publicDate", dateStr);
+                }
+                if(patent!=null&&patent.getApplicant()!=null&&patent.getApplicant().size()>0){
+                    List<String> names =patent.getApplicant().stream().map(PatentPerson::getName).collect(Collectors.toList());
+                    String nameStr=StringUtils.join(names,"、");
+                    map.put("applicant",nameStr);
+                }
+                maps.add(map);
+                index++;
+            }
+        }
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCompareRecordMap(List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs, List<CompareLiteratureVO> compareLiteratureVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+
+        if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
+            return maps;
+        }
+        List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
+        List<Patent> patents = new ArrayList<>();
+        try {
+            patents = esPatentService.getPatentsByNo(patentNos, false, null, null);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Integer index = 1;
+        for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
+            Map<String, Object> map = new HashMap<>();
+            String patentNo = compareLiteratureVO.getLiteratureNo();
+            StringBuilder str = new StringBuilder("对比文件");
+            str.append(index);
+            str.append(":");
+            str.append(patentNo);
+            String abstr = "";
+            Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(patentNo)).findFirst().orElse(null);
+            if (patent != null && patent.getTitle() != null && patent.getTitle().size() != 0) {
+                str.append(patent.getTitle().get(0).getTextContent());
+            }
+            str.append("<br>");
+            if (patent != null && patent.getAbstractStr() != null && patent.getAbstractStr().size() > 0) {
+                abstr = "[摘要原文]" + patent.getAbstractStr().get(0).getTextContent();
+            }
+
+
+            List<String> contentList = new ArrayList<>();
+            List<NoveltyCompareRecordVO> noveltyCompareRecordVOS = compareLiteratureVO.getNoveltyCompareRecordVOS();
+            if (noveltyCompareRecordVOS != null) {
+                for (NoveltyCompareRecordVO item : noveltyCompareRecordVOS) {
+                    String markText = item.getMarkNoteText();
+                    String finText = abstr + "(" + markText + ")";
+                    contentList.add(finText);
+                }
+            }
+
+            List<NoveltyCompareRecordQueryVO> tempRecordVos = noveltyCompareRecordQueryVOs.stream().filter(item -> item.getPatentNo().equals(patentNo)).collect(Collectors.toList());
+            if (tempRecordVos != null && tempRecordVos.size() != 0) {
+                for (int i = 0; i < tempRecordVos.size(); i++) {
+                    NoveltyCompareRecordQueryVO vo = tempRecordVos.get(i);
+                    String markSelectField = vo.getMarkSelectField();
+                    String markSelectText = vo.getMarkSelectText();
+                    String technicalFeature = vo.getTechnicalFeature();
+                    String markNoteText = vo.getMarkNoteText();
+                    StringBuilder stringBuilder = new StringBuilder();
+
+                    stringBuilder.append("[" + markSelectField + "]");
+                    stringBuilder.append(markSelectText);
+                    if (technicalFeature != null && !technicalFeature.trim().equals("")) {
+                        stringBuilder.append("揭示了" + technicalFeature);
+                    }
+                    stringBuilder.append(markNoteText);
+                    contentList.add(stringBuilder.toString());
+                }
+
+            }
+            String content = "";
+            if (contentList.size() > 0) {
+                content = StringUtils.join(contentList, "<br>");
+
+            }
+            str.append(content);
+            map.put("content", str);
+            maps.add(map);
+            index++;
+        }
+
+
+        return maps;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSearchRecordMap(List<RetrieveRecordVO> retrieveRecordVOS) {
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (retrieveRecordVOS != null) {
+            retrieveRecordVOS.forEach(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("searchCondition", item.getConditions());
+                String dbType = item.getDbType();
+                if (dbType == null || dbType.trim().equals("")) {
+                    dbType = "小世系统";
+                }
+                String re = NoveltyTempalteUtil.getDbTypes(dbType);
+                if (re == null) {
+                    re = "";
+                }
+                map.put("area", re);
+                map.put("dbType", dbType);
+                map.put("totalNum", item.getTotalNum());
+                Date retrieveTime = item.getRetrieveTime();
+                if (retrieveTime != null) {
+                    String dateStr = DateUtils.formatDate(retrieveTime, "yyyy-MM-dd");
+                    map.put("retrieveTime", dateStr);
+                }
+                maps.add(map);
+            });
+        }
+        return maps;
+    }
+}

+ 27 - 0
src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/NoveltyTempalteUtil.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.factorys.noveltyTemplateFacotry;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class NoveltyTempalteUtil {
+    public static String reFinalConclusions(List<String> strs) {
+        String reStr = "";
+        strs = strs.stream().filter(item -> item != null && !item.trim().equals("")).collect(Collectors.toList());
+        if (strs.size() > 0) {
+            reStr = StringUtils.join(strs, ",") + "。";
+        }
+        return reStr;
+
+    }
+    public static String getDbTypes(String db){
+        Map<String,String> map =new HashMap<>();
+        map.put("CN","中国数据库");
+        map.put("WD","全球数据库");
+      String re=  map.get(db);
+      return  re;
+    }
+}

+ 42 - 0
src/main/java/cn/cslg/pas/factorys/noveltyTemplateFacotry/NoveltyTemplateFactory.java

@@ -0,0 +1,42 @@
+package cn.cslg.pas.factorys.noveltyTemplateFacotry;
+
+import cn.cslg.pas.factorys.PatentExportFactory.GetValueImp;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/11
+ */
+@Component
+public class NoveltyTemplateFactory {
+    @Autowired
+    private ApplicationContext applicationContext;
+
+    public GetTemplateMapsImp getClass(Integer templateId) {
+        switch (templateId) {
+            case 1:
+                return applicationContext.getBean(GetCommonTempalte.class);
+            case 2:
+                return applicationContext.getBean(GetVisionoxTempalte.class);
+            case 4:
+                return applicationContext.getBean(GetVisionoxcxTempalte.class);
+            case 5:
+                return applicationContext.getBean(GetShenNanTempalte.class);
+            case 6:
+                return applicationContext.getBean(GetaiqijiTempalte.class);
+            case 7:
+                return applicationContext.getBean(GetshidaixinganTempalte.class);
+            case 8:
+                return applicationContext.getBean(GetlingpaoTempalte.class);
+            case 9:
+                return applicationContext.getBean(GetningdeTempalte.class);
+            case 10:
+                return applicationContext.getBean(GetDahuaTempalte.class);
+        }
+        return null;
+    }
+}

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

@@ -162,11 +162,8 @@ public class AssoTaskFileService extends ServiceImpl<AssoTaskFileMapper, AssoTas
 
     public AssoTaskFile getAssoTaskFileByGuid(String guid) {
         LambdaQueryWrapper<AssoTaskFile> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(AssoTaskFile::getFileGuid, guid);
+        queryWrapper.eq(AssoTaskFile::getFileGuid, guid).or().eq(AssoTaskFile::getRootFileGuid,guid);
         AssoTaskFile assoTaskFile = this.getOne(queryWrapper,false);
-        if (assoTaskFile == null) {
-            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "文件不存在");
-        }
         return assoTaskFile;
 
 

+ 61 - 23
src/main/java/cn/cslg/pas/service/business/PatentDigProjectFilesService.java

@@ -6,12 +6,14 @@ 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.projectTask.FileDTO;
 import cn.cslg.pas.common.model.request.GroupRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.business.PatentDigProjectFilesVO;
 import cn.cslg.pas.domain.business.*;
+import cn.cslg.pas.exception.ExceptionEnum;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
@@ -26,14 +28,13 @@ import org.springframework.beans.BeanUtils;
 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.File;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -140,7 +141,7 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
         }
         //获取登陆人信息 用于设置创建人
         PersonnelVO personnelVO = new PersonnelVO();
-            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         List<Integer> ids = new ArrayList<>();
 
         if (patentDigProjectFilesDTO.getFileGuids() != null && !patentDigProjectFilesDTO.getFileGuids().isEmpty()) {
@@ -263,15 +264,17 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
      * @param patentDigProjectFilesDTO
      * @return
      */
-    public Integer addPDProjectFilesTask(PatentDigProjectFilesDTO patentDigProjectFilesDTO) {
+    @Transactional(rollbackFor = Exception.class)
+    public Integer addPDProjectFilesTask(PatentDigProjectFilesDTO patentDigProjectFilesDTO) throws Exception {
         //首先调用新增文件接口
         List<Integer> ids = (List<Integer>) this.addMessage(patentDigProjectFilesDTO);
         //其次调用新增任务接口
         patentDigProjectFilesDTO.getProjectTaskDTO().setProjectId(patentDigProjectFilesDTO.getProjectId());
         patentDigProjectFilesDTO.getProjectTaskDTO().setProcessId(patentDigProjectFilesDTO.getProcessId());
-        Integer taskType = 7;
+        Integer taskType = 5;
         patentDigProjectFilesDTO.getProjectTaskDTO().setType(taskType);
         Integer taskId = projectTaskService.addTask(patentDigProjectFilesDTO.getProjectTaskDTO());
+
         if (!ids.isEmpty()) {
             LambdaQueryWrapper<PatentDigProjectFiles> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.in(PatentDigProjectFiles::getId, ids);
@@ -281,7 +284,11 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
                     item.setTaskId(taskId);
                 });
                 this.updateBatchById(patentDigProjectFiles);
+
             }
+            List<FileDTO> fileDTOS = new ArrayList<>();
+            this.getFileDTOs(patentDigProjectFiles, taskId, fileDTOS);
+            assoTaskFileService.addTaskFile(fileDTOS, taskId);
         }
         return taskId;
     }
@@ -314,9 +321,9 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
     /**
      * 查询专利挖掘项目所有文件
      * 来源:1 PatentDigProjectFiles
-     *      2 AssoHandleResultFile
-     *      3 AssoProjectFile
-     *      4 AssoTaskFile
+     * 2 AssoHandleResultFile
+     * 3 AssoProjectFile
+     * 4 AssoTaskFile
      *
      * @param queryPatentDigProjectFilesDTO
      */
@@ -354,6 +361,7 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
         //查询项目下所有任务的文件
         LambdaQueryWrapper<ProjectTask> queryWrapper1 = new LambdaQueryWrapper<>();
         queryWrapper1.eq(ProjectTask::getProjectId, projectId);
+        queryWrapper1.ne(ProjectTask::getType, 5);
         if (processId != null) {
             queryWrapper1.eq(ProjectTask::getProcessId, processId);
         }
@@ -393,16 +401,23 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
                 LambdaQueryWrapper<AssoHandleResultFile> queryWrapper4 = new LambdaQueryWrapper<>();
                 queryWrapper4.in(AssoHandleResultFile::getTaskHandleResultId, resultIds);
                 List<AssoHandleResultFile> assoHandleResultFiles = assoHandleResultFileService.list(queryWrapper4);
-                assoHandleResultFiles.forEach(item -> {
-                    PatentDigProjectFilesVO patentDigProjectFilesVO = new PatentDigProjectFilesVO();
-                    patentDigProjectFilesVO.setProjectId(projectId);
-                    patentDigProjectFilesVO.setFileGuid(item.getFileGuid());
-                    patentDigProjectFilesVO.setCreateId(item.getCreateId());
-                    patentDigProjectFilesVO.setProcessId(processId);
-                    patentDigProjectFilesVO.setCreateTime(item.getCreateTime());
-                    patentDigProjectFilesVO.setSource(2);
-                    patentDigProjectFilesVOS.add(patentDigProjectFilesVO);
-                });
+
+                for (TaskHandleResult taskHandleResult : taskHandleResults) {
+                    Integer resultId = taskHandleResult.getId();
+                    List<AssoHandleResultFile> assoHandleResultFiletemps = assoHandleResultFiles.stream().filter(item -> item.getTaskHandleResultId().equals(resultId)).collect(Collectors.toList());
+                    assoHandleResultFiletemps.forEach(item -> {
+                        PatentDigProjectFilesVO patentDigProjectFilesVO = new PatentDigProjectFilesVO();
+                        patentDigProjectFilesVO.setHandleResult(taskHandleResult.getHandleResult());
+                        patentDigProjectFilesVO.setProjectId(projectId);
+                        patentDigProjectFilesVO.setFileGuid(item.getFileGuid());
+                        patentDigProjectFilesVO.setCreateId(item.getCreateId());
+                        patentDigProjectFilesVO.setProcessId(processId);
+                        patentDigProjectFilesVO.setCreateTime(item.getCreateTime());
+                        patentDigProjectFilesVO.setSource(2);
+                        patentDigProjectFilesVOS.add(patentDigProjectFilesVO);
+                    });
+                }
+
             }
         }
         //查询项目下的文件
@@ -433,9 +448,10 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
     /**
      * 删除
      * 来源:1 PatentDigProjectFiles
-     *      2 AssoHandleResultFile
-     *      3 AssoProjectFile
-     *      4 AssoTaskFile
+     * 2 AssoHandleResultFile
+     * 3 AssoProjectFile
+     * 4 AssoTaskFile
+     *
      * @param source
      * @param fileGuid
      */
@@ -462,4 +478,26 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
             }
         }
     }
+
+    public void getFileDTOs(List<PatentDigProjectFiles> patentDigProjectFiles, Integer taskId, List<FileDTO> fileDTOS) {
+        List<File> files = new ArrayList<>();
+        patentDigProjectFiles.forEach(item -> {
+            if (fileDTOS != null) {
+                try {
+                    File file = fileManagerService.getOrgTempFileByGuid(item.getFileGuid());
+                    List<String> guids = fileManagerService.uploadFileGetGuid2(Arrays.asList(file));
+                    if (guids != null && guids.size() > 0) {
+                        FileDTO fileDTO = new FileDTO();
+                        fileDTO.setGuid(guids.get(0));
+                        fileDTO.setRootGuid(item.getFileGuid());
+                        fileDTOS.add(fileDTO);
+                    }
+                    files.add(file);
+                } catch (Exception e) {
+                    throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "上传文件失败");
+                }
+            }
+        });
+        files.forEach(item -> item.delete());
+    }
 }

+ 110 - 111
src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java

@@ -92,13 +92,13 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
     private QueryGroupFactory queryGroupFactory;
 
     @Autowired
-    private  SystemDictService systemDictService;
+    private SystemDictService systemDictService;
 
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
         List<String> sqls = formatQueryService.reSqls(queryRequest, "patentDigProject");
         //根据sql查询专题库信息
-       sqls = this.loadSearchSql(sqls);
+        sqls = this.loadSearchSql(sqls);
         List<PatentDigProjectVO> patentProjectVOS = patentDigProjectMapper.getPatentDigProject(sqls.get(0), sqls.get(1), sqls.get(2));
         Long total = patentDigProjectMapper.getPatentDigCount(sqls.get(0));
         //装载专利数据库信息
@@ -161,13 +161,13 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
         }
 
         tableName = "( select p.id as id ,p.create_id as createId,p.tenant_id as tenantId,p.head_id as headId,asps.scenario_id as scenarioId,aspm.matter_id as matterId,p.create_time as createTime ,entrust_id as entrustId,entrust_type as entrustType ,aspe.event_id as eventId from patent_dig_project as dp left join project as p on dp.project_id =p.id left join rd_project rp on dp.rd_project_id =rp.id ";
-        tableName+=  "left join (select * from asso_project_event where scenario_id is not null ) as asps on p.id = asps.project_id " +
+        tableName += "left join (select * from asso_project_event where scenario_id is not null ) as asps on p.id = asps.project_id " +
                 "left join (select * from asso_project_event where event_id is not null ) as aspe on p.id = aspe.project_id " +
                 "left join (select * from asso_project_event where matter_id is not null ) as aspm on p.id = aspm.project_id) as t";
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
-        String countFiled="distinct t.id";
-        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(),countFiled);
+        String countFiled = "distinct t.id";
+        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(), countFiled);
 
         //装载数据
         GroupVO groupVO = new GroupVO();
@@ -187,10 +187,11 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
     public Object addMessage(Object object) {
         //获取登陆人信息 用于设置创建人
         PersonnelVO personnelVO = new PersonnelVO();
-            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
 
         String userId = personnelVO.getId();
         PatentDigProjectDTO patentDigProjectDTO = (PatentDigProjectDTO) object;
+        Integer id = patentDigProjectDTO.getId();
         PatentDigProject patentDigProject = new PatentDigProject();
         BeanUtils.copyProperties(patentDigProjectDTO, patentDigProject);
         Project project = new Project();
@@ -235,8 +236,12 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
             }
         }
 
-
-        project.insert();
+        if (id != null) {
+            project.setId(id);
+            project.updateById();
+        } else {
+            project.insert();
+        }
         patentDigProject.setProjectId(project.getId());
 
 
@@ -248,8 +253,7 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
             LambdaQueryWrapper<RdProject> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(RdProject::getNumber, patentDigProjectDTO.getRdnumber());
             rdProjects = rdProjectService.list(queryWrapper);
-        }
-        else if (patentDigProjectDTO.getRdName() != null && rdProjects.size() == 0) {
+        } else if (patentDigProjectDTO.getRdName() != null && rdProjects.size() == 0) {
             //根据研发项目编号查询研发项目
             LambdaQueryWrapper<RdProject> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(RdProject::getName, patentDigProjectDTO.getRdName());
@@ -274,7 +278,7 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
                 rdProject.insert();
             }
         }
-        if (rdProject.getId()!=null) {
+        if (rdProject.getId() != null) {
             patentDigProject.setRdProjectId(rdProject.getId());
         }
         patentDigProject.setState(2);
@@ -307,7 +311,7 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
         if (events != null && events.size() != 0) {
             //遍历传入的事件集合
             if (events != null && events.size() != 0) {
-                assoProjectEventService.addAssoEventProject(events,project.getId(),2);
+                assoProjectEventService.addAssoEventProject(events, project.getId(), 2);
             }
         }
 
@@ -337,7 +341,7 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
     public Object updateMessage(Object object) {
         //获取登陆人信息 用于设置创建人
         PersonnelVO personnelVO = new PersonnelVO();
-            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         String userId = personnelVO.getId();
         PatentDigProjectUpdateDTO projectUpdateDTO = (PatentDigProjectUpdateDTO) object;
         PatentDigProject patentDigProject = new PatentDigProject();
@@ -348,8 +352,7 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
         //当委托方id不为空时
         if (StringUtils.isNotEmpty(projectUpdateDTO.getEntrustId()) && !StringUtils.equals(projectUpdateDTO.getEntrustId(), "-1")) {
             project.setEntrustId(projectUpdateDTO.getEntrustId());
-        }
-        else {//若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
+        } else {//若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
             if (projectUpdateDTO.getEntrustName() != null && projectUpdateDTO.getEntrustName().trim() != "") {
                 ClientDTO clientDTO = new ClientDTO();
                 clientDTO.setName(projectUpdateDTO.getEntrustName());
@@ -387,107 +390,105 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
             }
         }
 
-            RdProject rdProject = new RdProject();
-            List<RdProject> rdProjects = new ArrayList<>();
-            if (projectUpdateDTO.getRdnumber() != null) {
-                //根据研发项目编号查询研发项目
-                LambdaQueryWrapper<RdProject> queryWrappera = new LambdaQueryWrapper<>();
-                queryWrappera.eq(RdProject::getNumber, projectUpdateDTO.getRdnumber());
-                rdProjects = rdProjectService.list(queryWrappera);
-            } else if (projectUpdateDTO.getRdName() != null && rdProjects.size() == 0) {
-                //根据研发项目编号查询研发项目
-                LambdaQueryWrapper<RdProject> queryWrappera = new LambdaQueryWrapper<>();
-                queryWrappera.eq(RdProject::getName, projectUpdateDTO.getRdName());
-                rdProjects = rdProjectService.list(queryWrappera);
+        RdProject rdProject = new RdProject();
+        List<RdProject> rdProjects = new ArrayList<>();
+        if (projectUpdateDTO.getRdnumber() != null) {
+            //根据研发项目编号查询研发项目
+            LambdaQueryWrapper<RdProject> queryWrappera = new LambdaQueryWrapper<>();
+            queryWrappera.eq(RdProject::getNumber, projectUpdateDTO.getRdnumber());
+            rdProjects = rdProjectService.list(queryWrappera);
+        } else if (projectUpdateDTO.getRdName() != null && rdProjects.size() == 0) {
+            //根据研发项目编号查询研发项目
+            LambdaQueryWrapper<RdProject> queryWrappera = new LambdaQueryWrapper<>();
+            queryWrappera.eq(RdProject::getName, projectUpdateDTO.getRdName());
+            rdProjects = rdProjectService.list(queryWrappera);
+
+        }
 
-            }
+        if (rdProjects.size() != 0) {
+            rdProject = rdProjects.get(0);
+            rdProject.setProductPhase(projectUpdateDTO.getProductPhase());
+            rdProject.setProduct(projectUpdateDTO.getProduct());
+            rdProject.updateById();
 
-            if (rdProjects.size() != 0) {
-                rdProject = rdProjects.get(0);
+        } else {
+            if (projectUpdateDTO.getRdName() != null || projectUpdateDTO.getRdnumber() != null || projectUpdateDTO.getProduct() != null || projectUpdateDTO.getProductPhase() != null) {
+                rdProject.setName(projectUpdateDTO.getRdName());
+                rdProject.setCreateId(userId);
+                rdProject.setTenantId(personnelVO.getTenantId());
+                rdProject.setNumber(projectUpdateDTO.getRdnumber());
                 rdProject.setProductPhase(projectUpdateDTO.getProductPhase());
                 rdProject.setProduct(projectUpdateDTO.getProduct());
-                rdProject.updateById();
-
-            } else {
-                if (projectUpdateDTO.getRdName() != null || projectUpdateDTO.getRdnumber() != null || projectUpdateDTO.getProduct() != null || projectUpdateDTO.getProductPhase() != null) {
-                    rdProject.setName(projectUpdateDTO.getRdName());
-                    rdProject.setCreateId(userId);
-                    rdProject.setTenantId(personnelVO.getTenantId());
-                    rdProject.setNumber(projectUpdateDTO.getRdnumber());
-                    rdProject.setProductPhase(projectUpdateDTO.getProductPhase());
-                    rdProject.setProduct(projectUpdateDTO.getProduct());
-                    rdProject.insert();
-                }
-            }
-            if (rdProject.getId() != null) {
-                patentDigProject.setRdProjectId(rdProject.getId());
+                rdProject.insert();
             }
+        }
+        if (rdProject.getId() != null) {
+            patentDigProject.setRdProjectId(rdProject.getId());
+        }
 
 
-            //更新专利挖掘项目
+        //更新专利挖掘项目
         patentDigProject.updateById();
-            //移除和附件关联
-            LambdaQueryWrapper<AssoProjectFile> assoQueryWrapper = new LambdaQueryWrapper<>();
-            assoQueryWrapper.eq(AssoProjectFile::getProjectId, projectUpdateDTO.getId());
-            assoProjectFileService.remove(assoQueryWrapper);
-
-            /**
-             * 装载和附件关联
-             */
-            List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
-            List<String> fileGuids = projectUpdateDTO.getFileGuids();
-            if (fileGuids != null && fileGuids.size() != 0) {
-                for (String fileGuid : fileGuids) {
-                    AssoProjectFile assoProjectFile = new AssoProjectFile();
-                    assoProjectFile.setProjectId(project.getId());
-                    assoProjectFile.setFileGuid(fileGuid);
-                    assoProjectFile.setCreateId(personnelVO.getId());
-                    assoProjectFiles.add(assoProjectFile);
-                }
-                if (assoProjectFiles != null && assoProjectFiles.size() != 0) {
-                    assoProjectFileService.saveBatch(assoProjectFiles);
-                }
-            }
+        //移除和附件关联
+        LambdaQueryWrapper<AssoProjectFile> assoQueryWrapper = new LambdaQueryWrapper<>();
+        assoQueryWrapper.eq(AssoProjectFile::getProjectId, projectUpdateDTO.getId());
+        assoProjectFileService.remove(assoQueryWrapper);
 
-            //删除和事件关联
-            LambdaQueryWrapper<AssoProjectEvent> assoEventQueryWrapper = new LambdaQueryWrapper<>();
-            assoEventQueryWrapper.eq(AssoProjectEvent::getProjectId, projectUpdateDTO.getId());
-            assoProjectEventService.remove(assoEventQueryWrapper);
-            /**
-             * 装载事件与project关联
-             */
-            List<ProjectEventDTO> events = projectUpdateDTO.getEvents();
-                if (events != null && events.size() != 0) {
-                    assoProjectEventService.addAssoEventProject(events,project.getId(),2);
-                }
+        /**
+         * 装载和附件关联
+         */
+        List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
+        List<String> fileGuids = projectUpdateDTO.getFileGuids();
+        if (fileGuids != null && fileGuids.size() != 0) {
+            for (String fileGuid : fileGuids) {
+                AssoProjectFile assoProjectFile = new AssoProjectFile();
+                assoProjectFile.setProjectId(project.getId());
+                assoProjectFile.setFileGuid(fileGuid);
+                assoProjectFile.setCreateId(personnelVO.getId());
+                assoProjectFiles.add(assoProjectFile);
+            }
+            if (assoProjectFiles != null && assoProjectFiles.size() != 0) {
+                assoProjectFileService.saveBatch(assoProjectFiles);
+            }
+        }
 
+        //删除和事件关联
+        LambdaQueryWrapper<AssoProjectEvent> assoEventQueryWrapper = new LambdaQueryWrapper<>();
+        assoEventQueryWrapper.eq(AssoProjectEvent::getProjectId, projectUpdateDTO.getId());
+        assoProjectEventService.remove(assoEventQueryWrapper);
+        /**
+         * 装载事件与project关联
+         */
+        List<ProjectEventDTO> events = projectUpdateDTO.getEvents();
+        if (events != null && events.size() != 0) {
+            assoProjectEventService.addAssoEventProject(events, project.getId(), 2);
+        }
 
 
-            LambdaQueryWrapper<AssoProjectPerson> assoProjectPersonLambdaQueryWrapper = new LambdaQueryWrapper<>();
-            assoProjectPersonLambdaQueryWrapper.eq(AssoProjectPerson::getProjectId, projectUpdateDTO.getId());
-            assoProjectPersonService.remove(assoProjectPersonLambdaQueryWrapper);
+        LambdaQueryWrapper<AssoProjectPerson> assoProjectPersonLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        assoProjectPersonLambdaQueryWrapper.eq(AssoProjectPerson::getProjectId, projectUpdateDTO.getId());
+        assoProjectPersonService.remove(assoProjectPersonLambdaQueryWrapper);
 
-            /**
-             *装载参与人
-             */
-            if (projectUpdateDTO.getInvolvedPersonIds() != null && projectUpdateDTO.getInvolvedPersonIds().size() != 0) {
-                List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
-                projectUpdateDTO.getInvolvedPersonIds().forEach(item -> {
-                    AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
-                    assoProjectPerson.setPersonId(item);
-                    assoProjectPerson.setRole(1);
-                    assoProjectPerson.setProjectId(project.getId());
-                    assoProjectPerson.setCreateId(userId);
-                    assoProjectPersonList.add(assoProjectPerson);
-                });
-                assoProjectPersonService.saveBatch(assoProjectPersonList);
-            }
-            return projectUpdateDTO.getId();
+        /**
+         *装载参与人
+         */
+        if (projectUpdateDTO.getInvolvedPersonIds() != null && projectUpdateDTO.getInvolvedPersonIds().size() != 0) {
+            List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
+            projectUpdateDTO.getInvolvedPersonIds().forEach(item -> {
+                AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
+                assoProjectPerson.setPersonId(item);
+                assoProjectPerson.setRole(1);
+                assoProjectPerson.setProjectId(project.getId());
+                assoProjectPerson.setCreateId(userId);
+                assoProjectPersonList.add(assoProjectPerson);
+            });
+            assoProjectPersonService.saveBatch(assoProjectPersonList);
         }
+        return projectUpdateDTO.getId();
+    }
 
 
-
-    public Records getRdProjectByNumber(@RequestBody StringRequest stringRequest ) {
+    public Records getRdProjectByNumber(@RequestBody StringRequest stringRequest) {
 
         List<String> sqls = formatQueryService.reSqls(stringRequest, "rdProject");
         //根据sql查询专题库信息
@@ -651,7 +652,7 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
             List<AssoProjectFile> assoProjectFileTemp = assoProjectFiles.stream().filter(item -> item.getProjectId().equals(patentDigProjectVO.getId())).collect(Collectors.toList());
             if (assoProjectFileTemp.size() != 0) {
                 List<String> guidTemp = assoProjectFileTemp.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
-                if (guidTemp.size() != 0&&systemFiles!=null) {
+                if (guidTemp.size() != 0 && systemFiles != null) {
                     List<SystemFile> systemFileTemp = systemFiles.stream().filter(item -> guidTemp.contains(item.getGuid())).collect(Collectors.toList());
                     if (systemFileTemp.size() != 0) {
                         patentDigProjectVO.setSystemFileList(systemFileTemp);
@@ -720,7 +721,7 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
             }
 
             //装载报告状态
-            SystemDict systemDictStatus = systemDictList.stream().filter(item -> patentDigProjectVO.getState().equals(Integer.parseInt(item.getValue()))&&item.getType().equals("REPORT_STATE")).findFirst().orElse(null);
+            SystemDict systemDictStatus = systemDictList.stream().filter(item -> patentDigProjectVO.getState().equals(Integer.parseInt(item.getValue())) && item.getType().equals("REPORT_STATE")).findFirst().orElse(null);
             if (systemDictStatus != null) {
                 patentDigProjectVO.setStateName(systemDictStatus.getLabel());
             }
@@ -731,19 +732,17 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
 
 
     //装载查询语句
-    private List<String> loadSearchSql(List<String> sqls){
-        PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
-        String id =personnelVO.getId();
-        Integer tenantId= personnelVO.getTenantId();
+    private List<String> loadSearchSql(List<String> sqls) {
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        String id = personnelVO.getId();
+        Integer tenantId = personnelVO.getTenantId();
         Integer roleType = personnelVO.getRoleType();
         String rootSql = "";
         if (roleType == null || roleType.equals(0)) {
-            rootSql ="(t.createId ="+id+" or t.headId="+id+" or t.id in (select project_id from asso_project_person where person_id ="+id+"))";
+            rootSql = "(t.createId =" + id + " or t.headId=" + id + " or t.id in (select project_id from asso_project_person where person_id =" + id + "))";
 
-        }
-        else if(roleType.equals(2))
-        {
-            rootSql="t.tenantId="+tenantId;
+        } else if (roleType.equals(2)) {
+            rootSql = "t.tenantId=" + tenantId;
         }
         if (sqls.get(0) != null && !sqls.get(0).equals("") && !rootSql.equals("")) {
             sqls.set(0, rootSql + " and" + "(" + sqls.get(0) + ")");

+ 137 - 64
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -31,6 +31,7 @@ import cn.cslg.pas.service.permissions.PermissionService;
 import cn.cslg.pas.service.query.FormatQueryService;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.BeanUtils;
@@ -41,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -150,7 +152,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                     LambdaUpdateWrapper<PatentDigProject> queryWrapper = new LambdaUpdateWrapper<>();
                     queryWrapper.eq(PatentDigProject::getProjectId, projectId);
                     queryWrapper.set(PatentDigProject::getState, 0);
-                    patentDigProjectService.updateMessage(queryWrapper);
+                    patentDigProjectService.update(queryWrapper);
                 }
                 return projectTaskId;
             } else {
@@ -167,7 +169,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
      * @param projectTaskDTO
      * @return
      */
-    public Integer addTask(ProjectTaskDTO projectTaskDTO) {
+    public Integer addTask(ProjectTaskDTO projectTaskDTO) throws Exception {
         //判断专题库id不为空
         if (projectTaskDTO.getProjectId() == null) {
             throw new XiaoShiException("专题库id不能为空!");
@@ -193,16 +195,9 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
             }
         }
 
-        if (projectTaskDTO.getLastTaskId() != null) {
-            ProjectTask projectTask = this.getById(projectTaskDTO.getLastTaskId());
-            if (projectTask.getTaskPath() == null) {
-                projectTaskDTO.setTaskPath(projectTask.getId().toString());
-            } else {
-                projectTaskDTO.setTaskPath(projectTask.getTaskPath() + "/" + projectTask.getId().toString());
-            }
-        }
         ProjectTask projectTask = new ProjectTask();
         BeanUtils.copyProperties(projectTaskDTO, projectTask);
+        projectTask.setLastTaskId(null);
         //任务状态置为处理中
         projectTask.setStatus(2);
         //获取登录人信息
@@ -213,13 +208,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         //设置任务的发起人
         projectTask.setCreateId(personnelVO.getId());
         projectTask.insert();
-        //如果assoTaskId为空,就设置
-        if (projectTask.getAssoTaskId() == null) {
-            if (projectTask.getType() == 1 || projectTask.getType() == 6 || projectTask.getType() == 7) {
-                projectTask.setAssoTaskId(projectTask.getId());
-                projectTask.updateById();
-            }
-        }
+        Integer taskId = projectTask.getId();
         //新增任务可能会上传附件,如果附件不为空,则添加任务与附件关联
         if (projectTaskDTO.getFileGuids() != null) {
             AssoTaskFileDTO assoTaskFileDTO = new AssoTaskFileDTO();
@@ -227,16 +216,29 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
             assoTaskFileDTO.setFileGuids(projectTaskDTO.getFileGuids());
             assoTaskFileService.addTaskFile(assoTaskFileDTO);
         }
+
+        if (projectTaskDTO.getLastTaskId() != null) {
+            LambdaQueryWrapper<TaskHandleResult> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(TaskHandleResult::getTaskId, projectTaskDTO.getLastTaskId());
+            TaskHandleResult taskHandleResult = taskHandleResultService.getOne(queryWrapper, false);
+            if (taskHandleResult != null) {
+                Integer resultId = taskHandleResult.getId();
+                LambdaQueryWrapper<AssoHandleResultFile> queryWrapper1 = new LambdaQueryWrapper<>();
+                queryWrapper1.eq(AssoHandleResultFile::getTaskHandleResultId, resultId);
+                List<AssoHandleResultFile> assoHandleResultFiles = assoHandleResultFileService.list(queryWrapper1);
+                List<FileDTO> fileDTOS = new ArrayList<>();
+                this.getCopyFileDTOs(assoHandleResultFiles, fileDTOS);
+                FileFormDTO fileFormDTO = new FileFormDTO();
+                fileFormDTO.setFiles(fileDTOS);
+                this.addProjectTaskFileByFormDTO(fileFormDTO, taskId);
+            }
+        }
         //根据新增的审核任务的lastTaskId,将上一级任务状态改为审核中
         if (projectTask.getLastTaskId() != null && projectTask.getType().equals(5)) {
-            LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
+            LambdaUpdateWrapper<ProjectTask> queryWrapper = new LambdaUpdateWrapper<>();
             queryWrapper.eq(ProjectTask::getId, projectTask.getLastTaskId());
-            List<ProjectTask> projectTasks = this.list(queryWrapper);
-            if (projectTasks != null && projectTasks.size() != 0) {
-                ProjectTask projectTask1 = projectTasks.get(0);
-                projectTask1.setStatus(1);
-                projectTask1.updateById();
-            }
+            queryWrapper.set(ProjectTask::getStatus, 1);
+            this.update(queryWrapper);
         }
         //项目可见人检验
         //如果是内部人员
@@ -1362,6 +1364,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         String handleName = taskFormDTO.getHandler();
         Date deadLineTime = taskFormDTO.getDeadLineTime();
         Integer lastTaskId = taskFormDTO.getLastTaskId();
+        Integer assoTaskId = taskFormDTO.getAssoTaskId();
         ProjectTask projectTask = new ProjectTask();
         projectTask.setName(name);
         projectTask.setHandlerType(handleType);
@@ -1369,6 +1372,8 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         projectTask.setDeadLineTime(deadLineTime);
         projectTask.setProjectId(projectId);
         projectTask.setType(taskFormDTO.getTaskType());
+        projectTask.setAssoTaskId(assoTaskId);
+
         //任务状态置为处理中
         projectTask.setStatus(2);
         //获取登录人信息
@@ -1379,29 +1384,26 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
             String lastName = projectTask1.getName();
             projectTask.setLastTaskId(lastTaskId);
             projectTask.setProjectId(projectTask1.getProjectId());
-            Integer rootTaskId = projectTask1.getAssoTaskId();
-            if (rootTaskId == null) {
-                rootTaskId = projectTask1.getId();
-            }
-            projectTask.setAssoTaskId(rootTaskId);
+            projectTask.setProcessId(projectTask1.getProcessId());
+            projectTask.setType(projectTask1.getType());
             String lastPath = projectTask1.getTaskPath();
             if (lastPath == null) {
-                lastPath = "";
+                lastPath = projectTask1.getId() + "";
             } else {
-                lastPath += "/";
+                lastPath += "/" + projectTask1.getId();
             }
-
+            projectTask.setTaskPath(lastPath);
             Integer b = 1;
             if (!lastPath.equals("")) {
                 String[] a = lastPath.split("/");
                 b = a.length + 1;
             }
-            String newName = lastName.substring(0, lastName.lastIndexOf("-"));
-            newName = newName + "-" + b + "级审核";
+
+            String newName = lastName + "-" + b + "级审核";
             projectTask.setName(newName);
-            projectTask.setTaskPath(lastPath + projectTask1.getId());
 
         }
+
         //设置任务的发起人
         projectTask.setCreateId(personnelVO.getId());
         projectTask.insert();
@@ -1423,15 +1425,16 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     public Integer addFileExamineTask(AddFileExamineTaskDTO addFileExamineTaskDTO) {
         FileFormDTO fileFormDTO = addFileExamineTaskDTO.getFileForm();
         TaskFormDTO taskFormDTO = addFileExamineTaskDTO.getTaskForm();
+        taskFormDTO.setTaskType(taskFormDTO.getTaskType());
         Integer projectId = fileFormDTO.getProjectId();
         ProjectTask projectTask = this.addTaskByTaskFormDTO(taskFormDTO, projectId);
         Integer taskId = projectTask.getId();
         this.addProjectTaskFileByFormDTO(fileFormDTO, taskId);
 
         //如果是内部人员
-        if (projectTask.getHandlerType().equals(0)) {
-            this.checkProjectPerson(1, projectTask.getHandler(), projectTask.getProjectId(), projectTask.getId());
-        }
+//        if (projectTask.getHandlerType().equals(0)) {
+//            this.checkProjectPerson(1, projectTask.getHandler(), projectTask.getProjectId(), projectTask.getId());
+//        }
         return projectTask.getId();
     }
 
@@ -1445,9 +1448,13 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         List<TaskResultVO> taskDetailsVOs = new ArrayList<>();
         Integer taskId = getExamineHistoryDTO.getTaskId();
         String fileGuid = getExamineHistoryDTO.getFileGuid();
+        Boolean ifGetLast = getExamineHistoryDTO.getIfGetLast();
         String rootGuid = fileGuid;
         if (fileGuid != null && !fileGuid.equals("")) {
             AssoTaskFile assoTaskFile = assoTaskFileService.getAssoTaskFileByGuid(fileGuid);
+            if (assoTaskFile == null) {
+                return new ArrayList<>();
+            }
             if (taskId == null) {
                 taskId = assoTaskFile.getTaskId();
             }
@@ -1456,16 +1463,37 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
             }
         }
         //根据taskId 查询任务
+
+        LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
         ProjectTask projectTask = this.getById(taskId);
         Integer rootTaskId = projectTask.getAssoTaskId();
         if (rootTaskId == null) {
-            rootTaskId = projectTask.getId();
+            String path = projectTask.getTaskPath();
+            String key = null;
+            if (path == null) {
+                key = projectTask.getId() + "";
+            } else {
+                String[] paths = path.split("/");
+                key = paths[0];
+            }
+
+            queryWrapper.apply("id=" + key + " or find_in_set(" + key + ",REPLACE(task_path, '/', ',')) ");
+        } else {
+            queryWrapper.eq(ProjectTask::getAssoTaskId, rootTaskId);
+        }
+        List<ProjectTask> projectTasks = new ArrayList<>();
+        if (ifGetLast != null && ifGetLast) {
+            queryWrapper.orderByDesc(ProjectTask::getCreateTime);
+            ProjectTask projectTask1 = this.getOne(queryWrapper,false);
+            if (projectTask1 != null) {
+                projectTasks.add(projectTask1);
+            }
+        } else {
+            queryWrapper.orderByAsc(ProjectTask::getCreateTime);
+            projectTasks = this.list(queryWrapper);
         }
 
-        LambdaQueryWrapper<ProjectTask> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ProjectTask::getAssoTaskId, rootTaskId).or().eq(ProjectTask::getId, rootTaskId)
-                .orderByAsc(ProjectTask::getCreateTime);
-        List<ProjectTask> projectTasks = this.list(queryWrapper);
+
         List<Integer> taskIds = projectTasks.stream().map(ProjectTask::getId).collect(Collectors.toList());
 
         if (taskIds == null || taskIds.size() == 0) {
@@ -1474,17 +1502,18 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         LambdaQueryWrapper<TaskHandleResult> resultLambdaQueryWrapper = new LambdaQueryWrapper<>();
         resultLambdaQueryWrapper.in(TaskHandleResult::getTaskId, taskIds);
         List<TaskHandleResult> taskHandleResults = taskHandleResultService.list(resultLambdaQueryWrapper);
-
+        List<AssoHandleResultFile> resultFiles = new ArrayList<>();
         List<Integer> resultIds = taskHandleResults.stream().map(TaskHandleResult::getId).collect(Collectors.toList());
-        if (resultIds == null || resultIds.size() == 0) {
-            return taskDetailsVOs;
-        }
-        LambdaQueryWrapper<AssoHandleResultFile> resultFileWrapper = new LambdaQueryWrapper<>();
-        resultFileWrapper.in(AssoHandleResultFile::getTaskHandleResultId, resultIds);
-        if (fileGuid != null && !fileGuid.equals("")) {
-            resultFileWrapper.eq(AssoHandleResultFile::getRootFileGuid, rootGuid);
+        if (resultIds != null && resultIds.size() > 0) {
+            LambdaQueryWrapper<AssoHandleResultFile> resultFileWrapper = new LambdaQueryWrapper<>();
+            resultFileWrapper.in(AssoHandleResultFile::getTaskHandleResultId, resultIds);
+            if (fileGuid != null && !fileGuid.equals("")) {
+                resultFileWrapper.eq(AssoHandleResultFile::getRootFileGuid, rootGuid);
+            }
+            resultFiles = assoHandleResultFileService.list(resultFileWrapper);
         }
-        List<AssoHandleResultFile> resultFiles = assoHandleResultFileService.list(resultFileWrapper);
+
+
         List<String> fileGuids = resultFiles.stream().map(AssoHandleResultFile::getFileGuid).collect(Collectors.toList());
         List<SystemFile> systemFiles = new ArrayList<>();
         if (!fileGuids.isEmpty()) {
@@ -1492,17 +1521,33 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
             systemFiles = JSONObject.parseArray(res, SystemFile.class);
         }
 
-        for (TaskHandleResult taskHandleResult : taskHandleResults) {
-            Integer id = taskHandleResult.getId();
+        for (ProjectTask projectTask1 : projectTasks) {
             TaskResultVO taskResultVO = new TaskResultVO();
-            BeanUtils.copyProperties(taskHandleResult, taskResultVO);
-            List<String> temGuids = resultFiles.stream().filter(item -> item.getTaskHandleResultId().equals(id)).map(AssoHandleResultFile::getFileGuid).collect(Collectors.toList());
-            if (temGuids != null && temGuids.size() > 0) {
-                List<SystemFile> systemFileList = systemFiles.stream().filter(item -> temGuids.contains(item.getGuid())).collect(Collectors.toList());
-                taskResultVO.setFiles(systemFileList);
+            Integer status = projectTask1.getStatus();
+            Integer taskId1 = projectTask1.getId();
+            Integer handleType = projectTask1.getHandlerType();
+            String handler = projectTask1.getHandler();
+            TaskHandleResult taskHandleResult = taskHandleResults.stream().filter(item -> item.getTaskId().equals(taskId1)).findFirst().orElse(null);
+            if (taskHandleResult != null) {
+                BeanUtils.copyProperties(taskHandleResult, taskResultVO);
+                List<String> temGuids = resultFiles.stream().filter(item -> item.getTaskHandleResultId().equals(taskHandleResult.getId())).map(AssoHandleResultFile::getFileGuid).collect(Collectors.toList());
+                if (temGuids != null && temGuids.size() > 0) {
+                    List<SystemFile> systemFileList = systemFiles.stream().filter(item -> temGuids.contains(item.getGuid())).collect(Collectors.toList());
+                    taskResultVO.setFiles(systemFileList);
+                }
+            } else {
+                taskResultVO.setNextAuditor(projectTask1.getCreateId());
             }
+            if (handleType.equals(0)) {
+                taskResultVO.setCreateId(handler);
+            } else {
+                taskResultVO.setCreateName(handler);
+            }
+            taskResultVO.setStatus(status);
             taskDetailsVOs.add(taskResultVO);
         }
+
+
         //装载名称
         this.loadTaskResultVos(taskDetailsVOs);
         return taskDetailsVOs;
@@ -1528,11 +1573,13 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
         //装载所有审查历史中的人员name
         for (TaskResultVO taskResultVO : taskResultVOs) {
-            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(taskResultVO.getCreateId())).findFirst().orElse(null);
-            if (personnel != null) {
-                taskResultVO.setCreateName(personnel.getPersonnelName());
-            } else {
-                throw new XiaoShiException("未获取到分配任务的负责人id信息");
+            if (taskResultVO.getCreateName() == null) {
+                Personnel personnel = personnels.stream().filter(item -> item.getId().equals(taskResultVO.getCreateId())).findFirst().orElse(null);
+                if (personnel != null) {
+                    taskResultVO.setCreateName(personnel.getPersonnelName());
+                } else {
+                    throw new XiaoShiException("未获取到分配任务的负责人id信息");
+                }
             }
         }
         return;
@@ -1548,4 +1595,30 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         taskFormDTO.setDescription(projectTaskDTO.getDescription());
         return taskFormDTO;
     }
+
+    /**
+     * 从审核结果文件中,复制文件
+     *
+     * @param assoHandleResultFiles
+     * @param fileDTOS
+     * @throws Exception
+     */
+    public void getCopyFileDTOs(List<AssoHandleResultFile> assoHandleResultFiles, List<FileDTO> fileDTOS) throws Exception {
+        List<File> files = new ArrayList<>();
+        for (AssoHandleResultFile assoHandleResultFile : assoHandleResultFiles) {
+            String rootFileGuid = assoHandleResultFile.getFileGuid();
+            File file = fileManagerService.getOrgTempFileByGuid(assoHandleResultFile.getFileGuid());
+            files.add(file);
+            if (fileDTOS != null) {
+                List<String> guid2s = fileManagerService.uploadFileGetGuid2(Arrays.asList(file));
+                if (guid2s != null && guid2s.size() > 0) {
+                    FileDTO fileDTO = new FileDTO();
+                    fileDTO.setGuid(guid2s.get(0));
+                    fileDTO.setRootGuid(rootFileGuid);
+                    fileDTOS.add(fileDTO);
+                }
+            }
+        }
+        files.forEach(item -> item.delete());
+    }
 }

+ 155 - 29
src/main/java/cn/cslg/pas/service/business/TaskHandleResultService.java

@@ -11,6 +11,7 @@ import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.common.vo.business.GetHandleResultFileVO;
 import cn.cslg.pas.common.vo.business.HandleResultFileVO;
 import cn.cslg.pas.domain.business.*;
+import cn.cslg.pas.exception.ExceptionEnum;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.TaskHandleResultMapper;
@@ -64,6 +65,10 @@ public class TaskHandleResultService extends ServiceImpl<TaskHandleResultMapper,
     private ReportProjectService reportProjectService;
     @Autowired
     private AssoTaskFileService assoTaskFileService;
+    @Autowired
+    private PatentDigProjectService patentDigProjectService;
+    @Autowired
+    private PatentDigProjectFilesService patentDigProjectFilesService;
 
     /**
      * 添加任务处理结果
@@ -71,7 +76,7 @@ public class TaskHandleResultService extends ServiceImpl<TaskHandleResultMapper,
      * @param taskHandleResultDTO
      * @return
      */
-    public Integer addTaskAuditResult(TaskHandleResultDTO taskHandleResultDTO) {
+    public Integer addTaskAuditResult(TaskHandleResultDTO taskHandleResultDTO) throws Exception {
         //判断任务id是否为空
         if (taskHandleResultDTO.getTaskId() == null) {
             throw new XiaoShiException("任务id不能为空");
@@ -266,28 +271,106 @@ public class TaskHandleResultService extends ServiceImpl<TaskHandleResultMapper,
         taskHandleResult.setCreateId(personnelVO.getId());
         //任务处理结果入库
         taskHandleResult.insert();
-        return  taskHandleResult;
+        return taskHandleResult;
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public Integer addTaskAuditResult(SubmitResultDTO submitResultDTO) throws IOException {
+    public Integer addTaskAuditResult(SubmitResultDTO submitResultDTO) throws Exception {
         Integer taskId = submitResultDTO.getTaskId();
         Integer handlerType = submitResultDTO.getHandlerType();
-
+        String result = submitResultDTO.getResult();
         String handler = submitResultDTO.getHandler();
         Date deadLineTime = submitResultDTO.getDeadLineTime();
         List<String> extraFiles = submitResultDTO.getFiles();
         Integer createId = loginUtils.getId();
         TaskHandleResult taskHandleResult = this.addResult(submitResultDTO);
         Integer resultId = taskHandleResult.getId();
-        //根据taskId 查询待审核文件
+        List<AssoHandleResultFile> assoHandleResultFiles = new ArrayList<>();
+
+        List<FileDTO> fileDTOS = new ArrayList<>();
+        if (handler == null || handler.equals("")) {
+            fileDTOS = null;
+        }
+        this.getCopyFiles(taskId, resultId, createId, assoHandleResultFiles, fileDTOS);
+        this.getExtraCopyFile(extraFiles, resultId, createId, assoHandleResultFiles, fileDTOS);
+        if (assoHandleResultFiles.size() > 0) {
+            assoHandleResultFileService.saveBatch(assoHandleResultFiles);
+        }
+
+        //添加下一个审核任务
+        if (handler != null) {
+            ProjectTask projectTask = projectTaskService.getById(taskId);
+            FileFormDTO fileFormDTO = new FileFormDTO();
+            fileFormDTO.setFiles(fileDTOS);
+            TaskFormDTO taskFormDTO = new TaskFormDTO();
+            taskFormDTO.setTaskType(projectTask.getType());
+            taskFormDTO.setLastTaskId(taskId);
+            taskFormDTO.setHandler(handler);
+            taskFormDTO.setAssoTaskId(projectTask.getAssoTaskId());
+            taskFormDTO.setHandlerType(handlerType);
+            taskFormDTO.setDeadLineTime(deadLineTime);
+            AddFileExamineTaskDTO addFileExamineTaskDTO = new AddFileExamineTaskDTO();
+            addFileExamineTaskDTO.setTaskForm(taskFormDTO);
+            addFileExamineTaskDTO.setFileForm(fileFormDTO);
+            projectTaskService.addFileExamineTask(addFileExamineTaskDTO);
+            LambdaUpdateWrapper<ProjectTask> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.eq(ProjectTask::getId, taskId);
+            updateWrapper.set(ProjectTask::getStatus, 3);
+            projectTaskService.update(updateWrapper);
+        } else {
+            ProjectTask projectTask = projectTaskService.getById(taskId);
+            //开卷审核任务结束逻辑
+            if (projectTask.getType().equals(1)) {
+                this.updateProjectStauts(projectTask.getProjectId(), taskId, result);
+            }
+            //专利挖掘审核任务结束逻辑
+            if (projectTask.getType().equals(5)) {
+                if (projectTask.getAssoTaskId() == null) {
+                    LambdaUpdateWrapper<ProjectTask> updateWrapper = new LambdaUpdateWrapper<>();
+                    updateWrapper.eq(ProjectTask::getId, taskId);
+                    updateWrapper.set(ProjectTask::getStatus, 3);
+                    projectTaskService.update(updateWrapper);
+                    //查询所有审核结果文件
+                    List<String> rootGuids = assoHandleResultFiles.stream().map(AssoHandleResultFile::getRootFileGuid).collect(Collectors.toList());
+                    LambdaUpdateWrapper<PatentDigProjectFiles> filesUpdateWrapper = new LambdaUpdateWrapper<>();
+                    filesUpdateWrapper.in(PatentDigProjectFiles::getFileGuid, rootGuids);
+                    filesUpdateWrapper.set(PatentDigProjectFiles::getHandleResult, result);
+                    patentDigProjectFilesService.update(filesUpdateWrapper);
+                } else {
+                    LambdaUpdateWrapper<ProjectTask> updateWrapper = new LambdaUpdateWrapper<>();
+                    updateWrapper.eq(ProjectTask::getId, Arrays.asList(taskId, projectTask.getAssoTaskId()));
+                    updateWrapper.set(ProjectTask::getStatus, 3);
+                    projectTaskService.update(updateWrapper);
+                    LambdaUpdateWrapper<TaskHandleResult> resultWrapper = new LambdaUpdateWrapper<>();
+                    resultWrapper.eq(TaskHandleResult::getTaskId, projectTask.getAssoTaskId());
+                    resultWrapper.set(TaskHandleResult::getHandleResult, result);
+                    this.update(resultWrapper);
+                }
+            }
+
+
+        }
+
+        return taskHandleResult.getId();
+    }
+
+    /**
+     * 复制任务的待审核文件到审核结果以及下一个审核任务中去
+     *
+     * @param taskId
+     * @param resultId
+     * @param createId
+     * @param assoHandleResultFiles
+     * @param fileDTOS
+     * @throws Exception
+     */
+    public void getCopyFiles(Integer taskId, Integer resultId, Integer createId, List<AssoHandleResultFile> assoHandleResultFiles, List<FileDTO> fileDTOS) throws Exception {
+        List<File> files = new ArrayList<>();
         List<AssoTaskFile> assoTaskFiles = new ArrayList<>();
         LambdaQueryWrapper<AssoTaskFile> taskFileQueryWrapper = new LambdaQueryWrapper<>();
         taskFileQueryWrapper.eq(AssoTaskFile::getTaskId, taskId);
         assoTaskFiles = assoTaskFileService.list(taskFileQueryWrapper);
-        List<AssoHandleResultFile> assoHandleResultFiles = new ArrayList<>();
-        List<File> files = new ArrayList<>();
-        List<FileDTO> fileDTOS = new ArrayList<>();
+
         for (AssoTaskFile assoTaskFile : assoTaskFiles) {
             String rootFileGuid = assoTaskFile.getRootFileGuid();
             if (rootFileGuid == null) {
@@ -305,7 +388,7 @@ public class TaskHandleResultService extends ServiceImpl<TaskHandleResultMapper,
                 assoHandleResultFiles.add(assoHandleResultFile);
 
             }
-            if (handler != null) {
+            if (fileDTOS != null) {
                 List<String> guid2s = fileManagerService.uploadFileGetGuid2(Arrays.asList(file));
                 if (guid2s != null && guid2s.size() > 0) {
                     FileDTO fileDTO = new FileDTO();
@@ -316,6 +399,20 @@ public class TaskHandleResultService extends ServiceImpl<TaskHandleResultMapper,
             }
 
         }
+        files.forEach(item -> item.delete());
+    }
+
+    /**
+     * 复制附件到审核结果和下一个审核任务中去
+     *
+     * @param extraFiles
+     * @param resultId
+     * @param createId
+     * @param assoHandleResultFiles
+     * @param fileDTOS
+     */
+    public void getExtraCopyFile(List<String> extraFiles, Integer resultId, Integer createId, List<AssoHandleResultFile> assoHandleResultFiles, List<FileDTO> fileDTOS) {
+
         if (extraFiles != null && extraFiles.size() > 0) {
             extraFiles.forEach(item -> {
                 AssoHandleResultFile assoHandleResultFile = new AssoHandleResultFile();
@@ -323,7 +420,7 @@ public class TaskHandleResultService extends ServiceImpl<TaskHandleResultMapper,
                 assoHandleResultFile.setTaskHandleResultId(resultId);
                 assoHandleResultFile.setCreateId(createId + "");
                 assoHandleResultFiles.add(assoHandleResultFile);
-                if (handler != null) {
+                if (fileDTOS != null) {
                     try {
                         File file = fileManagerService.getOrgTempFileByGuid(item);
                         List<String> guids = fileManagerService.uploadFileGetGuid2(Arrays.asList(file));
@@ -332,32 +429,61 @@ public class TaskHandleResultService extends ServiceImpl<TaskHandleResultMapper,
                             fileDTO.setGuid(guids.get(0));
                             fileDTOS.add(fileDTO);
                         }
+                        file.delete();
                     } catch (Exception e) {
+                        throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "上传文件失败");
                     }
                 }
             });
         }
-        if (assoHandleResultFiles.size() > 0) {
-            assoHandleResultFileService.saveBatch(assoHandleResultFiles);
+    }
+
+    public void upProjectTask(Integer taskId, Integer taskStatus) {
+        LambdaUpdateWrapper<ProjectTask> query = new LambdaUpdateWrapper<>();
+        query.eq(ProjectTask::getId, taskId);
+        query.set(ProjectTask::getStatus, taskStatus);
+        projectTaskService.update(query);
+    }
+
+    /**
+     * 更新项目状态
+     *
+     * @param projectId
+     * @param taskId
+     * @param result
+     */
+    public void updateProjectStauts(Integer projectId, Integer taskId, String result) {
+        Integer type = 0;
+        if (result.equals("通过")) {
+            type = 0;
+        } else if (result.equals("不通过")) {
+            type = 1;
+        }
+        //根据projectId查询类型
+        Project project = projectService.getById(projectId);
+        Integer projectType = project.getType();
+        Integer taskStatus = 3;
+        Integer projectStatus = 2;
+        if (type.equals(0)) {
+            taskStatus = 3;
+            projectStatus = 2;
+        } else if (type.equals(1)) {
+            taskStatus = 3;
+            projectStatus = 4;
         }
 
-        if (handler != null) {
-            FileFormDTO fileFormDTO = new FileFormDTO();
-            fileFormDTO.setFiles(fileDTOS);
-            TaskFormDTO taskFormDTO = new TaskFormDTO();
-            taskFormDTO.setLastTaskId(taskId);
-            taskFormDTO.setHandler(handler);
-            taskFormDTO.setHandlerType(handlerType);
-            taskFormDTO.setDeadLineTime(deadLineTime);
-            AddFileExamineTaskDTO addFileExamineTaskDTO = new AddFileExamineTaskDTO();
-            addFileExamineTaskDTO.setTaskForm(taskFormDTO);
-            addFileExamineTaskDTO.setFileForm(fileFormDTO);
-            projectTaskService.addFileExamineTask(addFileExamineTaskDTO);
+        //挖掘项目
+        if (projectType != null && projectType.equals(3)) {
+            LambdaUpdateWrapper<PatentDigProject> queryWrapper1 = new LambdaUpdateWrapper<>();
+            queryWrapper1.eq(PatentDigProject::getProjectId, projectId);
+            queryWrapper1.set(PatentDigProject::getState, projectStatus);
+            patentDigProjectService.update(queryWrapper1);
+        } else if (projectType != null && projectType.equals(2)) {//报告
+            LambdaUpdateWrapper<ReportProject> queryWrapper1 = new LambdaUpdateWrapper<>();
+            queryWrapper1.eq(ReportProject::getProjectId, projectId);
+            queryWrapper1.set(ReportProject::getStatus, projectStatus);
+            reportProjectService.update(queryWrapper1);
         }
-        LambdaUpdateWrapper<ProjectTask> updateWrapper = new LambdaUpdateWrapper<>();
-        updateWrapper.eq(ProjectTask::getId, taskId);
-        updateWrapper.set(ProjectTask::getStatus, 3);
-        projectTaskService.update(updateWrapper);
-        return taskHandleResult.getId();
+        this.upProjectTask(taskId, taskStatus);
     }
 }

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

@@ -113,16 +113,16 @@ public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, Techn
             caseIdDTO.setProjectId(technicalCase.getProjectId());
 
             //保存es
-            EditInventionPointVO pointVO = this.selectTechnicalCasePatent(technicalCase.getProjectId());
-            if (!StringUtils.equals(vo.getInventionPoint(), pointVO.getInventionPoint())) {
-                TechnicalCasePatent casePatent = new TechnicalCasePatent();
-//            casePatent.setProjectId(vo.getProjectId());
-                casePatent.setInventionPoint(vo.getInventionPoint());
-                Integer count = this.updateTechnicalCasePatent(casePatent, pointVO.getPatentId());
-                if (count < 1) {
-                    throw new XiaoShiException("发明点更新Es失败");
-                }
-            }
+//            EditInventionPointVO pointVO = this.selectTechnicalCasePatent(technicalCase.getProjectId());
+//            if (!StringUtils.equals(vo.getInventionPoint(), pointVO.getInventionPoint())) {
+//                TechnicalCasePatent casePatent = new TechnicalCasePatent();
+////            casePatent.setProjectId(vo.getProjectId());
+//                casePatent.setInventionPoint(vo.getInventionPoint());
+//                Integer count = this.updateTechnicalCasePatent(casePatent, pointVO.getPatentId());
+//                if (count < 1) {
+//                    throw new XiaoShiException("发明点更新Es失败");
+//                }
+//            }
         }
 
         List<AssoTechnicalCaseFile> technicalCaseFiles = assoTechnicalCaseFileMapper.selectList(new LambdaQueryWrapper<AssoTechnicalCaseFile>()

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

@@ -676,6 +676,7 @@ public class EsPatentService {
         rePatentSource.add("title");
         rePatentSource.add("project_id");
         rePatentSource.add("applicant");
+        rePatentSource.add("abstract_str");
         return rePatentSource;
     }
 

+ 92 - 6
src/main/java/cn/cslg/pas/service/novelty/NoveltyReportReferencesService.java

@@ -2,17 +2,36 @@ package cn.cslg.pas.service.novelty;
 
 import cn.cslg.pas.common.dto.NoveltyProjectDTO.NoveltyReportReferenceDTO;
 import cn.cslg.pas.common.dto.NoveltyProjectDTO.NoveltyReportReferenceQueryDTO;
+import cn.cslg.pas.common.dto.NoveltyProjectDTO.QueryNoveltyCompareRecordDTO;
+import cn.cslg.pas.common.dto.QuerySearchRecordDTO;
+import cn.cslg.pas.common.dto.TechnicalCaseIdDTO;
 import cn.cslg.pas.common.dto.business.GetReferencesDTO;
+import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.model.cronModel.Records;
-import cn.cslg.pas.common.utils.CacheUtils;
-import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.model.request.QueryRequest;
+import cn.cslg.pas.common.model.request.StringRequest;
+import cn.cslg.pas.common.utils.*;
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
 import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyReferencesVO;
+import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.common.vo.TechnicalCaseVO;
 import cn.cslg.pas.common.vo.business.ReferencesVO;
 import cn.cslg.pas.domain.business.References;
 import cn.cslg.pas.domain.business.ReportTemple;
 import cn.cslg.pas.domain.business.novelty.NoveltyReportTemplate;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentPerson;
+import cn.cslg.pas.factorys.noveltyTemplateFacotry.GetTemplateMapsImp;
+import cn.cslg.pas.factorys.noveltyTemplateFacotry.NoveltyTemplateFactory;
+import cn.cslg.pas.service.business.NoveltyProjectService;
 import cn.cslg.pas.service.business.ReferencesService;
+import cn.cslg.pas.service.business.TechnicalCaseService;
+import cn.cslg.pas.service.business.es.EsPatentService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import cn.cslg.pas.domain.business.novelty.NoveltyReportReferences;
@@ -23,10 +42,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -39,6 +55,13 @@ import java.util.stream.Collectors;
 public class NoveltyReportReferencesService extends ServiceImpl<NoveltyReportReferencesMapper, NoveltyReportReferences> {
     private final NoveltyReportTemplateService noveltyReportTemplateService;
     private final ReferencesService referencesService;
+    private final NoveltyProjectService noveltyProjectService;
+    private final TechnicalCaseService technicalCaseService;
+    private final NoveltyCompareLiteratureService noveltyCompareLiteratureService;
+    private final NoveltyCompareRecordService noveltyCompareRecordService;
+    private final NoveltySearchRecordService noveltySearchRecordService;
+    private final EsPatentService esPatentService;
+    private final NoveltyTemplateFactory noveltyTemplateFactory;
     @Autowired
     private CacheUtils cacheUtils;
 
@@ -146,4 +169,67 @@ public class NoveltyReportReferencesService extends ServiceImpl<NoveltyReportRef
 
         return ids;
     }
+
+    public Integer addOrUpdate2(NoveltyReportReferenceDTO noveltyReportReferenceDTO) throws Exception {
+        Integer id = noveltyReportReferenceDTO.getId();
+        Integer projectId = noveltyReportReferenceDTO.getProjectId();
+        Integer templateId = noveltyReportReferenceDTO.getTemplateId();
+        GetTemplateMapsImp getTemplateMapsImp = noveltyTemplateFactory.getClass(templateId);
+
+
+        List<QueryNoveltyProjectVO> queryNoveltyProjectVOs = this.getQueryNoveltyProjectVOs(projectId);
+//        String searchTime = noveltySearchRecordService.getLastRecordTime(projectId);
+//        baseMap.put("searchTime", searchTime);
+        TechnicalCaseVO technicalCaseVO = this.getTechnicalCaseVO(projectId);
+        List<CompareLiteratureVO> compareLiteratureVOS = this.getCompareCompareLiteratureVO(projectId);
+        List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS = this.getNoveltyCompareRecordQueryVOs(projectId);
+        List<RetrieveRecordVO> retrieveRecordVOS = this.getRetrieveRecordVOs(projectId);
+        Map<String, Object> map = getTemplateMapsImp.getMap(queryNoveltyProjectVOs, technicalCaseVO, compareLiteratureVOS, noveltyCompareRecordQueryVOS, retrieveRecordVOS);
+        String json = JsonUtils.objectToJson(map);
+        noveltyReportReferenceDTO.setDataSource(json);
+        return this.addOrUpdate(noveltyReportReferenceDTO);
+    }
+
+    public TechnicalCaseVO getTechnicalCaseVO(Integer projectId) {
+        TechnicalCaseIdDTO technicalCaseIdDTO = new TechnicalCaseIdDTO();
+        technicalCaseIdDTO.setProjectId(projectId);
+        TechnicalCaseVO technicalCaseVO = technicalCaseService.queryTechnicalCase(technicalCaseIdDTO);
+        return technicalCaseVO;
+    }
+
+
+    public List<QueryNoveltyProjectVO> getQueryNoveltyProjectVOs(Integer projectId) throws Exception {
+        StringRequest queryRequest = new StringRequest();
+        queryRequest.setProjectId(projectId);
+        Object projectRecordsObject = noveltyProjectService.queryMessage(queryRequest);
+        Records projectRecords = (Records) projectRecordsObject;
+        List<QueryNoveltyProjectVO> queryNoveltyProjectVOs = (List<QueryNoveltyProjectVO>) projectRecords.getData();
+        return queryNoveltyProjectVOs;
+    }
+
+
+    public List<CompareLiteratureVO> getCompareCompareLiteratureVO(Integer projectId) throws Exception {
+        LiteratureQueryDTO literatureQueryDTO = new LiteratureQueryDTO();
+        literatureQueryDTO.setProjectId(projectId);
+        Records records = noveltyCompareLiteratureService.queryNoveltyCompareLiterature(literatureQueryDTO);
+        List<CompareLiteratureVO> compareLiteratureVOS1 = (List<CompareLiteratureVO>) records.getData();
+        return compareLiteratureVOS1;
+    }
+
+    public List<NoveltyCompareRecordQueryVO> getNoveltyCompareRecordQueryVOs(Integer projectId) throws Exception {
+        QueryNoveltyCompareRecordDTO queryNoveltyCompareRecordDTO = new QueryNoveltyCompareRecordDTO();
+        queryNoveltyCompareRecordDTO.setProjectId(projectId);
+        List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs = noveltyCompareRecordService.queryCompareRecord(queryNoveltyCompareRecordDTO);
+        return noveltyCompareRecordQueryVOs;
+    }
+
+    public List<RetrieveRecordVO> getRetrieveRecordVOs(Integer projectId) throws Exception {
+        cn.cslg.pas.common.dto.QuerySearchRecordDTO querySearchRecordDTO = new QuerySearchRecordDTO();
+        querySearchRecordDTO.setProjectId(projectId);
+        Records records = noveltySearchRecordService.querySearchRecord(querySearchRecordDTO);
+        List<RetrieveRecordVO> retrieveRecordVOS = (List<RetrieveRecordVO>) records.getData();
+        return retrieveRecordVOS;
+    }
+
+
 }

+ 36 - 13
src/main/java/cn/cslg/pas/service/novelty/NoveltySearchRecordService.java

@@ -8,6 +8,7 @@ import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.OrderDTO;
 import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.DateUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareLiteratureVO;
 import cn.cslg.pas.common.vo.NoveltyProjectVO.QueryTemplateVO;
@@ -243,7 +244,7 @@ public class NoveltySearchRecordService extends ServiceImpl<RetrieveRecordMapper
             queryWrapper.in(AssoRetrieveRecordProject::getRetrieveRecordId, retrieveIds);
             queryWrapper.eq(projectId != null, AssoRetrieveRecordProject::getProjectId, projectId);
             assoRetrieveRecordProjectService.remove(queryWrapper);
-            }
+        }
         return retrieveIds;
     }
 
@@ -256,7 +257,7 @@ public class NoveltySearchRecordService extends ServiceImpl<RetrieveRecordMapper
         List<RetrieveRecord> retrieveRecords = this.list(queryWrapper);
 
         for (RetrieveRecord retrieveRecord : retrieveRecords) {
-            if(retrieveRecord.getIfBySystem()!=null&&retrieveRecord.getIfBySystem().equals(false)){
+            if (retrieveRecord.getIfBySystem() != null && retrieveRecord.getIfBySystem().equals(false)) {
                 retrieveRecord.setId(null);
             }
         }
@@ -275,20 +276,42 @@ public class NoveltySearchRecordService extends ServiceImpl<RetrieveRecordMapper
     }
 
 
-    public String getColumns(String column){
+    public String getColumns(String column) {
         Map<String, String> map = new HashMap<>();
-        map.put("conditions","conditions");
-        map.put("dbType","db_type");
-        map.put("searchType","search_type");
-        map.put("totalNum","total_num");
-        map.put("retrieveTime","retrieve_time");
-        map.put("createName","create_id");
-        map.put("createTime","create_time");
-        map.put("updateTime","update_time");
-        map.put("ifBySystem","if_by_system");
-        map.put("searchSetting","search_setting");
+        map.put("conditions", "conditions");
+        map.put("dbType", "db_type");
+        map.put("searchType", "search_type");
+        map.put("totalNum", "total_num");
+        map.put("retrieveTime", "retrieve_time");
+        map.put("createName", "create_id");
+        map.put("createTime", "create_time");
+        map.put("updateTime", "update_time");
+        map.put("ifBySystem", "if_by_system");
+        map.put("searchSetting", "search_setting");
         String reStr = map.get(column);
         return reStr;
     }
 
+    public String getLastRecordTime(Integer projectId) {
+        LambdaQueryWrapper<AssoRetrieveRecordProject> assoQueryWrapper = new LambdaQueryWrapper<>();
+        assoQueryWrapper.eq(AssoRetrieveRecordProject::getProjectId, projectId);
+        List<AssoRetrieveRecordProject> assoRetrieveRecordProjects = assoRetrieveRecordProjectService.list(assoQueryWrapper);
+        if (!assoRetrieveRecordProjects.isEmpty()) {
+            List<Integer> retrieveIds = assoRetrieveRecordProjects.stream()
+                    .map(AssoRetrieveRecordProject::getRetrieveRecordId)
+                    .collect(Collectors.toList());
+            LambdaQueryWrapper<RetrieveRecord> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(RetrieveRecord::getId, retrieveIds)
+                    .orderByDesc(RetrieveRecord::getCreateTime);
+            RetrieveRecord retrieveRecord = this.getOne(queryWrapper, false);
+            if (retrieveRecord != null) {
+                Date date = retrieveRecord.getRetrieveTime();
+                if (date != null) {
+                    String dateStr = DateUtils.formatDate(date, "yyyy-MM-dd");
+                    return dateStr;
+                }
+            }
+        }
+        return "";
+    }
 }

BIN=BIN
src/main/resources/file/reportTemple/noveltyTemplate-aiqiji.docx


BIN=BIN
src/main/resources/file/reportTemple/noveltyTemplate-dahua.docx


BIN=BIN
src/main/resources/file/reportTemple/noveltyTemplate-lingpao.docx


BIN=BIN
src/main/resources/file/reportTemple/noveltyTemplate-ningde.docx


BIN=BIN
src/main/resources/file/reportTemple/noveltyTemplate-shennan.docx


BIN=BIN
src/main/resources/file/reportTemple/noveltyTemplate-shidaixinan.docx


+ 12 - 3
src/test/java/cn/cslg/pas/test/PersonFiledTests.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.test;
 
+import cn.cslg.pas.common.vo.CompareLiteratureVO;
 import cn.cslg.pas.common.vo.business.AllCustomFieldVO;
 import cn.cslg.pas.service.business.CustomFieldService;
 import org.junit.Test;
@@ -8,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @SpringBootTest
@@ -18,8 +20,15 @@ public class PersonFiledTests {
 
 @Test
     public  void tet1(){
-
-    List<AllCustomFieldVO> allCustomFieldVOS = customFieldService.getAllProjectCustomField(5495);
-System.out.println(allCustomFieldVOS);
+    List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
+    this.aaa(compareLiteratureVOS);
+    System.out.println(compareLiteratureVOS);
+}
+public  void aaa(List<CompareLiteratureVO> compareLiteratureVOS){
+    List<CompareLiteratureVO> compareLiteratureVOS1 =new ArrayList<>();
+    CompareLiteratureVO compareLiteratureVO =new CompareLiteratureVO();
+    compareLiteratureVO.setLiteratureNo("1");
+    compareLiteratureVOS1.add(compareLiteratureVO);
+    compareLiteratureVOS= compareLiteratureVOS1;
 }
 }