xiexiang 2 éve
szülő
commit
b083a665cb

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

@@ -18,9 +18,9 @@ public class CheckReFeaturesDTO {
     private Integer reportId;
 
     /**
-     * 权要id
+     * 权要排序
      */
-    private Integer rightId;
+    private Integer rightSort;
 
     /**
      * 特征内容和位置集合

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

@@ -21,7 +21,7 @@ public class InvalidReasonDTO {
     private Integer reportId;
 
     /**
-     * 涉及内容(0为说明书,其他为权要id
+     * 涉及内容(-1为说明书,其他为权要排序)
      */
     private Integer content;
 

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

@@ -6,6 +6,7 @@ import java.util.List;
 
 @Data
 public class ProofGroupVO {
+    private Integer id;
     /**
      * 无效理由id
      */

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

@@ -0,0 +1,80 @@
+package cn.cslg.report.common.model.vo.invalidReReport;
+
+import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonDTO;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/7/5
+ */
+@Data
+public class QueryInvalidReasonVO {
+    /**
+     * 主键
+     */
+    private Integer id;
+
+    /**
+     * 无效理由
+     */
+    private Integer invalidName;
+
+    /**
+     * 涉及内容
+     */
+    private Integer content;
+
+    /**
+     * 陈述意见
+     */
+    private String argument_str;
+
+    /**
+     * 复审委意见
+     */
+    private String comOptions;
+
+    /**
+     * 法院意见
+     */
+    private String courtOptions;
+
+    /**
+     * 相关证据
+     */
+    private String proofStr;
+
+    /**
+     * 证据组合
+     */
+    private List<QueryInvalidReasonVO.proofGroupIn> proofGroups;
+
+
+    @Data
+    public static class proofGroupIn{
+        /**
+         * groupId
+         */
+        private Integer id;
+
+        /**
+         * 无效理由id
+         */
+        private Integer invalidReasonId;
+
+        /**
+         * 描述
+         */
+        private String description;
+
+        /**
+         * 陈述意见
+         */
+        private String argument_str;
+
+        private List<Integer> proofIds;
+    }
+}

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

@@ -70,8 +70,8 @@ public class FeatureController {
 
     @RequestMapping(value = "/getRights", method = RequestMethod.GET)
     @Operation(summary = "获得权要")
-    public String getRights(String patentNO) throws IOException {
-        return Response.success(featureService.getRightNames(patentNO));
+    public String getRights(String patentNo) throws IOException {
+        return Response.success(featureService.getRightNames(patentNo));
     }
 
 
@@ -82,7 +82,6 @@ public class FeatureController {
         if (!flag) {
             return Response.error();
         }
-
         return Response.success();
     }
 

+ 10 - 5
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.ShareReportDTO;
 import cn.cslg.report.common.model.dto.invalidReReport.CheckReFeaturesDTO;
 import cn.cslg.report.common.model.dto.invalidReReport.InvalidReasonDTO;
+import cn.cslg.report.common.model.vo.invalidReReport.QueryInvalidReasonVO;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.entity.invalidReReport.InvalidReason;
 import cn.cslg.report.service.business.InvalidReReport.InvalidReasonService;
@@ -51,22 +52,26 @@ public class InvalidReasonController {
         } else {
             return Response.error("参数不能为空");
         }
-
     }
 
-
     @Operation(summary = "更新无效理由和证据")
     @PostMapping("/updateInvalidReason")
     public String updateInvalidReason(@RequestBody InvalidReasonDTO invalidReasonDTO) throws IOException {
 
         return Response.success();
     }
+
     @Operation(summary = "查找无效理由和证据")
     @GetMapping("/queryInvalidReason")
-    public String queryInvalidReason(int reportId) throws IOException {
-
-        return Response.success();
+    public String queryInvalidReason(Integer reportId) throws IOException {
+        if(reportId != null && reportId > 0) {
+            List<QueryInvalidReasonVO> queryInvalidReasonVOS = invalidReasonService.queryInvalidReason(reportId);
+            return Response.success(queryInvalidReasonVOS);
+        } else {
+            return Response.error("参数不能为空");
+        }
     }
+
     @Operation(summary = "查询无效理由和证据详情")
     @PostMapping("/queryInvalidReasonDetail")
     public String queryInvalidReasonDetail(@RequestBody InvalidReasonDTO InvalidReasonDTO) throws IOException {

+ 2 - 2
RMS/src/main/java/cn/cslg/report/mapper/FeatureMapper.java

@@ -17,8 +17,8 @@ public interface FeatureMapper extends BaseMapper<Features> {
     /**
      * 查询特征内容以及位置
      * @param reportId
-     * @param rightId
+     * @param rightSort
      * @return
      */
-    List<QueryAllFeaturesVO> queryAllFeatures(Integer reportId, Integer rightId);
+    List<QueryAllFeaturesVO> queryAllFeatures(Integer reportId, Integer rightSort);
 }

+ 6 - 0
RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/InvalidReasonMapper.java

@@ -1,8 +1,12 @@
 package cn.cslg.report.mapper.InvalidReReport;
 
+import cn.cslg.report.common.model.vo.invalidReReport.QueryInvalidReasonVO;
 import cn.cslg.report.entity.invalidReReport.InvalidReReport;
 import cn.cslg.report.entity.invalidReReport.InvalidReason;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
 
 /**
  * 无效应对报告的Mapper层接口
@@ -10,5 +14,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @Author chenyu
  * @Date 2023/7/3
  */
+@Repository
 public interface InvalidReasonMapper extends BaseMapper<InvalidReason> {
+    
 }

+ 153 - 82
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/InvalidReasonService.java

@@ -4,11 +4,17 @@ import cn.cslg.report.common.model.dto.ShareReportDTO;
 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.vo.PersonnelVO;
+import cn.cslg.report.common.model.vo.invalidReReport.ProofGroupVO;
 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;
 import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.report.entity.Features;
 import cn.cslg.report.entity.Report;
 import cn.cslg.report.entity.invalidReReport.AssoPositionFeatures;
+import cn.cslg.report.entity.invalidReReport.AssoProofGroup;
 import cn.cslg.report.entity.invalidReReport.InvalidReason;
 import cn.cslg.report.entity.invalidReReport.ProofGroup;
 import cn.cslg.report.exception.XiaoShiException;
@@ -36,8 +42,11 @@ import java.util.stream.Collectors;
 public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, InvalidReason> {
     private final ReportService reportService;
     private final AssoPositionFeaturesService assoPositionFeaturesService;
+    private final AssoProofGroupService assoProofGroupService;
     private final FeatureMapper featureMapper;
     private final ProofGroupService proofGroupService;
+    private final CacheUtils cacheUtils;
+    private final LoginUtils loginUtils;
 
     /**
      * 判断特征是否有重复的方法
@@ -45,7 +54,7 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
      */
     public Boolean checkReFeatures(CheckReFeaturesDTO checkReFeaturesDTO){
         //查出表中制定报告和权要的全部特征内容和位置
-         List<QueryAllFeaturesVO> queryAllFeaturesVOS = featureMapper.queryAllFeatures(checkReFeaturesDTO.getReportId(), checkReFeaturesDTO.getRightId());
+         List<QueryAllFeaturesVO> queryAllFeaturesVOS = featureMapper.queryAllFeatures(checkReFeaturesDTO.getReportId(), checkReFeaturesDTO.getRightSort());
         //List<QueryAllFeaturesVO> list = queryAllFeaturesVOS.stream().sorted(Comparator.comparing(QueryAllFeaturesVO::getPosition)).collect(Collectors.toList());
         //取出需要插入的特征内容和位置
         List<InvalidReasonDTO.featuresIn> features = checkReFeaturesDTO.getFeatures();
@@ -65,7 +74,7 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
                     map.put(position, length);
                 }
             } else {
-                throw new XiaoShiException("未查询到位置");
+                return false;
             }
         }
         //遍历装载需要插入的特征内容和位置
@@ -91,15 +100,15 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
             //前面一个特征内容的初始位置
             Integer preFeaInitialPos = index > 0 ? positions.get(index - 1) : -1;
             //前面一个特征内容的长度
-            Integer preLength = map.get(preFeaInitialPos);
+            Integer preLength = index > 0 ? map.get(preFeaInitialPos) : -1;
             //前面一个特征的末尾位置
             Integer preEndPosition = preFeaInitialPos + preLength -1;
             //后面一个特征内容的初始位置
             Integer nextFeaInitialPos = index < positions.size() - 1 ? positions.get(index + 1) : -1;
             //判断是否与前面一个特征内容重复(前面一个特征内容的末尾位置如果比插入的特征内容的初始位置大,则重复了)
-            if(preEndPosition > featuresIn.getPosition()){
+            if(index > 0 && preEndPosition > featuresIn.getPosition()){
                 return false;
-            } else if(endPosition > nextFeaInitialPos){//判断是否与后面一个特征内容重复(如果插入的特征内容的末尾位置,比后面一个特征内容的初始位置大,则重复)
+            } else if( index < (positions.size() - 1) && endPosition > nextFeaInitialPos){//判断是否与后面一个特征内容重复(如果插入的特征内容的末尾位置,比后面一个特征内容的初始位置大,则重复)
                 return false;
             }
         }
@@ -117,88 +126,86 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
         InvalidReason invalidReason = new InvalidReason();
         //判断invalidName的类型
         Integer invalidName = invalidReasonDTO.getInvalidName();
-        //若类型为1,则为说明书公开不充分
-        //涉及内容为说明书,手动输入无效证据
-        if(invalidName.equals(1)) {
+        if(invalidName.equals(1)) {//若类型为1,则为说明书公开不充分,涉及内容为说明书,手动输入无效证据
             BeanUtils.copyProperties(invalidReasonDTO, invalidReason);
+            //获取当前登陆人信息
+            PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            invalidReason.setCreateId(personnelVO.getId());
             invalidReason.insert();
-        }
-        //若类型为0、2、3
-        if(invalidReasonDTO.getInvalidName().equals(0) || invalidReasonDTO.getInvalidName().equals(2) || invalidReasonDTO.getInvalidName().equals(3)) {
-            //则选择特征不能为空
-            if (invalidReasonDTO.getFeatures() != null) {
-                //若类型为0,则为“权利要求不清楚”,需要选择涉及内容(content)并输入相关证据(proofStr)
-                if(invalidName.equals(0)){
-                    if(invalidReasonDTO.getProofStr() != null && invalidReasonDTO.getProofStr() != ""){
-                        //复制DTO类字段到InvalidReason实体类并保存入库
-                        BeanUtils.copyProperties(invalidReasonDTO, invalidReason);
-                        invalidReason.insert();
-                    } else {
-                        return Response.error("相关证据不能为空");
+        } else if(invalidName.equals(0)){//若类型为0,则为“权利要求不清楚”,需要选择涉及内容(content)并输入相关证据(proofStr)
+            if(invalidReasonDTO.getProofStr() != null && invalidReasonDTO.getProofStr() != ""){
+                //复制DTO类字段到InvalidReason实体类并保存入库
+                BeanUtils.copyProperties(invalidReasonDTO, invalidReason);
+                //获取当前登陆人信息
+                PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+                invalidReason.setCreateId(personnelVO.getId());
+                invalidReason.insert();
+                //判断是否传入特征集合
+                if(invalidReasonDTO.getFeatures() != null && invalidReasonDTO.getFeatures().size() > 0) {
+                    //若类型为0检查features是否有交集(根据位置和字符串长度判断)若有则返回
+                    Features features = new Features();
+                    //特征内容
+                    List<InvalidReasonDTO.featuresIn> featuresIns = invalidReasonDTO.getFeatures();
+                    //检查特征内容是否有交集(根据位置和字符串长度判断)若有则返回
+                    CheckReFeaturesDTO checkReFeaturesDTO = new CheckReFeaturesDTO();
+                    checkReFeaturesDTO.setReportId(invalidReasonDTO.getReportId());
+                    checkReFeaturesDTO.setRightSort(invalidReasonDTO.getContent());
+                    checkReFeaturesDTO.setFeatures(featuresIns);
+                    Boolean isFlag = this.checkReFeatures(checkReFeaturesDTO);
+                    if (isFlag == false) {
+                        return Response.error("特征内容重复");
                     }
-                } else if(invalidName.equals(2) || invalidName.equals(3)){//若类型为2,3则proofGroups不能为空
-                    if(invalidReasonDTO.getProofGroups()!= null){
-                        //复制DTO类字段到InvalidReason实体类并保存入库
-                        BeanUtils.copyProperties(invalidReasonDTO, invalidReason);
-                        invalidReason.insert();
-                        //根据proofGroups保存proofGroup
-                        List<ProofGroupDTO> proofGroupDTOS = new ArrayList<>();
-                        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
-                        }
-                        proofGroupService.addProofGroup(proofGroupDTOS);
-                    } else {
-                        return Response.error("证据组合不能为空");
+                    //标的专利号,权要id,特征内容,报告id
+                    //通过报告id查询标的专利号
+                    Integer reportId = invalidReasonDTO.getReportId();
+                    LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper<>();
+                    queryWrapper.select(Report::getSignPatentNo);
+                    queryWrapper.eq(Report::getId, reportId);
+                    Report report = reportService.getOne(queryWrapper);
+                    features.setSignPatentNo(report.getSignPatentNo());
+                    //权要id(DTO类的content字段)
+                    features.setRightId(invalidReasonDTO.getContent());
+                    //报告id
+                    features.setReportId(reportId);
+                    //遍历特征内容集合,保存到表(类型为0)
+                    for (int i = 0; i < featuresIns.size(); i++) {
+                        //若类型为0,2,3保存到特征表
+                        InvalidReasonDTO.featuresIn featuresIn = featuresIns.get(i);
+                        features.setContent(featuresIn.getFeatureStr());
+                        features.insert();
+                        //若类型为0,2,3保存到特征与位置关联表(特征id,位置)
+                        AssoPositionFeatures assoPositionFeatures = new AssoPositionFeatures();
+                        assoPositionFeatures.setFeaturesID(features.getId());
+                        assoPositionFeatures.setPosition(featuresIn.getPosition());
+                        assoPositionFeatures.insert();
                     }
                 }
-                //若类型为0,2,3检查features是否有交集(根据位置和字符串长度判断)若有则返回
-                Features features = new Features();
-                //特征内容
-                List<InvalidReasonDTO.featuresIn> featuresIns = invalidReasonDTO.getFeatures();
-                //检查特征内容是否有交集(根据位置和字符串长度判断)若有则返回
-                CheckReFeaturesDTO checkReFeaturesDTO = new CheckReFeaturesDTO();
-                checkReFeaturesDTO.setReportId(invalidReasonDTO.getReportId());
-                checkReFeaturesDTO.setRightId(invalidReasonDTO.getContent());
-                checkReFeaturesDTO.setFeatures(featuresIns);
-                Boolean isFlag = this.checkReFeatures(checkReFeaturesDTO);
-                if (isFlag == false) {
-                    return Response.error("特征内容重复");
-                }
-                //标的专利号,权要id,特征内容,报告id
-                //通过报告id查询标的专利号
-                Integer reportId = invalidReasonDTO.getReportId();
-                LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper<>();
-                queryWrapper.select(Report::getSignPatentNo);
-                queryWrapper.eq(Report::getId, reportId);
-                Report report = reportService.getOne(queryWrapper);
-                features.setSignPatentNo(report.getSignPatentNo());
-                //权要id(DTO类的content字段)
-                features.setRightId(invalidReasonDTO.getContent());
-                //报告id
-                features.setReportId(reportId);
-                //遍历特征内容集合,保存到表(类型为0,2,3都可以)
-                for (int i = 0; i < featuresIns.size(); i++) {
-                    //若类型为0,2,3保存到特征表
-                    InvalidReasonDTO.featuresIn featuresIn = featuresIns.get(i);
-                    features.setContent(featuresIn.getFeatureStr());
-                    features.insert();
-                    //若类型为0,2,3保存到特征与位置关联表(特征id,位置)
-                    AssoPositionFeatures assoPositionFeatures = new AssoPositionFeatures();
-                    assoPositionFeatures.setFeaturesID(features.getId());
-                    assoPositionFeatures.setPosition(featuresIn.getPosition());
-                    assoPositionFeatures.insert();
+            } else {
+                return Response.error("相关证据不能为空");
+            }
+        } else if(invalidName.equals(2) || invalidName.equals(3)){//若类型为2,3则proofGroups不能为空
+            if(invalidReasonDTO.getProofGroups()!= null){
+                //复制DTO类字段到InvalidReason实体类并保存入库
+                BeanUtils.copyProperties(invalidReasonDTO, invalidReason);
+                //获取当前登陆人信息
+                PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+                invalidReason.setCreateId(personnelVO.getId());
+                invalidReason.insert();
+                //根据proofGroups保存proofGroup
+                List<ProofGroupDTO> proofGroupDTOS = new ArrayList<>();
+                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
                 }
+                proofGroupService.addProofGroup(proofGroupDTOS);
             } else {
-                return Response.error("选择特征不能为空");
+                return Response.error("证据组合不能为空");
             }
-            return Response.success("添加成功");
-        } else {
-            throw new XiaoShiException("未知无效理由类型");
         }
+        return Response.success("添加成功");
     }
 
     /**
@@ -244,18 +251,82 @@ public class InvalidReasonService extends ServiceImpl<InvalidReasonMapper, Inval
     }
 
     /**
-     * 更新无效理由和证据
+     * 查找无效理由和证据列表
      * @param
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
-    public  String queryInvalidReason(int reportId) {
+    public List<QueryInvalidReasonVO> queryInvalidReason(Integer reportId) {
+        List<QueryInvalidReasonVO> queryInvalidReasonVOS = new ArrayList<>();
         //根据报告id查询无效理由
-        ///若类型为2,3则查询证据组合和特征并装载
-        return Response.success();
+        LambdaQueryWrapper<InvalidReason> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(InvalidReason::getReportId,reportId);
+        List<InvalidReason> invalidReasons = this.list(queryWrapper);
+        for(InvalidReason invalidReason:invalidReasons) {
+            QueryInvalidReasonVO queryInvalidReasonVO = new QueryInvalidReasonVO();
+            BeanUtils.copyProperties(invalidReason,queryInvalidReasonVO);
+            queryInvalidReasonVOS.add(queryInvalidReasonVO);
+        }
+        this.loadInvalidReason(queryInvalidReasonVOS);
 
+
+
+        return queryInvalidReasonVOS;
     }
 
+    /**
+     * 把无效理由集合装载到要返回的列表集合中
+     * @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查询出所有的证据组合
+        LambdaQueryWrapper<ProofGroup> queryWrapper1 = new LambdaQueryWrapper<>();
+        queryWrapper1.in(ProofGroup::getInvalidReasonId, invalidReasonsIds);
+        List<ProofGroup> proofGroups = proofGroupService.list(queryWrapper1);
+        //由于查出来的proofGroups中没有proofIds这个字段,于是采用下面的方法装载成proofGroupVOS
+        List<QueryInvalidReasonVO.proofGroupIn> proofGroupIns = this.loadProofGroupVO(proofGroups);
+        for(QueryInvalidReasonVO queryInvalidReasonVO:queryInvalidReasonVOS){
+
+        }
+        return queryInvalidReasonVOS;
+    }
+
+    /**
+     * 把查出来的所有证据组合实体类集合转成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
+        //首先批量查出来所有的证据和证据组合关联对象
+        LambdaQueryWrapper<AssoProofGroup> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(AssoProofGroup::getGroupId, proofGroupIds);
+        List<AssoProofGroup> 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());
+            proofGroupIn.setProofIds(proofIds);
+            proofGroupIns.add(proofGroupIn);
+        }
+        return proofGroupIns;
+    }
+
+
     public String queryInvalidReasonDetail(@RequestBody ShareReportDTO shareReportDTO) throws IOException {
         //根据报告id查询无效理由
         ///若类型为2,3则查询证据组合和特征并装载

+ 1 - 1
RMS/src/main/resources/mapper/FeatureMapper.xml

@@ -23,6 +23,6 @@
     </resultMap>
 
     <select id="queryAllFeatures" resultMap="queryAllFeaturesResultMap">
-        SELECT a.CONTENT, b.POSITION FROM FEATURES a LEFT JOIN ASSO_POSITION_FEATURES b ON a.ID = b.FEATURES_ID WHERE REPORT_ID = #{reportId} AND RIGHT_ID = #{rightId};
+        SELECT a.CONTENT, b.POSITION FROM FEATURES a LEFT JOIN ASSO_POSITION_FEATURES b ON a.ID = b.FEATURES_ID WHERE REPORT_ID = #{reportId} AND RIGHT_ID = #{rightSort};
     </select>
 </mapper>