Browse Source

bug修改 2022/12/14

lwhhszx 2 years ago
parent
commit
483795dee5

+ 5 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/CompareScenariosVO.java

@@ -30,6 +30,11 @@ public class CompareScenariosVO {
      * 常识特征id集合
      */
     private List<Integer>  featuresIDList;
+
+    /**
+     * 常识特征集合
+     */
+    private List<Features>  featuresList;
     /**
      * 对比记录id集合,featuresID
      */

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

@@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.List;
 
 @Tag(name = "对比记录")
@@ -33,8 +34,8 @@ public class CompareRecordsController {
     }
     @RequestMapping(value = "/deleCompareRecords", method = RequestMethod.GET)
     @Operation(summary = "删除对比记录数据")
-    public String deleCompareRecords(int id) throws IOException{
-        return compareRecordsService.deleCompareRecords(id);
+    public String deleCompareRecords(Integer id) throws IOException{
+        return compareRecordsService. deleCompareRecords(Arrays.asList(id));
     }
 
     @PostMapping(value = "/updateCompareRecords")

+ 0 - 1
RMS/src/main/java/cn/cslg/report/controller/PatentFiledController.java

@@ -96,7 +96,6 @@ public class PatentFiledController {
         return Response.success(reportFieldService.getPatentQuerySourcePageList(params));
     }
 
-    @GetMapping("/getPatentField")
     @Operation(summary ="模糊查询自定义字段")
     public String getPatentField( int filedId ,String name)throws IOException{
       return reportFieldService.getReportField(filedId, name);

+ 0 - 2
RMS/src/main/java/cn/cslg/report/controller/ReviewHistoryController.java

@@ -42,9 +42,7 @@ public class ReviewHistoryController {
             return Response.success();
         }
         return Response.error();
-
     }
-
     @GetMapping(value = "/deleReviewHistory")
     @Operation(summary = "删除审查历史")
     public String deleReviewHistory(int id) throws IOException {

+ 23 - 3
RMS/src/main/java/cn/cslg/report/service/business/AssoRecordsFeatureService.java

@@ -1,10 +1,12 @@
 package cn.cslg.report.service.business;
 
 
+import cn.cslg.report.entity.AssoScenarIOS;
 import cn.cslg.report.entity.asso.AssoRecordsFeature;
 
 import cn.cslg.report.mapper.AssoRecordsFeatureMapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -12,13 +14,31 @@ 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 AssoRecordsFeatureService extends ServiceImpl<AssoRecordsFeatureMapper, AssoRecordsFeature> {
-
-
-
+    private final AssoScenarIOSService assoScenarIOSService;
+
+    /**
+     *
+     * @param AssoFRIds  特征记录关联Id
+     * @return 是否删除成功
+     * @autor lrj
+     */
+ public Boolean deleleAssos(List<Integer> AssoFRIds){
+     //根据特征记录的关联Id 删除方案和特征记录关联表信息
+     if(AssoFRIds!=null&&AssoFRIds.size()!=0) {
+         LambdaQueryWrapper<AssoScenarIOS> queryWrapper = new LambdaQueryWrapper<>();
+         queryWrapper.in(AssoScenarIOS::getFeatureRecordID, AssoFRIds);
+         assoScenarIOSService.remove(queryWrapper);
+         //删除特征记录关联表信息
+         return this.removeByIds(AssoFRIds);
+     }
+return  true;
+ }
 
 }

+ 29 - 6
RMS/src/main/java/cn/cslg/report/service/business/CompareRecordsService.java

@@ -60,11 +60,29 @@ public class CompareRecordsService extends ServiceImpl<CompareRecordsMapper, Com
      * @return
      * @throws IOException
      */
-    public String deleCompareRecords(int id) throws IOException {
-        this.removeById(id);
+    @Transactional(rollbackFor = Exception.class)
+    public String deleCompareRecords(List<Integer> ids) throws IOException {
+        // 根据对比记录Id 获得对比记录特征关联Id
+        LambdaQueryWrapper<AssoRecordsFeature> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.in(AssoRecordsFeature::getRecordsId,ids);
+        List<AssoRecordsFeature> assoRecordsFeatures = assoRecordsFeatureService.list(queryWrapper);
+        List<Integer> assoIds=assoRecordsFeatures.stream().map(AssoRecordsFeature::getId).collect(Collectors.toList());
+        //删除关联信息
+        assoRecordsFeatureService.deleleAssos(assoIds);
+        //根据对比记录Id 删除对比记录
+        this.removeByIds(ids);
+        //
         return Response.success();
     }
 
+    /**
+     *
+     * @param compareRecord
+     * @param files
+     * @return
+     * @throws IOException
+     * @autor lrj
+     */
     @Transactional(rollbackFor = Exception.class)
     public String updateCompareRecords(CompareRecords compareRecord,List<MultipartFile> files) throws IOException {
         if (files != null && files.size() != 0) {
@@ -72,12 +90,18 @@ public class CompareRecordsService extends ServiceImpl<CompareRecordsMapper, Com
             List<String> fileNames = reportFileService.uploadFilesGetName(files);
             compareRecord.setFilePath(fileNames.get(0));
         }
+        List<AssoRecordsFeature> assoRecordsFeatures = compareRecord.getAssoRecordsFeatures();
+        List<Integer> nowIds =assoRecordsFeatures.stream().filter(item->item.getId()!=null).map(AssoRecordsFeature::getId).collect(Collectors.toList());
+        //删除原本的记录-特征关联关系
         LambdaQueryWrapper<AssoRecordsFeature> queryWrapper =new LambdaQueryWrapper<>();
         queryWrapper.eq(AssoRecordsFeature::getRecordsId,compareRecord.getId());
-        assoRecordsFeatureService.remove(queryWrapper);
-        List<AssoRecordsFeature> assoRecordsFeatures = compareRecord.getAssoRecordsFeatures();
+        List<AssoRecordsFeature> assoRecordsFeature  = assoRecordsFeatureService.list(queryWrapper);
+        List<Integer> assoIds=assoRecordsFeature.stream().map(AssoRecordsFeature::getId).collect(Collectors.toList());
+        assoIds.removeAll(nowIds);
+        assoRecordsFeatureService.deleleAssos(assoIds);
+        //添加新的特征记录关联关系
         assoRecordsFeatures.forEach(item -> item.setRecordsId(compareRecord.getId()));
-        assoRecordsFeatureService.saveBatch(assoRecordsFeatures);
+        assoRecordsFeatureService.saveOrUpdateBatch(assoRecordsFeatures);
         compareRecord.updateById();
         return Response.success();
     }
@@ -145,7 +169,6 @@ public class CompareRecordsService extends ServiceImpl<CompareRecordsMapper, Com
              compareFiles =compareFilesService.list(lambdaQueryWrapper);
 
         }
-
         Map<String,Object> map =new HashMap<>();
         map.put("tableHeader",compareFiles);
         map.put("records",compareRecords);

+ 9 - 1
RMS/src/main/java/cn/cslg/report/service/business/CompareScenariosService.java

@@ -93,7 +93,7 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
             compareScenariosVO.setReportId(a.getReportId());
             compareScenariosVO.setSignPatentNo(  a.getSignPatentNo());
             compareScenariosVO.setRight(a.getRightName());
-            //根据对比方案ID获得s所有对比方案和对比记录关联信息
+            //根据对比方案ID获得所有对比方案和对比记录关联信息
             List<AssoScenarIOS> select = assoScenarIOSService.select(a.getId());
             //获得Id不为0的对比记录和特征关联Id
             List<Integer> featureRecordIds = select.stream().filter(item->item.getFeatureRecordID()!=0).map(AssoScenarIOS::getFeatureRecordID).collect(Collectors.toList());
@@ -126,6 +126,14 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
             );
             //过滤拿到特征id
            List<Integer> featuresIds =select.stream().filter(item->item.getFeatureRecordID().equals(0)).map(AssoScenarIOS::getFeaturesID).collect(Collectors.toList());
+            //根据特征Id查询特征
+            List<Features> featuresList =new ArrayList<>();
+            if(featuresIds!=null) {
+                LambdaQueryWrapper<Features> wrapper4 = new LambdaQueryWrapper<>();
+                wrapper4.in(Features::getId,featuresIds);
+                featuresList=featureService.list(wrapper4);
+            }
+            compareScenariosVO.setFeaturesList(featuresList);
             compareScenariosVO.setFeaturesIDList(featuresIds);
             compareScenariosVO.setAssoRecordsFeatures(assoRecordsFeatures);
          list.add(compareScenariosVO);

+ 1 - 6
RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java

@@ -250,9 +250,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
      Features featureTO = new Features();
         featureTO.setReportId(reportId);
         featureTO.setSignPatentNo(patentNo);
-        featureTO.setReportId(reportId);
-        featureTO.setSignPatentNo(patentNo);
-        featureTO.setPartnerId(loginUtils.getId());
+        featureTO.setPartnerId(report.getPersonId());
         //查询数据库里是否有查询记录
         List<Features> featureFromDb = this.queryFeatures(featureTO);
         //将拆解的权要和特征装载到对象PatentRightVo
@@ -264,7 +262,6 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
                     int rightId = patentRights.get(i).getId();
                     featuresList = featureFromDb.stream().filter(item -> item.getRightId().equals(rightId)  &&item.getPartnerId().equals(report.getPersonId())).collect(Collectors.toList());
                 }
-
             //装载到对象PatentRightVo
             PatentRightVo patentRightVo = new PatentRightVo();
             String name = "权要" + (i + 1);
@@ -284,9 +281,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         map.put("splitBy", report.getSplitBy());
         map.put("splitType", report.getSplitType());
         return Response.success(map);
-
     }
-
     //根据符号拆分字符串
     public List<String> splitStringByFlags(String sentence, List<String> flags) {
         List<String> sectences = new ArrayList<>();

+ 264 - 231
RMS/src/main/java/cn/cslg/report/service/business/ReportFieldService.java

@@ -1,4 +1,5 @@
 package cn.cslg.report.service.business;
+
 import cn.cslg.report.common.model.vo.PatentField;
 import cn.cslg.report.common.model.vo.PatentQueryFieldSourceVO;
 import cn.cslg.report.common.model.vo.ReportFieldVO;
@@ -38,15 +39,16 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 @SuppressWarnings({"all"})
 public class ReportFieldService extends ServiceImpl<ReportFieldMapper, ReportField> {
- private final ReportFieldMapper reportFieldMapper;
- private  final LoginUtils loginUtils;
- private  final ReportFieldTextService reportFieldTextService;
- private  final ReportFieldOptionService reportFieldOptionService;
- private  final ReportFieldTreeService reportFieldTreeService;
- private  final ReportFieldPatentLinkService reportFieldPatentLinkService;
-private  final  AssoTaskPersonelService assoTaskPersonelService;
+    private final ReportFieldMapper reportFieldMapper;
+    private final LoginUtils loginUtils;
+    private final ReportFieldTextService reportFieldTextService;
+    private final ReportFieldOptionService reportFieldOptionService;
+    private final ReportFieldTreeService reportFieldTreeService;
+    private final ReportFieldPatentLinkService reportFieldPatentLinkService;
+    private final AssoTaskPersonelService assoTaskPersonelService;
     private final ReportFieldService reportFieldService;
-    private ReportField reportField ;
+    private ReportField reportField;
+    private final CompareFilesService compareFilesService;
 
     //增加自定义字段
     public String add(ReportField reportField) {
@@ -59,6 +61,7 @@ private  final  AssoTaskPersonelService assoTaskPersonelService;
         reportField.insert();
         return Response.success(reportField.getId());
     }
+
     //修改自定义字段
     public String edit(ReportField reportField) {
         ReportField temp = this.getProjectFieldByName(reportField.getName(), reportField.getReportId());
@@ -69,28 +72,29 @@ private  final  AssoTaskPersonelService assoTaskPersonelService;
         reportField.updateById();
         return Response.success(true);
     }
+
     //删除自定义字段
-    public String deleteReportId(int reportId, int id){
-        reportFieldMapper.deleteReportId(reportId,id);
-       return Response.success();
+    public String deleteReportId(int reportId, int id) {
+        reportFieldMapper.deleteReportId(reportId, id);
+        return Response.success();
     }
 
-  @Transactional(rollbackFor = Exception.class)
-  public String delete(Integer id) {
-      this.removeById(id);
-      reportFieldTextService.deleteByFieldId(id);
-      reportFieldOptionService.deleteByFieldId(id);
-      reportFieldTreeService.deleteByFieldId(id);
-      reportFieldPatentLinkService.deleteByFieldId(id);
+    @Transactional(rollbackFor = Exception.class)
+    public String delete(Integer id) {
+        this.removeById(id);
+        reportFieldTextService.deleteByFieldId(id);
+        reportFieldOptionService.deleteByFieldId(id);
+        reportFieldTreeService.deleteByFieldId(id);
+        reportFieldPatentLinkService.deleteByFieldId(id);
         return Response.success(true);
-   }
+    }
 
-   //根据报告Id删除自定义字段
+    //根据报告Id删除自定义字段
     @Transactional(rollbackFor = Exception.class)
     public String deleteByReportId(Integer id) {
-        LambdaQueryWrapper<ReportField> queryWrapper =new LambdaQueryWrapper<>();
-        queryWrapper.eq(ReportField::getReportId,id);
-        List<ReportField> reportFields =this.list(queryWrapper);
+        LambdaQueryWrapper<ReportField> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportField::getReportId, id);
+        List<ReportField> reportFields = this.list(queryWrapper);
         reportFieldTextService.deleteByFieldId(id);
         reportFieldOptionService.deleteByFieldId(id);
         reportFieldTreeService.deleteByFieldId(id);
@@ -99,36 +103,36 @@ private  final  AssoTaskPersonelService assoTaskPersonelService;
         return Response.success(true);
     }
 
-   //获得自定义字段列表
-  public String getPageList(ReportFieldVO reportFieldVO){
-      LambdaQueryWrapper<ReportField> queryWrapper = new LambdaQueryWrapper<>();
-      if(reportFieldVO.getReportId()!=null){
-          queryWrapper.eq(ReportField::getReportId,reportFieldVO.getReportId());
-      }
-      if (reportFieldVO.getName() != null) {
-          queryWrapper.like(ReportField::getName, reportFieldVO.getName());
-      }
-      if(reportFieldVO.getReportType()!=null){
-          queryWrapper.like(ReportField::getReportType, reportFieldVO.getReportType());
-          queryWrapper.isNull((ReportField::getReportId));
-      }
-      queryWrapper.orderByDesc(ReportField::getId);
-      if (reportFieldVO.getSize() != null && reportFieldVO.getCurrent() != null) {
-          List<ReportField> reportFields = this.page(new Page<>(reportFieldVO.getCurrent(), reportFieldVO.getSize()), queryWrapper).getRecords();
-          long count = this.count(queryWrapper);
-          return Response.success(reportFields, DataUtils.setPageColumn(reportFieldVO.getSize(), reportFieldVO.getCurrent(), Math.toIntExact(count)));
-      } else {
-          List<ReportField> reportFields = this.list(queryWrapper);
-          return Response.success(reportFields);
-      }
-
-  }
+    //获得自定义字段列表
+    public String getPageList(ReportFieldVO reportFieldVO) {
+        LambdaQueryWrapper<ReportField> queryWrapper = new LambdaQueryWrapper<>();
+        if (reportFieldVO.getReportId() != null) {
+            queryWrapper.eq(ReportField::getReportId, reportFieldVO.getReportId());
+        }
+        if (reportFieldVO.getName() != null) {
+            queryWrapper.like(ReportField::getName, reportFieldVO.getName());
+        }
+        if (reportFieldVO.getReportType() != null) {
+            queryWrapper.like(ReportField::getReportType, reportFieldVO.getReportType());
+            queryWrapper.isNull((ReportField::getReportId));
+        }
+        queryWrapper.orderByDesc(ReportField::getId);
+        if (reportFieldVO.getSize() != null && reportFieldVO.getCurrent() != null) {
+            List<ReportField> reportFields = this.page(new Page<>(reportFieldVO.getCurrent(), reportFieldVO.getSize()), queryWrapper).getRecords();
+            long count = this.count(queryWrapper);
+            return Response.success(reportFields, DataUtils.setPageColumn(reportFieldVO.getSize(), reportFieldVO.getCurrent(), Math.toIntExact(count)));
+        } else {
+            List<ReportField> reportFields = this.list(queryWrapper);
+            return Response.success(reportFields);
+        }
+
+    }
 
     /**
-     * @function 查询自定义自定
      * @param reportId 报告ID
      * @param patentNo 专利号
      * @return
+     * @function 查询自定义自定
      */
     public List<PatentField> getPatentFieldByPatentIdAndProjectId(Integer reportId, String patentNo) {
         List<PatentField> dataList = new ArrayList<>();
@@ -184,10 +188,10 @@ private  final  AssoTaskPersonelService assoTaskPersonelService;
     }
 
     /**
-     * @function 查询自定义字段
-     * @param name 自定义字段的名称
-     * @param reportId  报告id
+     * @param name     自定义字段的名称
+     * @param reportId 报告id
      * @return
+     * @function 查询自定义字段
      */
 
     public ReportField getProjectFieldByName(String name, Integer reportId) {
@@ -197,70 +201,76 @@ private  final  AssoTaskPersonelService assoTaskPersonelService;
         return this.getOne(queryWrapper);
     }
 
-  //给报告添加默认自定义字段
+    //给报告添加默认自定义字段
     public void addDefaultField(Integer reportId, Integer reportType) {
         //根据报告类型添加默认自定义字段
         LambdaQueryWrapper<ReportField> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ReportField::getReportType, reportType);
         queryWrapper.isNull(ReportField::getReportId);
         //默认自定义字段
-        List<ReportField> reportFields =this.list(queryWrapper);
-        if(reportFields!=null&&reportFields.size()!=0)
-        {
-         reportFields.forEach(p->{
-             p.setReportId(reportId);p.setOriginId(p.getId());p.setId(null); p.setCreateName(null);}
-         );
-             reportFieldService.saveBatch(reportFields);
+        List<ReportField> reportFields = this.list(queryWrapper);
+        if (reportFields != null && reportFields.size() != 0) {
+            reportFields.forEach(p -> {
+                        p.setReportId(reportId);
+                        p.setOriginId(p.getId());
+                        p.setId(null);
+                        p.setCreateName(null);
+                    }
+            );
+            reportFieldService.saveBatch(reportFields);
         }
 
-        reportFields.forEach(p->{
-            if(p.getType().equals(1)||p.getType().equals(0)||p.getType().equals(2)){
+        reportFields.forEach(p -> {
+            if (p.getType().equals(1) || p.getType().equals(0) || p.getType().equals(2)) {
 
             }
-            if(p.getType().equals(3)||p.getType().equals(4)||p.getType().equals(5)){
+            if (p.getType().equals(3) || p.getType().equals(4) || p.getType().equals(5)) {
                 //根据自定义字段的ID 从表中查出选项列表
-                 LambdaQueryWrapper<ReportFieldOption> wrapper = new LambdaQueryWrapper<>();
-                 wrapper.eq(ReportFieldOption::getFieldId, p.getOriginId());
-                List<ReportFieldOption> reportFieldOptions =reportFieldOptionService.list(wrapper);
+                LambdaQueryWrapper<ReportFieldOption> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(ReportFieldOption::getFieldId, p.getOriginId());
+                List<ReportFieldOption> reportFieldOptions = reportFieldOptionService.list(wrapper);
 
-                reportFieldOptionService.addBatchs(reportFieldOptions,p.getId());
+                reportFieldOptionService.addBatchs(reportFieldOptions, p.getId());
             }
 
-            if(p.getType().equals(6)){
+            if (p.getType().equals(6)) {
                 LambdaQueryWrapper<ReportFieldTree> wrapper = new LambdaQueryWrapper<>();
-                wrapper.eq(ReportFieldTree::getFieldId,p.getOriginId());
+                wrapper.eq(ReportFieldTree::getFieldId, p.getOriginId());
                 List<ReportFieldTree> list = reportFieldTreeService.list(wrapper);
-                reportFieldTreeService.addBatchs(list,p.getId());
+                reportFieldTreeService.addBatchs(list, p.getId());
 
             }
         });
-        }
+    }
 
 
-    public String getReportField(int reportId,int id){
-        List<ReportField> reportFields = reportFieldMapper.find(reportId,id);
+    public String getReportField(int reportId, int id) {
+        List<ReportField> reportFields = reportFieldMapper.find(reportId, id);
         return Response.success(reportFields);
     }
+
     // 查询自定义字段
-    public ReportField get(int id){
+    public ReportField get(int id) {
         LambdaQueryWrapper<ReportField> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ReportField::getId,id);
-        return  this.list(queryWrapper).get(0);
+        queryWrapper.eq(ReportField::getId, id);
+        return this.list(queryWrapper).get(0);
     }
 
     //修改自定义字段
-    public String updateReportId(ReportField reportField){
+    public String updateReportId(ReportField reportField) {
         reportFieldMapper.updateReportId(reportField);
         return Response.success();
     }
+
     //查询自定义字段
-    public List<ReportField> selectAll(int id)throws IOException{
+    public List<ReportField> selectAll(int id) throws IOException {
         LambdaQueryWrapper<ReportField> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ReportField::getReportId,id);
-       return this.list(queryWrapper);
+        queryWrapper.eq(ReportField::getReportId, id);
+        return this.list(queryWrapper);
 
 
     }
+
     /**
      * 1.接口 根据报告id 查询自定义字段 参数报告id
      * 返回该报告下所有的自定义字段
@@ -271,80 +281,77 @@ private  final  AssoTaskPersonelService assoTaskPersonelService;
         List<ReportField> reportFields = this.selectAll(reportId);
         List<Integer> collect = reportFields.stream().map(ReportField::getReportType).collect(Collectors.toList());
         List<Integer> list = reportFields.stream().map(ReportField::getId).collect(Collectors.toList());
-        for(int i=0;i<list.size();i++){
+        for (int i = 0; i < list.size(); i++) {
             if (collect.get(i).equals(6)) {
-              return Response.success(reportFieldTreeService.getReportFieldTreeNodeByFieldId(list.get(i)));
+                return Response.success(reportFieldTreeService.getReportFieldTreeNodeByFieldId(list.get(i)));
             } else {
-               return Response.success(reportFieldOptionService.getListByFieldId(list.get(i)));
+                return Response.success(reportFieldOptionService.getListByFieldId(list.get(i)));
             }
         }
-          return Response.success();
+        return Response.success();
 
     }
 
     /**
-     * @function 查询自定义字段,统计与之相关的专利的shuliang
      * @param params
      * @return
+     * @function 查询自定义字段,统计与之相关的专利的数量
      */
 
     public List<PatentQueryFieldSourceVO> getPatentQuerySourcePageList(PatentQueryFieldSourceVO params) {
-        List<PatentQueryFieldSourceVO> list =new ArrayList<>();
-
+        List<PatentQueryFieldSourceVO> list = new ArrayList<>();
         //根据fieldId 从patent_field中获得 自定义字段对象
-        LambdaQueryWrapper<ReportField> wrapper =new LambdaQueryWrapper<>();
-        wrapper.eq(ReportField::getId,params.getFieldId());
-        if(this.list(wrapper).size()==0){
+        LambdaQueryWrapper<ReportField> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ReportField::getId, params.getFieldId());
+        if (this.list(wrapper).size() == 0) {
             return list;
         }
-        ReportField reportField =this.list(wrapper).get(0);
-
+        ReportField reportField = this.list(wrapper).get(0);
         //根据自定义字段的类型,从三张值表中查询该自定义字段所有值的id
-         int type1 =reportField.getType();
-        switch (type1){
+        int type1 = reportField.getType();
+        switch (type1) {
             //数字
             case 0:
                 //日期
             case 1:
                 //文本
             case 2:
-                LambdaQueryWrapper<ReportFieldText> queryWrapper =new LambdaQueryWrapper<>();
-                queryWrapper.eq(ReportFieldText::getFieldId,params.getFieldId());
-                List<ReportFieldText> reportFieldTexts =reportFieldTextService.list(queryWrapper);
-               reportFieldTexts.forEach(item->{
-                   PatentQueryFieldSourceVO patentQueryFieldSourceVO=new PatentQueryFieldSourceVO();
-                   patentQueryFieldSourceVO.setFieldId(params.getFieldId());
-                   patentQueryFieldSourceVO.setKey(item.getId());
-                   patentQueryFieldSourceVO.setLabel(item.getText());
-                   list.add(patentQueryFieldSourceVO);
-               });
+                LambdaQueryWrapper<ReportFieldText> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(ReportFieldText::getFieldId, params.getFieldId());
+                List<ReportFieldText> reportFieldTexts = reportFieldTextService.list(queryWrapper);
+                reportFieldTexts.forEach(item -> {
+                    PatentQueryFieldSourceVO patentQueryFieldSourceVO = new PatentQueryFieldSourceVO();
+                    patentQueryFieldSourceVO.setFieldId(params.getFieldId());
+                    patentQueryFieldSourceVO.setKey(item.getId());
+                    patentQueryFieldSourceVO.setLabel(item.getText());
+                    list.add(patentQueryFieldSourceVO);
+                });
                 break;
 
-                //单选
+            //单选
             case 4:
 
                 //多选
             case 5:
-                LambdaQueryWrapper<ReportFieldOption> queryWrapper5 =new LambdaQueryWrapper<>();
-                queryWrapper5.eq(ReportFieldOption::getFieldId,params.getFieldId());
+                LambdaQueryWrapper<ReportFieldOption> queryWrapper5 = new LambdaQueryWrapper<>();
+                queryWrapper5.eq(ReportFieldOption::getFieldId, params.getFieldId());
 
-                List<ReportFieldOption> reportFieldOption =reportFieldOptionService.list(queryWrapper5);
-                reportFieldOption.forEach(item->{
-                    PatentQueryFieldSourceVO patentQueryFieldSourceVO=new PatentQueryFieldSourceVO();
+                List<ReportFieldOption> reportFieldOption = reportFieldOptionService.list(queryWrapper5);
+                reportFieldOption.forEach(item -> {
+                    PatentQueryFieldSourceVO patentQueryFieldSourceVO = new PatentQueryFieldSourceVO();
                     patentQueryFieldSourceVO.setFieldId(params.getFieldId());
                     patentQueryFieldSourceVO.setKey(item.getId());
                     patentQueryFieldSourceVO.setLabel(item.getName());
                     list.add(patentQueryFieldSourceVO);
                 });
                 break;
-
-                //树
+            //树
             case 6:
-                LambdaQueryWrapper<ReportFieldTree> queryWrapper6 =new LambdaQueryWrapper<>();
-                queryWrapper6.eq(ReportFieldTree::getFieldId,params.getFieldId());
-                List<ReportFieldTree> reportFieldTrees =reportFieldTreeService.list(queryWrapper6);
-                reportFieldTrees.forEach(item->{
-                    PatentQueryFieldSourceVO patentQueryFieldSourceVO=new PatentQueryFieldSourceVO();
+                LambdaQueryWrapper<ReportFieldTree> queryWrapper6 = new LambdaQueryWrapper<>();
+                queryWrapper6.eq(ReportFieldTree::getFieldId, params.getFieldId());
+                List<ReportFieldTree> reportFieldTrees = reportFieldTreeService.list(queryWrapper6);
+                reportFieldTrees.forEach(item -> {
+                    PatentQueryFieldSourceVO patentQueryFieldSourceVO = new PatentQueryFieldSourceVO();
                     patentQueryFieldSourceVO.setFieldId(params.getFieldId());
                     patentQueryFieldSourceVO.setKey(item.getId());
                     patentQueryFieldSourceVO.setLabel(item.getName());
@@ -352,50 +359,77 @@ private  final  AssoTaskPersonelService assoTaskPersonelService;
                 });
                 break;
         }
-        List<Integer> valueIds =list.stream().map(PatentQueryFieldSourceVO::getKey).collect(Collectors.toList());
-        LambdaQueryWrapper<ReportFieldPatentLink> lambdaQueryWrapper =new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(ReportFieldPatentLink::getFieldId,params.getFieldId());
-                if(valueIds!=null&&valueIds.size()>0){
-                    lambdaQueryWrapper .in(ReportFieldPatentLink::getOptionId,valueIds);}
-        List<ReportFieldPatentLink> reportFieldPatentLinks =reportFieldPatentLinkService.list(lambdaQueryWrapper);
-        if(reportFieldPatentLinks.size()==0) {
-            list.forEach(item->item.setCount(0));
+        List<Integer> valueIds = list.stream().map(PatentQueryFieldSourceVO::getKey).collect(Collectors.toList());
+        LambdaQueryWrapper<ReportFieldPatentLink> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(ReportFieldPatentLink::getFieldId, params.getFieldId());
+        if (valueIds != null && valueIds.size() > 0) {
+            lambdaQueryWrapper.in(ReportFieldPatentLink::getOptionId, valueIds);
+        }
+        List<ReportFieldPatentLink> reportFieldPatentLinks = reportFieldPatentLinkService.list(lambdaQueryWrapper);
+        if (reportFieldPatentLinks.size() == 0) {
+            list.forEach(item -> item.setCount(0));
             return list;
         }
-        list.forEach(tem->{
-         List<ReportFieldPatentLink> part =reportFieldPatentLinks.stream().filter(tm->tm.getFieldId().equals(params.getFieldId())&&tm.getOptionId().equals(tem.getKey()
+        //获得所有专利号
+        List<String> allNos = new ArrayList<>();
+        // 如果是任务清单
+        if (params.getTaskId() != null) {
+            LambdaQueryWrapper<AssoTaskPersonel> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoTaskPersonel::getTaskId, params.getTaskId());
+            List<AssoTaskPersonel> assoTaskPersonels = assoTaskPersonelService.list(queryWrapper);
+            allNos = assoTaskPersonels.stream().map(AssoTaskPersonel::getPatentNo).collect(Collectors.toList());
+        }
+        //所有对比文件
+        else {
+            LambdaQueryWrapper<CompareFiles> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CompareFiles::getReportId, reportField.getReportId());
+            List<CompareFiles> compareFiles = compareFilesService.list(queryWrapper);
+            allNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
+
+        }
+
+        //记录已被选择的数量
+        Integer choosed=0;
+        for (PatentQueryFieldSourceVO tem:list) {
+            List<ReportFieldPatentLink> part = reportFieldPatentLinks.stream().filter(tm -> tm.getFieldId().equals(params.getFieldId()) && tm.getOptionId().equals(tem.getKey()
             )).collect(Collectors.toList());
-             if(params.getTaskId()!=null){
-                 LambdaQueryWrapper<AssoTaskPersonel> queryWrapper = new LambdaQueryWrapper<>();
-                 queryWrapper.eq(AssoTaskPersonel::getTaskId, params.getTaskId());
-                 List<AssoTaskPersonel> assoTaskPersonels = assoTaskPersonelService.list(queryWrapper);
-                 List<String>  taskPatentNos = assoTaskPersonels.stream().map(AssoTaskPersonel::getPatentNo).collect(Collectors.toList());
-                 List<String> partPatentNos = part.stream().map(ReportFieldPatentLink::getPatentNo).collect(Collectors.toList());
-                 List<String>  jiaoList = new ArrayList<>(taskPatentNos);
-                 jiaoList.retainAll(partPatentNos);
-                 tem.setCount(jiaoList.size());
-             }
-     else{
-         tem.setCount(part.size());}
+            //如果是任务清单列表
+            if (params.getTaskId() != null) {
+                List<String> partPatentNos = part.stream().map(ReportFieldPatentLink::getPatentNo).collect(Collectors.toList());
+                List<String> jiaoList = new ArrayList<>(allNos);
+                jiaoList.retainAll(partPatentNos);
+                tem.setCount(jiaoList.size());
+                choosed += jiaoList.size();
+            } else {
+                tem.setCount(part.size());
+                choosed+=part.size();
+            }
             tem.setType(type1);
-        });
+        }
+        //未选择选项
+        PatentQueryFieldSourceVO patentQueryFieldSourceVO = new PatentQueryFieldSourceVO();
+        patentQueryFieldSourceVO.setFieldId(params.getFieldId());
+        patentQueryFieldSourceVO.setKey(null);
+        patentQueryFieldSourceVO.setLabel("未选择");
+        patentQueryFieldSourceVO.setCount(allNos.size()-choosed);
+        //获得所有未选择的数量
         //根据值id从ReportFieldPatentLink表中获得信息
         return list;
 
     }
 
     /**
-     * @funtion 查询标引内容关联专利
      * @param params
      * @return
      * @throws IOException
+     * @funtion 查询标引内容关联专利
      */
-    public List<String>  getString(SourceVO params)throws IOException{
-        List<String> list =new ArrayList<>();
-        LambdaQueryWrapper<ReportFieldPatentLink> lambdaQueryWrapper =new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(ReportFieldPatentLink::getFieldId,params.getFieldId()).eq(ReportFieldPatentLink::getOptionId,params.getKey());
+    public List<String> getString(SourceVO params) throws IOException {
+        List<String> list = new ArrayList<>();
+        LambdaQueryWrapper<ReportFieldPatentLink> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(ReportFieldPatentLink::getFieldId, params.getFieldId()).eq(ReportFieldPatentLink::getOptionId, params.getKey());
         List<ReportFieldPatentLink> reportFieldPatentLinks = reportFieldPatentLinkService.list(lambdaQueryWrapper);
-        for(ReportFieldPatentLink reportFieldPatentLink : reportFieldPatentLinks){
+        for (ReportFieldPatentLink reportFieldPatentLink : reportFieldPatentLinks) {
             list.add(reportFieldPatentLink.getPatentNo());
         }
 
@@ -406,35 +440,33 @@ private  final  AssoTaskPersonelService assoTaskPersonelService;
     /**
      * 模糊查询自定义字段(参数:自定义字段的id,和模糊查询的字段文本类型)
      * 文本类型,单选,数字类型不用查
+     *
      * @return 返回自定义字段
      */
-    public String getReportField(int id,String name) {
+    public String getReportField(int id, String name) {
 
-        LambdaQueryWrapper<ReportField> wrapper =new LambdaQueryWrapper<>();
-        wrapper.eq(ReportField::getId,id);
-        ReportField reportField =this.list(wrapper).get(0);
+        LambdaQueryWrapper<ReportField> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ReportField::getId, id);
+        ReportField reportField = this.list(wrapper).get(0);
         //获得类型
-        int  type1 =reportField.getType();
-        if(type1==1){
-            LambdaQueryWrapper<ReportFieldText> queryWrapper =new LambdaQueryWrapper<>();
-             queryWrapper.eq(ReportFieldText::getFieldId, id)
+        int type1 = reportField.getType();
+        if (type1 == 1) {
+            LambdaQueryWrapper<ReportFieldText> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(ReportFieldText::getFieldId, id)
                     .like(ReportFieldText::getText, name);
             return Response.success(reportFieldTextService.list(queryWrapper));
-        }
-        else if(type1==5){
-            LambdaQueryWrapper<ReportFieldOption> queryWrapper5 =new LambdaQueryWrapper<>();
-            queryWrapper5.eq(ReportFieldOption::getFieldId,id)
-                    .like(ReportFieldOption::getName,name);
-            return Response.success( reportFieldOptionService.list(queryWrapper5));
-        }
-        else if(type1==6){
-            LambdaQueryWrapper<ReportFieldTree> queryWrapper6 =new LambdaQueryWrapper<>();
-            queryWrapper6.eq(ReportFieldTree::getFieldId,id)
-                    .like(ReportFieldTree::getName,name);
+        } else if (type1 == 5) {
+            LambdaQueryWrapper<ReportFieldOption> queryWrapper5 = new LambdaQueryWrapper<>();
+            queryWrapper5.eq(ReportFieldOption::getFieldId, id)
+                    .like(ReportFieldOption::getName, name);
+            return Response.success(reportFieldOptionService.list(queryWrapper5));
+        } else if (type1 == 6) {
+            LambdaQueryWrapper<ReportFieldTree> queryWrapper6 = new LambdaQueryWrapper<>();
+            queryWrapper6.eq(ReportFieldTree::getFieldId, id)
+                    .like(ReportFieldTree::getName, name);
             return Response.success(reportFieldTreeService.list(queryWrapper6));
-        }
-       else {
-           return Response.error();
+        } else {
+            return Response.error();
         }
     }
 
@@ -442,78 +474,79 @@ private  final  AssoTaskPersonelService assoTaskPersonelService;
      * 自定义字段的id查询专利号
      * 并集:当自定义字段的id相同的时候取并集
      * 交集:当自定义字段的id不同的时候取交集
+     *
      * @param params PatentQueryFieldSourceVO
      * @return PatentQueryFieldSourceVO
      * @throws IOException
      */
 
-     public List<String> getPatentNo(List<SourceVO> params)throws IOException{
+    public List<String> getPatentNo(List<SourceVO> params) throws IOException {
 
-         if(params.size()==0){
-             List<String> list=new ArrayList<>();
-             return list;
-         }
-         else {
+        if (params.size() == 0) {
+            List<String> list = new ArrayList<>();
+            return list;
+        } else {
             return this.getPatentNos(params);
-         }
-
-     }
-     public List<String> getPatentNos(List<SourceVO> params)throws IOException{
-         if(params.size()==1){
-             return this.getString(params.get(0));
-         }
-         return this.gather1(params);
-     }
-     public List<String> gather1 (List<SourceVO> params) throws IOException {
-         //为了求并集
-         List<List<String>> str=new ArrayList<>();
-         //定义新集合保留老集合
-         List<SourceVO> list=new ArrayList<>(params);
-         Map<Integer,List<SourceVO>> map=new HashMap<>();
-         for(int i=0;i<list.size()-1;i++){
-             List<SourceVO> sourceVO=new ArrayList<>();
-             for(int j=0;j<list.size();j++){
-                 if(params.get(i).getFieldId().equals(list.get(j).getFieldId())){
-                     sourceVO.add(list.get(j));
-                     list.remove(list.get(j));
-
-                 }
-             }
-             if(sourceVO.size()!=0){
-                 map.put(i,sourceVO);
-             }
-
-         }
-         if(map.size()!=0){
-             for(List<SourceVO> sourceVOS :map.values()){
-                 List<String> str1=new ArrayList<>();
-                 for(SourceVO sourceVO :sourceVOS){
-                     List<String> string = this.getString(sourceVO);
-                     str1.addAll(string);
-                 }
-                 str1.stream().distinct().collect(Collectors.toList());
-                 str.add(str1);
-             }
-             for(SourceVO sourceVO: list){
-                 List<String> string = this.getString(sourceVO);
-                 str.add(string);
-             }
-
-         }else {
-             for(SourceVO sourceVO: list){
-                 List<String> string = this.getString(sourceVO);
-                 str.add(string);
-             }
-         }
-         List<String> list1 = str.get(0);
-         str.forEach(item -> {
-             list1.retainAll((Collection<?>) item);
-
-         });
-         return list1;
-
-     }
+        }
 
+    }
+
+    public List<String> getPatentNos(List<SourceVO> params) throws IOException {
+        if (params.size() == 1) {
+            return this.getString(params.get(0));
+        }
+        return this.gather1(params);
+    }
+
+    public List<String> gather1(List<SourceVO> params) throws IOException {
+        //为了求并集
+        List<List<String>> str = new ArrayList<>();
+        //定义新集合保留老集合
+        List<SourceVO> list = new ArrayList<>(params);
+        Map<Integer, List<SourceVO>> map = new HashMap<>();
+        for (int i = 0; i < list.size() - 1; i++) {
+            List<SourceVO> sourceVO = new ArrayList<>();
+            for (int j = 0; j < list.size(); j++) {
+                if (params.get(i).getFieldId().equals(list.get(j).getFieldId())) {
+                    sourceVO.add(list.get(j));
+                    list.remove(list.get(j));
+
+                }
+            }
+            if (sourceVO.size() != 0) {
+                map.put(i, sourceVO);
+            }
+
+        }
+        if (map.size() != 0) {
+            for (List<SourceVO> sourceVOS : map.values()) {
+                List<String> str1 = new ArrayList<>();
+                for (SourceVO sourceVO : sourceVOS) {
+                    List<String> string = this.getString(sourceVO);
+                    str1.addAll(string);
+                }
+                str1.stream().distinct().collect(Collectors.toList());
+                str.add(str1);
+            }
+            for (SourceVO sourceVO : list) {
+                List<String> string = this.getString(sourceVO);
+                str.add(string);
+            }
+
+        } else {
+            for (SourceVO sourceVO : list) {
+                List<String> string = this.getString(sourceVO);
+                str.add(string);
+            }
+        }
+        List<String> list1 = str.get(0);
+        str.forEach(item -> {
+            list1.retainAll((Collection<?>) item);
+
+        });
+        return list1;
+
+    }
 
 
 }