lwhhszx 2 anni fa
parent
commit
4349d97665

+ 14 - 0
RMS/src/main/java/cn/cslg/report/common/model/dto/QueryRecordsDTO.java

@@ -0,0 +1,14 @@
+package cn.cslg.report.common.model.dto;
+
+import lombok.Data;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/7/7
+ */
+@Data
+public class QueryRecordsDTO {
+    private String patentNo;
+    private Integer current;
+    private Integer size;
+}

+ 37 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/CompareRecordDTO.java

@@ -0,0 +1,37 @@
+package cn.cslg.report.common.model.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class CompareRecordDTO {
+
+    private String patentNo;
+
+
+    private String position;
+
+    private String fields;
+
+    private String content;
+
+
+    private Integer personId;
+
+    private String paresingProcess;
+
+
+    private String filePath;
+
+
+
+    private int reportId;
+
+    private Integer taskId;
+
+   private String featureContent;
+
+
+}

+ 6 - 1
RMS/src/main/java/cn/cslg/report/controller/FeatureController.java

@@ -2,6 +2,7 @@ package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
 import cn.cslg.report.common.model.dto.FeaturesDTO;
+import cn.cslg.report.common.model.dto.QueryRecordsDTO;
 import cn.cslg.report.common.model.vo.PatentRightVo;
 import cn.cslg.report.common.model.vo.PatentVO;
 
@@ -61,7 +62,11 @@ public class FeatureController {
     public String querySimFeaturePatent(@RequestBody PatentVO patentVO) throws IOException {
         return Response.success(featureService.querySimFeaturePatent(patentVO));
     }
-
+    @RequestMapping(value = "/querySimFeaturePatentByPatentNo", method = RequestMethod.POST)
+    @Operation(summary = "根据专利号获得相似特征的专利")
+    public String querySimFeaturePatentByPatentNo(@RequestBody QueryRecordsDTO queryRecordsDTO) throws IOException {
+        return Response.success(featureService.querySimFeaturePatentByPatentNo(queryRecordsDTO));
+    }
     @RequestMapping(value = "/getSplitMessage", method = RequestMethod.GET)
     @Operation(summary = "根据专利号和任务Id获得拆分信息")
     public String getSplitMessage(Integer taskId, String patentNo, Integer reportId) throws IOException {

+ 14 - 5
RMS/src/main/java/cn/cslg/report/mapper/CompareRecordsMapper.java

@@ -1,6 +1,7 @@
 package cn.cslg.report.mapper;
 
 
+import cn.cslg.report.common.model.vo.CompareRecordDTO;
 import cn.cslg.report.entity.CompareRecords;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -11,9 +12,17 @@ import java.util.List;
 
 
 @Mapper
-public interface CompareRecordsMapper  extends BaseMapper<CompareRecords> {
-     List<CompareRecords> find(@Param("reportId") int reportId,@Param("patentNo") String  patentNo,@Param("personId") int personId);
-     CompareRecords getCompareRecords(@Param("reportId") int reportId);
-     List<CompareRecords> findCompareRecords(@Param("personId") int personId);
-     int updateCompareRecords(@Param("featuresId")String featuresId,@Param("id")int id);
+public interface CompareRecordsMapper extends BaseMapper<CompareRecords> {
+    List<CompareRecords> find(@Param("reportId") int reportId, @Param("patentNo") String patentNo, @Param("personId") int personId);
+
+    CompareRecords getCompareRecords(@Param("reportId") int reportId);
+
+    List<CompareRecords> findCompareRecords(@Param("personId") int personId);
+
+    int updateCompareRecords(@Param("featuresId") String featuresId, @Param("id") int id);
+
+    List<String> getCompareNos(List<Integer> featuresIds,Integer current,Integer size);
+    List<CompareRecordDTO> getCompareRecordsByNo(List<Integer> featuresIds, String patentNo);
+    Integer getCompareNosCount(List<Integer> featuresIds);
+
 }

+ 20 - 4
RMS/src/main/java/cn/cslg/report/service/OutInterfaceService.java

@@ -257,7 +257,7 @@ public class OutInterfaceService {
      * @title 获取部分客户(有权限控制)
      * @description 接口来源:PCS
      */
-    // TODO: 2022/11/2 未开发
+
     public String getPartClientFromPCS() throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient();
         Request request = new Request.Builder()
@@ -452,17 +452,33 @@ public class OutInterfaceService {
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
                 .build();
-        ;
-        ;
         Request request = new Request.Builder()
                 .url(PASUrl + "/api/v2/system/getPatentDTOListForRMS")
                 .post(requestBody)
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
 
-
     }
 
+    public String getPatentList(PatentVO patentVO) throws IOException {
+        Map<String, Object> map = new HashMap<>();
+        map.put("patentNos", patentVO.getPatentNos());
+        JSONObject json = new JSONObject(map);
+        RequestBody requestBody = RequestBody.create(JSON, String.valueOf(json));
+        OkHttpClient okHttpClient = new OkHttpClient
+                .Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(PASUrl + "/api/v2/system/getPatentList")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+
+    }
+    //根据专利号获得专利基本信息详情
     public String getComPatentNos(PatentVO patentVO) throws IOException {
         if (patentVO.getReportId() != null) {
             LambdaQueryWrapper<ImportTask> queryWrapper = new LambdaQueryWrapper<>();

+ 127 - 5
RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java

@@ -2,11 +2,9 @@ package cn.cslg.report.service.business;
 
 import cn.cslg.report.common.model.PatentRightParams;
 import cn.cslg.report.common.model.dto.FeaturesDTO;
+import cn.cslg.report.common.model.dto.QueryRecordsDTO;
 import cn.cslg.report.common.model.dto.invalidReReport.CheckReFeaturesDTO;
-import cn.cslg.report.common.model.vo.PatentRightVo;
-import cn.cslg.report.common.model.vo.PatentVO;
-import cn.cslg.report.common.model.vo.PersonnelVO;
-import cn.cslg.report.common.model.vo.SplitVO;
+import cn.cslg.report.common.model.vo.*;
 import cn.cslg.report.common.model.vo.invalidReReport.QueryAllFeaturesVO;
 import cn.cslg.report.common.utils.CacheUtils;
 import cn.cslg.report.common.utils.PatentRightUtils;
@@ -29,6 +27,8 @@ import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -68,7 +68,6 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
      * @return List<PatentRight>
      * @function 对权要进行合并操作
      */
-
     public List<PatentRight> FormatPatentRights(List<PatentRight> patentRights, String patentNo) {
         StringBuilder stringBuilder = new StringBuilder();
         patentRights.forEach(item -> {
@@ -539,6 +538,60 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         return mapList;
     }
 
+    public Map<String, Object> querySimFeaturePatentByPatentNo(QueryRecordsDTO queryRecordsDTO) throws IOException {
+        Map<String, Object> reMap = new HashMap<>();
+        reMap.put("current", queryRecordsDTO.getCurrent());
+        reMap.put("size", queryRecordsDTO.getSize());
+        reMap.put("total", 0);
+        reMap.put("records",new ArrayList());
+        //根据专利号获得权要
+        String patentNo = queryRecordsDTO.getPatentNo();
+        SplitVO splitVO = new SplitVO();
+        splitVO.setPatentNo(patentNo);
+        splitVO.setSplitBy(2);
+        List<Features> features = this.splitFeatures(splitVO);
+        //获得特征内容
+        List<String> contents = features.stream().map(Features::getContent).collect(Collectors.toList());
+        List<Features> featuresList = featureMapper.getSignPatentNo(contents, patentNo);
+        if (featuresList.size() == 0) {
+            return reMap;
+        }
+        //根据特征Id 查询 对比记录特征关联信息
+        List<Integer> featureIds = featuresList.stream().map(Features::getId).collect(Collectors.toList());
+        //分页查询专利
+        List<String> patentNos = compareRecordsService.getBaseMapper().getCompareNos(featureIds, queryRecordsDTO.getCurrent(), queryRecordsDTO.getSize());
+        // 获得总数
+        Integer total = compareRecordsService.getBaseMapper().getCompareNosCount(featureIds);
+        reMap.put("total", total);
+        //根据专利号查询专利详情
+        PatentVO patentVO = new PatentVO();
+        patentVO.setPatentNos(patentNos);
+        String resBody = outInterfaceService.getPatentList(patentVO);
+        JSONObject jsonObject = JSONObject.parseObject(resBody);
+        List<JSONObject> patentDTOS = JSON.parseArray(jsonObject.get("data").toString(), JSONObject.class);
+        //装载专利信息
+        List<Map<String, Object>> patentMaps = new ArrayList<>();
+        patentNos.forEach(item -> {
+            Map<String, Object> patentMap = new HashMap<>();
+            //根据专利号查询对比记录
+            List<CompareRecordDTO> compareRecords = compareRecordsService.getBaseMapper().getCompareRecordsByNo(featureIds,item);
+            JSONObject jsonObject1 = patentDTOS.stream().filter(tem -> item.equals(tem.get("patentNo"))).findFirst().orElse(null);
+
+    patentMap.put("patentNo",item);
+            if(jsonObject1!=null){
+    patentMap.put("publicNo",jsonObject1.get("publicNo"));
+    patentMap.put("title",jsonObject1.get("name"));
+            }
+    patentMap.put("compareRecords",compareRecords);
+    patentMaps.add(patentMap);
+
+        });
+
+     reMap.put("records",patentMaps);
+        return reMap;
+    }
+
+
     public Features select(int id) {
         LambdaQueryWrapper<Features> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Features::getId, id);
@@ -749,4 +802,73 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
 
         return Response.success(mapList);
     }
+
+    //拆分特征
+    List<Features> splitFeatures(SplitVO splitVO) throws IOException {
+        List<String> flags = new ArrayList<>();
+        String patentNo = splitVO.getPatentNo();
+        Integer splitBy = splitVO.getSplitBy();
+        String resBody = outInterfaceService.getPatentRightFromPAS(patentNo);
+        JSONObject jsonObject = JSONObject.parseObject(resBody);
+        //解析jason获得标的专利的权要
+        List<PatentRight> patentRightsOrgin = JSON.parseArray(jsonObject.getString("data"), PatentRight.class);
+        //给权要进行格式更改
+        List<PatentRight> patentRights = FormatPatentRights(patentRightsOrgin, patentNo);
+
+        if (splitBy == 0) {
+            flags.add(",");
+            flags.add(",");
+        }
+        //当splitBy=1时仅仅根据“;“拆解
+        else if (splitBy == 1) {
+            flags.add(";");
+            flags.add(";");
+        }//当splitBy=2时根据“;“和”,”拆解
+        else if (splitBy == 2) {
+            flags.add(";");
+            flags.add(";");
+            flags.add(",");
+            flags.add(",");
+        }
+        List<Features> featuresList = new ArrayList<>();
+        //将拆解的权要和特征装载到对象PatentRightVo
+        for (int i = 0; i < patentRights.size(); i++) {
+            //特征序号
+            Integer order = 1;
+
+            int rightId = patentRights.get(i).getSort();
+            String name = "权要" + (patentRights.get(i).getSort() + 1);
+            //对需要拆解的权要进行拆解
+            //如果数据库里无拆解记录则手动插入一条
+            List<String> contentOuts = Arrays.asList(patentRights.get(i).getContentOut());
+            List<String> contents = Arrays.asList(patentRights.get(i).getContent());
+            //如果是需要拆解的权要
+
+            //获得权要的译文并且拆解
+            contentOuts = this.splitStringByFlags(patentRights.get(i).getContentOut(), flags);
+            //获得权要的原文并且拆解
+            contents = this.splitStringByFlags(patentRights.get(i).getContent(), flags);
+
+            //遍历拆解出来的内容并装载到features最后存入列表
+            for (int t = 0; t < contents.size(); t++) {
+                Features features = new Features();
+                features.setRightId(patentRights.get(i).getSort());
+                features.setIsFinal(0);
+                features.setSignPatentNo(patentNo);
+                String countOut = contentOuts.size() - 1 >= t ? contentOuts.get(t) : "";
+                features.setContentOut(countOut);
+                features.setContent(contents.get(t));
+                features.setSplitBy(splitBy);
+                features.setRightName(name);
+                features.setFeaturesOrder(order);
+                features.setRightType(patentRights.get(i).getType());
+
+                featuresList.add(features);
+                order += 1;
+            }
+
+        }
+        return featuresList;
+
+    }
 }

+ 11 - 1
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/InvalidReasonService.java

@@ -248,7 +248,16 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
         LambdaQueryWrapper<ProofGroup> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.select(ProofGroup::getId);
         queryWrapper.in(ProofGroup::getInvalidReasonId, ids);
-        proofGroupService.remove(queryWrapper);
+      List<ProofGroup> proofGroups =proofGroupService.list(queryWrapper);
+      List<Integer> proofGroupIds =proofGroups.stream().map(ProofGroup::getId).collect(Collectors.toList());
+      if(proofGroupIds.size()!=0){
+          proofGroupService.deleteProofGroup(proofGroupIds);
+      }
+      //删除自定义字段栏位值
+        LambdaQueryWrapper<InvalidReasonFieldValue> valueWrapper =new LambdaQueryWrapper<>();
+      valueWrapper.in(InvalidReasonFieldValue::getInvalidReasonId,ids);
+        invalidReasonFieldValueService.remove(valueWrapper);
+      //
         //根据ids删除InvalidReason内容
         this.removeByIds(ids);
         return Response.success("删除成功");
@@ -338,6 +347,7 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
             } else {
                 return Response.error("相关证据不能为空");
             }
+
         } else if (invalidName.equals(2) || invalidName.equals(3)|| invalidName.equals(4)) {//若类型为2,3则proofGroups不能为空
             if (invalidReasonDTO.getProofGroups() != null) {
                 //复制DTO类字段到InvalidReason实体类并保存入库

+ 4 - 0
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofGroupService.java

@@ -102,6 +102,10 @@ public class ProofGroupService extends ServiceImpl<ProofGroupMapper, ProofGroup>
             LambdaQueryWrapper<AssoProofGroup> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.in(AssoProofGroup::getGroupId, ids);
             assoProofGroupService.remove(queryWrapper);
+            //根据证据组合删除证据组合-无效证据关联
+            LambdaQueryWrapper<AssoProofGroupStr> strWrapper =new LambdaQueryWrapper<>();
+            strWrapper.in(AssoProofGroupStr::getProofGroupId,ids);
+            assoProofGroupStrService.remove(strWrapper);
             //根据ids批量删除证据组合
             this.removeByIds(ids);
         } else {

+ 2 - 2
RMS/src/main/java/cn/cslg/report/service/business/ReportDocumentService.java

@@ -256,7 +256,7 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
                 feaListContent.forEach(te -> disclosures.append("(" + te + ")"));
                 disclosures.append("\n");
             }
-            int order = Integer.parseInt(OtherName.get(item.get("publicNo")).toString());
+            int order = Integer.parseInt(OtherName.get(item.get("patentNo")).toString());
 
             patentListMap.put("name", item.get("name"));
             patentListMap.put("fileName", "D" + order);
@@ -264,7 +264,7 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
             patentListMap.put("publicNo", item.get("publicNo"));
             patentListMap.put("SSIM", "");
             patentListMap.put("applicant", applicants);
-            patentListMap.put("patentNo", item.get("publicNo"));
+            patentListMap.put("patentNo", item.get("patentNo"));
             patentListMap.put("abstractStr", item.get("abstractStr"));
             patentListMap.put("compareFileName", "对比文件" + (order));
             patentListMap.put("applicationDate", item.get("applicationDate"));

+ 0 - 2
RMS/src/main/java/cn/cslg/report/service/business/ReportService.java

@@ -526,8 +526,6 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
         reportReferencesService.deleteByReportId(id);
         //删除对比信息
         compareMessageService.deleteByreportID(id);
-        //TODO 当时无效应对报告时
-
         //删除与报告关联的表数据
         invalidReReportService.remove(new LambdaQueryWrapper<InvalidReReport>().eq(InvalidReReport::getReportId, id));
         //删除无效理由表数据

+ 55 - 8
RMS/src/main/resources/mapper/CompareRecordsMapper.xml

@@ -1,18 +1,65 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="cn.cslg.report.mapper.CompareRecordsMapper">
-   <select id="find" resultType="cn.cslg.report.entity.CompareRecords">
-       select *  from COMPARE_RECORDS where PATENT_NO=#{patentNo} and PERSON_ID=#{personId} and REPORT_ID=#{reportId}
-   </select>
+    <select id="find" resultType="cn.cslg.report.entity.CompareRecords">
+        select *
+        from COMPARE_RECORDS
+        where PATENT_NO = #{patentNo}
+          and PERSON_ID = #{personId}
+          and REPORT_ID = #{reportId}
+    </select>
 
-<select id="getCompareRecords" resultType="cn.cslg.report.entity.CompareRecords">
-    select * from COMPARE_RECORDS where REPORT_ID=#{reportId}
-</select>
+    <select id="getCompareRecords" resultType="cn.cslg.report.entity.CompareRecords">
+        select *
+        from COMPARE_RECORDS
+        where REPORT_ID = #{reportId}
+    </select>
     <select id="findCompareRecords" resultType="cn.cslg.report.entity.CompareRecords">
-        select * from COMPARE_RECORDS where PERSON_ID=#{personId}
+        select *
+        from COMPARE_RECORDS
+        where PERSON_ID = #{personId}
     </select>
     <update id="updateCompareRecords">
-        update COMPARE_RECORDS set FEATURES_ID=#{featuresId} where ID=#{id}
+        update COMPARE_RECORDS
+        set FEATURES_ID=#{featuresId}
+        where ID = #{id}
     </update>
 
+
+    <select id="getCompareNos" resultType="java.lang.String">
+        select r.PATENT_NO from ASSO_RECORDS_FEATURES f left join COMPARE_RECORDS r on f.RECORDS_ID = r.ID
+        <where>
+           f.FEATURE_ID in
+            <foreach item="item" collection="featuresIds" index="index" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+          group by r.PATENT_NO
+            <if test="current!=null and size!=null">
+                limit ${(current -1)*size},${current*size}
+            </if>
+        </where>
+    </select>
+    <select id="getCompareNosCount" resultType="java.lang.Integer">
+        select count(*) from (select r.PATENT_NO from ASSO_RECORDS_FEATURES f left join COMPARE_RECORDS r on f.RECORDS_ID = r.ID
+        <where>
+            f.FEATURE_ID in
+            <foreach item="item" collection="featuresIds" index="index" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            group by r.PATENT_NO
+        </where>
+        ) T
+    </select>
+
+    <select id="getCompareRecordsByNo" resultType="cn.cslg.report.common.model.vo.CompareRecordDTO">
+        select r.*,t.CONTENT as featureContent from ASSO_RECORDS_FEATURES f left join COMPARE_RECORDS r on f.RECORDS_ID = r.ID
+        left join FEATURES t on f.FEATURE_ID = t.ID
+        <where>
+<!--            f.FEATURE_ID in-->
+<!--            <foreach item="item" collection="featuresIds" index="index" open="(" separator="," close=")">-->
+<!--                #{item}-->
+<!--            </foreach>-->
+           and r.PATENT_NO= #{patentNo}
+        </where>
+    </select>
 </mapper>