浏览代码

Merge remote-tracking branch 'origin/dev2' into dev2

xiexiang 2 年之前
父节点
当前提交
ced53fd45a
共有 27 个文件被更改,包括 736 次插入62 次删除
  1. 14 1
      RMS/src/main/java/cn/cslg/report/common/GlobalException.java
  2. 31 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/ProofAddNewDTO.java
  3. 8 8
      RMS/src/main/java/cn/cslg/report/common/model/dto/ShareReportDTO.java
  4. 76 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/ArgumentsDTO.java
  5. 23 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/ArgumentsQueryDTO.java
  6. 11 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/ProofQueryDTO.java
  7. 23 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/invalidReReport/ArgumentsQueryVO.java
  8. 34 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/invalidReReport/ArgumentsVO.java
  9. 25 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/invalidReReport/ProofVO.java
  10. 8 0
      RMS/src/main/java/cn/cslg/report/common/utils/Response.java
  11. 22 4
      RMS/src/main/java/cn/cslg/report/controller/CompareController.java
  12. 5 0
      RMS/src/main/java/cn/cslg/report/controller/FeatureController.java
  13. 28 15
      RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/ProofController.java
  14. 7 0
      RMS/src/main/java/cn/cslg/report/entity/CompareFiles.java
  15. 17 6
      RMS/src/main/java/cn/cslg/report/entity/invalidReReport/Proof.java
  16. 2 0
      RMS/src/main/java/cn/cslg/report/entity/invalidReReport/Scratch.java
  17. 1 1
      RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ProofDetailMapper.java
  18. 1 1
      RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ProofGroupMapper.java
  19. 1 1
      RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ProofMapper.java
  20. 19 0
      RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ScratchMapper.java
  21. 82 0
      RMS/src/main/java/cn/cslg/report/service/business/CompareFilesService.java
  22. 3 0
      RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java
  23. 163 1
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ArgumentsService.java
  24. 1 2
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofDetailService.java
  25. 100 20
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofService.java
  26. 29 0
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ScratchService.java
  27. 2 2
      RMS/src/main/java/cn/cslg/report/service/business/ReportFileService.java

+ 14 - 1
RMS/src/main/java/cn/cslg/report/common/GlobalException.java

@@ -3,7 +3,9 @@ package cn.cslg.report.common;
 import cn.cslg.report.common.core.exception.PermissionException;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.common.utils.ResponseEnum;
+import cn.cslg.report.exception.XiaoShiException;
 import cn.dev33.satoken.exception.NotLoginException;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 
@@ -11,8 +13,12 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 /**
- * 全局异常处理
+ * 全局异常处理类
+ *
+ * @Author chenyu
+ * @Date 2023/7/3
  */
+@Slf4j
 @RestControllerAdvice // 可指定包前缀,比如:(basePackages = "com.pj.admin")
 public class GlobalException {
 
@@ -29,4 +35,11 @@ public class GlobalException {
             return Response.error(ResponseEnum.SYSTEM_ERROR);
         }
     }
+
+    @ExceptionHandler
+    public Response handleXiaoShiException(XiaoShiException e) {
+        log.info("全局异常处理机制捕获到XiaoShiException,异常信息提示:{}", e.getMessage());
+        return Response.fail(e.getMessage());
+    }
+
 }

+ 31 - 0
RMS/src/main/java/cn/cslg/report/common/model/dto/ProofAddNewDTO.java

@@ -0,0 +1,31 @@
+package cn.cslg.report.common.model.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 上传文献证据DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/7/3
+ */
+@Accessors(chain = true)
+@Data
+public class ProofAddNewDTO implements Serializable {
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+    /**
+     * 证据名称
+     */
+    private String fileName;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 8 - 8
RMS/src/main/java/cn/cslg/report/common/model/dto/ShareReportDTO.java

@@ -1,26 +1,26 @@
 package cn.cslg.report.common.model.dto;
 
-import cn.cslg.report.common.model.BaseVO;
 import lombok.Data;
 
 import java.util.List;
 
 @Data
-public class ShareReportDTO{
-private Integer reportId;
-private List<Integer> personIds;
-private String personName;
-private String userName;
+public class ShareReportDTO {
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+    private List<Integer> personIds;
+    private String personName;
+    private String userName;
     /**
      * 每页条数
      */
     private Long size;
-
     /**
      * 当前页数
      */
     private Long current;
-
     /**
      * 数据总数
      */

+ 76 - 0
RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/ArgumentsDTO.java

@@ -0,0 +1,76 @@
+package cn.cslg.report.common.model.dto.invalidReReport;
+
+import cn.cslg.report.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 陈述意见DTO类
+ *
+ * @Author 李仁杰
+ * @Date 2023/7/4
+ */
+@Data
+public class ArgumentsDTO  {
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+
+    /**
+     * 权要id
+     */
+    private Integer rightId;
+
+    /**
+     * 特征id
+     */
+    private Integer featureId;
+
+    /**
+     * 无效证据
+     */
+    private String proofStr;
+
+    /**
+     * 陈述意见
+     */
+    private String argumentStr;
+
+    /**
+     * 证据id
+     */
+    private Integer proofId;
+    /**
+     * 划词内容
+     */
+    private String content ;
+
+    /**
+     * 划词类型
+     */
+    private String scratchType ;
+
+    /**
+     * 划词颜色
+     */
+    private String scratchColor ;
+
+    /**
+     * 划词栏位
+     */
+    private String scratchField ;
+
+    /**
+     * 划词位置
+     */
+    private Integer position ;
+
+    /**
+     * 划词专利
+     */
+    private String patentNo ;
+}

+ 23 - 0
RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/ArgumentsQueryDTO.java

@@ -0,0 +1,23 @@
+package cn.cslg.report.common.model.dto.invalidReReport;
+
+import cn.cslg.report.common.model.BaseVO;
+import lombok.Data;
+
+/**
+ * 陈述意见DTO类
+ *
+ * @Author 李仁杰
+ * @Date 2023/7/4
+ */
+@Data
+public class ArgumentsQueryDTO extends BaseVO {
+    /**
+     * 权要id
+     */
+    private Integer rightId;
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+
+}

+ 11 - 0
RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/ProofQueryDTO.java

@@ -0,0 +1,11 @@
+package cn.cslg.report.common.model.dto.invalidReReport;
+
+import cn.cslg.report.common.model.BaseVO;
+import lombok.Data;
+
+@Data
+public class ProofQueryDTO extends BaseVO {
+    private Integer reportId;
+    private String orderType;
+
+}

+ 23 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/invalidReReport/ArgumentsQueryVO.java

@@ -0,0 +1,23 @@
+package cn.cslg.report.common.model.vo.invalidReReport;
+
+import cn.cslg.report.common.model.BaseVO;
+import lombok.Data;
+
+/**
+ * 陈述意见DTO类
+ *
+ * @Author 李仁杰
+ * @Date 2023/7/4
+ */
+@Data
+public class ArgumentsQueryVO extends BaseVO {
+    /**
+     * 权要id
+     */
+    private Integer rightId;
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+
+}

+ 34 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/invalidReReport/ArgumentsVO.java

@@ -0,0 +1,34 @@
+package cn.cslg.report.common.model.vo.invalidReReport;
+
+import lombok.Data;
+
+/**
+ * 陈述意见DTO类
+ *
+ * @Author 李仁杰
+ * @Date 2023/7/4
+ */
+@Data
+public class ArgumentsVO {
+
+    /**
+     * 权要id
+     */
+    private Integer rightId;
+
+    /**
+     * 特征id
+     */
+    private Integer featureId;
+
+    /**
+     * 无效证据
+     */
+    private String proofStr;
+
+    /**
+     * 陈述意见
+     */
+    private String argumentStr;
+
+}

+ 25 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/invalidReReport/ProofVO.java

@@ -0,0 +1,25 @@
+package cn.cslg.report.common.model.vo.invalidReReport;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ProofVO {
+    /**
+     * 排序
+     */
+    private String sortStr;
+
+    /**
+     * 名称
+     */
+    private String proofName;
+
+    /**
+     * 文件类型
+     */
+    private String proofType;
+
+
+}

+ 8 - 0
RMS/src/main/java/cn/cslg/report/common/utils/Response.java

@@ -71,6 +71,14 @@ public class Response {
         this.message = message;
     }
 
+    public static Response fail(Object data) {
+        Response response = new Response();
+        response.setCode(0);
+        response.setMessage(data + "");
+        response.setData(data);
+        return response;
+    }
+
     public Response() {
     }
 

+ 22 - 4
RMS/src/main/java/cn/cslg/report/controller/CompareController.java

@@ -1,21 +1,22 @@
 package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.model.dto.ProofAddNewDTO;
 import cn.cslg.report.common.model.vo.CompareFilesVO;
 import cn.cslg.report.common.model.vo.PatentVO;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.service.business.CompareFilesService;
+import com.alibaba.fastjson.JSONObject;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.text.ParseException;
+import java.util.List;
 
 
 @SuppressWarnings({"all"})
@@ -41,6 +42,14 @@ public class CompareController {
         return res;
     }
 
+    @RequestMapping(value = "/addSingle", method = RequestMethod.GET)
+    @Operation(summary = "添加单个对比文件")
+    public Integer addSingle(Integer reportId, String patentNo) throws IOException {
+        Integer res = compareFilesService.addSingle(reportId, patentNo);
+        return res;
+    }
+
+
     @RequestMapping(value = "/getCompareFile", method = RequestMethod.POST)
     @Operation(summary = "获得对比文件详情(分页)")
     public String getCompareFile(@RequestBody PatentVO patentVO) throws IOException {
@@ -74,4 +83,13 @@ public class CompareController {
     public String reTaskStateCount(Integer reportId) throws ParseException, IOException {
         return Response.success(compareFilesService.reTaskStateCount(reportId));
     }
+
+
+    @Operation(summary = "上传非专利文献证据")
+    @PostMapping("/addProofByFile")
+    public String addProofByFile(String proofAddNewDTOStr, List<MultipartFile> files) {
+        ProofAddNewDTO proofAddNewDTO = JSONObject.parseObject(proofAddNewDTOStr, ProofAddNewDTO.class);
+        compareFilesService.addProofByFile(proofAddNewDTO, files);
+        return Response.success();
+    }
 }

+ 5 - 0
RMS/src/main/java/cn/cslg/report/controller/FeatureController.java

@@ -64,4 +64,9 @@ public class FeatureController {
     public String getSplitMessage(Integer taskId,String patentNo,Integer reportId) throws IOException {
         return Response.success(assoTaskPatentSplitService.getSplitMessage(taskId,patentNo,reportId));
     }
+
+
+
+
+
 }

+ 28 - 15
RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/ProofController.java

@@ -1,10 +1,14 @@
 package cn.cslg.report.controller.InvalidReReport;
 
 import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.model.dto.ProofAddNewDTO;
+import cn.cslg.report.common.model.dto.ReportDTO;
 import cn.cslg.report.common.model.dto.ShareReportDTO;
+import cn.cslg.report.common.model.dto.invalidReReport.ProofQueryDTO;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.service.business.InvalidReReport.ProofService;
 import cn.cslg.report.service.business.asso.AssoReportPersonService;
+import com.alibaba.fastjson.JSONObject;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
@@ -13,16 +17,19 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.mail.Multipart;
 import java.io.IOException;
+import java.util.List;
 
 /**
- * 报告分享管理的Controller层
+ * 文献证据的Controller层
  *
  * @Author lrj
  * @Data 2023/4/1
  */
-@Tag(name = "无效应对证据管理")
+@Tag(name = "文献证据管理")
 @Slf4j
 @RequiredArgsConstructor
 @RestController
@@ -33,24 +40,30 @@ public class ProofController {
 //    @Operation(summary = "上传专利文献证据(文件)")
 //    @PostMapping("/addPatentProofByFile")
 //    public String addPatentProofByFile(@RequestBody ShareReportDTO shareReportDTO) {
-//        proofService.
+//        proofService.addPatentProofByFile()
 //        return Response.success(flag);
 //    }
-//
-//
-//    @Operation(summary = "上传非专利文献证据")
-//    @PostMapping("/addProofByFile")
-//    public String addProofByFile(@RequestBody ShareReportDTO shareReportDTO) {
-//        proofService
-//        return Response.success();
-//    }
-//
-//
-//    @Operation(summary = "上传专利文献证据(专利号)")
+
+
+    @Operation(summary = "上传非专利文献证据")
+    @PostMapping("/addProofByFile")
+    public String addProofByFile(String proofAddNewDTOStr, List<MultipartFile> files) {
+        ProofAddNewDTO proofAddNewDTO = JSONObject.parseObject(proofAddNewDTOStr, ProofAddNewDTO.class);
+        log.info("开始处理【上传非专利文献证据】的请求,请求参数为:{}, {}", proofAddNewDTO, files);
+        proofService.addProofByFile(proofAddNewDTO, files);
+        return Response.success();
+    }
+
+
+    //    @Operation(summary = "上传专利文献证据(专利号)")
 //    @PostMapping("/addPatentFile")
 //    public String addPatentFile(@RequestBody ShareReportDTO shareReportDTO) throws IOException {
-//
 //        return Response.success(assoReportPersonService.showShare(shareReportDTO));
 //    }
+    @Operation(summary = "查询专利文献列表")
+    @PostMapping("/queryProof")
+    public String queryProof(@RequestBody ProofQueryDTO proofAddNewDTO) {
+        return proofService.queryProof(proofAddNewDTO);
+    }
 
 }

+ 7 - 0
RMS/src/main/java/cn/cslg/report/entity/CompareFiles.java

@@ -41,4 +41,11 @@ public class CompareFiles extends BaseEntity<CompareFiles> {
     @TableField(value = "SYS_ORDER")
     private Integer SysOrder;
 
+    @TableField(value = "FILE_ID")
+    private Integer fileId;
+
+    @TableField(value = "FILE_NAME")
+    private String fileName;
+    @TableField(value = "FILE_TYPE")
+    private Integer fileType;
 }

+ 17 - 6
RMS/src/main/java/cn/cslg/report/entity/invalidReReport/Proof.java

@@ -9,6 +9,7 @@ import java.util.Date;
 
 /**
  * 证据表
+ *
  * @Author xiexiang
  * @Date 2023/6/28
  */
@@ -20,31 +21,41 @@ public class Proof extends BaseEntity<Proof> {
      */
     @TableField("REPORT_ID")
     private Integer reportId;
-
+    /**
+     * 证据名称
+     */
+    @TableField("PROOF_NAME")
+    private String proofName;
     /**
      * 排序
      */
     @TableField("SORT")
     private Integer sort;
-
     /**
-     * 证据类型
+     * 证据类型(1专利文献 2非专利文献)
      */
     @TableField("PROOF_TYPE")
     private Integer proofType;
-
     /**
      * 专利号
      */
     @TableField("PATENT_NO")
     private String patentNo;
-
+    /**
+     * 文件id
+     */
+    @TableField("FILE_ID")
+    private Integer fileId;
+    /**
+     * 备注
+     */
+    @TableField("REMARK")
+    private String remark;
     /**
      * 创建人
      */
     @TableField("CREATE_ID")
     private Integer createId;
-
     /**
      * 创建时间
      */

+ 2 - 0
RMS/src/main/java/cn/cslg/report/entity/invalidReReport/Scratch.java

@@ -16,6 +16,8 @@ import java.util.Date;
 @Data
 @TableName(value = "SCRATCH")
 public class Scratch extends BaseEntity<Scratch> {
+    @TableField("REPORT_ID")
+    private String reportId ;
     /**
      * 划词内容
      */

+ 1 - 1
RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ProofDetailMapper.java

@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
 /**
+ * 证据详情Mapper层
  *
- *证据详情Mapper层
  * @Author 李仁杰
  * @Date 2023/6/28
  */

+ 1 - 1
RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ProofGroupMapper.java

@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
 /**
+ * 证据组合的Mapper层
  *
- *证据详情Mapper层
  * @Author 李仁杰
  * @Date 2023/6/28
  */

+ 1 - 1
RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ProofMapper.java

@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
 /**
+ * 证据类型的Mapper层
  *
- *证据详情Mapper层
  * @Author 李仁杰
  * @Date 2023/6/28
  */

+ 19 - 0
RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ScratchMapper.java

@@ -0,0 +1,19 @@
+package cn.cslg.report.mapper.InvalidReReport;
+
+import cn.cslg.report.entity.invalidReReport.Arguments;
+import cn.cslg.report.entity.invalidReReport.Scratch;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ *
+ *划词Mapper层
+ * @Author 李仁杰
+ * @Date 2023/6/30
+ */
+@Repository
+public interface ScratchMapper extends BaseMapper<Scratch> {
+
+
+}
+

+ 82 - 0
RMS/src/main/java/cn/cslg/report/service/business/CompareFilesService.java

@@ -4,15 +4,19 @@ import cn.cslg.report.common.model.PASPatentVO;
 import cn.cslg.report.common.model.dto.CompareOrderDTO;
 import cn.cslg.report.common.model.dto.CustomFieldLabelDTO;
 
+import cn.cslg.report.common.model.dto.ProofAddNewDTO;
 import cn.cslg.report.common.model.vo.CompareFilesVO;
 import cn.cslg.report.common.model.vo.PatentIndexSettingVO;
 
 import cn.cslg.report.common.model.vo.PatentVO;
+import cn.cslg.report.common.model.vo.PersonnelVO;
 import cn.cslg.report.common.utils.JsonUtils;
 import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.common.utils.ThrowException;
 import cn.cslg.report.entity.*;
 import cn.cslg.report.entity.asso.AssoRecordsFeature;
 import cn.cslg.report.entity.asso.AssoTaskPersonel;
+import cn.cslg.report.entity.invalidReReport.Proof;
 import cn.cslg.report.mapper.CompareFilesMapper;
 import cn.cslg.report.service.OutInterfaceService;
 import cn.hutool.core.lang.func.Func;
@@ -25,9 +29,11 @@ import io.swagger.v3.oas.models.security.SecurityScheme;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.BeanUtils;
 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.IOException;
 import java.util.*;
@@ -50,6 +56,7 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
     private final TaskService taskService;
     private final AssoTaskPersonelService assoTaskPersonelService;
     private final CompareRecordsService compareRecordsService;
+    private final ReportFileService reportFileService;
 
     /**
      * @param compareFilesVO
@@ -200,6 +207,7 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
         this.saveBatch(compareFiles);
         return Response.success();
     }
+
     /**
      * @param patentVO
      * @return 标的专利号和数量 map
@@ -590,4 +598,78 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
         map.put("selectedTotal", i);
         return Response.success(map);
     }
+
+
+    /**
+     * @param patentVO
+     * @return 标的专利号和数量 map
+     * @throws IOException
+     * @function 根据PatentVO里的条件(分页)模糊查询标的专利号和数量
+     */
+    public Integer addSingle(Integer reportId, String patentNo) throws IOException {
+        CompareFiles compareFiles = new CompareFiles();
+        try {
+            compareFiles.setPatentNo(patentNo);
+            List<CompareFiles> proofList = this.list(new LambdaQueryWrapper<CompareFiles>().eq(CompareFiles::getReportId, reportId).orderByDesc(CompareFiles::getSysOrder).last("limit 1"));
+            Integer biggestSort;
+            //若该报告目前没有证据,则最大排序序号设为0;若有则最大排序序号就是当前按序号倒序的第一个证据的排序序号
+            if (proofList == null || proofList.size() == 0) {
+                biggestSort = 0;
+            } else {
+                if (proofList.get(0).getSysOrder() == null) {
+                    biggestSort = 0;
+                } else {
+                    biggestSort = proofList.get(0).getSysOrder();
+                }
+
+            }
+            compareFiles.setSysOrder(++biggestSort);
+            compareFiles.setFileType(1);
+            compareFiles.setReportId(reportId);
+            compareFiles.insert();
+        } catch (Exception e) {
+            return -1;
+        }
+        return compareFiles.getId();
+    }
+
+    //上传非专利文献证据
+    public void addProofByFile(ProofAddNewDTO proofAddNewDTO, List<MultipartFile> files) {
+        log.info("开始处理【上传非专利文献证据】的业务,参数为:{}, {}", proofAddNewDTO, files);
+
+        //检查本次请求合法性(是否有上传非专利文献证据)
+        if (files == null || files.size() == 0) {
+            ThrowException.throwXiaoShiException("未上传文件");
+        }
+
+
+        ArrayList<Proof> proofs = new ArrayList<>();
+        //上传非专利文献证据文件附件,附件信息入报告系统文件表后,返回附件ids
+        List<Integer> fileIds = reportFileService.uploadFiles(files);
+        //查询证据表,取出该报告已有证据最大排序序号
+        List<CompareFiles> proofList = this.list(new LambdaQueryWrapper<CompareFiles>().eq(CompareFiles::getReportId, proofAddNewDTO.getReportId()).orderByDesc(CompareFiles::getSysOrder).last("limit 1"));
+        Integer biggestSort;
+        //若该报告目前没有证据,则最大排序序号设为0;若有则最大排序序号就是当前按序号倒序的第一个证据的排序序号
+        if (proofList == null || proofList.size() == 0) {
+            biggestSort = 0;
+        } else {
+            if (proofList.get(0).getSysOrder() == null) {
+                biggestSort = 0;
+            } else {
+                biggestSort = proofList.get(0).getSysOrder();
+            }
+
+        }
+
+        CompareFiles proof = new CompareFiles();
+        BeanUtils.copyProperties(proofAddNewDTO, proof);  //DTO赋值给实体类(装载报告id、证据名称、备注)
+        proof.setFileType(2);  //装载证据类型
+        proof.setFileId(fileIds.get(0));  //装载文件id
+        proof.setFileType(++biggestSort);
+        proof.insert();
+
+        log.info("上传非专利文献证据完成");
+
+    }
+
 }

+ 3 - 0
RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java

@@ -534,4 +534,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         return 1;
     }
 
+
+
+
 }

+ 163 - 1
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ArgumentsService.java

@@ -1,19 +1,181 @@
 package cn.cslg.report.service.business.InvalidReReport;
 
+import cn.cslg.report.common.model.dto.invalidReReport.ArgumentsDTO;
+import cn.cslg.report.common.model.dto.invalidReReport.ArgumentsQueryDTO;
+import cn.cslg.report.common.model.vo.invalidReReport.ArgumentsVO;
+import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.report.entity.invalidReReport.Arguments;
 import cn.cslg.report.entity.invalidReReport.AssoArguments;
+import cn.cslg.report.entity.invalidReReport.Proof;
+import cn.cslg.report.entity.invalidReReport.Scratch;
 import cn.cslg.report.mapper.InvalidReReport.ArgumentsMapper;
 import cn.cslg.report.mapper.InvalidReReport.AssoArgumentsMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.swagger.v3.oas.models.security.SecurityScheme;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 
 @Service
 @Slf4j
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
-public class ArgumentsService extends ServiceImpl<ArgumentsMapper,Arguments> {
+public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
+    private static ProofService proofService;
+    private static LoginUtils loginUtils;
+    private static ScratchService scratchService;
+    private static AssoArgumentsService assoArgumentsService;
+    /**
+     * 添加陈述意见
+     *
+     * @param argumentsDTO
+     */
+    public void addArguments(ArgumentsDTO argumentsDTO) {
+        // 检验参数
+        if (argumentsDTO == null||argumentsDTO.getReportId() == null || argumentsDTO.getFeatureId() == null || argumentsDTO.getRightId() == null||argumentsDTO.getProofId()==null) {
+            return;
+        }
+        Integer  loginId=loginUtils.getId();
+        //装载陈述意见实体类
+        Arguments arguments = new Arguments();
+        BeanUtils.copyProperties(argumentsDTO, arguments);
+        arguments.setCreateId(loginId);
+        arguments.insert();
+        //若划词不为空
+        if(argumentsDTO.getContent()!=null){
+            Scratch scratch =new Scratch();
+            BeanUtils.copyProperties(argumentsDTO,scratch);
+            //根据证据类型获得证据的专利号
+           Proof proof = proofService.getById(arguments.getProofId());
+           String patenNo =proof.getPatentNo();
+           scratch.setPatentNo(patenNo);
+           scratch.setCreateId(loginId);
+           scratch.insert();
+        }
+
+    }
+
+    /**
+     * 查询陈述意见详情
+     *
+     * @param argumentsId
+     */
+    public ArgumentsVO queryArgumentsDetail(Integer argumentsId) {
+      //判断argumentsId是否为空
+        if(argumentsId==null){
+            return null;
+        }
+        ArgumentsVO argumentsVO =new ArgumentsVO();
+      //根据argumentsId查询陈述意见
+     Arguments arguments =this.getById(argumentsId);
+        BeanUtils.copyProperties(arguments,argumentsVO);
+        //根据证据id获得专利号
+        Proof proof =proofService.getById(arguments.getProofId());
+        if(proof.getPatentNo()!=null){
+            //根据专利号和报告id获得划词内容
+            LambdaQueryWrapper<Scratch> scratchLambdaQueryWrapper =new LambdaQueryWrapper<>();
+            scratchLambdaQueryWrapper.eq(Scratch::getPatentNo,proof.getPatentNo());
+            scratchLambdaQueryWrapper.eq(Scratch::getReportId,arguments.getReportId());
+            List<Scratch> scratchList =scratchService.list(scratchLambdaQueryWrapper);
+            if(scratchList.size()>0){
+                Scratch scratch =scratchList.get(0);
+                BeanUtils.copyProperties(scratch,argumentsVO);
+            }
+        }
+
+        return argumentsVO;
+    }
+
+    /**
+     * 删除陈述意见详情
+     *
+     * @param argumentsIds
+     */
+    public void deleteArguments(List<Integer> argumentsIds) {
+        //判断argumentsId是否为空
+        if(argumentsIds==null){
+            return ;
+        }
+        //判断陈述意见方案中是否有正在使用的陈述意见
+        LambdaQueryWrapper<AssoArguments> assoArgumentsWrapper=new LambdaQueryWrapper<>();
+        assoArgumentsWrapper.in(AssoArguments::getArgumentId,argumentsIds);
+        List<AssoArguments> assoArguments =assoArgumentsService.list(assoArgumentsWrapper);
+        if(assoArguments.size()>0){
+            return ;
+        }
+        //根据argumentsId查询陈述意见
+        LambdaQueryWrapper<Arguments> argumentsWrapper=new LambdaQueryWrapper<>();
+        argumentsWrapper.in(Arguments::getId,argumentsIds);
+        List<Arguments> arguments =this.list(argumentsWrapper);
+        List<Integer> proofIds =arguments.stream().map(Arguments::getProofId).collect(Collectors.toList());
+        //根据proofIds获得proof
+        LambdaQueryWrapper<Proof> proofWrapper =new LambdaQueryWrapper<>();
+        proofWrapper.in(Proof::getId,proofIds);
+        List<Proof> proofs = proofService.list(proofWrapper);
+        List<String> patentNos =proofs.stream().map(Proof::getPatentNo).collect(Collectors.toList());
+        if(patentNos.size()>0){
+            //根据专利号和报告id获得划词内容
+            LambdaQueryWrapper<Scratch> scratchLambdaQueryWrapper =new LambdaQueryWrapper<>();
+            scratchLambdaQueryWrapper.in(Scratch::getPatentNo,patentNos);
+            scratchLambdaQueryWrapper.eq(Scratch::getReportId,arguments.get(0).getReportId());
+            scratchService.remove(scratchLambdaQueryWrapper);
+        }
+         this.remove(argumentsWrapper);
+        return ;
+    }
+
+    /**
+     * 查询陈述意见列表
+     *
+     * @param argumentsQueryDTO
+     */
+    public void queryArguments(ArgumentsQueryDTO argumentsQueryDTO) {
+        //判断reportId是否为空
+        if(argumentsQueryDTO.getReportId()==null){
+            return;
+        }
+        LambdaQueryWrapper<Arguments> argumentsLambdaQueryWrapper =new LambdaQueryWrapper<>();
+        argumentsLambdaQueryWrapper.eq(Arguments::getReportId,argumentsQueryDTO.getReportId());
+        if(argumentsQueryDTO.getReportId()!=null){
+            argumentsLambdaQueryWrapper.eq(Arguments::getRightId,argumentsQueryDTO.getRightId());
+        }
+    }
+
+    /**
+     * 添加陈述意见
+     *
+     * @param argumentsDTO
+     */
+    public void updateArgumentsBatch(ArgumentsDTO argumentsDTO) {
+        // 检验参数
+        if (argumentsDTO == null||argumentsDTO.getReportId() == null || argumentsDTO.getFeatureId() == null || argumentsDTO.getRightId() == null||argumentsDTO.getProofId()==null) {
+            return;
+        }
+        Integer  loginId=loginUtils.getId();
+        //装载陈述意见实体类
+        Arguments arguments = new Arguments();
+        BeanUtils.copyProperties(argumentsDTO, arguments);
+        arguments.setCreateId(loginId);
+        arguments.insert();
+        //若划词不为空
+        if(argumentsDTO.getContent()!=null){
+            Scratch scratch =new Scratch();
+            BeanUtils.copyProperties(argumentsDTO,scratch);
+            //根据证据类型获得证据的专利号
+            Proof proof = proofService.getById(arguments.getProofId());
+            String patenNo =proof.getPatentNo();
+            scratch.setPatentNo(patenNo);
+            scratch.setCreateId(loginId);
+            scratch.insert();
+        }
 
+    }
 }

+ 1 - 2
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofDetailService.java

@@ -11,8 +11,7 @@ import cn.cslg.report.exception.XiaoShiException;
 import cn.cslg.report.mapper.InvalidReReport.ProofDetailMapper;
 import cn.cslg.report.mapper.TemplateMapper;
 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;

+ 100 - 20
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofService.java

@@ -1,46 +1,126 @@
 package cn.cslg.report.service.business.InvalidReReport;
 
+import cn.cslg.report.common.model.dto.ProofAddNewDTO;
+import cn.cslg.report.common.model.dto.invalidReReport.ProofQueryDTO;
+import cn.cslg.report.common.model.vo.PersonnelVO;
+import cn.cslg.report.common.model.vo.invalidReReport.ProofVO;
+import cn.cslg.report.common.utils.CacheUtils;
+import cn.cslg.report.common.utils.DataUtils;
 import cn.cslg.report.common.utils.Response;
-import cn.cslg.report.entity.Template;
-import cn.cslg.report.mapper.TemplateMapper;
+import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
+import cn.cslg.report.common.utils.ThrowException;
+import cn.cslg.report.entity.invalidReReport.Proof;
+import cn.cslg.report.mapper.InvalidReReport.ProofMapper;
+import cn.cslg.report.service.business.ReportFileService;
 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;
+import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.util.ArrayList;
+import java.util.List;
 
+/**
+ * 文献证据的Service层实现类
+ */
 @Service
 @Slf4j
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
-public class ProofService extends ServiceImpl<TemplateMapper, Template> {
-    //上传专利文献证据(文件)
-    public String addPatentProofByFile(Template template) {
-        LambdaQueryWrapper<Template> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(Template::getReportType, template.getReportType());
-        IPage<Template> templateIPage = this.page(new Page<>(template.getCurrent(), template.getSize()), wrapper);
-        return Response.success(templateIPage);
-
-    }
+public class ProofService extends ServiceImpl<ProofMapper, Proof> {
+    private final CacheUtils cacheUtils;
+    private final LoginUtils loginUtils;
+    private final ReportFileService reportFileService;
 
     //上传非专利文献证据
-    public String addProofByFile(Template template) {
+    public void addProofByFile(ProofAddNewDTO proofAddNewDTO, List<MultipartFile> files) {
+        log.info("开始处理【上传非专利文献证据】的业务,参数为:{}, {}", proofAddNewDTO, files);
 
+        //检查本次请求合法性(是否有上传非专利文献证据)
+        if (files == null || files.size() == 0) {
+            ThrowException.throwXiaoShiException("未上传文件");
+        }
 
+        //获取当前登陆人信息
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
 
-          return  "";
+        ArrayList<Proof> proofs = new ArrayList<>();
+        //上传非专利文献证据文件附件,附件信息入报告系统文件表后,返回附件ids
+        List<Integer> fileIds = reportFileService.uploadFiles(files);
+        //查询证据表,取出该报告已有证据最大排序序号
+        List<Proof> proofList = this.list(new LambdaQueryWrapper<Proof>().eq(Proof::getReportId, proofAddNewDTO.getReportId()).orderByDesc(Proof::getSort));
+        Integer biggestSort;
+        //若该报告目前没有证据,则最大排序序号设为0;若有则最大排序序号就是当前按序号倒序的第一个证据的排序序号
+        if (proofList == null || proofList.size() == 0) {
+            biggestSort = 0;
+        } else {
+            biggestSort = proofList.get(0).getSort();
+        }
+        //遍历证据文件,证据表实体类装载数据
+        for (Integer fileId : fileIds) {
+            Proof proof = new Proof();
+            BeanUtils.copyProperties(proofAddNewDTO, proof);  //DTO赋值给实体类(装载报告id、证据名称、备注)
+            proof.setProofType(2);  //装载证据类型
+            proof.setCreateId(personnelVO.getId());  //装载创建人id
+            proof.setFileId(fileId);  //装载文件id
+            proof.setSort(++biggestSort);
+            proofs.add(proof);
+        }
+        //证据表新增数据
+        boolean saveResult = this.saveBatch(proofs);
+        if (!saveResult) {
+            ThrowException.throwXiaoShiException("上传非专利文献证据失败,服务器忙请稍后再次尝试");
+        }
+
+        log.info("上传非专利文献证据完成");
 
     }
 
-    //上传专利文献证据(专利号)
-    public String addPatentFile(Template template) {
-        LambdaQueryWrapper<Template> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(Template::getReportType, template.getReportType());
-        IPage<Template> templateIPage = this.page(new Page<>(template.getCurrent(), template.getSize()), wrapper);
-        return Response.success(templateIPage);
+    /**
+     * 分页查询证据
+     *
+     * @param proofAddNewDTO
+     * @return
+     */
+    public String queryProof(ProofQueryDTO proofAddNewDTO) {
+        Integer reportId = proofAddNewDTO.getReportId();
+        Integer current = proofAddNewDTO.getCurrent();
+        Integer size = proofAddNewDTO.getSize();
+        String orderType = proofAddNewDTO.getOrderType();
+        if (reportId == null || current == null || size == null) {
+            return "";
+        }
+        LambdaQueryWrapper<Proof> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Proof::getReportId, reportId);
+        if ("desc".equals(orderType)) {
+            wrapper.orderByDesc(Proof::getSort);
+        } else {
+            wrapper.orderByAsc(Proof::getSort);
+        }
+        List<Proof> proofs = this.page(new Page<>(current, size), wrapper).getRecords();
+        List<ProofVO> proofVOS = this.loadProof(proofs);
+        long count = this.count(wrapper);
+        return Response.success(proofVOS, DataUtils.setPageColumn(size, current, Math.toIntExact(count)));
+    }
 
+    private List<ProofVO> loadProof(List<Proof> proofs) {
+        List<ProofVO> proofVOS = new ArrayList<>();
+        proofs.forEach(item -> {
+            ProofVO proofVO = new ProofVO();
+            if (item.getProofType().equals(1)) {
+                proofVO.setProofType("专利文献");
+                proofVO.setProofName(item.getPatentNo());
+            } else if (item.getProofType().equals(2)) {
+                proofVO.setProofType("非专利文献");
+                proofVO.setProofName(item.getProofName());
+            }
+            proofVO.setSortStr("D" + item.getSort());
+            proofVOS.add(proofVO);
+        });
+        return proofVOS;
     }
 }

+ 29 - 0
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ScratchService.java

@@ -0,0 +1,29 @@
+package cn.cslg.report.service.business.InvalidReReport;
+
+import cn.cslg.report.common.model.dto.invalidReReport.ArgumentsDTO;
+import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.entity.Template;
+import cn.cslg.report.entity.invalidReReport.Scratch;
+import cn.cslg.report.mapper.InvalidReReport.ScratchMapper;
+import cn.cslg.report.mapper.TemplateMapper;
+
+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;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+
+@Service
+@Slf4j
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class ScratchService extends ServiceImpl<ScratchMapper, Scratch> {
+
+
+
+}

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

@@ -46,8 +46,8 @@ public class ReportFileService extends ServiceImpl<ReportFileMapper, ReportFiles
             reportFiles.add(reportFile);
         });
         this.saveBatch(reportFiles);
-        List<Integer> reportIds = reportFiles.stream().map(ReportFiles::getId).collect(Collectors.toList());
-        return reportIds;
+        List<Integer> fileIds = reportFiles.stream().map(ReportFiles::getId).collect(Collectors.toList());
+        return fileIds;
 
 
     }