Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

xiexiang 1 vuosi sitten
vanhempi
commit
50d2bd4566

+ 10 - 0
src/main/java/cn/cslg/pas/common/dto/CompareLiteratureDTO.java

@@ -1,6 +1,10 @@
 package cn.cslg.pas.common.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 @Data
 public class CompareLiteratureDTO {
@@ -10,4 +14,10 @@ public class CompareLiteratureDTO {
      private String   description; //描述
      private Integer   projectId; //报告id
      private String authorName; //作者
+     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+     private Date  publicDate; //公开时间
+     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+     private Date appDate;
 }

+ 0 - 8
src/main/java/cn/cslg/pas/common/dto/business/LiteratureQueryDTO.java

@@ -2,7 +2,6 @@ package cn.cslg.pas.common.dto.business;
 
 
 
-
 import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 
@@ -28,11 +27,4 @@ public class LiteratureQueryDTO {
   * 当前页数
   */
  private Integer current;
-
- /**
-  * 数据总数
-  */
- private Integer total;
-
-
 }

+ 7 - 5
src/main/java/cn/cslg/pas/common/vo/CompareLiteratureVO.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.common.vo;
 
+import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.domain.BaseEntity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -24,8 +25,6 @@ import java.util.Date;
 public class CompareLiteratureVO extends BaseEntity<CompareLiteratureVO> {
     private Integer projectId;
     private String literatureNo;
-    private String remark;
-    private Integer state;
     private String name;
     /**
      * 公开号
@@ -51,8 +50,10 @@ public class CompareLiteratureVO extends BaseEntity<CompareLiteratureVO> {
      * 授权号
      */
     private String grantNo;
-
-    private Boolean IfSignAppEarly;
+    /**
+     * 是否适格 0不适格 1抵触申请 现有技术
+     */
+    private Integer fitType;
     /**
      * 授权日
      */
@@ -61,6 +62,7 @@ public class CompareLiteratureVO extends BaseEntity<CompareLiteratureVO> {
     private Integer sysOrder;
     private String description;
     private Boolean ifApproval;
-    private String createId;
+    private String createName;
     private Date createTime;
+    private SystemFile systemFile;
 }

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

@@ -22,11 +22,11 @@ public class CompareLiteratureController {
     private CompareLiteratureService compareLiteratureService;
 
     @Operation(summary = "添加非专利对比文件")
-    @PostMapping("/addCompareLiterature")
-    public Response queryCustomField(@RequestBody CompareLiteratureDTO compareLiteratureDTO) {
+    @PostMapping("/addNotPatent")
+    public Response addNotPatent(@RequestBody CompareLiteratureDTO compareLiteratureDTO) {
         Integer id = null;
         try {
-            id = compareLiteratureService.addCompareLiterature(compareLiteratureDTO);
+            id = compareLiteratureService.addNotPatent(compareLiteratureDTO);
         } catch (Exception e) {
             return Response.error(e.getMessage());
         }

+ 8 - 2
src/main/java/cn/cslg/pas/domain/business/CompareLiterature.java

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import org.joda.time.DateTime;
 
+import java.util.Date;
+
 /**
  * <p>
  * 对比文献表
@@ -21,8 +23,6 @@ import org.joda.time.DateTime;
 public class CompareLiterature extends BaseEntity<CompareLiterature> {
     @TableField(value = "project_id")
     private Integer projectId;
-    @TableField(value = "project_task_id")
-    private Integer projectTaskId;
     @TableField(value = "literature_no")
     private String literatureNo;
     @TableField(value = "remark")
@@ -43,4 +43,10 @@ public class CompareLiterature extends BaseEntity<CompareLiterature> {
     private String createId;
     @TableField(value = "create_time")
     private DateTime createTime;
+    @TableField(value = "author_name")
+    private String authorName;
+    @TableField(value = "public_date")
+    private Date publicDate;
+    @TableField(value = "app_date")
+    private Date appDate;
 }

+ 24 - 0
src/main/java/cn/cslg/pas/domain/business/PatentClaim.java

@@ -0,0 +1,24 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+
+@Data
+@TableName("patentClaim")
+public class PatentClaim extends BaseEntity<PatentClaim> {
+    @TableField(value = "sys_order")
+    private Integer sysOrder;
+    @TableField(value = "content")
+    private String content;
+    @TableField(value = "claim_type")
+    private Integer claimType;
+    @TableField(value = "content_type")
+    private Integer contentType;
+    @TableField(value = "parent_order")
+    private String parentOrder;
+    @TableField(value = "project_id")
+    private Integer projectId;
+}

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

@@ -0,0 +1,16 @@
+package cn.cslg.pas.mapper.InvalidReport;
+
+import cn.cslg.pas.domain.business.AssoEventFile;
+import cn.cslg.pas.domain.business.PatentClaim;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 权利要求
+ *
+ * @author lrj
+ * @date 2023/12/22
+ */
+@Repository
+public interface PatentClaimMapper extends BaseMapper<PatentClaim> {
+}

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

@@ -3,6 +3,7 @@ package cn.cslg.pas.service.business;
 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.model.cronModel.SystemFile;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.CompareLiteratureVO;
@@ -15,6 +16,8 @@ import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.CompareLiteratureMapper;
 import cn.cslg.pas.service.business.es.EsPatentService;
 import cn.cslg.pas.service.business.es.EsService;
+import cn.cslg.pas.service.common.FileManagerService;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -23,7 +26,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.concurrent.Callable;
 import java.util.stream.Collectors;
 
 /**
@@ -45,6 +50,9 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
     @Autowired
     private ReportProjectService reportProjectService;
 
+    @Autowired
+    private FileManagerService fileManagerService;
+
     //添加专利对比文献
     public Integer addPatentCompareLiterature(String patentNo, Integer projectId, String createId) {
         Integer id = null;
@@ -67,19 +75,42 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
     }
 
     //添加对比文献
-    public Integer addCompareLiterature(CompareLiteratureDTO compareLiteratureDTO) {
+    public Integer addNotPatent(CompareLiteratureDTO compareLiteratureDTO) {
         PersonnelVO personnelVO = new PersonnelVO();
+        Integer projectId = compareLiteratureDTO.getProjectId();
         try {
-            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            personnelVO = new PersonnelVO();
+            personnelVO.setId("1");
+//            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         } catch (Exception e) {
             throw new UnLoginException("未登录");
         }
+        Integer order = 0;
+        //根据报告id获得最大序号
+        LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CompareLiterature::getProjectId, projectId);
+        CompareLiterature compareLiteratureBig = this.getOne(queryWrapper, false);
+        if (compareLiteratureBig != null && compareLiteratureBig.getSysOrder() != null) {
+            order = compareLiteratureBig.getSysOrder() + 1;
+        }
         CompareLiterature compareLiterature = new CompareLiterature();
         compareLiterature.setCreateId(personnelVO.getId());
+        //报告id
         compareLiterature.setProjectId(compareLiteratureDTO.getProjectId());
+        //文档guid
         compareLiterature.setLiteratureNo(compareLiteratureDTO.getFileGuid());
+        //文档名称
         compareLiterature.setName(compareLiteratureDTO.getName());
+        //描述
         compareLiterature.setDescription(compareLiteratureDTO.getDescription());
+        //作者
+        compareLiterature.setAuthorName(compareLiteratureDTO.getAuthorName());
+        //类型
+        compareLiterature.setType(1);
+        //装载排序
+        compareLiterature.setSysOrder(order);
+        //装载公开日
+        compareLiterature.setPublicDate(compareLiteratureDTO.getPublicDate());
         compareLiterature.insert();
 
         return compareLiterature.getId();
@@ -104,10 +135,10 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
         compareLiteratureVOS = this.loadCompareLiterature(compareLiteratures, reportProject);
         //装载不同的类型的对比文献
         Records records = new Records();
-              records.setData(compareLiteratureVOS);
-              records.setTotal(page.getTotal());
-              records.setSize(Long.parseLong(literatureQueryDTO.getSize().toString()));
-              records.setCurrent(Long.parseLong(literatureQueryDTO.getCurrent().toString()));
+        records.setData(compareLiteratureVOS);
+        records.setTotal(page.getTotal());
+        records.setSize(Long.parseLong(literatureQueryDTO.getSize().toString()));
+        records.setCurrent(Long.parseLong(literatureQueryDTO.getCurrent().toString()));
         return records;
     }
 
@@ -117,9 +148,9 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
         //查询标的专利号
         List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
         //非专利文献列表
-        List<CompareLiterature> fileLiterature = compareLiteratures.stream().filter(item -> item.getType().equals(2)).collect(Collectors.toList());
+        List<String> guids = compareLiteratures.stream().filter(item -> item.getType().equals(1)).map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
         //专利文献列表
-        List<String> patentNos = compareLiteratures.stream().filter(item -> item.getType().equals(1)).map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
+        List<String> patentNos = compareLiteratures.stream().filter(item -> item.getType().equals(0)).map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
         List<Patent> patentList = new ArrayList<>();
 
         if (reportProject.getSignPatentNo() != null) {
@@ -128,7 +159,7 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
 
         if (patentNos.size() > 0) {
             try {
-                patentList = esPatentService.getPatentsByNo(patentNos,false,null,null);
+                patentList = esPatentService.getPatentsByNo(patentNos, false, null, null);
             } catch (Exception e) {
                 throw new XiaoShiException("装载文献信息失败");
             }
@@ -140,17 +171,30 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
                         || item.getPublicNo().equals(signPatentNo) ||
                         item.getGrantNo().equals(signPatentNo)).findFirst().orElse(null);
 
-
+        //查询文件
+        List<SystemFile> systemFiles = new ArrayList<>();
+        //查询文件
+        if (guids.size() != 0) {
+            try {
+                String res = fileManagerService.getSystemFileFromFMS(guids);
+                if (res != null && !res.trim().equals("")) {
+                    systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                }
+            } catch (Exception e) {
+                throw new XiaoShiException("装载错误");
+            }
+        }
         for (CompareLiterature compareLiterature : compareLiteratures) {
             Integer id = compareLiterature.getId();
             String literatureNo = compareLiterature.getLiteratureNo();
+            Date publicDate = compareLiterature.getPublicDate();
             CompareLiteratureVO compareLiteratureVO = new CompareLiteratureVO();
             compareLiteratureVO.setId(id);
             compareLiteratureVO.setName(compareLiterature.getName());
-
+            compareLiteratureVO.setLiteratureNo(compareLiterature.getLiteratureNo());
             //当为专利文献时
-            if (compareLiterature.getType().equals(1)) {
-                compareLiteratureVO.setIfSignAppEarly(false);
+            if (compareLiterature.getType().equals(0)) {
+                compareLiteratureVO.setFitType(0);
                 if (patentList.size() > 0) {
                     Patent patent = patentList.stream()
                             .filter(item -> item.getAppNo().equals(literatureNo)
@@ -166,18 +210,50 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
 
                         //比较标的专利的申请日和对比专利的公开或者公告日
                         if (signPatent.getAppDate() != null) {
-                            if (patent.getPublicDate() != null) {
-                                if (signPatent.getAppDate().compareTo(patent.getPublicDate()) >= 0) {
-                                    compareLiteratureVO.setIfSignAppEarly(true);
+                            //当专利的申请日存在时
+                            if (patent.getAppDate() != null) {
+                                if (signPatent.getAppDate().compareTo(patent.getAppDate()) <= 0) {
+                                    compareLiteratureVO.setFitType(0);
+                                } else if (patent.getPublicDate() != null) {
+                                    if (signPatent.getAppDate().compareTo(patent.getPublicDate()) <= 0)
+                                        compareLiteratureVO.setFitType(1);
+                                    else if (signPatent.getAppDate().compareTo(patent.getPublicDate()) > 0) {
+                                        compareLiteratureVO.setFitType(2);
+                                    }
+                                } else if (patent.getGrantDate() != null) {
+                                    if (signPatent.getAppDate().compareTo(patent.getGrantDate()) <= 0)
+                                        compareLiteratureVO.setFitType(1);
+                                    else if (signPatent.getAppDate().compareTo(patent.getGrantDate()) > 0) {
+                                        compareLiteratureVO.setFitType(2);
+                                    }
                                 }
-                            } else if (patent.getGrantDate() != null) {
-                                if (signPatent.getAppDate().compareTo(patent.getGrantDate()) >= 0) {
-                                    compareLiteratureVO.setIfSignAppEarly(true);
-                                } } }
+                            }
+
+                        }
                     }
                 }
 
             }
+            //非专利文献
+            else {
+                if (signPatent.getAppDate() != null) {
+                    if (publicDate != null) {
+                        if (signPatent.getAppDate().compareTo(publicDate) <= 0) {
+                            compareLiteratureVO.setFitType(0);
+                        } else {
+                            compareLiteratureVO.setFitType(2);
+                        }
+                    }
+                }
+
+                //装载文件
+                if (literatureNo != null && systemFiles != null && systemFiles.size() != 0) {
+                    SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(literatureNo)).findFirst().orElse(null);
+                    if (systemFile != null) {
+                        compareLiteratureVO.setSystemFile(systemFile);
+                    }
+                }
+            }
             compareLiteratureVOS.add(compareLiteratureVO);
         }
 

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

@@ -1005,7 +1005,6 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                 compareLiterature.setLiteratureNo(item);
                 compareLiterature.setProjectId(projectId);
                 compareLiterature.setName(item);
-                compareLiterature.setProjectTaskId(taskId);
                 compareLiteratures.add(compareLiterature);
             });
         }

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

@@ -234,7 +234,7 @@ public class EsPatentService {
                     .filter(fieldSourceBuilder -> fieldSourceBuilder
                             .includes(reSources)));
         }
-        if (current > 0 && size > 0&&current!=null&&size!=null) {
+        if (current!=null&&size!=null&&current > 0 && size > 0) {
             builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
         }
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);

+ 89 - 0
src/main/java/cn/cslg/pas/service/business/invalidReport/PatentClaimService.java

@@ -0,0 +1,89 @@
+package cn.cslg.pas.service.business.invalidReport;
+
+
+import cn.cslg.pas.common.dto.invalidDTO.AddClaimDTO;
+import cn.cslg.pas.common.dto.invalidDTO.SplitClaimDTO;
+import cn.cslg.pas.common.vo.RePatentClaim;
+import cn.cslg.pas.domain.business.AssoEventFile;
+import cn.cslg.pas.domain.business.PatentClaim;
+import cn.cslg.pas.domain.business.ReportProject;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.AssoEventFileMapper;
+import cn.cslg.pas.mapper.InvalidReport.PatentClaimMapper;
+import cn.cslg.pas.service.business.FeatureService;
+import cn.cslg.pas.service.business.ReportProjectService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.experimental.Accessors;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class PatentClaimService extends ServiceImpl<PatentClaimMapper, PatentClaim> {
+    @Autowired
+    private ReportProjectService reportProjectService;
+    @Autowired
+    private FeatureService featureService;
+
+    public void splitClaim(SplitClaimDTO splitClaimDTO) {
+        Integer projectId = splitClaimDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("请输入报告id");
+        }
+        Boolean flag= this.ifHaveSplit(projectId);
+        if(flag){
+
+        }
+        //根据projectId 获得标的专利号
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getProjectId, projectId);
+        ReportProject reportProject = reportProjectService.getOne(queryWrapper, false);
+        String signNo = reportProject.getSignPatentNo();
+
+        // 根据专利号拆分特征
+        List<PatentClaim> savePatentClaims = new ArrayList<>();
+        try {
+            List<RePatentClaim> patentRights = featureService.getRightListByNo(signNo);
+            if (patentRights != null && patentRights.size() != 0) {
+                savePatentClaims = this.loadPatentClaim(patentRights, projectId);
+            }
+        } catch (Exception e) {
+
+        }
+
+        if (savePatentClaims != null) {
+            this.saveBatch(savePatentClaims);
+        }
+
+
+    }
+
+    //
+    public List<PatentClaim> loadPatentClaim(List<RePatentClaim> rePatentClaims, Integer projectId) {
+        List<PatentClaim> patentClaims = new ArrayList<>();
+        rePatentClaims.forEach(item -> {
+            PatentClaim patentClaim = new PatentClaim();
+            patentClaim.setClaimType(item.getType());
+            patentClaim.setContent(item.getContent());
+            patentClaim.setParentOrder(item.getParentSort());
+            patentClaim.setProjectId(projectId);
+            patentClaim.setSysOrder(item.getSort());
+        });
+        return patentClaims;
+    }
+
+    //判断是否拆分过
+    public Boolean ifHaveSplit(Integer projectId) {
+        //根据报告id 查询是否有拆分权要
+        LambdaQueryWrapper<PatentClaim> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PatentClaim::getProjectId, projectId);
+        Long count = this.count(queryWrapper);
+        if (count == 0) {
+            return false;
+        }
+        return true;
+    }
+}

+ 53 - 0
src/test/java/cn/cslg/pas/service/CompareLiteratureServiceTests.java

@@ -0,0 +1,53 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.dto.CompareLiteratureDTO;
+import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.controller.AvoidDesignController;
+import cn.cslg.pas.service.business.AvoidDesignService;
+import cn.cslg.pas.service.business.CompareLiteratureService;
+import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.Date;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class CompareLiteratureServiceTests {
+    @Autowired
+    private CompareLiteratureService compareLiteratureService;
+
+
+    @Test
+    public void addNoPatent() throws Exception {
+        CompareLiteratureDTO compareLiteratureDTO =new CompareLiteratureDTO();
+        compareLiteratureDTO.setName("测试文");
+        compareLiteratureDTO.setDescription("文件描述");
+        compareLiteratureDTO.setFileGuid("12314415AAaa");
+        compareLiteratureDTO.setAuthorName("张三");
+        compareLiteratureDTO.setProjectId(1);
+        compareLiteratureDTO.setPublicDate(new Date());
+        compareLiteratureDTO.setAppDate(new Date());
+        compareLiteratureService.addNotPatent(compareLiteratureDTO);
+    }
+
+  @Test
+    public void queryCompareLiterature(){
+    LiteratureQueryDTO literatureQueryDTO =new LiteratureQueryDTO();
+    literatureQueryDTO.setCurrent(0);
+    literatureQueryDTO.setSize(10);
+    literatureQueryDTO.setProjectId(105);
+    Records records = compareLiteratureService.queryCompareLiterature(literatureQueryDTO);
+    System.out.println(records);
+
+}
+
+}