Browse Source

代码合并

lwhhszx 2 năm trước cách đây
mục cha
commit
60a31311fa
55 tập tin đã thay đổi với 1654 bổ sung1148 xóa
  1. 2 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/FeaturesDTO.java
  2. 1 1
      RMS/src/main/java/cn/cslg/report/common/model/dto/ReportDTO.java
  3. 5 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/ArgumentsDTO.java
  4. 11 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/GroupDetail.java
  5. 9 8
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/InvalidReasonDTO.java
  6. 26 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/InvalidReasonFieldDTO.java
  7. 32 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/InvalidReasonFieldVO.java
  8. 25 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/InvalidReasonFieldValueDTO.java
  9. 0 39
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/ProofDetailDTO.java
  10. 4 2
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/ProofGroupDTO.java
  11. 32 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/ProofGroupUpdateDTO.java
  12. 35 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/ProofStrDTO.java
  13. 15 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/UpdateArgumentStrDTO.java
  14. 3 8
      RMS/src/main/java/cn/cslg/report/common/model/vo/SplitVO.java
  15. 65 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/invalidReReport/ProofGroupDetailVO.java
  16. 2 1
      RMS/src/main/java/cn/cslg/report/common/model/vo/invalidReReport/QueryInvalidReasonVO.java
  17. 17 24
      RMS/src/main/java/cn/cslg/report/common/utils/PatentRightUtils.java
  18. 2 3
      RMS/src/main/java/cn/cslg/report/controller/FeatureController.java
  19. 4 9
      RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/ArgumentsController.java
  20. 8 0
      RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/InvalidReasonController.java
  21. 57 0
      RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/InvalidReasonFieldController.java
  22. 33 0
      RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/InvalidReasonFieldValueController.java
  23. 0 47
      RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/ProofController.java
  24. 0 67
      RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/ProofDetailController.java
  25. 13 8
      RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/ProofGroupController.java
  26. 4 0
      RMS/src/main/java/cn/cslg/report/entity/invalidReReport/Arguments.java
  27. 34 0
      RMS/src/main/java/cn/cslg/report/entity/invalidReReport/AssoProofGroupStr.java
  28. 38 0
      RMS/src/main/java/cn/cslg/report/entity/invalidReReport/InvalidReasonField.java
  29. 33 0
      RMS/src/main/java/cn/cslg/report/entity/invalidReReport/InvalidReasonFieldValue.java
  30. 0 65
      RMS/src/main/java/cn/cslg/report/entity/invalidReReport/Proof.java
  31. 1 1
      RMS/src/main/java/cn/cslg/report/entity/invalidReReport/ProofGroup.java
  32. 6 4
      RMS/src/main/java/cn/cslg/report/entity/invalidReReport/AssoFeatureProof.java
  33. 1 1
      RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ArgumentsScenarioMapper.java
  34. 16 0
      RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/AssoProofGroupStrMapper.java
  35. 18 0
      RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/InvalidReasonFiledMapper.java
  36. 22 0
      RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/InvalidReasonFiledValueMapper.java
  37. 0 19
      RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ProofMapper.java
  38. 2 3
      RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/AssoFeatureProofMapper.java
  39. 1 2
      RMS/src/main/java/cn/cslg/report/service/business/CompareFilesService.java
  40. 121 123
      RMS/src/main/java/cn/cslg/report/service/business/CompareMessageService.java
  41. 71 62
      RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java
  42. 7 13
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ArgumentsScenarioService.java
  43. 112 113
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ArgumentsService.java
  44. 0 52
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/AssoFeatureProofService.java
  45. 1 0
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/AssoProofGroupService.java
  46. 20 0
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/AssoProofGroupStrService.java
  47. 134 0
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/InvalidReasonFieldService.java
  48. 50 0
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/InvalidReasonFieldValueService.java
  49. 271 213
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/InvalidReasonService.java
  50. 0 96
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofDetailService.java
  51. 198 66
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofGroupService.java
  52. 0 83
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofService.java
  53. 77 0
      RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofStrService.java
  54. 15 14
      RMS/src/main/java/cn/cslg/report/service/business/ReportService.java
  55. 0 1
      RMS/src/main/resources/application.yml

+ 2 - 0
RMS/src/main/java/cn/cslg/report/common/model/dto/FeaturesDTO.java

@@ -57,4 +57,6 @@ public class FeaturesDTO {
 
     private Integer featuresOrder;
 
+    private Integer position;
+
 }

+ 1 - 1
RMS/src/main/java/cn/cslg/report/common/model/dto/ReportDTO.java

@@ -44,7 +44,7 @@ public class ReportDTO {
     @Schema(description = "报告类别(0无效分析1第三方意见2稳定性分析3FTO调查4侵权分析5回避设计6图表分析7无效应对报告)")
     private Integer type;
     /**
-     * 报告状态(0开卷审核 1创建中 2处理中 3完成 4取消开卷 5补资料中)
+     * 报告状态
      */
     @Schema(description = "报告状态")
     private Integer status;

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

@@ -34,6 +34,7 @@ public class ArgumentsDTO  {
      * 无效证据
      */
     private String proofStr;
+
     /**
      * 无效证据Id
      */
@@ -43,6 +44,10 @@ public class ArgumentsDTO  {
      * 陈述意见
      */
     private String argumentStr;
+    /**
+     * 陈述意见
+     */
+    private Integer argumentId;
 
     /**
      * 证据id

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

@@ -0,0 +1,11 @@
+package cn.cslg.report.common.model.dto.invalidReReport;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class GroupDetail {
+    private Integer compareFileId;
+    private List<Integer> proofStrIds;
+}

+ 9 - 8
RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/InvalidReasonDTO.java

@@ -30,7 +30,7 @@ public class InvalidReasonDTO {
     /**
      * 选择特征
      */
-    private List<featuresIn> features;
+    private List<FeaturesIn> features;
 
     /**
      * 相关证据
@@ -55,28 +55,27 @@ public class InvalidReasonDTO {
     /**
      * 证据组合
      */
-    private List<proofGroupIn> proofGroups;
+    private List<ProofGroupIn> proofGroups;
 
+    private List<InvalidReasonFieldValueDTO> fields ;
 
     @Data
-    public static class proofGroupIn{
-
+    public static class ProofGroupIn{
         private Integer id;
         /**
          * 描述
          */
         private String description;
-
         /**
          * 陈述意见
          */
-        private String argument_str;
+        private String argumentStr;
 
-        private List<Integer> proofIds;
+        private List<GroupDetail> groupDetails;
     }
 
     @Data
-    public static class featuresIn{
+    public static class FeaturesIn{
         private Integer id;
         /**
          * 特征内容
@@ -87,4 +86,6 @@ public class InvalidReasonDTO {
          */
         private Integer position;
     }
+
+
 }

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

@@ -0,0 +1,26 @@
+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 io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 无效理由自定义字段表
+ *
+ * @Author lirenjie
+ * @Date 2023/7/28
+ */
+@Data
+@TableName(value = "ARGUMENTS")
+public class InvalidReasonFieldDTO extends BaseEntity<InvalidReasonFieldDTO> {
+    @Schema(description = "报告id")
+    private Integer reportId;
+
+    @Schema(description = "栏位名称")
+    private String fieldName;
+
+    @Schema(description = "栏位键")
+    private String fieldKey;
+}

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

@@ -0,0 +1,32 @@
+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 io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 无效理由自定义字段表
+ *
+ * @Author lirenjie
+ * @Date 2023/7/28
+ */
+@Data
+@TableName(value = "ARGUMENTS")
+public class InvalidReasonFieldVO extends BaseEntity<InvalidReasonFieldVO> {
+    @Schema(description = "报告id")
+    private Integer reportId;
+
+    @Schema(description = "栏位名称")
+    private String fieldName;
+
+    @Schema(description = "栏位键")
+    private String fieldKey;
+
+    @Schema(description = "是否使用")
+    private Integer fieldState;
+
+    @Schema(description = "自定義排序")
+    private Integer fieldSort;
+}

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

@@ -0,0 +1,25 @@
+package cn.cslg.report.common.model.dto.invalidReReport;
+
+import cn.cslg.report.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 无效理由自定义字段表
+ *
+ * @Author lirenjie
+ * @Date 2023/7/28
+ */
+@Data
+@TableName(value = "ARGUMENTS")
+public class InvalidReasonFieldValueDTO  {
+    @Schema(description = "无效理由id")
+    private Integer invalidReasonId;
+
+    @Schema(description = "栏位id")
+    private Integer fieldId;
+
+   @Schema(description ="栏位值")
+    private String fieldValue;
+}

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

@@ -1,39 +0,0 @@
-package cn.cslg.report.common.model.dto.invalidReReport;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import lombok.Data;
-
-import java.util.Date;
-
-@Data
-public class ProofDetailDTO {
-    /**
-     * 证据id
-     */
-    private Integer proofId;
-
-    /**
-     * 权要id
-     */
-    private Integer rightId;
-
-    /**
-     * 特征id
-     */
-    private Integer featureId;
-
-    /**
-     * 证据(无效请求人)
-     */
-    private String proofStr;
-
-    /**
-     * 证据(权利人)
-     */
-    private String argumentStr;
-    /**
-     * 自增唯一证据id
-      */
-    private Integer id;
-
-}

+ 4 - 2
RMS/src/main/java/cn/cslg/report/common/model/dto/invalidReReport/ProofGroupDTO.java

@@ -25,8 +25,10 @@ public class ProofGroupDTO {
     /**
      * 陈述意见
      */
-    private String argument_str;
+    private String argumentStr;
+
+    private List<GroupDetail> groupDetails;
+
 
-    private List<Integer> proofIds;
 
 }

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

@@ -0,0 +1,32 @@
+package cn.cslg.report.common.model.dto.invalidReReport;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ProofGroupUpdateDTO {
+    /**
+     * 自增主键
+     */
+    @Schema(description ="自增主键Id" )
+    private Integer id;
+
+
+    @Schema(description ="无效证据id" )
+    private List<Integer> proofStrIds;
+
+
+    @Schema(description ="描述" )
+    private String description;
+
+
+    @Schema(description ="陈述意见" )
+    private String argumentStr;
+    @Schema(description = "对比文件id")
+    private Integer compareFileId;
+
+
+}

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

@@ -0,0 +1,35 @@
+package cn.cslg.report.common.model.dto.invalidReReport;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ProofStrDTO {
+
+    @Schema(description ="报告id",required = true)
+    private Integer reportId;
+@Schema(description ="对比文件id",required = true)
+    private Integer compareFileId;
+
+    @Schema(description ="权要排序",required = true)
+    private Integer rightSort;
+
+    @Schema(description ="特征id",required = true)
+    private Integer featureId;
+
+    @Schema(description ="证据文字id",required = false)
+    private Integer proofStrId;
+
+    @Schema(description ="证据文字",required = false)
+    private String proofStr;
+
+    @Schema(description ="陈述意见id",required = false)
+    private Integer argumentId;
+    @Schema(description ="陈述意见",required = false)
+    private String argumentStr;
+
+
+}

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

@@ -0,0 +1,15 @@
+package cn.cslg.report.common.model.dto.invalidReReport;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class UpdateArgumentStrDTO {
+    private Integer id;
+    /**
+     * 陈述意见
+     */
+    private String argumentStr;
+
+}

+ 3 - 8
RMS/src/main/java/cn/cslg/report/common/model/vo/SplitVO.java

@@ -12,18 +12,12 @@ import lombok.experimental.Accessors;
  */
 @Data
 @Accessors(chain = true)
-@Schema(description = "拆分VO类", required = true)
+@Schema(description="拆分VO类",required = true)
 public class SplitVO {
     @Schema(description = "专利号")
-    private String patentNo;
-    /**
-     * 0仅拆主权要 1全部拆分
-     */
+   private String patentNo;
     @Schema(description = "拆分类型")
     private Integer splitType;
-    /**
-     * 0逗号拆分 1分号拆分 2逗号和分号拆分
-     */
     @Schema(description = "拆分形式")
     private Integer splitBy;
     @JsonProperty("ReportId")
@@ -33,4 +27,5 @@ public class SplitVO {
     private Integer taskId;
 
 
+
 }

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

@@ -0,0 +1,65 @@
+package cn.cslg.report.common.model.vo.invalidReReport;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ProofGroupDetailVO {
+    private Integer id;
+    /**
+     * 无效理由id
+     */
+    private Integer invalidReasonId;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 陈述意见
+     */
+    private String argumentStr;
+
+
+    private List<ProofIn> proofs;
+
+    private List<ProofDetailIn> proofDetails;
+
+    @Data
+    public static class  ProofDetailIn{
+
+        private Integer featureId;
+
+        private String featureContent;
+        private Integer featuresOrder;
+        private Integer sort;
+
+        private Integer proofId;
+
+        private String proofStr;
+
+        private Integer proofStrId;
+        private List<ArgumentIn> arguments;
+
+    }
+
+    @Data
+    public static class ProofIn{
+
+        private Integer id;
+        private Integer sort;
+        private Integer fileType;
+        private String patentNo;
+        private Integer fileId;
+    }
+    @Data
+    public static class ArgumentIn{
+        private Integer id;
+        private String argumentStr;
+    }
+
+
+}

+ 2 - 1
RMS/src/main/java/cn/cslg/report/common/model/vo/invalidReReport/QueryInvalidReasonVO.java

@@ -1,7 +1,7 @@
 package cn.cslg.report.common.model.vo.invalidReReport;
 
 import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonDTO;
-import cn.cslg.report.entity.invalidReReport.Proof;
+import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonFieldValueDTO;
 import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 
@@ -58,6 +58,7 @@ public class QueryInvalidReasonVO {
      */
     private List<featuresIn> features;
 
+    private List<InvalidReasonFieldValueDTO> fields;
 
     @Data
     public static class proofGroupIn{

+ 17 - 24
RMS/src/main/java/cn/cslg/report/common/utils/PatentRightUtils.java

@@ -184,7 +184,7 @@ public class PatentRightUtils {
                 }
 
                 String regex;
-                if (content.contains("@2")) {
+                if (content.contains("@")) {
                     regex = "@[0-9]+";
                 } else if (content.contains("[001]")) {
                     regex = "\\[[0-9]+]";
@@ -193,7 +193,7 @@ public class PatentRightUtils {
                 }
 
                 Matcher matcher = Pattern.compile(regex).matcher(content);
-                Matcher matcherOut = Pattern.compile(regex).matcher(contentOut);
+                Matcher matcherOut = Pattern.compile("@[0-9]+").matcher(contentOut);
                 while (matcher.find()) {
                     content = content.replaceFirst(matcher.group(), "\n" + matcher.group().substring(matcher.group().indexOf("@") + 1));
                 }
@@ -259,13 +259,11 @@ public class PatentRightUtils {
                                     .setContent(strs[i])
                                     .setSort(i)
                                     .setParentSort((Integer.parseInt(parentNum) - 1) + "");
-                            if (strsOut.length - 1 >= i) {
-                                //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
-                                if (strsOut.length > strs.length && strs.length == (i + 1)) {
-                                    patentRight.setContentOut(String.join(" ", Arrays.copyOfRange(strsOut, i, strsOut.length)));
-                                } else {
-                                    patentRight.setContentOut(strsOut[i]);
-                                }
+                            //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
+                            if (strsOut.length > strs.length && strs.length == (i + 1)) {
+                                patentRight.setContentOut(String.join(" ", Arrays.copyOfRange(strsOut, i, strsOut.length)));
+                            } else {
+                                patentRight.setContentOut(strsOut[i]);
                             }
                             patentRights.add(patentRight);
                         } else if (matcher3.find()) {
@@ -282,13 +280,11 @@ public class PatentRightUtils {
                                     .setContent(strs[i])
                                     .setSort(i)
                                     .setParentSort(builder.substring(0, builder.lastIndexOf(",")));
-                            if (strsOut.length - 1 >= i) {
-                                //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
-                                if (strsOut.length > strs.length && strs.length == (i + 1)) {
-                                    patentRight.setContentOut(String.join(" ", Arrays.copyOfRange(strsOut, i, strsOut.length)));
-                                } else {
-                                    patentRight.setContentOut(strsOut[i]);
-                                }
+                            //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
+                            if (strsOut.length > strs.length && strs.length == (i + 1)) {
+                                patentRight.setContentOut(String.join(" ", Arrays.copyOfRange(strsOut, i, strsOut.length)));
+                            } else {
+                                patentRight.setContentOut(strsOut[i]);
                             }
                             patentRights.add(patentRight);
                         }
@@ -300,13 +296,11 @@ public class PatentRightUtils {
                                 .setContent(strs[i])
                                 .setSort(i)
                                 .setParentSort("-1");
-                        if (strsOut.length - 1 >= i) {
-                            //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
-                            if (strsOut.length > strs.length && strs.length == (i + 1)) {
-                                patentRight.setContentOut(String.join(" ", Arrays.copyOfRange(strsOut, i, strsOut.length)));
-                            } else {
-                                patentRight.setContentOut(strsOut[i]);
-                            }
+                        //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
+                        if (strsOut.length > strs.length && strs.length == (i + 1)) {
+                            patentRight.setContentOut(String.join(" ", Arrays.copyOfRange(strsOut, i, strsOut.length)));
+                        } else {
+                            patentRight.setContentOut(strsOut[i]);
                         }
                         patentRights.add(patentRight);
                     }
@@ -315,7 +309,6 @@ public class PatentRightUtils {
 
             return patentRights;
         } catch (Exception e) {
-            e.printStackTrace();
             return new ArrayList<>();
         }
     }

+ 2 - 3
RMS/src/main/java/cn/cslg/report/controller/FeatureController.java

@@ -80,7 +80,6 @@ public class FeatureController {
     public String addSingleFeature(@RequestBody FeaturesDTO featuresDTO) throws IOException {
         return featureService.addSingleFeature(featuresDTO);
     }
-
     @RequestMapping(value = "/deleteSingleFeature", method = RequestMethod.GET)
     @Operation(summary = "删除单个特征")
     public String deleteSingleFeature(Integer featureId) throws IOException {
@@ -90,9 +89,9 @@ public class FeatureController {
 
     @RequestMapping(value = "/getFeatureList", method = RequestMethod.GET)
     @Operation(summary = "查询特征列表")
-    public String getFeatureList(Integer reportId, Integer rightSort) throws IOException {
+    public String getFeatureList(Integer reportId,Integer rightSort) throws IOException {
 
-        return featureService.getFeatureList(reportId, rightSort);
+        return featureService.getFeatureList(reportId,rightSort);
     }
 
 }

+ 4 - 9
RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/ArgumentsController.java

@@ -1,15 +1,12 @@
 package cn.cslg.report.controller.InvalidReReport;
 
 import cn.cslg.report.common.core.base.Constants;
-import cn.cslg.report.common.model.dto.ShareReportDTO;
 import cn.cslg.report.common.model.dto.invalidReReport.ArgumentsDTO;
 import cn.cslg.report.common.model.dto.invalidReReport.ArgumentsDetailsDTO;
 import cn.cslg.report.common.model.dto.invalidReReport.ArgumentsListDTO;
 import cn.cslg.report.common.utils.Response;
-import cn.cslg.report.entity.invalidReReport.AssoFeatureProof;
-import cn.cslg.report.service.business.AssoRecordsFeatureService;
 import cn.cslg.report.service.business.InvalidReReport.ArgumentsService;
-import cn.cslg.report.service.business.InvalidReReport.AssoFeatureProofService;
+import cn.cslg.report.service.business.InvalidReReport.ProofStrService;
 import cn.cslg.report.service.business.asso.AssoReportPersonService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -34,8 +31,7 @@ import java.util.List;
 public class ArgumentsController {
     private final AssoReportPersonService assoReportPersonService;
     private final ArgumentsService argumentsService;
-    private final AssoFeatureProofService assoFeatureProofService;
-
+    private final ProofStrService assoFeatureProofService;
     @Operation(summary = "添加陈述意见")
     @PostMapping("/addArguments")
     public String addArguments(@RequestBody ArgumentsDTO argumentsDTO) throws IOException {
@@ -70,13 +66,12 @@ public class ArgumentsController {
     @Operation(summary = "查询陈述意见列表")
     @GetMapping("/queryPoofArguments")
     public String queryPoofArguments(Integer proofId, Integer rightSort, Integer reportId) throws IOException {
-        return Response.success(argumentsService.queryPoofArguments(proofId, rightSort, reportId));
+        return Response.success(argumentsService.queryPoofArguments(proofId,rightSort,reportId));
     }
 
     @Operation(summary = "根据特征查询相关证据")
     @GetMapping("/queryProofStr")
     public String queryProofStr(Integer proofId, Integer featureId) throws IOException {
-        return Response.success(assoFeatureProofService.queryProofStr(proofId, featureId));
+        return Response.success(assoFeatureProofService.queryProofStr(proofId,featureId));
     }
-
 }

+ 8 - 0
RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/InvalidReasonController.java

@@ -4,6 +4,7 @@ import cn.cslg.report.common.core.base.Constants;
 import cn.cslg.report.common.model.dto.invalidReReport.CheckReFeaturesDTO;
 import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonDTO;
 import cn.cslg.report.common.model.dto.invalidReReport.QueryInvalidReasonDTO;
+import cn.cslg.report.common.model.dto.invalidReReport.UpdateArgumentStrDTO;
 import cn.cslg.report.common.model.vo.invalidReReport.QueryInvalidReasonVO;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.entity.invalidReReport.InvalidReason;
@@ -60,6 +61,13 @@ public class InvalidReasonController {
         return Response.success();
     }
 
+    @Operation(summary = "更新无效理由和证据的陈述意见")
+    @PostMapping("/updateArgumentStr")
+    public String updateArgumentStr(@RequestBody UpdateArgumentStrDTO updateArgumentStrDTO) throws IOException {
+        invalidReasonService.updateArgumentStr(updateArgumentStrDTO);
+        return Response.success();
+    }
+
     @Operation(summary = "查找无效理由和证据")
     @GetMapping("/queryInvalidReason")
     public String queryInvalidReason(Integer reportId) throws IOException {

+ 57 - 0
RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/InvalidReasonFieldController.java

@@ -0,0 +1,57 @@
+package cn.cslg.report.controller.InvalidReReport;
+
+import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonFieldDTO;
+import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonFieldSortDTO;
+import cn.cslg.report.entity.invalidReReport.InvalidReasonField;
+import cn.cslg.report.service.business.InvalidReReport.InvalidReasonFieldService;
+import cn.cslg.report.service.business.InvalidReReport.InvalidReasonFieldValueService;
+import cn.cslg.report.service.business.InvalidReReport.ProofStrService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 无效理由自定义栏位的Controller层
+ *
+ * @Author lrj
+ * @Data 2023/4/1
+ */
+@Tag(name = "无效理由自定义栏位值管理")
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping(Constants.REPORT_API + "/invalidReasonField")
+public class InvalidReasonFieldController {
+    private final InvalidReasonFieldService invalidReasonFieldService;
+
+    @Operation(summary = "添加自定义栏位")
+    @PostMapping("/addOrUpdateFields")
+    public String addOrUpdate(@RequestBody InvalidReasonFieldDTO invalidReasonFieldDTO){
+        return   invalidReasonFieldService.addOrUpdate(invalidReasonFieldDTO);
+    }
+
+    @Operation(summary = "查询自定义栏位")
+    @GetMapping("/queryFields")
+    public String queryFields(Integer reportId){
+        return  invalidReasonFieldService.queryFields(reportId);
+    }
+
+    @Operation(summary = "删除自定义栏位")
+    @PostMapping("/deleteFields")
+    public String deleteFields(@RequestBody List<Integer> fieldIds){
+        return  invalidReasonFieldService.deleteFields(fieldIds);
+    }
+
+    @Operation(summary = "批量变更自定义字段排序")
+    @PostMapping("/updateSort")
+    public String updateSort(@RequestBody List<InvalidReasonFieldSortDTO> invalidReasonFieldSortDTOS){
+        return  invalidReasonFieldService.updateSort(invalidReasonFieldSortDTOS);
+    }
+
+
+}

+ 33 - 0
RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/InvalidReasonFieldValueController.java

@@ -0,0 +1,33 @@
+package cn.cslg.report.controller.InvalidReReport;
+
+import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonFieldDTO;
+import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonFieldValueDTO;
+import cn.cslg.report.entity.invalidReReport.InvalidReasonFieldValue;
+import cn.cslg.report.service.business.InvalidReReport.InvalidReasonFieldService;
+import cn.cslg.report.service.business.InvalidReReport.InvalidReasonFieldValueService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 无效理由自定义栏位的Controller层
+ *
+ * @Author lrj
+ * @Data 2023/4/1
+ */
+@Tag(name = "无效理由自定义栏位管理")
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping(Constants.REPORT_API + "/invalidReasonFieldValue")
+public class InvalidReasonFieldValueController {
+    private final InvalidReasonFieldValueService invalidReasonFieldValueService;
+
+
+
+}

+ 0 - 47
RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/ProofController.java

@@ -1,47 +0,0 @@
-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;
-import lombok.extern.slf4j.Slf4j;
-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层
- *
- * @Author lrj
- * @Data 2023/4/1
- */
-@Tag(name = "文献证据管理")
-@Slf4j
-@RequiredArgsConstructor
-@RestController
-@RequestMapping(Constants.REPORT_API + "/proof")
-public class ProofController {
-    private final ProofService proofService;
-
-//    @Operation(summary = "上传专利文献证据(文件)")
-////    @PostMapping("/addPatentProofByFile")
-////    public String addPatentProofByFile(@RequestBody ShareReportDTO shareReportDTO) {
-////        proofService.addPatentProofByFile()
-////        return Response.success(flag);
-////    }
-
-}

+ 0 - 67
RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/ProofDetailController.java

@@ -1,67 +0,0 @@
-package cn.cslg.report.controller.InvalidReReport;
-
-
-import cn.cslg.report.common.core.base.Constants;
-import cn.cslg.report.common.model.dto.ShareReportDTO;
-import cn.cslg.report.common.model.dto.invalidReReport.ProofDetailDTO;
-import cn.cslg.report.common.utils.Response;
-import cn.cslg.report.service.business.InvalidReReport.ProofDetailService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.List;
-
-@Tag(name = "无效应对证据详情管理")
-@Slf4j
-@RequiredArgsConstructor
-@RestController
-@RequestMapping(Constants.REPORT_API + "/proofDetail")
-public class ProofDetailController {
-    private final ProofDetailService proofDetailService;
-    @Operation(summary = "添加证据详情")
-    @PostMapping("/addProofDetail")
-    public String addProofDetail(@RequestBody ProofDetailDTO proofDetailDTO) throws IOException {
-        if(proofDetailDTO != null){
-            proofDetailService.addProofDetail(proofDetailDTO);
-            return Response.success("添加成功");
-        } else {
-            return Response.error("添加失败");
-        }
-    }
-
-    @Operation(summary = "删除证据详情")
-    @PostMapping("/deleteProofDetail")
-    public String deleteProofDetail(@RequestBody List<Integer> ids)  {
-        if(ids != null && ids.size() != 0){
-            proofDetailService.deleteProofDetail(ids);
-            return Response.success("删除成功");
-        } else {
-            return Response.error("删除失败");
-        }
-    }
-
-    @Operation(summary = "修改证据详情")
-    @PostMapping("/updateProofDetail")
-    public String updateProofDetail(@RequestBody ProofDetailDTO proofDetailDTO) throws IOException {
-        if(proofDetailDTO != null){
-            proofDetailService.updateProofDetail(proofDetailDTO);
-            return Response.success("更新成功");
-        } else {
-            return Response.error("更新失败");
-        }
-    }
-
-    @Operation(summary = "查找证据详情")
-    @GetMapping("/queryProofDetail")
-    public String queryProofDetail(Integer proofId) throws IOException {
-        if(proofId != null && proofId > 0) {
-            return Response.success(proofDetailService.queryProofDetail(proofId));
-        } else {
-            return Response.error("查找失败");
-        }
-    }
-}

+ 13 - 8
RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/ProofGroupController.java

@@ -3,6 +3,7 @@ package cn.cslg.report.controller.InvalidReReport;
 import cn.cslg.report.common.core.base.Constants;
 import cn.cslg.report.common.model.dto.ShareReportDTO;
 import cn.cslg.report.common.model.dto.invalidReReport.ProofGroupDTO;
+import cn.cslg.report.common.model.dto.invalidReReport.ProofGroupUpdateDTO;
 import cn.cslg.report.common.model.vo.invalidReReport.ProofGroupVO;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.exception.XiaoShiException;
@@ -12,10 +13,7 @@ import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-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.bind.annotation.*;
 
 import java.io.IOException;
 import java.util.List;
@@ -58,9 +56,9 @@ public class ProofGroupController {
 
     @Operation(summary = "修改证据组合")
     @PostMapping("/update")
-    public String addPatentFile(@RequestBody ProofGroupDTO proofGroupDTO) throws IOException {
-        if (proofGroupDTO != null) {
-            proofGroupService.updateProofGroup(proofGroupDTO);
+    public String addPatentFile(@RequestBody ProofGroupUpdateDTO proofGroupUpdateDTO) throws IOException {
+        if (proofGroupUpdateDTO != null) {
+            proofGroupService.updateProofGroup(proofGroupUpdateDTO);
             return Response.success("更新成功");
         } else {
             return Response.error("更新失败");
@@ -81,4 +79,11 @@ public class ProofGroupController {
             return Response.error("查询失败");
         }
     }
-}
+
+    @Operation(summary = "查询证据组合详情")
+    @GetMapping("/queryDetailByInvalidId")
+    public String queryDetailByInvalidId(Integer invalidReasonId) throws IOException {
+        return Response.success( proofGroupService.queryDetailByInvalidId(invalidReasonId));
+
+    }
+}

+ 4 - 0
RMS/src/main/java/cn/cslg/report/entity/invalidReReport/Arguments.java

@@ -47,6 +47,8 @@ public class Arguments extends BaseEntity<Arguments> {
     @TableField("COMPARE_FILE_ID")
     private Integer proofId;
 
+    @TableField("PROOF_STR_ID")
+    private Integer proofStrId;
     /**
      * 创建人
      */
@@ -58,4 +60,6 @@ public class Arguments extends BaseEntity<Arguments> {
      */
     @TableField("CREATE_TIME")
     private Date createTime;
+
+
 }

+ 34 - 0
RMS/src/main/java/cn/cslg/report/entity/invalidReReport/AssoProofGroupStr.java

@@ -0,0 +1,34 @@
+package cn.cslg.report.entity.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;
+
+/**
+ * 陈述意见表
+ *
+ * @Author xiexiang
+ * @Date 2023/6/28
+ */
+@Data
+@TableName(value = "ASSO_PROOF_GROUP_STR")
+public class AssoProofGroupStr extends BaseEntity<AssoProofGroupStr> {
+    /**
+     * 证据组合id
+     */
+    @TableField("PROOF_GROUP_ID")
+    private Integer proofGroupId;
+
+    /**
+     * 无效证据id
+     */
+    @TableField("PROOF_STR_ID")
+    private Integer proofStrId;
+
+    @TableField("COMPARE_FILE_ID")
+    private Integer compareFileId;
+
+}

+ 38 - 0
RMS/src/main/java/cn/cslg/report/entity/invalidReReport/InvalidReasonField.java

@@ -0,0 +1,38 @@
+package cn.cslg.report.entity.invalidReReport;
+
+import cn.cslg.report.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 无效理由自定义字段表
+ *
+ * @Author lirenjie
+ * @Date 2023/7/28
+ */
+@Data
+@TableName(value = "INVALID_REASON_FIELD")
+public class InvalidReasonField extends BaseEntity<InvalidReasonField> {
+    @TableField("REPORT_ID")
+    private Integer reportId;
+
+
+    @TableField("FIELD_NAME")
+    private String fieldName;
+
+    @TableField("FIELD_KEY")
+    private String fieldKey;
+
+    @TableField("CREATE_ID")
+    private Integer createId;
+
+    @TableField("FIELD_STATE")
+    private Integer fieldState;
+
+    @TableField("FIELD_SORT")
+    private Integer fieldSort;
+}

+ 33 - 0
RMS/src/main/java/cn/cslg/report/entity/invalidReReport/InvalidReasonFieldValue.java

@@ -0,0 +1,33 @@
+package cn.cslg.report.entity.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;
+
+/**
+ * 无效理由自定义字段值表
+ *
+ * @Author 李仁杰
+ * @Date 2023/7/28
+ */
+@Data
+@TableName(value = "INVALID_REASON_FIELD_VALUE")
+public class InvalidReasonFieldValue extends BaseEntity<InvalidReasonFieldValue> {
+    /**
+     * 无效理由自定义字段id
+     */
+    @TableField("INVALID_REASON_FIELD_ID")
+    private Integer invalidReasonFieldId;
+    /**
+     * 无效理由id
+     */
+    @TableField("INVALID_REASON_ID")
+    private Integer invalidReasonId;
+
+    @TableField("FIELD_VALUE")
+    private String fieldValue;
+
+}

+ 0 - 65
RMS/src/main/java/cn/cslg/report/entity/invalidReReport/Proof.java

@@ -1,65 +0,0 @@
-package cn.cslg.report.entity.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;
-
-/**
- * 证据表
- *
- * @Author xiexiang
- * @Date 2023/6/28
- */
-@Data
-@TableName(value = "PROOF")
-public class Proof extends BaseEntity<Proof> {
-    /**
-     * 报告id
-     */
-    @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;
-    /**
-     * 创建时间
-     */
-    @TableField("CREATE_TIME")
-    private Date createTime;
-
-}

+ 1 - 1
RMS/src/main/java/cn/cslg/report/entity/invalidReReport/ProofGroup.java

@@ -33,7 +33,7 @@ public class ProofGroup extends BaseEntity<ProofGroup> {
      * 陈述意见
      */
     @TableField("ARGUMENT_STR")
-    private String argument_str;
+    private String argumentStr;
 
     /**
      * 创建人

+ 6 - 4
RMS/src/main/java/cn/cslg/report/entity/invalidReReport/AssoFeatureProof.java

@@ -5,8 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
-import java.util.Date;
-
 /**
  * 划词表
  *
@@ -14,8 +12,8 @@ import java.util.Date;
  * @Date 2023/6/28
  */
 @Data
-@TableName(value = "ASSO_FEATURE_PROOF")
-public class AssoFeatureProof extends BaseEntity<AssoFeatureProof> {
+@TableName(value = "PROOF_STR")
+public class ProofStr extends BaseEntity<ProofStr> {
 
     @TableField("FEATURE_ID")
     private Integer featureId;
@@ -32,5 +30,9 @@ public class AssoFeatureProof extends BaseEntity<AssoFeatureProof> {
     @TableField("COMPARE_FILE_ID")
     private Integer compareFileId ;
 
+    @TableField("RIGHT_SORT")
+    private Integer rightSort ;
 
+    @TableField("REPORT_ID")
+    private Integer reportId ;
 }

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

@@ -1,7 +1,7 @@
 package cn.cslg.report.mapper.InvalidReReport;
 
 import cn.cslg.report.entity.invalidReReport.ArgumentsScenarios;
-import cn.cslg.report.entity.invalidReReport.Proof;
+
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 

+ 16 - 0
RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/AssoProofGroupStrMapper.java

@@ -0,0 +1,16 @@
+package cn.cslg.report.mapper.InvalidReReport;
+
+import cn.cslg.report.entity.invalidReReport.AssoProofGroup;
+import cn.cslg.report.entity.invalidReReport.AssoProofGroupStr;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ *
+ *证据和证据组合关联Mapper层
+ * @Author 李仁杰
+ * @Date 2023/6/29
+ */
+@Repository
+public interface AssoProofGroupStrMapper extends BaseMapper<AssoProofGroupStr> {
+}

+ 18 - 0
RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/InvalidReasonFiledMapper.java

@@ -0,0 +1,18 @@
+package cn.cslg.report.mapper.InvalidReReport;
+
+import cn.cslg.report.entity.invalidReReport.InvalidReasonField;
+import cn.cslg.report.entity.invalidReReport.InvalidReasonFieldValue;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ *
+ *陈述意见Mapper层
+ * @Author 李仁杰
+ * @Date 2023/6/30
+ */
+@Repository
+public interface InvalidReasonFiledMapper extends BaseMapper<InvalidReasonField> {
+
+}
+

+ 22 - 0
RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/InvalidReasonFiledValueMapper.java

@@ -0,0 +1,22 @@
+package cn.cslg.report.mapper.InvalidReReport;
+
+import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonFieldValueDTO;
+import cn.cslg.report.common.model.vo.invalidReReport.ArgumentsListVO;
+import cn.cslg.report.entity.invalidReReport.Arguments;
+import cn.cslg.report.entity.invalidReReport.InvalidReasonFieldValue;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ *
+ *陈述意见Mapper层
+ * @Author 李仁杰
+ * @Date 2023/6/30
+ */
+@Repository
+public interface InvalidReasonFiledValueMapper extends BaseMapper<InvalidReasonFieldValue> {
+    public List<InvalidReasonFieldValue> getValues(List<InvalidReasonFieldValueDTO> values);
+}
+

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

@@ -1,19 +0,0 @@
-package cn.cslg.report.mapper.InvalidReReport;
-
-import cn.cslg.report.entity.invalidReReport.Proof;
-import cn.cslg.report.entity.invalidReReport.ProofGroup;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springframework.stereotype.Repository;
-
-/**
- * 证据类型的Mapper层
- *
- * @Author 李仁杰
- * @Date 2023/6/28
- */
-@Repository
-public interface ProofMapper extends BaseMapper<Proof> {
-
-
-}
-

+ 2 - 3
RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/AssoFeatureProofMapper.java

@@ -1,7 +1,6 @@
 package cn.cslg.report.mapper.InvalidReReport;
 
-import cn.cslg.report.entity.invalidReReport.Arguments;
-import cn.cslg.report.entity.invalidReReport.AssoFeatureProof;
+import cn.cslg.report.entity.invalidReReport.ProofStr;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
@@ -12,7 +11,7 @@ import org.springframework.stereotype.Repository;
  * @Date 2023/6/30
  */
 @Repository
-public interface AssoFeatureProofMapper extends BaseMapper<AssoFeatureProof> {
+public interface ProofStrMapper extends BaseMapper<ProofStr> {
 
 
 }

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

@@ -20,7 +20,6 @@ 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;
@@ -729,7 +728,7 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
         if (files == null || files.size() == 0) {
             ThrowException.throwXiaoShiException("未上传文件");
         }
-        ArrayList<Proof> proofs = new ArrayList<>();
+        ArrayList<CompareFiles> proofs = new ArrayList<>();
         //上传非专利文献证据文件附件,附件信息入报告系统文件表后,返回附件ids
         List<Integer> fileIds = reportFileService.uploadFiles(files);
         //查询证据表,取出该报告已有证据最大排序序号

+ 121 - 123
RMS/src/main/java/cn/cslg/report/service/business/CompareMessageService.java

@@ -47,73 +47,72 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
         // 获取登录人信息
         PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
         List<CompareMessage> compareMessages = new ArrayList<>();
-        Features feature = new Features();
+        Features feature=new Features();
         //根据登录人Id,报告Id,标的专利号查询特征
         LambdaQueryWrapper<Features> wrapper = new LambdaQueryWrapper<>();
         if (vos.get(0).getTaskId() != null && vos.get(0).getSignPatentNo() != null) {
             wrapper.eq(Features::getTaskId, vos.get(0).getTaskId())
                     .eq(Features::getSignPatentNo, vos.get(0).getSignPatentNo());
             feature = featureService.list(wrapper).get(0);
-        }
-        if (vos.get(0).getReportId() != null && vos.get(0).getSignPatentNo() != null) {
+        }if(vos.get(0).getReportId()!=null &&  vos.get(0).getSignPatentNo() != null ){
             wrapper.eq(Features::getReportId, vos.get(0).getReportId())
                     .eq(Features::getSignPatentNo, vos.get(0).getSignPatentNo());
-            feature = featureService.list(wrapper).get(0);
+             feature = featureService.list(wrapper).get(0);
         }
-        //根据特征Id删除对比记录
-        List<Features> features = featureService.list(wrapper);
-        if (features != null && features.size() > 0) {
-            List<Integer> Ids = featureService.list(wrapper).stream().map(Features::getId).collect(Collectors.toList());
-            LambdaQueryWrapper<CompareMessage> queryWrapper = new LambdaQueryWrapper<CompareMessage>();
-            queryWrapper.in(CompareMessage::getFeatureId, Ids);
-            this.remove(queryWrapper);
-        }
-        //根据登录人Id,报告Id,标的专利号删除原有特征
-        featureService.remove(wrapper);
-        for (int i = 0; i < vos.size(); i++) {
-            int order = 1;
-            Features features1 = new Features();
-            features1.setContent(vos.get(i).getContent());
-            features1.setFeaturesOrder(order);
-            if (vos.get(i).getTaskId() != null) {
-                features1.setTaskId(vos.get(i).getTaskId());
+            //根据特征Id删除对比记录
+            List<Features> features = featureService.list(wrapper);
+            if (features != null && features.size() > 0) {
+                List<Integer> Ids = featureService.list(wrapper).stream().map(Features::getId).collect(Collectors.toList());
+                LambdaQueryWrapper<CompareMessage> queryWrapper = new LambdaQueryWrapper<CompareMessage>();
+                queryWrapper.in(CompareMessage::getFeatureId, Ids);
+                this.remove(queryWrapper);
             }
-            features1.setSplitType(feature.getSplitType());
-            features1.setSplitBy(feature.getSplitBy());
-            features1.setPartnerId(personnelVO.getId());
-            features1.setReportId(feature.getReportId());
-            features1.setRightName(vos.get(i).getRightName());
-            features1.setRightType(vos.get(i).getRightType());
-            features1.setRightId(vos.get(i).getRightId());
-            features1.setSignPatentNo(vos.get(i).getSignPatentNo());
-            features1.setContentOut(vos.get(i).getContentOut());
-            features1.setExplainText(vos.get(i).getExplainText());
-            features1.insert();
-            CompareMessage compareMessage = new CompareMessage();
-            compareMessage.setFeatureId(features1.getId());
-            compareMessage.setCompareResult(vos.get(i).getCompareResult());
-            compareMessage.setTargetDescription(vos.get(i).getTargetDescription());
-            compareMessage.setCompareDescription(vos.get(i).getCompareDescription());
-            compareMessage.setReportId(feature.getReportId());
-            if (feature.getTaskId() != null) {
-                compareMessage.setTaskId(feature.getTaskId());
+            //根据登录人Id,报告Id,标的专利号删除原有特征
+            featureService.remove(wrapper);
+            for (int i = 0; i < vos.size(); i++) {
+                int order = 1;
+                Features features1 = new Features();
+                features1.setContent(vos.get(i).getContent());
+                features1.setFeaturesOrder(order);
+                if(vos.get(i).getTaskId()!=null) {
+                    features1.setTaskId(vos.get(i).getTaskId());
+                }
+                features1.setSplitType(feature.getSplitType());
+                features1.setSplitBy(feature.getSplitBy());
+                features1.setPartnerId(personnelVO.getId());
+                features1.setReportId(feature.getReportId());
+                features1.setRightName(vos.get(i).getRightName());
+                features1.setRightType(vos.get(i).getRightType());
+                features1.setRightId(vos.get(i).getRightId());
+                features1.setSignPatentNo(vos.get(i).getSignPatentNo());
+                features1.setContentOut(vos.get(i).getContentOut());
+                features1.setExplainText(vos.get(i).getExplainText());
+                features1.insert();
+                CompareMessage compareMessage = new CompareMessage();
+                compareMessage.setFeatureId(features1.getId());
+                compareMessage.setCompareResult(vos.get(i).getCompareResult());
+                compareMessage.setTargetDescription(vos.get(i).getTargetDescription());
+                compareMessage.setCompareDescription(vos.get(i).getCompareDescription());
+                compareMessage.setReportId(feature.getReportId());
+                if(feature.getTaskId()!=null) {
+                    compareMessage.setTaskId(feature.getTaskId());
+                }
+                compareMessages.add(compareMessage);
+                order += 1;
             }
-            compareMessages.add(compareMessage);
-            order += 1;
-        }
 
         return this.saveBatch(compareMessages);
     }
 
     public Boolean updateCompareMessage(List<CompareMessage> compareMessageList) {
-        List<Integer> ids = compareMessageList.stream().map(CompareMessage::getFeatureId).collect(Collectors.toList());
-        if (ids.size() != 0) {
-            LambdaQueryWrapper<CompareMessage> queryWrapper = new LambdaQueryWrapper<CompareMessage>();
-            queryWrapper.in(CompareMessage::getFeatureId, ids).isNull(CompareMessage::getTaskType);
+        List<Integer> ids =compareMessageList.stream().map(CompareMessage::getFeatureId).collect(Collectors.toList());
+        if(ids.size()!=0){
+            LambdaQueryWrapper<CompareMessage> queryWrapper =new LambdaQueryWrapper<CompareMessage>();
+            queryWrapper.in(CompareMessage::getFeatureId,ids).isNull(CompareMessage::getTaskType);
             this.remove(queryWrapper);
 
 
-            return this.saveOrUpdateBatch(compareMessageList);
+           return this.saveOrUpdateBatch(compareMessageList);
         }
         return true;
     }
@@ -123,9 +122,9 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
     }
 
     public Map<String, Object> queryCompareMessage(Integer taskId, String patentNo, Integer reportId) throws IOException {
-        if (taskId != null) {
-            Task task = taskService.getById(taskId);
-            reportId = task.getReportId();
+        if(taskId!=null){
+            Task task =taskService.getById(taskId);
+            reportId =task.getReportId();
         }
         List<PatentRightVo> patentRightVos = new ArrayList<>();
         String resBody = outInterfaceService.getPatentRightFromPAS(patentNo);
@@ -133,7 +132,7 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
         //解析jason获得标的专利的权要
         List<PatentRight> patentRightsOrgin = JSON.parseArray(jsonObject.getString("data"), PatentRight.class);
         //处理权要
-        List<PatentRight> patentRights = featureService.FormatPatentRights(patentRightsOrgin, patentNo);
+        List<PatentRight> patentRights = featureService.FormatPatentRights(patentRightsOrgin,patentNo);
         //查询特征
         LambdaQueryWrapper<Features> queryWrapper = new LambdaQueryWrapper<>();
         if (reportId != null && reportId != 0) {
@@ -142,20 +141,21 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
         queryWrapper.eq(Features::getSignPatentNo, patentNo);
         List<Features> features = featureService.list(queryWrapper);
         List<Integer> featureIds = features.stream().map(Features::getId).collect(Collectors.toList());
-        List<CompareMessage> compareMessages = new ArrayList<>();
-        if (featureIds.size() > 0) {
-            LambdaQueryWrapper<CompareMessage> queryWrapper1 = new LambdaQueryWrapper<>();
-            queryWrapper1.in(CompareMessage::getFeatureId, featureIds);
-            if (taskId != null) {
-                queryWrapper1.eq(CompareMessage::getTaskId, taskId);
-            } else {
-                queryWrapper1.isNull(CompareMessage::getTaskType);
-            }
+        List<CompareMessage> compareMessages=new ArrayList<>();
+        if(featureIds.size()>0){
+        LambdaQueryWrapper<CompareMessage> queryWrapper1 = new LambdaQueryWrapper<>();
+        queryWrapper1.in(CompareMessage::getFeatureId, featureIds);
+        if (taskId != null) {
+            queryWrapper1.eq(CompareMessage::getTaskId, taskId);
+        }
+        else {
+            queryWrapper1.isNull(CompareMessage::getTaskType);
+        }
             compareMessages = this.list(queryWrapper1);
         }
 
         List<CompareMessageVO> compareMessageVOS = new ArrayList<>();
-        for (Features item : features) {
+        for (Features item: features){
             CompareMessageVO compareMessageVO = new CompareMessageVO();
             BeanUtil.copyProperties(item, compareMessageVO);
             CompareMessage compareMessage = new CompareMessage();
@@ -192,14 +192,13 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
             patentRightVo.setSignPatentNo(patentNo);
             patentRightVos.add(patentRightVo);
         }
-        Map<String, Object> map1 = assoTaskPatentSplitService.getSplitMessage(taskId, patentNo, reportId);
+        Map<String, Object> map1 = assoTaskPatentSplitService.getSplitMessage(taskId, patentNo,reportId);
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("patentRightVos", patentRightVos);
         map.put("splitBy", map1.get("splitBy"));
         map.put("splitType", map1.get("splitType"));
         return map;
     }
-
     public IPage<JSONObject> queryComparedMessage(QueryCMVO queryCMVO) throws IOException {
         List<String> patentNos = this.baseMapper.getComparedMessage(queryCMVO);
 
@@ -237,18 +236,18 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
      * @Deserption 查找协同任务对比记录
      */
     public Map<String, Object> querySynery(Integer taskId, String patentNo) throws IOException {
-        Task task = taskService.getById(taskId);
+        Task task =taskService.getById(taskId);
         //根据 reportId 和 专利号查询特征Id
-        LambdaQueryWrapper<Features> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(Features::getReportId, task.getReportId())
-                .eq(Features::getSignPatentNo, patentNo);
-        List<Features> features = featureService.list(wrapper);
-        List<Integer> featureIds = features.stream().map(Features::getId).collect(Collectors.toList());
-        LambdaQueryWrapper<CompareMessage> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(CompareMessage::getTaskId, taskId)
-                .in(CompareMessage::getFeatureId, featureIds);
-        List<CompareMessage> compareMessages = this.list(queryWrapper);
-        if (compareMessages.size() == 0) {
+        LambdaQueryWrapper<Features>  wrapper =new LambdaQueryWrapper<>();
+        wrapper.eq(Features::getReportId,task.getReportId())
+                .eq(Features::getSignPatentNo,patentNo);
+        List<Features> features =featureService.list(wrapper);
+        List<Integer> featureIds =features.stream().map(Features::getId).collect(Collectors.toList());
+        LambdaQueryWrapper<CompareMessage> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.eq(CompareMessage::getTaskId,taskId)
+        .in(CompareMessage::getFeatureId,featureIds);
+        List<CompareMessage> compareMessages =this.list(queryWrapper);
+        if(compareMessages.size()==0){
             Map<String, Object> map = this.queryCompareMessage(null, patentNo, task.getReportId());
             return map;
         }
@@ -258,17 +257,17 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
 
     }
 
-    public Map<String, Object> queryAllCompareMessage(String patentNo, Integer reportId) throws IOException {
+    public Map<String, Object> queryAllCompareMessage( String patentNo, Integer reportId) throws IOException {
         List<PatentRightVo> patentRightVos = new ArrayList<>();
         String resBody = outInterfaceService.getPatentRightFromPAS(patentNo);
         JSONObject jsonObject = JSONObject.parseObject(resBody);
         //解析jason获得标的专利的权要
         List<PatentRight> patentRightsOrgin = JSON.parseArray(jsonObject.getString("data"), PatentRight.class);
         //处理权要
-        List<PatentRight> patentRights = featureService.FormatPatentRights(patentRightsOrgin, patentNo);
+        List<PatentRight> patentRights = featureService.FormatPatentRights(patentRightsOrgin,patentNo);
         //查询特征
         LambdaQueryWrapper<Features> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(Features::getReportId, reportId);
+            queryWrapper.eq(Features::getReportId, reportId);
         queryWrapper.eq(Features::getSignPatentNo, patentNo);
         List<Features> features = featureService.list(queryWrapper);
         List<Integer> featureIds = features.stream().map(Features::getId).collect(Collectors.toList());
@@ -283,13 +282,14 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
             if (compareMessages.size() != 0) {
                 List<CompareMessage> compareMessageList = compareMessages.stream().filter(tem -> tem.getFeatureId().equals(item.getId())).collect(Collectors.toList());
                 compareMessageList.forEach(
-                        tem -> {
-                            if (tem.getTaskType() == null) {
+                        tem->{
+                            if(tem.getTaskType()==null){
                                 compareMessageVO.setCompareResult(tem.getCompareResult());
                                 compareMessageVO.setCompareDescription(tem.getCompareDescription());
                                 compareMessageVO.setTargetDescription(tem.getTargetDescription());
                                 compareMessageVO.setCMid(tem.getId());
-                            } else if (tem.getTaskType().equals(1)) {
+                            }
+                            else  if(tem.getTaskType().equals(1)){
                                 compareMessageVO.setCompareResult2(tem.getCompareResult());
                                 compareMessageVO.setCompareDescription2(tem.getCompareDescription());
                                 compareMessageVO.setTargetDescription2(tem.getTargetDescription());
@@ -322,7 +322,7 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
             patentRightVo.setSignPatentNo(patentNo);
             patentRightVos.add(patentRightVo);
         }
-        Map<String, Object> map1 = assoTaskPatentSplitService.getSplitMessage(null, patentNo, reportId);
+        Map<String, Object> map1 = assoTaskPatentSplitService.getSplitMessage(null, patentNo,reportId);
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("patentRightVos", patentRightVos);
         map.put("splitBy", map1.get("splitBy"));
@@ -331,39 +331,38 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
     }
 
     /**
+     * @autor lrj
      * @param addSyneryVo
      * @return
-     * @autor lrj
      * @Descprtion 添加协同记录
      */
 
-    public Boolean addSynery(AddSyneryVo addSyneryVo) {
+    public Boolean addSynery(AddSyneryVo addSyneryVo){
         // 根据任务Id获得任务信息
         Task task = taskService.getById(addSyneryVo.getTaskId());
         //根据专利号和报告ID获得特征Id
-        LambdaQueryWrapper<Features> wrapper = new LambdaQueryWrapper<Features>();
+        LambdaQueryWrapper<Features> wrapper =new LambdaQueryWrapper<Features>();
         wrapper.select(Features::getId);
-        wrapper.eq(Features::getReportId, task.getReportId());
-        wrapper.eq(Features::getSignPatentNo, addSyneryVo.getPatentNo());
-        List<Features> features = featureService.list(wrapper);
-        List<Integer> Ids = features.stream().map(Features::getId).collect(Collectors.toList());
+        wrapper.eq(Features::getReportId,task.getReportId());
+        wrapper.eq(Features::getSignPatentNo,addSyneryVo.getPatentNo());
+List<Features> features =featureService.list(wrapper);
+List<Integer> Ids =features.stream().map(Features::getId).collect(Collectors.toList());
         //装载对比结果信息
-        List<CompareMessage> compareMessages = addSyneryVo.getCompareMessageList();
+        List<CompareMessage> compareMessages =addSyneryVo.getCompareMessageList();
         compareMessages.forEach(
-                item -> {
+                item->{
                     item.setTaskId(task.getId());
                     item.setTaskType(1);
                     item.setId(null);
                 }
         );
         //删除对比记录
-        if (Ids.size() != 0) {
-            LambdaQueryWrapper<CompareMessage> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(CompareMessage::getTaskId, task.getId())
-                    .in(CompareMessage::getFeatureId, Ids);
-            this.remove(queryWrapper);
-        }
-        return this.saveBatch(compareMessages);
+        if(Ids.size()!=0){
+        LambdaQueryWrapper<CompareMessage> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.eq(CompareMessage::getTaskId,task.getId())
+                    .in(CompareMessage::getFeatureId,Ids);
+        this.remove(queryWrapper);}
+   return     this.saveBatch(compareMessages);
 
     }
 
@@ -381,7 +380,7 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
         //解析jason获得标的专利的权要
         List<PatentRight> patentRightsOrgin = JSON.parseArray(jsonObject.getString("data"), PatentRight.class);
         //处理权要
-        List<PatentRight> patentRights = featureService.FormatPatentRights(patentRightsOrgin, patentNo);
+        List<PatentRight> patentRights = featureService.FormatPatentRights(patentRightsOrgin,patentNo);
         //查询特征
         LambdaQueryWrapper<Features> queryWrapper = new LambdaQueryWrapper<>();
         if (reportId != null && reportId != 0) {
@@ -390,15 +389,14 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
         queryWrapper.eq(Features::getSignPatentNo, patentNo);
         List<Features> features = featureService.list(queryWrapper);
         List<Integer> featureIds = features.stream().map(Features::getId).collect(Collectors.toList());
-        List<CompareMessage> compareMessages = new ArrayList<>();
-        if (featureIds.size() > 0) {
+        List<CompareMessage> compareMessages=new ArrayList<>();
+        if(featureIds.size()>0){
             LambdaQueryWrapper<CompareMessage> queryWrapper1 = new LambdaQueryWrapper<>();
             queryWrapper1.in(CompareMessage::getFeatureId, featureIds);
-            queryWrapper1.isNull(CompareMessage::getTaskType);
-            compareMessages = this.list(queryWrapper1);
-        }
+                queryWrapper1.isNull(CompareMessage::getTaskType);
+            compareMessages = this.list(queryWrapper1);}
         List<CompareMessageVO> compareMessageVOS = new ArrayList<>();
-        for (Features item : features) {
+        for (Features item: features){
             CompareMessageVO compareMessageVO = new CompareMessageVO();
             BeanUtil.copyProperties(item, compareMessageVO);
             CompareMessage compareMessage = new CompareMessage();
@@ -414,14 +412,13 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
             compareMessageVO.setTargetDescription(compareMessage.getTargetDescription());
             compareMessageVOS.add(compareMessageVO);
         }
-        Integer mainRight = 0;
-        Integer right = 0;
+        Integer mainRight =0;
+        Integer right=0;
         //将拆解的权要和特征装载到对象PatentRightVo
         for (int i = 0; i < patentRights.size(); i++) {
-            if (patentRights.get(i).getType() == 1) {
-                mainRight++;
-            }
-            right++;
+            if(patentRights.get(i).getType()==1)
+            {mainRight++;}
+          right++;
             List<CompareMessageVO> featuresList = new ArrayList<>();
             //对需要拆解的权要进行拆解
             if (compareMessageVOS != null && compareMessageVOS.size() != 0) {
@@ -430,13 +427,15 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
             }
             for (CompareMessageVO item : featuresList) {
                 item.setRightName("权要" + (patentRights.get(i).getSort() + 1));
-                if (item.getCompareResult() == null) {
+                if(item.getCompareResult()==null){
                     item.setResultStr("待定");
-                } else if (item.getCompareResult() == 0) {
+                }
+               else if(item.getCompareResult()==0){
                     item.setResultStr("不同");
-                } else if (item.getCompareResult() == 1) {
-                    item.setResultStr("相同");
-                } else {
+                }
+                else if(item.getCompareResult()==1)
+                {item.setResultStr("相同");}
+                else  {
                     item.setResultStr("待定");
                 }
             }
@@ -444,19 +443,18 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
         }
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("compareMessageVOs", lists);
-        map.put("mainRight", mainRight);
-        map.put("right", right);
+        map.put("mainRight",mainRight);
+        map.put("right",right);
         return map;
     }
-
     /**
      * funtion:删除报告时删除
      */
-    public String deleteByreportID(Integer repotID) {
-        LambdaQueryWrapper<CompareMessage> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(CompareMessage::getReportId, repotID);
+    public String deleteByreportID(Integer repotID){
+        LambdaQueryWrapper<CompareMessage> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.eq(CompareMessage::getReportId,repotID);
         List<CompareMessage> list = this.list(queryWrapper);
-        if (list == null || list.size() == 0) {
+        if(list==null||list.size()==0){
             return Response.success();
         }
         remove(queryWrapper);

+ 71 - 62
RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java

@@ -17,13 +17,13 @@ import cn.cslg.report.entity.asso.AssoRecordsFeature;
 import cn.cslg.report.entity.asso.AssoTaskPatentSplit;
 import cn.cslg.report.entity.asso.AssoTaskPersonel;
 import cn.cslg.report.entity.invalidReReport.Arguments;
-import cn.cslg.report.entity.invalidReReport.AssoFeatureProof;
+import cn.cslg.report.entity.invalidReReport.ProofStr;
 import cn.cslg.report.entity.invalidReReport.AssoPositionFeatures;
-import cn.cslg.report.entity.invalidReReport.Proof;
 import cn.cslg.report.mapper.FeatureMapper;
 import cn.cslg.report.service.OutInterfaceService;
 import cn.cslg.report.service.business.InvalidReReport.ArgumentsService;
-import cn.cslg.report.service.business.InvalidReReport.AssoFeatureProofService;
+import cn.cslg.report.service.business.InvalidReReport.AssoPositionFeaturesService;
+import cn.cslg.report.service.business.InvalidReReport.ProofStrService;
 import cn.cslg.report.service.business.InvalidReReport.InvalidReasonService;
 import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson.JSON;
@@ -32,7 +32,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.transaction.annotation.Transactional;
@@ -60,9 +59,9 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
     private final CompareMessageService compareMessageService;
     private final PatentRightUtils patentRightUtils;
     private final InvalidReasonService invalidReasonService;
-    private final AssoFeatureProofService assoFeatureProofService;
+    private final ProofStrService assoFeatureProofService;
     private final ArgumentsService argumentsService;
-
+    private final AssoPositionFeaturesService assoPositionFeaturesService;
     /**
      * @param patentRights(专利权利要求)
      * @return List<PatentRight>
@@ -76,18 +75,11 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         patentRights.forEach(item -> {
             stringBuilder.append(item.getContent());
         });
-
-        StringBuilder stringBuilder2 = new StringBuilder();
-        patentRights.forEach(item -> {
-            stringBuilder2.append(item.getContentOut());
-        });
-
         PatentRightParams params = new PatentRightParams();
         params.setPatentNo(patentNo);
         params.setPatentId(-1);
         params.setContent(stringBuilder.toString());
-        params.setContentOut(stringBuilder2.toString());
-        patentRights = patentRightUtils.formatPatentRight(params);
+        patentRightUtils.formatPatentRight(params);
         return patentRights;
     }
 
@@ -100,7 +92,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
      * @throws IOException
      * @function 从PAS系统上获得权要并拆分
      */
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional(rollbackFor = Exception.class, timeout = 10)
     public String splitPatentRight(SplitVO splitVO) throws IOException {
         String patentNo = splitVO.getPatentNo();
         Integer reportId = splitVO.getReportId();
@@ -176,17 +168,14 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         List<PatentRight> patentRightsOrgin = JSON.parseArray(jsonObject.getString("data"), PatentRight.class);
         //给权要进行格式更改
         List<PatentRight> patentRights = FormatPatentRights(patentRightsOrgin, patentNo);
-        //List<Integer> partRightIds = new ArrayList<>();  //权要ids
-        List<Integer> partRightSorts = new ArrayList<>();  //权要sorts
-        List<String> flags = new ArrayList<>();  //拆分方式字符
+        List<Integer> partRightIds = new ArrayList<>();
+        List<String> flags = new ArrayList<>();
         // 当splitType=0仅拆解主权要
         if (splitType.equals(0)) {
-            //partRightIds = patentRights.stream().filter(item -> item.getType().equals(1)).map(PatentRight::getId).collect(Collectors.toList());
-            partRightSorts = patentRights.stream().filter(item -> item.getType().equals(1)).map(PatentRight::getSort).collect(Collectors.toList());
+            partRightIds = patentRights.stream().filter(item -> item.getType().equals(1)).map(PatentRight::getId).collect(Collectors.toList());
         }// 当splitType=1拆解全部权要
         else if (splitType.equals(1)) {
-            //partRightIds = patentRights.stream().map(PatentRight::getId).collect(Collectors.toList());
-            partRightSorts = patentRights.stream().map(PatentRight::getSort).collect(Collectors.toList());
+            partRightIds = patentRights.stream().map(PatentRight::getId).collect(Collectors.toList());
         }
         //当splitBy=0时仅仅根据“,”拆解
         if (splitBy == 0) {
@@ -247,7 +236,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
                 List<String> contentOuts = Arrays.asList(patentRights.get(i).getContentOut());
                 List<String> contents = Arrays.asList(patentRights.get(i).getContent());
                 //如果是需要拆解的权要
-                if (partRightSorts.contains(patentRights.get(i).getSort())) {
+                if (partRightIds.contains(patentRights.get(i).getId())) {
                     //获得权要的译文并且拆解
                     contentOuts = this.splitStringByFlags(patentRights.get(i).getContentOut(), flags);
                     //获得权要的原文并且拆解
@@ -582,7 +571,6 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
 
     /**
      * 添加单个特征
-     *
      * @param featuresDTO
      * @return
      * @throws IOException
@@ -601,13 +589,16 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         checkReFeaturesDTO.setRightSort(featuresDTO.getRightId());
         CheckReFeaturesDTO.featuresIn featuresIn = new CheckReFeaturesDTO.featuresIn();
         featuresIn.setFeatureStr(featuresDTO.getContent());
+        featuresIn.setPosition(featuresDTO.getPosition());
         checkReFeaturesDTO.setFeatures(Arrays.asList(featuresIn));
-        //检查权要是否有此特征
-        checkReFeaturesDTO = this.getFeaturePosition(checkReFeaturesDTO, patentNo);
-        if (checkReFeaturesDTO == null) {
-            return Response.error("权要里无此特征");
-        } else if (checkReFeaturesDTO.getFeatures().get(0).getPosition() == null) {
-            return Response.error("特征已被添加");
+        if(checkReFeaturesDTO.getFeatures().get(0).getPosition()==null) {
+            //检查权要是否有此特征
+            checkReFeaturesDTO = this.getFeaturePosition(checkReFeaturesDTO, patentNo);
+            if (checkReFeaturesDTO == null) {
+                return Response.error("权要里无此特征");
+            } else if (checkReFeaturesDTO.getFeatures().get(0).getPosition() == null) {
+                return Response.error("特征已被添加");
+            }
         }
         Boolean flag = invalidReasonService.checkReFeatures(checkReFeaturesDTO);
 
@@ -621,7 +612,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         if (featuresList == null || featuresList.size() == 0) {
             biggestSort = 1;
         } else {
-            biggestSort = featuresList.get(0).getFeaturesOrder() + 1;
+            biggestSort = featuresList.get(0).getFeaturesOrder()+1;
         }
         Features features = new Features();
         features.setContent(featuresDTO.getContent());
@@ -657,15 +648,15 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         }
         //获得已经保存的特征
         List<QueryAllFeaturesVO> queryAllFeaturesVOS = featureMapper.queryAllFeatures(checkReFeaturesDTO.getReportId(), checkReFeaturesDTO.getRightSort());
-        if (indexs.size() == 0 || (indexs.size() == 1 && indexs.get(0).equals(-1))) {
+        if (indexs.size() == 0||(indexs.size()==1&&indexs.get(0).equals(-1))) {
             return null;
         }
         //遍历寻找未选择的特征
-        for (Integer item : indexs) {
+        for (Integer item :indexs){
             QueryAllFeaturesVO queryAllFeaturesVO = queryAllFeaturesVOS.stream().filter(tem -> tem.getFeatureStr().equals(featureStr) && tem.getPosition().equals(item)).findFirst().orElse(null);
-            if (queryAllFeaturesVO == null && item != -1) {
+            if (queryAllFeaturesVO == null&&item!=-1) {
                 checkReFeaturesDTO.getFeatures().get(0).setPosition(item);
-                break;
+                break ;
             }
         }
         return checkReFeaturesDTO;
@@ -685,50 +676,68 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
 
     /**
      * 添加单个特征
-     *
      * @param featuresDTO
      * @return
      * @throws IOException
      */
     @Transactional(rollbackFor = Exception.class)
     public String deleteSingleFeature(Integer featureId) throws IOException {
-        if (featureId == null) {
-            return Response.error("请选择特征");
+        if(featureId==null){
+return Response.error("请选择特征");
         }
         //检查陈述意见是否有关联的特征
-        LambdaQueryWrapper<Arguments> argumentsWrapper = new LambdaQueryWrapper<>();
-        argumentsWrapper.eq(Arguments::getFeatureId, featureId);
-        List<Arguments> arguments = argumentsService.list(argumentsWrapper);
-        if (arguments.size() > 0) {
+        LambdaQueryWrapper<Arguments> argumentsWrapper=new LambdaQueryWrapper<>();
+        argumentsWrapper.eq(Arguments::getFeatureId,featureId);
+        List<Arguments> arguments =argumentsService.list(argumentsWrapper);
+        if(arguments.size()>0){
             return Response.error("此特征和陈述意见有关联");
         }
-        this.removeById(featureId);
-        LambdaQueryWrapper<AssoFeatureProof> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(AssoFeatureProof::getFeatureId, featureId);
+        LambdaQueryWrapper<ProofStr> wrapper =new LambdaQueryWrapper<>();
+        wrapper.eq(ProofStr::getFeatureId,featureId);
         assoFeatureProofService.remove(wrapper);
+        LambdaQueryWrapper<AssoPositionFeatures> wrapper1 =new LambdaQueryWrapper<>();
+        wrapper1.eq(AssoPositionFeatures::getFeaturesID,featureId);
+        assoPositionFeaturesService.remove(wrapper1);
+        this.removeById(featureId);
         return Response.success();
     }
 
-    //获得特征列表
-    public String getFeatureList(Integer reportId, Integer rightSort) {
-        List<Map<String, Object>> mapList = new ArrayList<>();
-        if (reportId == null || rightSort == null) {
+ //获得特征列表
+    public String getFeatureList(Integer reportId,Integer rightSort){
+        List<Map<String,Object>> mapList =new ArrayList<>();
+        if(reportId==null||rightSort==null){
             return Response.error("请输入报告id和权要序号");
         }
-        Report report = reportService.getById(reportId);
-        LambdaQueryWrapper<Features> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(Features::getRightId, rightSort)
-                .eq(Features::getReportId, reportId)
-                .eq(Features::getSignPatentNo, report.getSignPatentNo())
+        Report report =reportService.getById(reportId);
+        LambdaQueryWrapper<Features> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.eq(Features::getRightId,rightSort)
+                .eq(Features::getReportId,reportId)
+                .eq(Features::getSignPatentNo,report.getSignPatentNo())
                 .orderByAsc(Features::getFeaturesOrder);
-        List<Features> features = this.list(queryWrapper);
-        features.forEach(item -> {
-            Map<String, Object> map = new HashMap<>();
-            map.put("featureId", item.getId());
-            map.put("content", item.getContent());
-            map.put("featureName", "特征" + item.getFeaturesOrder());
-            mapList.add(map);
-        });
+        List<Features> features =this.list(queryWrapper);
+        //过滤获得特征id
+        List<Integer> ids =features.stream().map(Features::getId).collect(Collectors.toList());
+        List<AssoPositionFeatures> assoPositionFeatures =new ArrayList<>();
+        if(ids.size()>0){
+            LambdaQueryWrapper<AssoPositionFeatures> queryWrapper1 =new LambdaQueryWrapper<>();
+            queryWrapper1.in(AssoPositionFeatures::getFeaturesID,ids);
+            assoPositionFeatures=  assoPositionFeaturesService.list(queryWrapper1);
+
+        }
+            for(Features item:features) {
+            AssoPositionFeatures assoPositionFeature =    assoPositionFeatures.stream().filter(tem->tem.getFeaturesID().equals(item.getId())).findFirst().orElse(new AssoPositionFeatures());
+                Map<String, Object> map = new HashMap<>();
+                map.put("featureId", item.getId());
+                map.put("content", item.getContent());
+                map.put("featureName", "特征" + item.getFeaturesOrder());
+                map.put("position",assoPositionFeature.getPosition());
+                mapList.add(map);
+            }
+
         return Response.success(mapList);
     }
+
+    public static void main(String[] args) {
+        String query ="aa ='a and b' and cc ='dda'";
+    }
 }

+ 7 - 13
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ArgumentsScenarioService.java

@@ -3,24 +3,19 @@ package cn.cslg.report.service.business.InvalidReReport;
 import cn.cslg.report.common.model.dto.invalidReReport.ArgumentsScenarioDTO;
 import cn.cslg.report.common.model.vo.invalidReReport.ArgumentsListVO;
 import cn.cslg.report.common.model.vo.invalidReReport.ArgumentsScenarioVO;
-import cn.cslg.report.common.model.vo.invalidReReport.ArgumentsVO;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.report.entity.*;
 import cn.cslg.report.entity.invalidReReport.Arguments;
 import cn.cslg.report.entity.invalidReReport.ArgumentsScenarios;
 import cn.cslg.report.entity.invalidReReport.AssoArguments;
-import cn.cslg.report.entity.invalidReReport.AssoFeatureProof;
+import cn.cslg.report.entity.invalidReReport.ProofStr;
 import cn.cslg.report.mapper.InvalidReReport.ArgumentsScenarioMapper;
-import cn.cslg.report.mapper.TemplateMapper;
 import cn.cslg.report.service.business.CompareFilesService;
 import cn.cslg.report.service.business.FeatureService;
 import cn.cslg.report.service.business.ReportService;
 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 io.swagger.v3.oas.models.security.SecurityScheme;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -29,7 +24,6 @@ import org.springframework.stereotype.Service;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -42,7 +36,7 @@ public class ArgumentsScenarioService extends ServiceImpl<ArgumentsScenarioMappe
     private final AssoArgumentsService assoArgumentsService;
     private final ArgumentsService argumentsService;
     private final FeatureService featureService;
-    private final AssoFeatureProofService assoFeatureProofService;
+    private final ProofStrService assoFeatureProofService;
     private final ReportService reportService;
     private final CompareFilesService compareFilesService;
 
@@ -158,14 +152,14 @@ public class ArgumentsScenarioService extends ServiceImpl<ArgumentsScenarioMappe
         List<Integer> featureIds = arguments.stream().map(Arguments::getFeatureId).collect(Collectors.toList());
         List<Features> features = new ArrayList<>();
         //根据特征id获得相关证据
-        List<AssoFeatureProof> assoFeatureProofs = new ArrayList<>();
+        List<ProofStr> proofStrs = new ArrayList<>();
         if (featureIds.size() > 0) {
             LambdaQueryWrapper<Features> featuresLambdaQueryWrapper = new LambdaQueryWrapper<>();
             featuresLambdaQueryWrapper.in(Features::getId, featureIds);
             features = featureService.list(featuresLambdaQueryWrapper);
-            LambdaQueryWrapper<AssoFeatureProof> assoFeatureWrapper = new LambdaQueryWrapper<>();
-            assoFeatureWrapper.in(AssoFeatureProof::getFeatureId, featureIds);
-            assoFeatureProofs = assoFeatureProofService.list(assoFeatureWrapper);
+            LambdaQueryWrapper<ProofStr> assoFeatureWrapper = new LambdaQueryWrapper<>();
+            assoFeatureWrapper.in(ProofStr::getFeatureId, featureIds);
+            proofStrs = assoFeatureProofService.list(assoFeatureWrapper);
         }
         List<ArgumentsScenarioVO> argumentsScenarioVOS = new ArrayList<>();
         //遍历陈述意见方案
@@ -188,7 +182,7 @@ public class ArgumentsScenarioService extends ServiceImpl<ArgumentsScenarioMappe
             List<Features> partFeatures = features.stream().filter(tem -> partFeatureIds.contains(tem.getId())).collect(Collectors.toList());
             List<ArgumentsListVO> argumentsListVOs = new ArrayList<>();
             for (Features tem : partFeatures) {
-                AssoFeatureProof partProof = assoFeatureProofs.stream().filter(te -> te.getFeatureId().equals(tem.getId()) && te.getCompareFileId().equals(item.getProofId())).findFirst().orElse(null);
+                ProofStr partProof = proofStrs.stream().filter(te -> te.getFeatureId().equals(tem.getId()) && te.getCompareFileId().equals(item.getProofId())).findFirst().orElse(null);
                 ArgumentsListVO argumentsListVO = new ArgumentsListVO();
                 argumentsListVO.setProofId(item.getProofId());
                 argumentsListVO.setRightSort(item.getRightSort());

+ 112 - 113
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ArgumentsService.java

@@ -40,16 +40,15 @@ import java.util.stream.Collectors;
 @Slf4j
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
-    private final ProofService proofService;
     private final LoginUtils loginUtils;
     private final ScratchService scratchService;
     private final AssoArgumentsService assoArgumentsService;
     private final FeatureService featureService;
-    private final AssoFeatureProofService assoFeatureProofService;
+    private final ProofStrService assoFeatureProofService;
     private final ArgumentsService argumentsService;
     private final ReportService reportService;
     private final CompareFilesService compareFilesService;
-
+    private final ProofStrService proofStrService;
 
     /**
      * 添加陈述意见
@@ -57,8 +56,10 @@ public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
      * @param argumentsDTO
      */
     public String addArguments(ArgumentsDTO argumentsDTO) throws IOException {
+        Integer proofStrId = argumentsDTO.getProofStrId();
+        Integer argumentId =argumentsDTO.getArgumentId();
         // 检验参数
-        if (argumentsDTO == null || argumentsDTO.getReportId() == null || argumentsDTO.getRightId() == null || argumentsDTO.getProofId() == null) {
+        if (argumentsDTO == null || argumentsDTO.getReportId() == null || argumentsDTO.getRightId() == null || argumentsDTO.getProofId() == null || argumentsDTO.getProofStr() == null) {
             return Response.error("参数不正确");
         }
         if (argumentsDTO.getFeatureId() == null) {
@@ -74,43 +75,52 @@ public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
                 argumentsDTO.setFeatureId(Integer.parseInt(response.getData().toString()));
             }
         }
-        AssoFeatureProof assoFeatureProof = new AssoFeatureProof();
-        //根据特征id和文件id查询
-        LambdaQueryWrapper<AssoFeatureProof> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(AssoFeatureProof::getCompareFileId, argumentsDTO.getProofId())
-                .eq(AssoFeatureProof::getFeatureId, argumentsDTO.getFeatureId());
-        List<AssoFeatureProof> assoFeatureProofs = assoFeatureProofService.list(wrapper);
-        //添加相关证据文本
-        if (assoFeatureProofs.size() <= 0) {
-            assoFeatureProof.setFeatureId(argumentsDTO.getFeatureId());
-            assoFeatureProof.setCompareFileId(argumentsDTO.getProofId());
-            assoFeatureProof.setProofStr(argumentsDTO.getProofStr());
-            assoFeatureProof.insert();
-        } else if (assoFeatureProofs.size() > 0) {
-            assoFeatureProof = assoFeatureProofs.get(0);
-            assoFeatureProof.setProofStr(argumentsDTO.getProofStr());
-            assoFeatureProof.updateById();
+        //添加或更新无效证据
+        ProofStr proof = new ProofStr();
+        if (proofStrId == null) {
+            proof.setFeatureId(argumentsDTO.getFeatureId());
+            proof.setCompareFileId(argumentsDTO.getProofId());
+            proof.setProofStr(argumentsDTO.getProofStr());
+            proof.setReportId(argumentsDTO.getReportId());
+            proof.setRightSort(argumentsDTO.getRightId());
+            proof.insert();
+        } else {
+            proof = proofStrService.getById(proofStrId);
+            proof.setProofStr(argumentsDTO.getProofStr());
+            proof.updateById();
         }
-        Integer loginId = loginUtils.getId();
-        //装载陈述意见实体类
-        Arguments arguments = new Arguments();
-        BeanUtils.copyProperties(argumentsDTO, arguments);
-        arguments.setCreateId(loginId);
-        arguments.setRightSort(argumentsDTO.getRightId());
-        arguments.insert();
-        //若划词不为空
-        if (argumentsDTO.getContent() != null) {
-            Scratch scratch = new Scratch();
-            BeanUtils.copyProperties(argumentsDTO, scratch);
-            //根据证据类型获得证据的专利号
-            CompareFiles proof = compareFilesService.getById(arguments.getProofId());
-            String patenNo = proof.getPatentNo();
-            scratch.setPatentNo(patenNo);
-            scratch.setCreateId(loginId);
-            scratch.setArgumentId(arguments.getId());
-            scratch.setReportId(argumentsDTO.getReportId());
-            scratch.setScratchColor(argumentsDTO.getColor());
-            scratch.insert();
+        if (argumentsDTO.getArgumentStr() != null) {
+            Integer loginId = loginUtils.getId();
+            //装载陈述意见实体类
+            Arguments arguments = new Arguments();
+            if ( argumentId== null) {
+                BeanUtils.copyProperties(argumentsDTO, arguments);
+                arguments.setCreateId(loginId);
+                arguments.setProofStrId(proof.getId());
+                arguments.setRightSort(argumentsDTO.getRightId());
+                arguments.insert();
+            } else {
+                arguments = this.getById(argumentId);
+                BeanUtils.copyProperties(argumentsDTO,arguments);
+                arguments.setProofStrId(proof.getId());
+                arguments.setRightSort(argumentsDTO.getRightId());
+                arguments.updateById();
+            }
+
+            //若划词不为空
+            if (argumentsDTO.getContent() != null) {
+                Scratch scratch = new Scratch();
+                BeanUtils.copyProperties(argumentsDTO, scratch);
+                //根据证据类型获得证据的专利号
+                CompareFiles compareFiles = compareFilesService.getById(arguments.getProofId());
+                String patenNo = compareFiles.getPatentNo();
+                scratch.setPatentNo(patenNo);
+                scratch.setCreateId(loginId);
+                scratch.setArgumentId(arguments.getId());
+                scratch.setReportId(argumentsDTO.getReportId());
+                scratch.setScratchColor(argumentsDTO.getColor());
+                scratch.insert();
+            }
         }
         return Response.success("添加成功");
     }
@@ -174,10 +184,10 @@ public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
         List<Integer> featureIds = features.stream().map(Features::getId).collect(Collectors.toList());
 
         //根据特征和文件id获得证据
-        LambdaQueryWrapper<AssoFeatureProof> featureProofWrapper = new LambdaQueryWrapper<>();
-        featureProofWrapper.in(AssoFeatureProof::getFeatureId, featureIds)
-                .eq(AssoFeatureProof::getCompareFileId, fileId);
-        List<AssoFeatureProof> assoFeatureProofs = assoFeatureProofService.list(featureProofWrapper);
+        LambdaQueryWrapper<ProofStr> featureProofWrapper = new LambdaQueryWrapper<>();
+        featureProofWrapper.in(ProofStr::getFeatureId, featureIds)
+                .eq(ProofStr::getCompareFileId, fileId);
+        List<ProofStr> proofStrs = assoFeatureProofService.list(featureProofWrapper);
         //查询划词信息
         LambdaQueryWrapper<Scratch> scratchLambdaQueryWrapper = new LambdaQueryWrapper<>();
         scratchLambdaQueryWrapper.eq(Scratch::getPatentNo, patentNo);
@@ -198,10 +208,10 @@ public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
             Arguments argument = arguments.stream().filter(tem -> tem.getId().equals(item.getArgumentId())).findFirst().orElse(null);
             BeanUtils.copyProperties(argument, argumentsDetailsVO);
             BeanUtils.copyProperties(item, argumentsDetailsVO);
-            AssoFeatureProof assoFeatureProof = assoFeatureProofs.stream().filter(tem -> tem.getFeatureId().equals(argument.getFeatureId())).findFirst().orElse(null);
-            if (assoFeatureProof != null) {
-                argumentsDetailsVO.setProofStr(assoFeatureProof.getProofStr());
-                argumentsDetailsVO.setProofStrId(assoFeatureProof.getId());
+            ProofStr proofStr = proofStrs.stream().filter(tem -> tem.getFeatureId().equals(argument.getFeatureId())).findFirst().orElse(null);
+            if (proofStr != null) {
+                argumentsDetailsVO.setProofStr(proofStr.getProofStr());
+                argumentsDetailsVO.setProofStrId(proofStr.getId());
             }
             argumentsDetailsVOS.add(argumentsDetailsVO);
         }
@@ -215,6 +225,7 @@ public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
      * @return
      */
     public String updateArgument(ArgumentsDetailsDTO argumentsDTO) {
+        Integer proofStrId = argumentsDTO.getProofStrId();
         // 检验参数
         if (argumentsDTO == null || argumentsDTO.getReportId() == null || argumentsDTO.getFeatureId() == null || argumentsDTO.getRightSort() == null || argumentsDTO.getProofId() == null) {
             return Response.error("参数不正确");
@@ -228,34 +239,20 @@ public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
         scratch.setScratchType(argumentsDTO.getScratchType());
         scratch.updateById();
         //根据陈述意见id更新陈述意见
-        Arguments arguments = this.getById(scratch.getArgumentId());
-        arguments.setArgumentStr(argumentsDTO.getArgumentStr());
-        arguments.setRightSort(argumentsDTO.getRightSort());
-        arguments.setFeatureId(argumentsDTO.getFeatureId());
-        arguments.updateById();
-        //装载并更新证据
-        //根据特征和文件id获得证据
-        LambdaQueryWrapper<AssoFeatureProof> featureProofWrapper = new LambdaQueryWrapper<>();
-        featureProofWrapper.in(AssoFeatureProof::getFeatureId, argumentsDTO.getFeatureId())
-                .eq(AssoFeatureProof::getCompareFileId, arguments.getProofId());
-        List<AssoFeatureProof> assoFeatureProofs = assoFeatureProofService.list(featureProofWrapper);
-        if (assoFeatureProofs.size() == 0) {
-            AssoFeatureProof assoFeatureProof = new AssoFeatureProof();
-            assoFeatureProof.setFeatureId(argumentsDTO.getFeatureId());
-            assoFeatureProof.setFeatureId(arguments.getProofId());
-            assoFeatureProof.setProofStr(argumentsDTO.getProofStr());
-            assoFeatureProof.insert();
-        } else {
-            AssoFeatureProof assoFeatureProof = assoFeatureProofs.get(0);
-            assoFeatureProof.setProofStr(argumentsDTO.getProofStr());
-            assoFeatureProof.updateById();
-
+        if (scratchId != null) {
+            Arguments arguments = this.getById(scratch.getArgumentId());
+            arguments.setArgumentStr(argumentsDTO.getArgumentStr());
+            arguments.setRightSort(argumentsDTO.getRightSort());
+            arguments.setFeatureId(argumentsDTO.getFeatureId());
+            arguments.updateById();
         }
 
+        ProofStr proofStr = proofStrService.getById(proofStrId);
+        proofStr.setProofStr(argumentsDTO.getProofStr());
+        proofStr.updateById();
         return Response.success("修改成功");
     }
 
-
     /**
      * 根据文件id和权要sort查询列表
      *
@@ -271,14 +268,13 @@ public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
         List<Features> features = featureService.list(wrapper);
         List<Integer> featureIds = features.stream().map(Features::getId).collect(Collectors.toList());
         //根据特征和文件id获得证据
-        LambdaQueryWrapper<AssoFeatureProof> featureProofWrapper = new LambdaQueryWrapper<>();
-        featureProofWrapper.in(AssoFeatureProof::getFeatureId, featureIds)
-                .eq(AssoFeatureProof::getCompareFileId, fileId);
-        List<AssoFeatureProof> assoFeatureProofs = assoFeatureProofService.list(featureProofWrapper);
+        LambdaQueryWrapper<ProofStr> featureProofWrapper = new LambdaQueryWrapper<>();
+        featureProofWrapper.in(ProofStr::getFeatureId, featureIds)
+                .eq(ProofStr::getCompareFileId, fileId);
+        List<ProofStr> proofStrs = assoFeatureProofService.list(featureProofWrapper);
         //遍历装载特征和相关证据到实体类
-        assoFeatureProofs.forEach(item -> {
+        proofStrs.forEach(item -> {
             Features features1 = features.stream().filter(tem -> tem.getId().equals(item.getFeatureId())).findFirst().orElse(null);
-
             ArgumentsListVO argumentsListVO = new ArgumentsListVO();
             //装载权要
             argumentsListVO.setRightSort(patentRight.getSort());
@@ -288,32 +284,35 @@ public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
             argumentsListVO.setFeatureId(features1.getId());
             argumentsListVO.setFeatureContent(features1.getContent());
             argumentsListVO.setFeatureName("特征" + features1.getFeaturesOrder());
-
             argumentsListVO.setProofStrId(item.getId());
             argumentsListVO.setProofStr(item.getProofStr());
             argumentsListVO.setProofId(fileId);
             argumentsListVOS.add(argumentsListVO);
         });
 
+        List<Integer> argumentsIds = proofStrs.stream().map(ProofStr::getId).collect(Collectors.toList());
+        List<Arguments> arguments = new ArrayList<>();
         //根据特征和证据id获得陈述意见
-        List<Arguments> arguments = this.baseMapper.getArguments(argumentsListVOS);
+        if (argumentsIds.size() > 0) {
+            LambdaQueryWrapper<Arguments> argumentsWrapper = new LambdaQueryWrapper<>();
+            argumentsWrapper.in(Arguments::getProofStrId, argumentsIds);
+            arguments = this.list(argumentsWrapper);
+        }
+//装载陈述意见
+        for (ArgumentsListVO item:argumentsListVOS){
+            item.setArguments(new ArrayList<>());
+            List<Arguments> temArguments = arguments.stream().filter(tem -> item.getProofStrId().equals(tem.getProofStrId())).collect(Collectors.toList());
+            temArguments.forEach(tem -> {
+                ArgumentsListVO.ArgumentIn argumentIn = new ArgumentsListVO.ArgumentIn();
+                argumentIn.setArgumentStr(tem.getArgumentStr());
+                argumentIn.setId(tem.getId());
+                item.getArguments().add(argumentIn);
+            });
+        }
 
-        //装载陈述意见
-        argumentsListVOS.forEach(
-                item -> {
-                    item.setArguments(new ArrayList<>());
-                    List<Arguments> temArguments = arguments.stream().filter(tem -> item.getFeatureId().equals(tem.getFeatureId())).collect(Collectors.toList());
-                    temArguments.forEach(tem -> {
-                        ArgumentsListVO.ArgumentIn argumentIn = new ArgumentsListVO.ArgumentIn();
-                        argumentIn.setArgumentStr(tem.getArgumentStr());
-                        argumentIn.setId(tem.getId());
-                        item.getArguments().add(argumentIn);
-                    });
 
-                }
-        );
-        return argumentsListVOS;
 
+        return argumentsListVOS;
     }
 
     /**
@@ -348,7 +347,7 @@ public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
         }
 //        Integer createId = loginUtils.getId();
         Integer createId = 1;
-        List<AssoFeatureProof> assoFeatureProofs = new ArrayList<>();
+        List<ProofStr> proofStrs = new ArrayList<>();
         List<Arguments> arguments = new ArrayList<>();
         List<Integer> featureIds = new ArrayList<>();
         Integer proofId = argumentsListDTOS.get(0).getProofId();
@@ -356,12 +355,12 @@ public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
             //获得特征ids
             featureIds.add(item.getFeatureId());
             //装载无效证据
-            AssoFeatureProof assoFeatureProof = new AssoFeatureProof();
-            assoFeatureProof.setCompareFileId(item.getProofId());
-            assoFeatureProof.setId(item.getProofStrId());
-            assoFeatureProof.setProofStr(item.getProofStr());
-            assoFeatureProof.setFeatureId(item.getFeatureId());
-            assoFeatureProofs.add(assoFeatureProof);
+            ProofStr proofStr = new ProofStr();
+            proofStr.setCompareFileId(item.getProofId());
+            proofStr.setId(item.getProofStrId());
+            proofStr.setProofStr(item.getProofStr());
+            proofStr.setFeatureId(item.getFeatureId());
+            proofStrs.add(proofStr);
             //装载陈述意见
             List<ArgumentsListDTO.ArgumentIn> argumentIns = item.getArguments();
             argumentIns.forEach(tem -> {
@@ -377,7 +376,7 @@ public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
             });
         });
         this.deleteOrUpdateArguments(arguments, featureIds, proofId);
-        if (!this.deleteOrUpdateProofStr(assoFeatureProofs, featureIds, proofId)) {
+        if (!this.deleteOrUpdateProofStr(proofStrs, featureIds, proofId)) {
             return Response.error("同一特征有多个证据");
         }
 
@@ -411,36 +410,36 @@ public class ArgumentsService extends ServiceImpl<ArgumentsMapper, Arguments> {
     /**
      * 批量删除或者更新证据详情
      *
-     * @param assoFeatureProofs
+     * @param proofStrs
      * @param featureIds
      * @param proofId
      * @return
      */
-    public boolean deleteOrUpdateProofStr(List<AssoFeatureProof> assoFeatureProofs, List<Integer> featureIds, Integer proofId) {
-        LambdaQueryWrapper<AssoFeatureProof> wrapper = new LambdaQueryWrapper<>();
-        wrapper.in(AssoFeatureProof::getFeatureId, featureIds)
-                .eq(AssoFeatureProof::getCompareFileId, proofId);
-        List<AssoFeatureProof> dbAssoFeatureProof = assoFeatureProofService.list(wrapper);
+    public boolean deleteOrUpdateProofStr(List<ProofStr> proofStrs, List<Integer> featureIds, Integer proofId) {
+        LambdaQueryWrapper<ProofStr> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(ProofStr::getFeatureId, featureIds)
+                .eq(ProofStr::getCompareFileId, proofId);
+        List<ProofStr> dbProofStr = assoFeatureProofService.list(wrapper);
         //作差获得要删除的相关证据
-        List<Integer> dbIds = dbAssoFeatureProof.stream().map(AssoFeatureProof::getId).collect(Collectors.toList());
-        List<Integer> ids = assoFeatureProofs.stream().map(AssoFeatureProof::getId).collect(Collectors.toList());
+        List<Integer> dbIds = dbProofStr.stream().map(ProofStr::getId).collect(Collectors.toList());
+        List<Integer> ids = proofStrs.stream().map(ProofStr::getId).collect(Collectors.toList());
         List<Integer> removeIds = dbIds;
         removeIds.removeAll(ids);
         //检查一个特征是否有多个陈述证据
-        for (AssoFeatureProof item : assoFeatureProofs) {
+        for (ProofStr item : proofStrs) {
             {
                 //查询是否存在多个相同
-                List<AssoFeatureProof> assoFeatureProofs1 = assoFeatureProofs.stream().filter(tem ->
+                List<ProofStr> proofs1Str = proofStrs.stream().filter(tem ->
                         item.getFeatureId().equals(tem.getFeatureId())
                                 && item.getCompareFileId().equals(tem.getCompareFileId())).collect(Collectors.toList());
-                if (assoFeatureProofs1.size() > 1) {
+                if (proofs1Str.size() > 1) {
                     return false;
                 }
             }
         }
         //删除陈述意见
         assoFeatureProofService.removeByIds(removeIds);
-        assoFeatureProofService.saveOrUpdateBatch(assoFeatureProofs);
+        assoFeatureProofService.saveOrUpdateBatch(proofStrs);
 
         return true;
     }

+ 0 - 52
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/AssoFeatureProofService.java

@@ -1,52 +0,0 @@
-package cn.cslg.report.service.business.InvalidReReport;
-
-import cn.cslg.report.common.model.dto.invalidReReport.InvalidProcessDTO;
-import cn.cslg.report.common.model.vo.PersonnelVO;
-import cn.cslg.report.common.model.vo.invalidReReport.InvalidProcessVO;
-import cn.cslg.report.common.utils.CacheUtils;
-import cn.cslg.report.common.utils.FileUtils;
-import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
-import cn.cslg.report.entity.ReportFiles;
-import cn.cslg.report.entity.invalidReReport.AssoFeatureProof;
-import cn.cslg.report.entity.invalidReReport.InvalidProcess;
-import cn.cslg.report.entity.invalidReReport.OralExam;
-import cn.cslg.report.exception.XiaoShiException;
-import cn.cslg.report.mapper.InvalidReReport.AssoFeatureProofMapper;
-import cn.cslg.report.mapper.InvalidReReport.InvalidProcessMapper;
-import cn.cslg.report.service.business.OralExamService;
-import cn.cslg.report.service.business.ReportFileService;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-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;
-import java.util.stream.Collectors;
-
-
-@Service
-@Slf4j
-@RequiredArgsConstructor(onConstructor_ = {@Lazy})
-public class AssoFeatureProofService extends ServiceImpl<AssoFeatureProofMapper, AssoFeatureProof> {
-
-    public AssoFeatureProof queryProofStr(Integer proofId, Integer featureId){
-                 LambdaQueryWrapper<AssoFeatureProof> queryWrapper =new LambdaQueryWrapper<>();
-                 queryWrapper.eq(AssoFeatureProof::getCompareFileId,proofId)
-                             .eq(AssoFeatureProof::getFeatureId,featureId);
-                 List<AssoFeatureProof> assoFeatureProofs =this.list(queryWrapper);
-                 AssoFeatureProof assoFeatureProof =new AssoFeatureProof();
-                 if(assoFeatureProofs.size()>0){
-                     assoFeatureProof=   assoFeatureProofs.get(0);
-                 }
-                return  assoFeatureProof;
-
-
-    }
-
-}

+ 1 - 0
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/AssoProofGroupService.java

@@ -14,4 +14,5 @@ import org.springframework.stereotype.Service;
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class AssoProofGroupService extends ServiceImpl<AssoProofGroupMapper, AssoProofGroup> {
 
+
 }

+ 20 - 0
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/AssoProofGroupStrService.java

@@ -0,0 +1,20 @@
+package cn.cslg.report.service.business.InvalidReReport;
+
+import cn.cslg.report.entity.invalidReReport.AssoProofGroup;
+import cn.cslg.report.entity.invalidReReport.AssoProofGroupStr;
+import cn.cslg.report.mapper.InvalidReReport.AssoProofGroupMapper;
+import cn.cslg.report.mapper.InvalidReReport.AssoProofGroupStrMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+
+@Service
+@Slf4j
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class AssoProofGroupStrService extends ServiceImpl<AssoProofGroupStrMapper, AssoProofGroupStr> {
+
+
+}

+ 134 - 0
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/InvalidReasonFieldService.java

@@ -0,0 +1,134 @@
+package cn.cslg.report.service.business.InvalidReReport;
+
+import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonFieldDTO;
+import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonFieldSortDTO;
+import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonFieldVO;
+import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
+import cn.cslg.report.entity.invalidReReport.*;
+import cn.cslg.report.mapper.InvalidReReport.InvalidReasonFiledMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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 java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@Service
+@Slf4j
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class InvalidReasonFieldService extends ServiceImpl<InvalidReasonFiledMapper, InvalidReasonField> {
+    private final LoginUtils loginUtils;
+    private final InvalidReasonFieldValueService invalidReasonFieldValueService;
+
+    public String addOrUpdate(InvalidReasonFieldDTO invalidReasonFieldDTO) {
+        //根据字段名或字段键查询
+        LambdaQueryWrapper<InvalidReasonField> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(InvalidReasonField::getFieldKey, invalidReasonFieldDTO.getFieldKey())
+                .or()
+                .eq(InvalidReasonField::getFieldName, invalidReasonFieldDTO.getFieldName());
+        if (invalidReasonFieldDTO.getId() != null) {
+            wrapper.ne(InvalidReasonField::getId, invalidReasonFieldDTO.getId());
+        }
+        List<InvalidReasonField> invalidReasonFields = this.list(wrapper);
+        if (invalidReasonFields.size() > 0) {
+            return Response.error("自定义字段名或键值已存在");
+        }
+        InvalidReasonField invalidReasonField = new InvalidReasonField();
+        if (invalidReasonFieldDTO.getId() != null) {
+            invalidReasonField = this.getById(invalidReasonFieldDTO.getId());
+            invalidReasonField.setFieldKey(invalidReasonFieldDTO.getFieldKey());
+            invalidReasonField.setFieldName(invalidReasonFieldDTO.getFieldName());
+            invalidReasonField.updateById();
+            return Response.success("修改自定义字段成功");
+        } else {
+            LambdaQueryWrapper<InvalidReasonField> wrapper1 =new LambdaQueryWrapper<>();
+            wrapper1.eq(InvalidReasonField::getReportId,invalidReasonFieldDTO.getReportId());
+            int sort= Long.valueOf(this.count(wrapper1)).intValue()+1;
+            BeanUtils.copyProperties(invalidReasonFieldDTO, invalidReasonField);
+            invalidReasonField.setCreateId(loginUtils.getId());
+            invalidReasonField.setFieldState(0);
+            invalidReasonField.setFieldSort(sort);
+            invalidReasonField.insert();
+            return Response.success("添加自定义字段成功");
+        }
+
+    }
+
+
+    public String updateSort(List<InvalidReasonFieldSortDTO> invalidReasonFieldDTOs) {
+      //过滤获得所有自定义字段的id
+        List<Integer> ids =invalidReasonFieldDTOs.stream().map(InvalidReasonFieldSortDTO::getId).collect(Collectors.toList());
+           if(ids.size()==0){
+               return Response.error("无自定义字段");
+           }
+           //根据自定义字段id批量查询自定义字段
+        LambdaQueryWrapper<InvalidReasonField> wrapper =new LambdaQueryWrapper<>();
+           wrapper.in(InvalidReasonField::getId,ids);
+           List<InvalidReasonField> invalidReasonFields =this.list(wrapper);
+           invalidReasonFields.forEach(item->{
+
+               InvalidReasonFieldSortDTO   invalidReasonFieldDTO=invalidReasonFieldDTOs.stream()
+                       .filter(tem->item.getId().equals(tem.getId())).findFirst().orElse(new InvalidReasonFieldSortDTO());
+               if(invalidReasonFieldDTO.getFieldSort()!=null){
+                   item.setFieldSort(invalidReasonFieldDTO.getFieldSort());
+               }
+           });
+           this.updateBatchById(invalidReasonFields);
+           return  Response.success("变更顺序成功");
+    }
+
+
+
+
+
+    public String queryFields(Integer reportId) {
+        //根据报告id查询
+        LambdaQueryWrapper<InvalidReasonField> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(InvalidReasonField::getReportId, reportId);
+        List<InvalidReasonField> invalidReasonFields = this.list(wrapper);
+        List<InvalidReasonFieldVO> invalidReasonFieldVOS = new ArrayList<>();
+        invalidReasonFields.forEach(item -> {
+            InvalidReasonFieldVO invalidReasonFieldVO = new InvalidReasonFieldVO();
+            BeanUtils.copyProperties(item, invalidReasonFieldVO);
+            invalidReasonFieldVOS.add(invalidReasonFieldVO);
+        });
+        return Response.success(invalidReasonFieldVOS);
+    }
+
+    public String deleteFields(List<Integer> fieldIds) {
+        if(fieldIds==null||fieldIds.size()<=0){
+            return Response.error("请选择自定义栏位");
+        }
+        //先删除自定义字段值关联
+        LambdaQueryWrapper<InvalidReasonFieldValue> wrapper =new LambdaQueryWrapper<>();
+        wrapper.in(InvalidReasonFieldValue::getInvalidReasonFieldId,fieldIds);
+        invalidReasonFieldValueService.remove(wrapper);
+        this.removeByIds(fieldIds);
+        return Response.success("删除成功");
+
+    }
+
+    //添加默认自定义栏位
+    public void addDefault(Integer reportId) {
+        //查询默认自定义栏位
+        LambdaQueryWrapper<InvalidReasonField> wrapper =new LambdaQueryWrapper<>();
+        wrapper.isNull(InvalidReasonField::getReportId);
+        List<InvalidReasonField> invalidReasonFields=this.list(wrapper);
+
+      for(int i=0;i<invalidReasonFields.size();i++){
+          InvalidReasonField item=invalidReasonFields.get(i);
+            item.setReportId(reportId);
+            item.setId(null);
+            item.setFieldSort(i+1);
+        };
+        this.saveBatch(invalidReasonFields);
+
+    }
+}

+ 50 - 0
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/InvalidReasonFieldValueService.java

@@ -0,0 +1,50 @@
+package cn.cslg.report.service.business.InvalidReReport;
+
+import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonFieldDTO;
+import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonFieldValueDTO;
+import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.entity.invalidReReport.InvalidReasonField;
+import cn.cslg.report.entity.invalidReReport.InvalidReasonFieldValue;
+import cn.cslg.report.mapper.InvalidReReport.InvalidReasonFiledMapper;
+import cn.cslg.report.mapper.InvalidReReport.InvalidReasonFiledValueMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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 java.util.ArrayList;
+import java.util.List;
+
+
+@Service
+@Slf4j
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class InvalidReasonFieldValueService extends ServiceImpl<InvalidReasonFiledValueMapper,InvalidReasonFieldValue> {
+
+    public Boolean addOrUpdate(List<InvalidReasonFieldValueDTO> invalidReasonFieldValueDTOs) {
+          //根据无效理由id和栏位id查询
+        if(invalidReasonFieldValueDTOs==null&&invalidReasonFieldValueDTOs.size()==0){
+            return false;
+
+        }
+List<InvalidReasonFieldValue> invalidReasonFieldValues =this.baseMapper.getValues(invalidReasonFieldValueDTOs);
+        List<InvalidReasonFieldValue> addValues =new ArrayList<>();
+for (InvalidReasonFieldValueDTO fieldDTO:invalidReasonFieldValueDTOs){
+   InvalidReasonFieldValue invalidReasonFieldValue= invalidReasonFieldValues.stream()
+            .filter(item->item.getInvalidReasonId().equals(fieldDTO.getInvalidReasonId())&&item.getInvalidReasonFieldId().equals(fieldDTO.getFieldId()))
+            .findFirst().orElse(new InvalidReasonFieldValue());
+    if(invalidReasonFieldValue.getId()==null){
+        invalidReasonFieldValue.setFieldValue(fieldDTO.getFieldValue());
+        invalidReasonFieldValue.setInvalidReasonId(fieldDTO.getInvalidReasonId());
+        invalidReasonFieldValue.setInvalidReasonFieldId(fieldDTO.getFieldId());
+    }
+    addValues.add(invalidReasonFieldValue);
+}
+this.saveOrUpdateBatch(addValues);
+        return  true;
+    }
+
+}

+ 271 - 213
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/InvalidReasonService.java

@@ -1,11 +1,9 @@
 package cn.cslg.report.service.business.InvalidReReport;
 
-import cn.cslg.report.common.model.dto.invalidReReport.CheckReFeaturesDTO;
-import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonDTO;
-import cn.cslg.report.common.model.dto.invalidReReport.ProofGroupDTO;
-import cn.cslg.report.common.model.dto.invalidReReport.QueryInvalidReasonDTO;
+import cn.cslg.report.common.model.dto.invalidReReport.*;
 import cn.cslg.report.common.model.vo.PersonnelVO;
 import cn.cslg.report.common.model.vo.invalidReReport.PagingVO;
+import cn.cslg.report.common.model.vo.invalidReReport.ProofGroupDetailVO;
 import cn.cslg.report.common.model.vo.invalidReReport.QueryAllFeaturesVO;
 import cn.cslg.report.common.model.vo.invalidReReport.QueryInvalidReasonVO;
 import cn.cslg.report.common.utils.CacheUtils;
@@ -53,25 +51,27 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
     private final CacheUtils cacheUtils;
     private final LoginUtils loginUtils;
     private final CompareFilesService compareFilesService;
+    private final InvalidReasonFieldValueService invalidReasonFieldValueService;
     /**
      * 判断特征是否有重复的方法
+     *
      * @param checkReFeaturesDTO
      */
     public Boolean checkReFeatures(CheckReFeaturesDTO checkReFeaturesDTO) {
         //查出表中制定报告和权要的全部特征内容和位置
-         List<QueryAllFeaturesVO> queryAllFeaturesVOS = featureMapper.queryAllFeatures(checkReFeaturesDTO.getReportId(), checkReFeaturesDTO.getRightSort());
+        List<QueryAllFeaturesVO> queryAllFeaturesVOS = featureMapper.queryAllFeatures(checkReFeaturesDTO.getReportId(), checkReFeaturesDTO.getRightSort());
         //List<QueryAllFeaturesVO> list = queryAllFeaturesVOS.stream().sorted(Comparator.comparing(QueryAllFeaturesVO::getPosition)).collect(Collectors.toList());
         //取出需要插入的特征内容和位置
         List<CheckReFeaturesDTO.featuresIn> features = checkReFeaturesDTO.getFeatures();
         //定义一个map装载所有的特征内容和位置
         Map<Integer, Integer> map = new HashMap<>();
         //遍历装载查询出来的全部特征内容和位置
-        for(QueryAllFeaturesVO queryAllFeaturesVO:queryAllFeaturesVOS){
+        for (QueryAllFeaturesVO queryAllFeaturesVO : queryAllFeaturesVOS) {
             //位置
             Integer position = queryAllFeaturesVO.getPosition();
             //特征内容字符串的长度
             Integer length = queryAllFeaturesVO.getFeatureStr().length();
-            if(position != null && length > 0) {
+            if (position != null && length > 0) {
                 //如果map中已经有了初始位置,无论长度如何都重复
                 if (map.containsKey(position)) {
                     return false;
@@ -83,9 +83,9 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
             }
         }
         //遍历装载需要插入的特征内容和位置
-        for(CheckReFeaturesDTO.featuresIn featuresIn:features){
+        for (CheckReFeaturesDTO.featuresIn featuresIn : features) {
             //如果map中已经有了初始位置,无论长度如何都重复
-            if(map.containsKey(featuresIn.getPosition())) {
+            if (map.containsKey(featuresIn.getPosition())) {
                 return false;
             } else {
                 map.put(featuresIn.getPosition(), featuresIn.getFeatureStr().length());
@@ -97,7 +97,7 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
         List<Integer> positions = new ArrayList<>(keySet);
         Collections.sort(positions);
         //遍历需要插入的特征内容和位置
-        for(CheckReFeaturesDTO.featuresIn featuresIn:features) {
+        for (CheckReFeaturesDTO.featuresIn featuresIn : features) {
             //需检查是否重复的特征内容的初始位置 在集合中的位置
             Integer index = positions.indexOf(featuresIn.getPosition());
             //需检查是否重复的特征内容的末尾位置
@@ -107,20 +107,22 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
             //前面一个特征内容的长度
             Integer preLength = index > 0 ? map.get(preFeaInitialPos) : -1;
             //前面一个特征的末尾位置
-            Integer preEndPosition = preFeaInitialPos + preLength -1;
+            Integer preEndPosition = preFeaInitialPos + preLength - 1;
             //后面一个特征内容的初始位置
             Integer nextFeaInitialPos = index < positions.size() - 1 ? positions.get(index + 1) : -1;
             //判断是否与前面一个特征内容重复(前面一个特征内容的末尾位置如果比插入的特征内容的初始位置大,则重复了)
-            if(index > 0 && preEndPosition > featuresIn.getPosition()){
+            if (index > 0 && preEndPosition > featuresIn.getPosition()) {
                 return false;
-            } else if( index < (positions.size() - 1) && endPosition > nextFeaInitialPos){//判断是否与后面一个特征内容重复(如果插入的特征内容的末尾位置,比后面一个特征内容的初始位置大,则重复)
+            } else if (index < (positions.size() - 1) && endPosition > nextFeaInitialPos) {//判断是否与后面一个特征内容重复(如果插入的特征内容的末尾位置,比后面一个特征内容的初始位置大,则重复)
                 return false;
             }
         }
         return true;
     }
+
     /**
      * 添加无效理由和证据
+     *
      * @param invalidReasonDTO 无效理由和证据Dto类
      * @return
      */
@@ -129,16 +131,16 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
         InvalidReason invalidReason = new InvalidReason();
         //判断invalidName的类型
         Integer invalidName = invalidReasonDTO.getInvalidName();
-        if(invalidName.equals(1)) {//若类型为1,则为说明书公开不充分,涉及内容为说明书,手动输入无效证据
+        if (invalidName.equals(1)) {//若类型为1,则为说明书公开不充分,涉及内容为说明书,手动输入无效证据
             BeanUtils.copyProperties(invalidReasonDTO, invalidReason);
             //获取当前登陆人信息
             PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
             invalidReason.setCreateId(personnelVO.getId());
             //说明书公开不充分入表
             invalidReason.insert();
-        } else if(invalidName.equals(0)){//若类型为0,则为“权利要求不清楚”,需要选择涉及内容(content)并输入相关证据(proofStr)
-            if(invalidReasonDTO.getProofStr() != null && invalidReasonDTO.getProofStr() != ""){
-                if(invalidReasonDTO.getInvalidName()==1){
+        } else if (invalidName.equals(0)) {//若类型为0,则为“权利要求不清楚”,需要选择涉及内容(content)并输入相关证据(proofStr)
+            if (invalidReasonDTO.getProofStr() != null && invalidReasonDTO.getProofStr() != "") {
+                if (invalidReasonDTO.getInvalidName() == 1) {
                     invalidReasonDTO.setContent(-1);
                 }
                 //复制DTO类字段到InvalidReason实体类并保存入库
@@ -152,20 +154,20 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
                 invalidReason.insert();
                 //有可能为特征不清楚
                 //判断是否传入特征集合
-                if(invalidReasonDTO.getFeatures() != null && invalidReasonDTO.getFeatures().size() > 0) {
+                if (invalidReasonDTO.getFeatures() != null && invalidReasonDTO.getFeatures().size() > 0) {
                     //若类型为0检查features是否有交集(根据位置和字符串长度判断)若有则返回
                     Features features = new Features();
                     //特征内容
-                    List<InvalidReasonDTO.featuresIn> featuresIns = invalidReasonDTO.getFeatures();
+                    List<InvalidReasonDTO.FeaturesIn> featuresIns = invalidReasonDTO.getFeatures();
                     //检查特征内容是否有交集(根据位置和字符串长度判断)若有则返回
                     //装载检查重复需要的类
                     CheckReFeaturesDTO checkReFeaturesDTO = new CheckReFeaturesDTO();
                     checkReFeaturesDTO.setReportId(invalidReasonDTO.getReportId());
                     checkReFeaturesDTO.setRightSort(invalidReasonDTO.getContent());
                     List<CheckReFeaturesDTO.featuresIn> checkFeatureIns = new ArrayList<>();
-                    for(InvalidReasonDTO.featuresIn featuresIn : featuresIns){
+                    for (InvalidReasonDTO.FeaturesIn featuresIn : featuresIns) {
                         CheckReFeaturesDTO.featuresIn featuresIn1 = new CheckReFeaturesDTO.featuresIn();
-                        BeanUtils.copyProperties(featuresIn,featuresIn1);
+                        BeanUtils.copyProperties(featuresIn, featuresIn1);
                         checkFeatureIns.add(featuresIn1);
                     }
                     checkReFeaturesDTO.setFeatures(checkFeatureIns);
@@ -189,7 +191,7 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
                     //遍历特征内容集合,保存到表(类型为0)
                     for (int i = 0; i < featuresIns.size(); i++) {
                         //若类型为0,保存到特征表
-                        InvalidReasonDTO.featuresIn featuresIn = featuresIns.get(i);
+                        InvalidReasonDTO.FeaturesIn featuresIn = featuresIns.get(i);
                         features.setContent(featuresIn.getFeatureStr());
                         features.insert();
                         //若类型为0,保存到特征与位置关联表(特征id,位置)
@@ -202,8 +204,8 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
             } else {
                 return Response.error("相关证据不能为空");
             }
-        } else if(invalidName.equals(2) || invalidName.equals(3)){//若类型为2,3则proofGroups不能为空
-            if(invalidReasonDTO.getProofGroups()!= null){
+        } else if (invalidName.equals(2) || invalidName.equals(3)) {//若类型为2,3则proofGroups不能为空
+            if (invalidReasonDTO.getProofGroups() != null) {
                 //复制DTO类字段到InvalidReason实体类并保存入库
                 BeanUtils.copyProperties(invalidReasonDTO, invalidReason);
                 //获取当前登陆人信息
@@ -212,12 +214,12 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
                 invalidReason.insert();
                 //根据proofGroups保存proofGroup
                 List<ProofGroupDTO> proofGroupDTOS = new ArrayList<>();
-                for(InvalidReasonDTO.proofGroupIn proofGroupIn:invalidReasonDTO.getProofGroups()){
+                for (InvalidReasonDTO.ProofGroupIn proofGroupIn : invalidReasonDTO.getProofGroups()) {
                     ProofGroupDTO proofGroupDTO = new ProofGroupDTO();
                     proofGroupDTO.setInvalidReasonId(invalidReason.getId());//无效理由id
                     proofGroupDTO.setDescription(proofGroupIn.getDescription());//描述
-                    proofGroupDTO.setArgument_str(proofGroupIn.getArgument_str());//陈述意见
-                    proofGroupDTO.setProofIds(proofGroupIn.getProofIds());//证据ids
+                    proofGroupDTO.setArgumentStr(proofGroupIn.getArgumentStr());//陈述意见
+                    proofGroupDTO.setGroupDetails(proofGroupIn.getGroupDetails());//证据ids
                     proofGroupDTOS.add(proofGroupDTO);
                 }
                 proofGroupService.addProofGroup(proofGroupDTOS);
@@ -225,11 +227,14 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
                 return Response.error("证据组合不能为空");
             }
         }
+        //添加自定义字段值
+        invalidReasonFieldValueService.addOrUpdate(invalidReasonDTO.getFields());
         return Response.success("添加成功");
     }
 
     /**
      * 删除无效理由
+     *
      * @param ids 无效理由id
      * @return
      * @throws IOException
@@ -248,23 +253,24 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
 
     /**
      * 更新无效理由和证据
+     *
      * @param invalidReasonDTO
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
-    public  String updateInvalidReason(InvalidReasonDTO invalidReasonDTO) {
-        if(invalidReasonDTO.getId() == null){
-            return  Response.error("请选择无效理由");
+    public String updateInvalidReason(InvalidReasonDTO invalidReasonDTO) {
+        if (invalidReasonDTO.getId() == null) {
+            return Response.error("请选择无效理由");
         }
-        Integer invalidName =invalidReasonDTO.getInvalidName();
+        Integer invalidName = invalidReasonDTO.getInvalidName();
         InvalidReason invalidReason = this.getById(invalidReasonDTO.getId());
-        if(invalidName.equals(1)) {//若类型为1,则为说明书公开不充分,涉及内容为说明书,手动输入无效证据
+        if (invalidName.equals(1)) {//若类型为1,则为说明书公开不充分,涉及内容为说明书,手动输入无效证据
             BeanUtils.copyProperties(invalidReasonDTO, invalidReason);
             //说明书公开不充分入表
             invalidReason.updateById();
-        } else if(invalidName.equals(0)){//若类型为0,则为“权利要求不清楚”,需要选择涉及内容(content)并输入相关证据(proofStr)
-            if(invalidReasonDTO.getProofStr() != null && invalidReasonDTO.getProofStr() != ""){
-                if(invalidReasonDTO.getInvalidName() == 1){
+        } else if (invalidName.equals(0)) {//若类型为0,则为“权利要求不清楚”,需要选择涉及内容(content)并输入相关证据(proofStr)
+            if (invalidReasonDTO.getProofStr() != null && invalidReasonDTO.getProofStr() != "") {
+                if (invalidReasonDTO.getInvalidName() == 1) {
                     invalidReasonDTO.setContent(-1);
                 }
                 //复制DTO类字段到InvalidReason实体类并保存入库
@@ -275,22 +281,22 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
                 invalidReason.updateById();
                 //有可能为特征不清楚
                 //判断是否传入特征集合 (更新无特征更新,可取消)
-                if(invalidReasonDTO.getFeatures() != null && invalidReasonDTO.getFeatures().size() > 0) {
+                if (invalidReasonDTO.getFeatures() != null && invalidReasonDTO.getFeatures().size() > 0) {
                     //若类型为0检查features是否有交集(根据位置和字符串长度判断)若有则返回
                     Features features = new Features();
                     //特征内容
-                    List<InvalidReasonDTO.featuresIn> featuresIns = invalidReasonDTO.getFeatures();
+                    List<InvalidReasonDTO.FeaturesIn> featuresIns = invalidReasonDTO.getFeatures();
                     //过滤带有不带有特征id的特征
-                    featuresIns = featuresIns.stream().filter(item->item.getId() == null).collect(Collectors.toList());
+                    featuresIns = featuresIns.stream().filter(item -> item.getId() == null).collect(Collectors.toList());
                     //检查特征内容是否有交集(根据位置和字符串长度判断)若有则返回
                     //装载检查重复需要的类
                     CheckReFeaturesDTO checkReFeaturesDTO = new CheckReFeaturesDTO();
                     checkReFeaturesDTO.setReportId(invalidReasonDTO.getReportId());
                     checkReFeaturesDTO.setRightSort(invalidReasonDTO.getContent());
                     List<CheckReFeaturesDTO.featuresIn> checkFeatureIns = new ArrayList<>();
-                    for(InvalidReasonDTO.featuresIn featuresIn : featuresIns){
+                    for (InvalidReasonDTO.FeaturesIn featuresIn : featuresIns) {
                         CheckReFeaturesDTO.featuresIn featuresIn1 = new CheckReFeaturesDTO.featuresIn();
-                        BeanUtils.copyProperties(featuresIn,featuresIn1);
+                        BeanUtils.copyProperties(featuresIn, featuresIn1);
                         checkFeatureIns.add(featuresIn1);
                     }
                     checkReFeaturesDTO.setFeatures(checkFeatureIns);
@@ -314,7 +320,7 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
                     //遍历特征内容集合,保存到表(类型为0)
                     for (int i = 0; i < featuresIns.size(); i++) {
                         //若类型为0,保存到特征表
-                        InvalidReasonDTO.featuresIn featuresIn = featuresIns.get(i);
+                        InvalidReasonDTO.FeaturesIn featuresIn = featuresIns.get(i);
                         features.setContent(featuresIn.getFeatureStr());
                         features.insert();
                         //若类型为0,保存到特征与位置关联表(特征id,位置)
@@ -328,8 +334,8 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
             } else {
                 return Response.error("相关证据不能为空");
             }
-        } else if(invalidName.equals(2) || invalidName.equals(3)){//若类型为2,3则proofGroups不能为空
-            if(invalidReasonDTO.getProofGroups()!= null){
+        } else if (invalidName.equals(2) || invalidName.equals(3)) {//若类型为2,3则proofGroups不能为空
+            if (invalidReasonDTO.getProofGroups() != null) {
                 //复制DTO类字段到InvalidReason实体类并保存入库
                 BeanUtils.copyProperties(invalidReasonDTO, invalidReason);
                 invalidReason.updateById();
@@ -337,12 +343,12 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
                 proofGroupService.deleteProofGroupByInvalid(invalidReason.getId());
                 //根据proofGroups保存proofGroup
                 List<ProofGroupDTO> proofGroupDTOS = new ArrayList<>();
-                for(InvalidReasonDTO.proofGroupIn proofGroupIn:invalidReasonDTO.getProofGroups()){
+                for (InvalidReasonDTO.ProofGroupIn proofGroupIn : invalidReasonDTO.getProofGroups()) {
                     ProofGroupDTO proofGroupDTO = new ProofGroupDTO();
                     proofGroupDTO.setInvalidReasonId(invalidReason.getId());//无效理由id
                     proofGroupDTO.setDescription(proofGroupIn.getDescription());//描述
-                    proofGroupDTO.setArgument_str(proofGroupIn.getArgument_str());//陈述意见
-                    proofGroupDTO.setProofIds(proofGroupIn.getProofIds());//证据ids
+                    proofGroupDTO.setArgumentStr(proofGroupIn.getArgumentStr());//陈述意见
+                    proofGroupDTO.setGroupDetails(proofGroupIn.getGroupDetails());//证据ids
                     proofGroupDTOS.add(proofGroupDTO);
                 }
                 proofGroupService.addProofGroup(proofGroupDTOS);
@@ -350,11 +356,14 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
                 return Response.error("证据组合不能为空");
             }
         }
+        //添加自定义字段值
+        invalidReasonFieldValueService.addOrUpdate(invalidReasonDTO.getFields());
         return Response.success("更新成功");
     }
 
     /**
      * 查找无效理由和证据列表
+     *
      * @param
      * @return
      */
@@ -363,223 +372,272 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
         List<QueryInvalidReasonVO> queryInvalidReasonVOS = new ArrayList<>();
         //根据报告id查询无效理由
         List<InvalidReason> invalidReasons = new ArrayList<>();
-        if(reportId != null) {
+        if (reportId != null) {
             LambdaQueryWrapper<InvalidReason> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(InvalidReason::getReportId, reportId);
             invalidReasons = this.list(queryWrapper);
         }
-        for(InvalidReason invalidReason:invalidReasons) {
+        for (InvalidReason invalidReason : invalidReasons) {
             QueryInvalidReasonVO queryInvalidReasonVO = new QueryInvalidReasonVO();
-            BeanUtils.copyProperties(invalidReason,queryInvalidReasonVO);
+            BeanUtils.copyProperties(invalidReason, queryInvalidReasonVO);
             queryInvalidReasonVOS.add(queryInvalidReasonVO);
         }
-        if(queryInvalidReasonVOS.size()>0) {
+        if (queryInvalidReasonVOS.size() > 0) {
             List<QueryInvalidReasonVO> queryInvalidReasonVOs = this.loadInvalidReason(queryInvalidReasonVOS);
             return queryInvalidReasonVOs;
         }
         return null;
     }
 
-                    /**查找无效理由和证据列表
-                     *
-                     * 把无效理由集合装载到要返回的列表集合中
-                     * @param queryInvalidReasonVOS
-                     */
-                    public List<QueryInvalidReasonVO> loadInvalidReason(List<QueryInvalidReasonVO> queryInvalidReasonVOS){
-                        //若类型为2,3,则查询证据组合
-                        //查询出类型为2,3时的无效理由ids
-                        List<Integer> invalidReasonsIds = queryInvalidReasonVOS.stream()
-                                .filter(item -> item.getInvalidName() == 2 || item.getInvalidName() == 3)
-                                .map(QueryInvalidReasonVO::getId)
-                                .collect(Collectors.toList());
-                        //根据无效理由ids查询出所有的证据组合c
-                        List<ProofGroup> proofGroups  =new ArrayList<>();
-                        if(invalidReasonsIds.size() > 0) {
-                            LambdaQueryWrapper<ProofGroup> queryWrapper1 = new LambdaQueryWrapper<>();
-                            queryWrapper1.in(ProofGroup::getInvalidReasonId, invalidReasonsIds);
-                            proofGroups = proofGroupService.list(queryWrapper1);
-                        }
-                        //由于查出来的proofGroups中没有proofIds这个字段,于是采用下面的方法装载成proofGroupVOS
-                        List<QueryInvalidReasonVO.proofGroupIn> proofGroupIns = this.loadProofGroupVO(proofGroups);
-                            for(QueryInvalidReasonVO queryInvalidReasonVO:queryInvalidReasonVOS) {
-                                //比对无效理由id,把能匹配上的进行装载
-                                List<QueryInvalidReasonVO.proofGroupIn> proofGroupIn = proofGroupIns.stream()
-                                        .filter(item -> item.getInvalidReasonId().equals(queryInvalidReasonVO.getId()))
-                                        .collect(Collectors.toList());
-                                queryInvalidReasonVO.setProofGroups(proofGroupIn);
-                            }
-                        return queryInvalidReasonVOS;
-                    }
+    /**
+     * 查找无效理由和证据列表
+     * <p>
+     * 把无效理由集合装载到要返回的列表集合中
+     *
+     * @param queryInvalidReasonVOS
+     */
+    public List<QueryInvalidReasonVO> loadInvalidReason(List<QueryInvalidReasonVO> queryInvalidReasonVOS) {
+        //若类型为2,3,则查询证据组合
+        //查询出类型为2,3时的无效理由ids
+        List<Integer> invalidReasonsIds = queryInvalidReasonVOS.stream()
+                .filter(item -> item.getInvalidName() == 2 || item.getInvalidName() == 3)
+                .map(QueryInvalidReasonVO::getId)
+                .collect(Collectors.toList());
+        //根据无效理由ids查询出所有的证据组合c
+        List<ProofGroup> proofGroups = new ArrayList<>();
+        if (invalidReasonsIds.size() > 0) {
+            LambdaQueryWrapper<ProofGroup> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.in(ProofGroup::getInvalidReasonId, invalidReasonsIds);
+            proofGroups = proofGroupService.list(queryWrapper1);
+        }
+        //由于查出来的proofGroups中没有proofIds这个字段,于是采用下面的方法装载成proofGroupVOS
+        List<QueryInvalidReasonVO.proofGroupIn> proofGroupIns = this.loadProofGroupVO(proofGroups);
+        //根据无效理由id查询自定义字段
 
-                    /**查找无效理由和证据列表
-                     *
-                     * 把查出来的所有证据组合实体类集合转成VO类集合
-                     * @param proofGroups
-                     */
-                    public List<QueryInvalidReasonVO.proofGroupIn> loadProofGroupVO(List<ProofGroup> proofGroups){
-                        List<QueryInvalidReasonVO.proofGroupIn> proofGroupIns = new ArrayList<>();
-                        //根据传入的proofGroups对象集合,过滤出所有的ids
-                        List<Integer> proofGroupIds = proofGroups.stream()
-                                .map(ProofGroup::getId)
-                                .collect(Collectors.toList());
-                        //根据组合ids查询出每一个groupId对应的proofIds
-                        //首先批量查出来所有的证据和证据组合关联对象
-                        List<AssoProofGroup> assoProofGroups = new ArrayList<>();
-                        if(proofGroupIds.size() > 0) {
-                            LambdaQueryWrapper<AssoProofGroup> queryWrapper = new LambdaQueryWrapper<>();
-                            queryWrapper.in(AssoProofGroup::getGroupId, proofGroupIds);
-                            assoProofGroups = assoProofGroupService.list(queryWrapper);
-                        }
-                        //证据组合的装载
-                        for (ProofGroup proofGroup : proofGroups) {
-                            QueryInvalidReasonVO.proofGroupIn proofGroupIn = new QueryInvalidReasonVO.proofGroupIn();
-                            //基本信息装载
-                            proofGroupIn.setInvalidReasonId(proofGroup.getInvalidReasonId());
-                            proofGroupIn.setDescription(proofGroup.getDescription());
-                            proofGroupIn.setArgument_str(proofGroup.getArgument_str());
-                            List<Integer> proofIds = assoProofGroups.stream().filter(item->item.getGroupId().equals(proofGroup.getId())).map(AssoProofGroup::getProofId).collect(Collectors.toList());
-                           //根据证据id查询证据
-                            List<CompareFiles> proofs =new ArrayList<>();
-                            if(proofIds.size()>0) {
-                                LambdaQueryWrapper<CompareFiles> proofLambdaQueryWrapper = new LambdaQueryWrapper<CompareFiles>();
-                                proofLambdaQueryWrapper.in(CompareFiles::getId, proofIds);
-                               proofs =compareFilesService.list(proofLambdaQueryWrapper);
-                            }
-                            List<QueryInvalidReasonVO.proofIn> proofIns =new ArrayList<>();
-                            proofs.forEach(item->{
-                                QueryInvalidReasonVO.proofIn proof=new QueryInvalidReasonVO.proofIn();
-                                proof.setId(item.getId());
-                                proof.setSort(item.getSysOrder());
-                                proof.setPatentNo(item.getPatentNo());
-                                proof.setFileId(item.getFileId());
-                                proof.setFileType(item.getFileType());
-                                proofIns.add(proof);
-                            });
-                            proofGroupIn.setProofIds(proofIds);
-                            proofGroupIn.setProofs(proofIns);
-                            proofGroupIns.add(proofGroupIn);
-                        }
-                        return proofGroupIns;
-                    }
+        //根据无效理由id查询自定义字段值
+        LambdaQueryWrapper<InvalidReasonFieldValue> wrapper =new LambdaQueryWrapper<>();
+        wrapper.in(InvalidReasonFieldValue::getInvalidReasonId,invalidReasonsIds);
+        List<InvalidReasonFieldValue> invalidReasonFieldValues =   invalidReasonFieldValueService.list(wrapper);
+        for (QueryInvalidReasonVO queryInvalidReasonVO : queryInvalidReasonVOS) {
+            //比对无效理由id,把能匹配上的进行装载
+            List<QueryInvalidReasonVO.proofGroupIn> proofGroupIn = proofGroupIns.stream()
+                    .filter(item -> item.getInvalidReasonId().equals(queryInvalidReasonVO.getId()))
+                    .collect(Collectors.toList());
+            queryInvalidReasonVO.setProofGroups(proofGroupIn);
+List<InvalidReasonFieldValue> valuesTem =invalidReasonFieldValues.stream().filter(item->item.getInvalidReasonId().equals(queryInvalidReasonVO.getId())).collect(Collectors.toList());
+            List<InvalidReasonFieldValueDTO> list =new ArrayList<>();
+            valuesTem.forEach(item->{
+                InvalidReasonFieldValueDTO invalidReasonFieldValueDTO =new InvalidReasonFieldValueDTO();
+                invalidReasonFieldValueDTO.setInvalidReasonId(item.getInvalidReasonId());
+                invalidReasonFieldValueDTO.setFieldValue(item.getFieldValue());
+                invalidReasonFieldValueDTO.setFieldId(item.getInvalidReasonFieldId());
+                list.add(invalidReasonFieldValueDTO);
+            });
+            queryInvalidReasonVO.setFields(list);
+        }
+        return queryInvalidReasonVOS;
+    }
+
+    /**
+     * 查找无效理由和证据列表
+     * <p>
+     * 把查出来的所有证据组合实体类集合转成VO类集合
+     *
+     * @param proofGroups
+     */
+    public List<QueryInvalidReasonVO.proofGroupIn> loadProofGroupVO(List<ProofGroup> proofGroups) {
+        List<QueryInvalidReasonVO.proofGroupIn> proofGroupIns = new ArrayList<>();
+        //根据传入的proofGroups对象集合,过滤出所有的ids
+        List<Integer> proofGroupIds = proofGroups.stream()
+                .map(ProofGroup::getId)
+                .collect(Collectors.toList());
+        //根据组合ids查询出每一个groupId对应的proofIds
+        //首先批量查出来所有的证据和证据组合关联对象
+        List<AssoProofGroup> assoProofGroups = new ArrayList<>();
+        if (proofGroupIds.size() > 0) {
+            LambdaQueryWrapper<AssoProofGroup> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoProofGroup::getGroupId, proofGroupIds);
+            assoProofGroups = assoProofGroupService.list(queryWrapper);
+        }
+        //证据组合的装载
+        for (ProofGroup proofGroup : proofGroups) {
+            QueryInvalidReasonVO.proofGroupIn proofGroupIn = new QueryInvalidReasonVO.proofGroupIn();
+            //基本信息装载
+            proofGroupIn.setInvalidReasonId(proofGroup.getInvalidReasonId());
+            proofGroupIn.setDescription(proofGroup.getDescription());
+            proofGroupIn.setArgument_str(proofGroup.getArgumentStr());
+            List<Integer> proofIds = assoProofGroups.stream().filter(item -> item.getGroupId().equals(proofGroup.getId())).map(AssoProofGroup::getProofId).collect(Collectors.toList());
+            //根据证据id查询证据
+            List<CompareFiles> proofs = new ArrayList<>();
+            if (proofIds.size() > 0) {
+                LambdaQueryWrapper<CompareFiles> proofLambdaQueryWrapper = new LambdaQueryWrapper<CompareFiles>();
+                proofLambdaQueryWrapper.in(CompareFiles::getId, proofIds);
+                proofs = compareFilesService.list(proofLambdaQueryWrapper);
+            }
+            List<QueryInvalidReasonVO.proofIn> proofIns = new ArrayList<>();
+            proofs.forEach(item -> {
+                QueryInvalidReasonVO.proofIn proof = new QueryInvalidReasonVO.proofIn();
+                proof.setId(item.getId());
+                proof.setSort(item.getSysOrder());
+                proof.setPatentNo(item.getPatentNo());
+                proof.setFileId(item.getFileId());
+                proof.setFileType(item.getFileType());
+                proofIns.add(proof);
+            });
+            proofGroupIn.setProofIds(proofIds);
+            proofIns.sort(Comparator.comparing(QueryInvalidReasonVO.proofIn::getSort));
+            proofGroupIn.setProofs(proofIns);
+            proofGroupIns.add(proofGroupIn);
+        }
+        return proofGroupIns;
+    }
 
     /**
      * 查询无效理由和证据的详情
+     *
      * @param id
      * @return
      * @throws IOException
      */
     public String queryInvalidReasonDetail(Integer id) throws IOException {
         QueryInvalidReasonVO queryInvalidReasonVO = new QueryInvalidReasonVO();
-        if(id != null && id > 0){
+        if (id != null && id > 0) {
             //根据id查询无效理由
             InvalidReason invalidReason = this.getById(id);
-            if(invalidReason == null){
+            if (invalidReason == null) {
                 return Response.error("没查到无效理由");
             }
             //将初步查出来的无效理由赋值给要返回的VO类
-            BeanUtils.copyProperties(invalidReason,queryInvalidReasonVO);
+            BeanUtils.copyProperties(invalidReason, queryInvalidReasonVO);
             Integer invalidName = invalidReason.getInvalidName();
-            if(invalidName == null){
+            if (invalidName == null) {
                 return Response.error("没查到类型");
             }
             //若类型为0,则查询出特征并且装载
-            if(invalidName.equals(0)){
+            if (invalidName.equals(0)) {
                 //获取报告id和权要排序字段
                 Integer reportId = invalidReason.getReportId();
                 Integer rightSort = invalidReason.getRightSort();
-                if(reportId != null && rightSort != null){
+                if (reportId != null && rightSort != null) {
                     //调用装载特征的方法
-                    List<QueryInvalidReasonVO.featuresIn> featuresIns = this.loadFeature(reportId,rightSort);
+                    List<QueryInvalidReasonVO.featuresIn> featuresIns = this.loadFeature(reportId, rightSort);
                     //赋值
                     queryInvalidReasonVO.setFeatures(featuresIns);
-                    return Response.success(queryInvalidReasonVO);
                 }
-            } else if(invalidName.equals(2)||invalidName.equals(3)){//若类型为2,3则查询证据组合并装载
+            } else if (invalidName.equals(2) || invalidName.equals(3)) { //若类型为2,3则查询证据组合并装载
                 //根据无效理由id查询出proofGroup集合
                 Integer invalidReasonId = invalidReason.getId();
                 //调用装载证据组合方法
                 List<QueryInvalidReasonVO.proofGroupIn> proofGroupIns = this.loadProofGroup(invalidReasonId);
                 queryInvalidReasonVO.setProofGroups(proofGroupIns);
-                return Response.success(queryInvalidReasonVO);
-            } else if(invalidName.equals(1)){
-                //查出来的无效理由可以直接返回
-                return Response.success(queryInvalidReasonVO);
-            } else {
+            }  else {
                 return Response.error("无效类型错误");
             }
-            return Response.success();
+            //根据无效理由id查询自定义字段值
+            LambdaQueryWrapper<InvalidReasonFieldValue> wrapper =new LambdaQueryWrapper<>();
+            wrapper.eq(InvalidReasonFieldValue::getInvalidReasonId,id);
+      List<InvalidReasonFieldValue> invalidReasonFieldValues =   invalidReasonFieldValueService.list(wrapper);
+      List<InvalidReasonFieldValueDTO> list =new ArrayList<>();
+      invalidReasonFieldValues.forEach(item->{
+          InvalidReasonFieldValueDTO invalidReasonFieldValueDTO =new InvalidReasonFieldValueDTO();
+          invalidReasonFieldValueDTO.setInvalidReasonId(item.getInvalidReasonId());
+          invalidReasonFieldValueDTO.setFieldValue(item.getFieldValue());
+          invalidReasonFieldValueDTO.setFieldId(item.getInvalidReasonFieldId());
+          list.add(invalidReasonFieldValueDTO);
+      });
+            queryInvalidReasonVO.setFields(list);
+            //查出来的无效理由可以直接返回
+            return Response.success(queryInvalidReasonVO);
         } else {
             return Response.error("未传入参数");
         }
     }
 
-                /**
-                 * 装载特征集合
-                 * @param reportId
-                 * @param rightSort
-                 * @return
-                 */
-                public List<QueryInvalidReasonVO.featuresIn> loadFeature(Integer reportId, Integer rightSort){
-                    //需要装载的某个无效理由的特征集合
-                    List<QueryInvalidReasonVO.featuresIn> featuresIns = new ArrayList<>();
-                    //通过报告id查询标的专利号
-                    LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper<>();
-                    queryWrapper.eq(Report::getId, reportId);
-                    Report report = reportService.getOne(queryWrapper);
-                    //获取标的专利号
-                    String signPatentNo = report.getSignPatentNo();
-                    //根据标的专利号、报告id、权要排序查询出特征集合
-                    LambdaQueryWrapper<Features> queryWrapper1 = new LambdaQueryWrapper<>();
-                    queryWrapper1.eq(Features::getReportId,reportId)
-                            .eq(Features::getSignPatentNo,signPatentNo)
-                            .eq(Features::getRightId,rightSort);
-                    List<Features> featuress= featureService.list(queryWrapper1);
-                    //遍历特征集合
-                    for(Features features:featuress){
-                        //需要装载的某个无效理由的每个特征
-                        QueryInvalidReasonVO.featuresIn featuresIn = new QueryInvalidReasonVO.featuresIn();
-                        featuresIn.setFeatureStr(features.getContent());
-                        //需要根据特征id查询出它的初始位置
-                        Integer featureId = features.getId();
-                        LambdaQueryWrapper<AssoPositionFeatures> queryWrapper2 = new LambdaQueryWrapper<>();
-                        queryWrapper2.eq(AssoPositionFeatures::getFeaturesID,featureId);
-                        AssoPositionFeatures assoPositionFeatures = assoPositionFeaturesService.getOne(queryWrapper2);
-                        featuresIn.setPosition(assoPositionFeatures.getPosition());
-                        featuresIns.add(featuresIn);
-                    }
-                    return featuresIns;
-                }
+    /**
+     * 装载特征集合
+     *
+     * @param reportId
+     * @param rightSort
+     * @return
+     */
+    public List<QueryInvalidReasonVO.featuresIn> loadFeature(Integer reportId, Integer rightSort) {
+        //需要装载的某个无效理由的特征集合
+        List<QueryInvalidReasonVO.featuresIn> featuresIns = new ArrayList<>();
+        //通过报告id查询标的专利号
+        LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Report::getId, reportId);
+        Report report = reportService.getOne(queryWrapper);
+        //获取标的专利号
+        String signPatentNo = report.getSignPatentNo();
+        //根据标的专利号、报告id、权要排序查询出特征集合
+        LambdaQueryWrapper<Features> queryWrapper1 = new LambdaQueryWrapper<>();
+        queryWrapper1.eq(Features::getReportId, reportId)
+                .eq(Features::getSignPatentNo, signPatentNo)
+                .eq(Features::getRightId, rightSort);
+        List<Features> featuress = featureService.list(queryWrapper1);
+        //遍历特征集合
+        for (Features features : featuress) {
+            //需要装载的某个无效理由的每个特征
+            QueryInvalidReasonVO.featuresIn featuresIn = new QueryInvalidReasonVO.featuresIn();
+            featuresIn.setFeatureStr(features.getContent());
+            //需要根据特征id查询出它的初始位置
+            Integer featureId = features.getId();
+            LambdaQueryWrapper<AssoPositionFeatures> queryWrapper2 = new LambdaQueryWrapper<>();
+            queryWrapper2.eq(AssoPositionFeatures::getFeaturesID, featureId);
+            AssoPositionFeatures assoPositionFeatures = assoPositionFeaturesService.getOne(queryWrapper2);
+            featuresIn.setPosition(assoPositionFeatures.getPosition());
+            featuresIns.add(featuresIn);
+        }
+        return featuresIns;
+    }
+
+    /**
+     * 装载证据组合
+     *
+     * @param invalidReasonId
+     * @return
+     */
+    public List<QueryInvalidReasonVO.proofGroupIn> loadProofGroup(Integer invalidReasonId) {
+        List<QueryInvalidReasonVO.proofGroupIn> proofGroupIns = new ArrayList<>();
+        //根据无效理由id查询出证据组合集合
+        LambdaQueryWrapper<ProofGroup> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ProofGroup::getInvalidReasonId, invalidReasonId);
+        List<ProofGroup> proofGroups = proofGroupService.list(queryWrapper);
+        if (proofGroups != null && proofGroups.size() > 0) {
+            //遍历证据组合集合
+            for (ProofGroup proofGroup : proofGroups) {
+                QueryInvalidReasonVO.proofGroupIn proofGroupIn = new QueryInvalidReasonVO.proofGroupIn();
+                proofGroupIn.setDescription(proofGroup.getDescription());
+                proofGroupIn.setArgument_str(proofGroup.getArgumentStr());
+                //组合id
+                Integer groupId = proofGroup.getId();
+                LambdaQueryWrapper<AssoProofGroup> queryWrapper1 = new LambdaQueryWrapper<>();
+                queryWrapper1.eq(AssoProofGroup::getGroupId, groupId);
+                List<AssoProofGroup> assoProofGroups = assoProofGroupService.list(queryWrapper1);
+                //取出证据ids
+                List<Integer> proofIds = assoProofGroups.stream().map(AssoProofGroup::getProofId).collect(Collectors.toList());
+                proofGroupIn.setProofIds(proofIds);
+                proofGroupIns.add(proofGroupIn);
+            }
+            return proofGroupIns;
+        } else {
+            return null;
+        }
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public String updateArgumentStr(UpdateArgumentStrDTO updateArgumentStrDTO) {
+        Integer invalidReasonId =updateArgumentStrDTO.getId();
+        String argumentStr =updateArgumentStrDTO.getArgumentStr();
+        if(invalidReasonId==null){
+
+            return  Response.error("请选择无效理由");
+        }
+       InvalidReason invalidReason= this.getById(invalidReasonId);
+        invalidReason.setArgumentStr(argumentStr);
+        invalidReason.updateById();
+        return Response.success("修改成功");
+    }
 
-                /**
-                 * 装载证据组合
-                 * @param invalidReasonId
-                 * @return
-                 */
-                public List<QueryInvalidReasonVO.proofGroupIn> loadProofGroup(Integer invalidReasonId){
-                    List<QueryInvalidReasonVO.proofGroupIn> proofGroupIns = new ArrayList<>();
-                    //根据无效理由id查询出证据组合集合
-                    LambdaQueryWrapper<ProofGroup> queryWrapper = new LambdaQueryWrapper<>();
-                    queryWrapper.eq(ProofGroup::getInvalidReasonId,invalidReasonId);
-                    List<ProofGroup> proofGroups = proofGroupService.list(queryWrapper);
-                    if(proofGroups != null && proofGroups.size() > 0){
-                        //遍历证据组合集合
-                        for(ProofGroup proofGroup:proofGroups){
-                            QueryInvalidReasonVO.proofGroupIn proofGroupIn = new QueryInvalidReasonVO.proofGroupIn();
-                            proofGroupIn.setDescription(proofGroup.getDescription());
-                            proofGroupIn.setArgument_str(proofGroup.getArgument_str());
-                            //组合id
-                            Integer groupId = proofGroup.getId();
-                            LambdaQueryWrapper<AssoProofGroup> queryWrapper1 = new LambdaQueryWrapper<>();
-                            queryWrapper1.eq(AssoProofGroup::getGroupId,groupId);
-                            List<AssoProofGroup> assoProofGroups = assoProofGroupService.list(queryWrapper1);
-                            //取出证据ids
-                            List<Integer> proofIds = assoProofGroups.stream().map(AssoProofGroup::getProofId).collect(Collectors.toList());
-                            proofGroupIn.setProofIds(proofIds);
-                            proofGroupIns.add(proofGroupIn);
-                        }
-                        return proofGroupIns;
-                    } else {
-                        return null;
-                    }
-                }
 }

+ 0 - 96
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofDetailService.java

@@ -1,96 +0,0 @@
-package cn.cslg.report.service.business.InvalidReReport;
-
-import cn.cslg.report.common.model.dto.invalidReReport.ProofDetailDTO;
-import cn.cslg.report.common.model.vo.PersonnelVO;
-import cn.cslg.report.common.utils.CacheUtils;
-import cn.cslg.report.common.utils.Response;
-import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
-import cn.cslg.report.entity.Template;
-import cn.cslg.report.entity.invalidReReport.ProofDetail;
-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.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 java.util.List;
-
-
-@Service
-@Slf4j
-@RequiredArgsConstructor(onConstructor_ = {@Lazy})
-public class ProofDetailService extends ServiceImpl<ProofDetailMapper,ProofDetail> {
-    private final CacheUtils cacheUtils;
-    private final LoginUtils loginUtils;
-
-    /**
-     * 添加证据详情
-     * @param proofDetailDTO
-     */
-    public void addProofDetail(ProofDetailDTO proofDetailDTO) {
-        //检查证据id,权要id,特征id是否为null
-        if(proofDetailDTO.getProofId() != null && proofDetailDTO.getRightId() != null && proofDetailDTO.getFeatureId() != null){
-            //将DTO里的属性装载到ProofDetail里并插入
-            ProofDetail proofDetail = new ProofDetail();
-            BeanUtils.copyProperties(proofDetailDTO, proofDetail);
-            //获取当前登录人信息
-            PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-            proofDetail.setCreateId(personnelVO.getId());
-            proofDetail.insert();
-        } else {
-            throw new XiaoShiException("传入数据不可为空");
-        }
-    }
-
-    /**
-     * 批量删除证据详情
-     * @param ids
-     */
-    public void deleteProofDetail(List<Integer> ids) {
-        //检测ids是否为null或size=0
-        if(ids != null && ids.size() != 0){
-            this.removeByIds(ids);
-        } else {
-            throw new XiaoShiException("删除错误");
-        }
-    }
-
-    /**
-     * 更新证据详情
-     * @param proofDetailDTO
-     */
-    public void updateProofDetail(ProofDetailDTO proofDetailDTO) {
-        //检查证据id,权要id,特征id是否为null
-        if(proofDetailDTO.getProofId() != null && proofDetailDTO.getRightId() != null && proofDetailDTO.getFeatureId() != null){
-            //将DTO里的属性装载到ProofDetail里并插入
-            //查出该条数据
-            ProofDetail proofDetail = this.getById(proofDetailDTO.getId());
-            BeanUtils.copyProperties(proofDetailDTO, proofDetail);
-            //获取当前登录人信息
-            PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-            proofDetail.setCreateId(personnelVO.getId());
-            proofDetail.updateById();
-        } else {
-            throw new XiaoShiException("传入数据值不可为空");
-        }
-    }
-
-    /**
-     * 查询证据详情
-     * @param proofId
-     * @return
-     */
-    public List<ProofDetail> queryProofDetail(Integer proofId) {
-        //根据证据id查询证据详情
-        LambdaQueryWrapper<ProofDetail> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ProofDetail::getProofId, proofId);
-        List<ProofDetail> proofDetails = this.list(queryWrapper);
-        return proofDetails;
-    }
-}

+ 198 - 66
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofGroupService.java

@@ -1,22 +1,21 @@
 package cn.cslg.report.service.business.InvalidReReport;
 
-import cn.cslg.report.common.model.dto.invalidReReport.ProofDetailDTO;
 import cn.cslg.report.common.model.dto.invalidReReport.ProofGroupDTO;
+import cn.cslg.report.common.model.dto.invalidReReport.ProofGroupUpdateDTO;
 import cn.cslg.report.common.model.vo.PersonnelVO;
+import cn.cslg.report.common.model.vo.invalidReReport.ProofGroupDetailVO;
 import cn.cslg.report.common.model.vo.invalidReReport.ProofGroupVO;
 import cn.cslg.report.common.utils.CacheUtils;
-import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
-import cn.cslg.report.entity.Personnel;
-import cn.cslg.report.entity.invalidReReport.AssoProofGroup;
-import cn.cslg.report.entity.invalidReReport.ProofDetail;
-import cn.cslg.report.entity.invalidReReport.ProofGroup;
+import cn.cslg.report.entity.CompareFiles;
+import cn.cslg.report.entity.Features;
+import cn.cslg.report.entity.invalidReReport.*;
 import cn.cslg.report.exception.XiaoShiException;
-import cn.cslg.report.mapper.InvalidReReport.ProofDetailMapper;
 import cn.cslg.report.mapper.InvalidReReport.ProofGroupMapper;
+import cn.cslg.report.service.business.CompareFilesService;
+import cn.cslg.report.service.business.FeatureService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -24,6 +23,7 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -31,39 +31,57 @@ import java.util.stream.Collectors;
 @Service
 @Slf4j
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
-public class ProofGroupService extends ServiceImpl<ProofGroupMapper,ProofGroup> {
+public class ProofGroupService extends ServiceImpl<ProofGroupMapper, ProofGroup> {
     private final CacheUtils cacheUtils;
     private final LoginUtils loginUtils;
     private final AssoProofGroupService assoProofGroupService;
+    private final ProofGroupService proofGroupService;
+    private final CompareFilesService compareFilesService;
+    private final ArgumentsService argumentsService;
+    private final FeatureService featureService;
+    private final ProofStrService assoFeatureProofService;
+    private final AssoProofGroupStrService assoProofGroupStrService;
 
     /**
      * 批量添加证据组合
+     *
      * @param proofGroupDTOS
      */
     public void addProofGroup(List<ProofGroupDTO> proofGroupDTOS) {
-        for(ProofGroupDTO proofGroupDTO:proofGroupDTOS){
+        for (ProofGroupDTO proofGroupDTO : proofGroupDTOS) {
             //判断proofIds是否为空,若为空则返回
-            if (proofGroupDTO.getProofIds() != null && proofGroupDTO.getProofIds().size() != 0) {
+            if (proofGroupDTO.getGroupDetails() != null && proofGroupDTO.getGroupDetails().size() != 0) {
                 //添加证据组合
                 ProofGroup proofGroup = new ProofGroup();
                 BeanUtils.copyProperties(proofGroupDTO, proofGroup);
                 //获取当前登录人信息
                 PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
                 proofGroup.setCreateId(personnelVO.getId());
-    //            proofGroup.setCreateId(1);
+                //            proofGroup.setCreateId(1);
                 proofGroup.insert();
                 //添加证据组合和证据关联
-                //批量插入
+                //批量插入组合和专利关联表
                 List<AssoProofGroup> assoProofGroups = new ArrayList<>();
-                for (int i = 0; i < proofGroupDTO.getProofIds().size(); i++) {
+                //批量查出组合和无效证据关联表
+                List<AssoProofGroupStr> assoProofGroupStrs = new ArrayList<>();
+                for (int i = 0; i < proofGroupDTO.getGroupDetails().size(); i++) {
+                    Integer compareFileId = proofGroupDTO.getGroupDetails().get(i).getCompareFileId();
                     AssoProofGroup assoProofGroup = new AssoProofGroup();
                     assoProofGroup.setGroupId(proofGroup.getId());
-                    assoProofGroup.setProofId(proofGroupDTO.getProofIds().get(i));
+                    assoProofGroup.setProofId(compareFileId);
                     assoProofGroup.setCreateId(personnelVO.getId());
-    //
                     assoProofGroups.add(assoProofGroup);
+                    List<Integer> proofStrIds = proofGroupDTO.getGroupDetails().get(i).getProofStrIds();
+                    proofStrIds.forEach(item -> {
+                        AssoProofGroupStr assoProofGroupStr = new AssoProofGroupStr();
+                        assoProofGroupStr.setProofGroupId(proofGroup.getId());
+                        assoProofGroupStr.setProofStrId(item);
+                        assoProofGroupStr.setCompareFileId(compareFileId);
+                        assoProofGroupStrs.add(assoProofGroupStr);
+                    });
                 }
                 assoProofGroupService.saveBatch(assoProofGroups);
+                assoProofGroupStrService.saveBatch(assoProofGroupStrs);
             } else {
                 throw new XiaoShiException("传入数据不能为空");
             }
@@ -72,12 +90,13 @@ public class ProofGroupService extends ServiceImpl<ProofGroupMapper,ProofGroup>
 
 
     /**
-     *批量删除证据组合
+     * 批量删除证据组合
+     *
      * @param ids 证据组合ids
      * @return
      */
     public void deleteProofGroup(List<Integer> ids) {
-        if(ids != null && ids.size() != 0) {
+        if (ids != null && ids.size() != 0) {
             //根据证据组合id批量删除证据组合-证据关联
             LambdaQueryWrapper<AssoProofGroup> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.in(AssoProofGroup::getGroupId, ids);
@@ -90,79 +109,79 @@ public class ProofGroupService extends ServiceImpl<ProofGroupMapper,ProofGroup>
     }
 
     /**
-     *批量删除证据组合
+     * 批量删除证据组合
+     *
      * @param
      * @return
      */
     public void deleteProofGroupByInvalid(Integer invalidId) {
         //根据无效理由id获得证据组合
-        LambdaQueryWrapper<ProofGroup> wrapper =new LambdaQueryWrapper<>();
-        wrapper.eq(ProofGroup::getInvalidReasonId,invalidId);
-        List<ProofGroup> proofGroups =this.list(wrapper);
-        List<Integer> ids =proofGroups.stream().map(ProofGroup::getId).collect(Collectors.toList());;
-        if(ids != null && ids.size() != 0) {
+        LambdaQueryWrapper<ProofGroup> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ProofGroup::getInvalidReasonId, invalidId);
+        List<ProofGroup> proofGroups = this.list(wrapper);
+        List<Integer> ids = proofGroups.stream().map(ProofGroup::getId).collect(Collectors.toList());
+        ;
+        if (ids != null && ids.size() != 0) {
             //根据证据组合id批量删除证据组合-证据关联
             LambdaQueryWrapper<AssoProofGroup> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.in(AssoProofGroup::getGroupId, ids);
             assoProofGroupService.remove(queryWrapper);
             //根据ids批量删除证据组合
             this.removeByIds(ids);
+            //根据证据组合id批量删除证据组合-无效证据关联
+            LambdaQueryWrapper<AssoProofGroupStr> strWrapper = new LambdaQueryWrapper<>();
+            strWrapper.in(AssoProofGroupStr::getProofGroupId, ids);
+            assoProofGroupStrService.remove(strWrapper);
+            //根据ids批量删除证据组合
+            this.removeByIds(ids);
         }
+
     }
+
     /**
      * 更新证据组合
-     * @param proofGroupDTO
+     *
+     * @param proofGroupUpdateDTO
      * @return
      */
-    public void updateProofGroup(ProofGroupDTO proofGroupDTO) {
-        //判断proofIds是否为空,若为空则返回
-        if (proofGroupDTO.getProofIds() != null && proofGroupDTO.getProofIds().size() != 0){
+    public void updateProofGroup(ProofGroupUpdateDTO proofGroupUpdateDTO) {
+             List<Integer> newProofIds = proofGroupUpdateDTO.getProofStrIds();
             //查出证据组合数据
-            ProofGroup proofGroup = this.getById(proofGroupDTO.getId());
-            BeanUtils.copyProperties(proofGroupDTO, proofGroup);
-            //获取当前登录人信息
-            PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-            proofGroup.setCreateId(personnelVO.getId());
-//            proofGroup.setCreateId(1);
-            //更新证据组合信息
+            ProofGroup proofGroup = this.getById(proofGroupUpdateDTO.getId());
+            proofGroup.setArgumentStr(proofGroupUpdateDTO.getArgumentStr());
+            proofGroup.setDescription(proofGroupUpdateDTO.getDescription());
             proofGroup.updateById();
             //证据组合id
             Integer groupId = proofGroup.getId();
+            Integer compareFileId =proofGroupUpdateDTO.getCompareFileId();
             //根据证据组合id查找 证据组合和证据关联ids
-            LambdaQueryWrapper<AssoProofGroup> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.select(AssoProofGroup::getProofId);
-            queryWrapper.eq(AssoProofGroup::getGroupId, groupId);
-            List<AssoProofGroup> assoProofGroups = assoProofGroupService.list(queryWrapper);
-            List<Integer> oldProofIds = assoProofGroups.stream().map(AssoProofGroup::getProofId).collect(Collectors.toList());
-            List<Integer> newProofIds = proofGroupDTO.getProofIds();
-            //寻找proofIds比关联ids少的id并从证据组合和证据关联表中删除
-            List<Integer> needDelIds = new ArrayList<>(oldProofIds);
-            needDelIds.removeAll(newProofIds);
-            LambdaQueryWrapper<AssoProofGroup> queryWrapper1 = new LambdaQueryWrapper<>();
-            queryWrapper1.in(AssoProofGroup::getProofId, needDelIds);
-            List<AssoProofGroup> needDelete = assoProofGroupService.list(queryWrapper1);
-            List<Integer> ids = needDelete.stream().map(AssoProofGroup::getId).collect(Collectors.toList());
-            assoProofGroupService.removeByIds(ids);
-            //寻找proofIds比关联ids多的id并插入到证据组合和证据关联表中
-            newProofIds.removeAll(oldProofIds);
-            //批量插入
-            List<AssoProofGroup> needInsert = new ArrayList<>();
-            for(int i = 0; i < newProofIds.size(); i++) {
-                AssoProofGroup assoProofGroup = new AssoProofGroup();
-                assoProofGroup.setGroupId(groupId);
-                assoProofGroup.setProofId(newProofIds.get(i));
-                assoProofGroup.setCreateId(personnelVO.getId());
-//                assoProofGroup.setCreateId(1);
-                needInsert.add(assoProofGroup);
+            if(compareFileId!=null) {
+                LambdaQueryWrapper<AssoProofGroupStr> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(AssoProofGroupStr::getProofGroupId, groupId)
+                        .eq(AssoProofGroupStr::getCompareFileId, compareFileId);
+                List<AssoProofGroupStr> assoProofGroupStrs = assoProofGroupStrService.list(queryWrapper);
+                List<Integer> oldProofStrIds = assoProofGroupStrs.stream().map(AssoProofGroupStr::getId).collect(Collectors.toList());
+                if (oldProofStrIds.size() > 0) {
+                    assoProofGroupStrService.removeByIds(oldProofStrIds);
+                }
+                //寻找proofIds比关联ids多的id并插入到证据组合和证据关联表中
+                //批量插入
+                List<AssoProofGroupStr> needInsert = new ArrayList<>();
+                for (int i = 0; i < newProofIds.size(); i++) {
+                    AssoProofGroupStr assoProofGroupStr = new AssoProofGroupStr();
+                    assoProofGroupStr.setProofGroupId(groupId);
+                    assoProofGroupStr.setProofStrId(newProofIds.get(i));
+                    assoProofGroupStr.setCompareFileId(proofGroupUpdateDTO.getCompareFileId());
+                    needInsert.add(assoProofGroupStr);
+                }
+                assoProofGroupStrService.saveBatch(needInsert);
             }
-            assoProofGroupService.saveBatch(needInsert);
-        } else {
-            throw new XiaoShiException("传入证据id不能为空");
-        }
+
     }
 
     /**
      * 查询证据组合详情
+     *
      * @param id 证据组合id
      * @return
      */
@@ -170,11 +189,11 @@ public class ProofGroupService extends ServiceImpl<ProofGroupMapper,ProofGroup>
         //根据证据组合id查询证据组合并装载到ProofGroupVO类里
         ProofGroupVO proofGroupVO = new ProofGroupVO();
         ProofGroup proofGroup = this.getById(id);
-        if(proofGroup == null){
+        if (proofGroup == null) {
             throw new XiaoShiException("没有这一条数据");
         }
         proofGroupVO.setInvalidReasonId(proofGroup.getInvalidReasonId());
-        proofGroupVO.setArgument_str(proofGroup.getArgument_str());
+        proofGroupVO.setArgument_str(proofGroup.getArgumentStr());
         proofGroupVO.setDescription(proofGroup.getDescription());
         LambdaQueryWrapper<AssoProofGroup> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.select(AssoProofGroup::getProofId);
@@ -187,6 +206,7 @@ public class ProofGroupService extends ServiceImpl<ProofGroupMapper,ProofGroup>
 
     /**
      * 查询证据组合
+     *
      * @param invalidId 无效理由Id
      * @return proofGroups
      */
@@ -197,4 +217,116 @@ public class ProofGroupService extends ServiceImpl<ProofGroupMapper,ProofGroup>
         List<ProofGroup> proofGroups = this.list(queryWrapper);
         return proofGroups;
     }
+
+
+    /**
+     * 根据无效理由id查询证据组合及证据详情
+     *
+     * @param invalidReasonId 无效理由id
+     * @return
+     */
+    public List<ProofGroupDetailVO> queryDetailByInvalidId(Integer invalidReasonId) {
+        List<ProofGroupDetailVO> proofDetailVOS = new ArrayList<>();
+        //根据无效理由和证据id查询证据组合
+        LambdaQueryWrapper<ProofGroup> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(ProofGroup::getInvalidReasonId, invalidReasonId);
+        List<ProofGroup> proofGroups = proofGroupService.list(lambdaQueryWrapper);
+        if (proofGroups.size() == 0) {
+            return new ArrayList<>();
+        }
+        //根据证据组合id查询证据id
+        List<Integer> groupIds = proofGroups.stream().map(ProofGroup::getId).collect(Collectors.toList());
+        LambdaQueryWrapper<AssoProofGroup> assoWrapper = new LambdaQueryWrapper<>();
+        assoWrapper.in(AssoProofGroup::getGroupId, groupIds);
+        List<AssoProofGroup> assoProofGroups = assoProofGroupService.list(assoWrapper);
+        List<Integer> proofIds = assoProofGroups.stream().map(AssoProofGroup::getProofId).collect(Collectors.toList());
+        //根据证据id查询证据
+        LambdaQueryWrapper<CompareFiles> comFileWrapper = new LambdaQueryWrapper<>();
+        comFileWrapper.in(CompareFiles::getId, proofIds);
+        List<CompareFiles> compareFiles = compareFilesService.list(comFileWrapper);
+        //根据证据id查询陈述意见
+        List<Arguments> arguments = new ArrayList<>();
+        LambdaQueryWrapper<Arguments> argumentsWrapper = new LambdaQueryWrapper<>();
+        argumentsWrapper.in(Arguments::getProofId, proofIds);
+        arguments = argumentsService.list(argumentsWrapper);
+        //根据特征id获得特征列表
+        List<Features> features = new ArrayList<>();
+        List<Integer> featureIds = arguments.stream().map(Arguments::getFeatureId).collect(Collectors.toList());
+        if (featureIds.size() != 0) {
+            LambdaQueryWrapper<Features> featuresWrapper = new LambdaQueryWrapper<>();
+            featuresWrapper.in(Features::getId, featureIds);
+            features = featureService.list(featuresWrapper);
+        }
+        //根据证据组合id查找组合和无效证据关联
+        LambdaQueryWrapper<AssoProofGroupStr> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(AssoProofGroupStr::getProofGroupId, groupIds);
+        List<AssoProofGroupStr> assoProofGroupStrs = assoProofGroupStrService.list(wrapper);
+        //根据特征id获得无效证据
+        List<ProofStr> proofStrs = new ArrayList<>();
+        if (featureIds.size() != 0) {
+            LambdaQueryWrapper<ProofStr> assoFPWrapper = new LambdaQueryWrapper<>();
+            assoFPWrapper.in(ProofStr::getFeatureId, featureIds);
+            proofStrs = assoFeatureProofService.list(assoFPWrapper);
+        }
+        //装载列表
+        for (ProofGroup proofGroup : proofGroups) {
+            ProofGroupDetailVO proofGroupDetailVO = new ProofGroupDetailVO();
+            proofGroupDetailVO.setId(proofGroup.getId());
+            proofGroupDetailVO.setInvalidReasonId(proofGroup.getInvalidReasonId());
+            proofGroupDetailVO.setArgumentStr(proofGroup.getArgumentStr());
+            proofGroupDetailVO.setDescription(proofGroup.getDescription());
+            List<ProofGroupDetailVO.ProofIn> proofIns = new ArrayList<>();
+            //根据组合id获得该组合下的证据
+            List<AssoProofGroup> assoProofGroupPart = assoProofGroups.stream().filter(item -> item.getGroupId().equals(proofGroup.getId())).collect(Collectors.toList());
+            List<Integer> proofIdsPart = assoProofGroupPart.stream().map(AssoProofGroup::getProofId).collect(Collectors.toList());
+            List<CompareFiles> compareFilesPart = compareFiles.stream().filter(item -> proofIdsPart.contains(item.getId())).collect(Collectors.toList());
+            //装载证据信息
+            for (CompareFiles compareFile : compareFilesPart) {
+                ProofGroupDetailVO.ProofIn proofIn = new ProofGroupDetailVO.ProofIn();
+                proofIn.setId(compareFile.getId());
+                proofIn.setFileId(compareFile.getFileId());
+                proofIn.setSort(compareFile.getSysOrder());
+                proofIn.setFileType(compareFile.getFileType());
+                proofIn.setPatentNo(compareFile.getPatentNo());
+                proofIns.add(proofIn);
+            }
+           //获得证据组合里的无效证据
+            List<Integer> proofStrIdsPart =assoProofGroupStrs.stream().filter(item->item.getProofGroupId().equals(proofGroup.getId())).map(AssoProofGroupStr::getProofStrId).collect(Collectors.toList());
+            List<ProofStr> proofStrsPart =proofStrs.stream().filter(item->proofStrIdsPart.contains(item.getId())).collect(Collectors.toList());
+           //遍历无效证据
+            List<ProofGroupDetailVO.ProofDetailIn> proofDetailIns = new ArrayList<>();
+            for (ProofStr proofStr : proofStrsPart) {
+                CompareFiles tenCom=   compareFilesPart.stream().filter(item->proofStr.getCompareFileId().equals(item.getId())).findFirst().orElse(new CompareFiles());
+                ProofGroupDetailVO.ProofDetailIn proofDetailIn =new ProofGroupDetailVO.ProofDetailIn();
+                //获得对应特征信息
+                Features features1 =features.stream().filter(item->item.getId().equals(proofStr.getFeatureId())).findFirst().orElse(new Features());
+                //装载无效证据
+                proofDetailIn.setProofStrId(proofStr.getId());
+                proofDetailIn.setProofStr(proofStr.getProofStr());
+                proofDetailIn.setProofId(proofStr.getCompareFileId());
+                proofDetailIn.setSort(tenCom.getSysOrder());
+                proofDetailIn.setFeaturesOrder(features1.getFeaturesOrder());
+                proofDetailIn.setFeatureContent(features1.getContent());
+                proofDetailIn.setFeatureId(features1.getId());
+            List<Arguments> argumentsParts =arguments.stream().filter(item->proofStr.getId().equals(item.getProofStrId())).collect(Collectors.toList());
+            List<ProofGroupDetailVO.ArgumentIn> argumentIns = new ArrayList<>();
+           //遍历陈述意见
+            for(Arguments arguments1: argumentsParts){
+                ProofGroupDetailVO.ArgumentIn argumentIn =new ProofGroupDetailVO.ArgumentIn();
+                argumentIn.setId(arguments1.getId());
+                argumentIn.setArgumentStr(arguments1.getArgumentStr());
+                argumentIns.add(argumentIn);
+            }
+                proofDetailIn.setArguments(argumentIns);
+                proofDetailIns.add(proofDetailIn);
+            }
+            proofIns.sort(Comparator.comparing(ProofGroupDetailVO.ProofIn::getSort));
+            proofGroupDetailVO.setProofs(proofIns);
+            proofDetailIns.sort(Comparator.comparing(ProofGroupDetailVO.ProofDetailIn::getFeaturesOrder));
+            proofGroupDetailVO.setProofDetails(proofDetailIns);
+            proofDetailVOS.add(proofGroupDetailVO);
+        }
+        return proofDetailVOS;
+    }
+
 }

+ 0 - 83
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofService.java

@@ -1,83 +0,0 @@
-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.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.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<ProofMapper, Proof> {
-    private final CacheUtils cacheUtils;
-    private final LoginUtils loginUtils;
-    private final ReportFileService reportFileService;
-
-    //上传非专利文献证据
-    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());
-
-        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("上传非专利文献证据完成");
-
-    }
-
-}

+ 77 - 0
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofStrService.java

@@ -0,0 +1,77 @@
+package cn.cslg.report.service.business.InvalidReReport;
+
+import cn.cslg.report.common.model.dto.invalidReReport.ProofStrDTO;
+import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.entity.invalidReReport.Arguments;
+import cn.cslg.report.entity.invalidReReport.ProofStr;
+import cn.cslg.report.mapper.InvalidReReport.ProofStrMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+@Service
+@Slf4j
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class ProofStrService extends ServiceImpl<ProofStrMapper, ProofStr> {
+    private final ArgumentsService argumentsService;
+    public ProofStr queryProofStr(Integer proofId, Integer featureId) {
+        LambdaQueryWrapper<ProofStr> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ProofStr::getCompareFileId, proofId)
+                .eq(ProofStr::getFeatureId, featureId);
+        List<ProofStr> proofStrs = this.list(queryWrapper);
+        ProofStr proofStr = new ProofStr();
+        if (proofStrs.size() > 0) {
+            proofStr = proofStrs.get(0);
+        }
+        return proofStr;
+    }
+
+    public String addOrUpdateProofStr(ProofStrDTO proofStrDTO) {
+        try {
+            this.addOrUpdate(proofStrDTO);
+            return Response.success("添加或更新成功");
+        }
+        catch (Exception e){
+            return Response.error("添加或更新失败");
+        }
+    }
+
+    /**
+     * 添加或更新证据文字
+     * @param proofStrDTO
+     * @return
+     */
+    public ProofStr addOrUpdate(ProofStrDTO proofStrDTO) {
+        ProofStr proofStr = new ProofStr();
+        proofStr.setProofStr(proofStrDTO.getProofStr());
+        proofStr.setFeatureId(proofStrDTO.getFeatureId());
+        proofStr.setRightSort(proofStrDTO.getRightSort());
+        proofStr.setReportId(proofStrDTO.getReportId());
+        proofStr.setId(proofStrDTO.getProofStrId());
+        proofStr.setCompareFileId(proofStrDTO.getCompareFileId());
+        proofStr.insertOrUpdate();
+        return proofStr;
+    }
+
+    public String deleteProofStr(List<Integer> ids) {
+        try {
+            if(ids==null||ids.size()==0){
+                return Response.error("请选择无效证据");
+            }
+          this.removeByIds(ids);
+            LambdaQueryWrapper<Arguments> argumentsWrapper=new LambdaQueryWrapper<>();
+            argumentsWrapper.in(Arguments::getProofStrId,ids);
+            argumentsService.remove(argumentsWrapper);
+            return Response.success("删除无效证据成功");
+        }
+        catch (Exception e){
+            return Response.error("删除无效证据失败");
+        }
+    }
+}

+ 15 - 14
RMS/src/main/java/cn/cslg/report/service/business/ReportService.java

@@ -11,12 +11,11 @@ import cn.cslg.report.entity.*;
 import cn.cslg.report.entity.asso.AssoReportFile;
 import cn.cslg.report.entity.asso.AssoReportPerson;
 import cn.cslg.report.entity.invalidReReport.InvalidReReport;
-import cn.cslg.report.entity.invalidReReport.InvalidReason;
 import cn.cslg.report.exception.XiaoShiException;
 import cn.cslg.report.mapper.ReportMapper;
 import cn.cslg.report.service.*;
 import cn.cslg.report.service.business.InvalidReReport.InvalidReReportService;
-import cn.cslg.report.service.business.InvalidReReport.InvalidReasonService;
+import cn.cslg.report.service.business.InvalidReReport.InvalidReasonFieldService;
 import cn.cslg.report.service.business.asso.AssoReportPersonService;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -68,8 +67,7 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
     private final IAssoEventReportService assoEventReportService;
     private final IFollowUpService followUpService;
     private final InvalidReReportService invalidReReportService;
-    private final InvalidReasonService invalidReasonService;
-
+    private final InvalidReasonFieldService invalidReasonFieldService;
     private Report loadReport(ReportDTO reportDto) {
         Report report = new Report();
         //装载基本信息
@@ -131,7 +129,7 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
     @Transactional(rollbackFor = Exception.class)
     public Integer addReport(ReportDTO reportDto, List<MultipartFile> files) throws IOException {
         //侵权/回避报告,若状态不是审核/完成,则直接将报告状态置为2(处理中)
-        if (reportDto.getType().equals(4) || reportDto.getType().equals(5) || reportDto.getType().equals(7)) {
+        if (reportDto.getType().equals(4) || reportDto.getType().equals(5)||reportDto.getType().equals(7)) {
             if (reportDto.getStatus() != null && reportDto.getStatus() != 0 && reportDto.getStatus() != 3) {
                 reportDto.setStatus(2);
             }
@@ -184,7 +182,13 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
                 }
             }
         } else {
-            reportFieldService.addDefaultField(report.getId(), report.getType());
+            if(report.getType()!=7) {
+                reportFieldService.addDefaultField(report.getId(), report.getType());
+            }
+            else {
+                invalidReasonFieldService.addDefault(report.getId());
+
+            }
         }
 
         Integer reportId = report.getId();
@@ -476,9 +480,6 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
         compareMessageService.deleteByreportID(id);
         //TODO 当时无效应对报告时
 
-        //删除与报告关联的表数据
-        //删除无效理由表数据
-        invalidReasonService.remove(new LambdaQueryWrapper<InvalidReason>().eq(InvalidReason::getReportId, id));
 
         Boolean dele = this.removeById(id);
         if (dele == true) {
@@ -713,20 +714,20 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
     }
 
     /**
+     * @autor 谢翔
      * @param ReportId
      * @return
-     * @autor 谢翔
      */
     public ReportDeVO reReportDetail(Integer reportId) {
         ReportDeVO reportDeVO = new ReportDeVO();
         //检测传入参数合法性
-        if (reportId == null && reportId <= 0) {
+        if(reportId == null && reportId <=0){
             throw new XiaoShiException("传入参数异常");
         }
         //根据报告id获得报告
         Report report = this.getById(reportId);
         //若根据报告id未获取到报告返回空
-        if (report == null) {
+        if(report == null){
             return null;
         }
         List<Report> reports = new ArrayList<>();
@@ -736,11 +737,11 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
             List<Report> reports1 = this.reportData(reports);
             Report report1 = reports1.get(0);
             //若报告为无效应对报告则从无效应对报告表中获得无效对应报告拓展信息
-            if (report1.getType().equals(7)) {
+            if(report1.getType().equals(7)){
                 LambdaQueryWrapper<InvalidReReport> queryWrapper = new LambdaQueryWrapper<>();
                 queryWrapper.eq(InvalidReReport::getReportId, report1.getId());
                 InvalidReReport invalidReReport = invalidReReportService.getOne(queryWrapper);
-                if (invalidReReport == null) {
+                if(invalidReReport == null){
                     throw new XiaoShiException("未查询到无效应对报告信息");
                 }
                 //装载报告信息,无效对应报告拓展信息到ReportDeDTO并返回

+ 0 - 1
RMS/src/main/resources/application.yml

@@ -13,7 +13,6 @@ spring:
   thymeleaf:
     cache: false
     mode: HTML5
-
   mvc:
     pathmatch:
       matching-strategy: ant_path_matcher