Forráskód Böngészése

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	RMS/src/main/java/cn/cslg/report/controller/BaseController.java
#	RMS/src/main/java/cn/cslg/report/controller/PatentFiledController.java
#	RMS/src/main/java/cn/cslg/report/service/business/CompareFilesService.java
#	RMS/src/main/java/cn/cslg/report/service/business/CompareScenariosService.java
chenyi 2 éve
szülő
commit
28d10c98df

+ 23 - 0
RMS/src/main/java/cn/cslg/report/common/model/ProjectSourceVO.java

@@ -0,0 +1,23 @@
+package cn.cslg.report.common.model;
+
+import cn.cslg.report.common.model.vo.PatentVO;
+import lombok.Data;
+
+@Data
+public class ProjectSourceVO extends BaseVO {
+    private Integer projectId;
+    private String key;
+    private String folder;
+    private String label;
+    private String type;
+    private String startDate;
+    private String endDate;
+    private PatentVO queryParams;
+    private Integer applicantType;
+    private Integer applicantStatus;
+    private Integer customFieldId;
+    private Integer customFieldTreeType;
+    private String order;
+    private String functionId;
+    public String token;
+}

+ 3 - 1
RMS/src/main/java/cn/cslg/report/common/model/vo/PatentVO.java

@@ -40,10 +40,12 @@ public class PatentVO extends BaseVO {
     private Integer taskStatus;
 
     @Schema(description = "任务Id")
-    private String taskId;
+    private Integer taskId;
 
     @Schema(description = "自定义字段选项列表")
     private List<SourceVO> filedOptions;
+    @Schema(description = "专题库自定义选项列表")
+    private List<SourceVO> PasOptions;
     //专题库ID
     private Integer projectId;
     //RMS导入ID

+ 2 - 2
RMS/src/main/java/cn/cslg/report/common/model/vo/SourceVO.java

@@ -4,8 +4,8 @@ import lombok.Data;
 
 @Data
 public class SourceVO {
-    //专利号
+    //字段Id
     private Integer fieldId;
-    //节点号
+    //选项Id
     private Integer  key;
 }

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

@@ -134,7 +134,6 @@ public class BaseController {
     })
     public String getPatentByPatentNo(String patentNo,Integer taskID) throws IOException {
          return  outInterfaceService.getPatentFromPAS(patentNo);
-
     }
 
     @GetMapping("/getPatentNos")

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

@@ -4,6 +4,7 @@ import cn.cslg.report.common.core.base.Constants;
 import cn.cslg.report.common.model.vo.PatentRightVo;
 import cn.cslg.report.common.model.vo.PatentVO;
 
+import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.service.business.FeatureService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -59,8 +60,7 @@ public class FeatureController {
     @RequestMapping(value = "/querySimFeaturePatent", method = RequestMethod.POST)
     @Operation(summary = "获得相似特征的专利号")
     public String querySimFeaturePatent(@RequestBody PatentVO patentVO) throws IOException {
-        String res =  featureService.querySimFeaturePatent(patentVO);
-        return res;
+        return Response.success(featureService.querySimFeaturePatent(patentVO));
     }
 
 }

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

@@ -79,7 +79,7 @@ public class TaskController {
     @RequestMapping(value = "/reTaskPatents", method = RequestMethod.POST)
     @Operation(summary = "返回任务专利清单")
     public String reTaskPatents(@RequestBody PatentVO patentVO) throws ParseException, IOException {
-         return taskService.reTaskPatents(patentVO);
+         return taskService.reTaskPatents1(patentVO);
     }
 
     @RequestMapping(value = "/reTaskStateCount", method = RequestMethod.GET)

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

@@ -138,4 +138,8 @@ public class Task extends BaseEntity<Task> {
     @Schema(description="标的专利号",required = true)
     @TableField(value = "SIGN_PATENT_NO")
     private String signPatentNo;
+
+
+    @TableField(exist = false)
+    private String personEmail;
 }

+ 0 - 1
RMS/src/main/java/cn/cslg/report/mapper/CompareFilesMapper.java

@@ -13,5 +13,4 @@ import java.util.List;
 public interface CompareFilesMapper extends BaseMapper<CompareFiles> {
     int selectedTotal(@Param("id") int id);
     List<CompareFiles> selectCompareFiles(@Param("reportId") int reportId, @Param("patentFiledID") int patentFiledID,@Param("patentNo") String patentNo, @Param("list") List<String> list);
-
 }

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

@@ -10,6 +10,6 @@ import java.util.List;
 @Mapper
 @SuppressWarnings({"all"})
 public interface FeatureMapper extends BaseMapper<Features> {
-    public List<String> getSignPatentNo(@Param("contents") List<String> contents);
+    public List<Features> getSignPatentNo(@Param("contents") List<String> contents ,@Param("patentNos") String patentNos);
     Features find(@Param("id") int id);
 }

+ 3 - 0
RMS/src/main/java/cn/cslg/report/mapper/ReportFieldMapper.java

@@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 @SuppressWarnings({"all"})
@@ -19,4 +20,6 @@ public interface ReportFieldMapper extends BaseMapper<ReportField> {
     int deleteReportId(@Param("reportId") int reportId,@Param("id") int id);
     int updateReportId(ReportField reportField);
     IPage<PatentQueryFieldSourceDTO> getPatentQuerySourcePageList(Page<ReportField> page, @Param("params") PatentQueryFieldSourceVO params, @Param("ids") List<Integer> patentIds);
+    List<String> getFieldPatentNos(@Param("params") List<Map<String,Object>> params,@Param("reportId") int reportId);
+    List<String> getFieldTaskPNos(@Param("params") List<Map<String,Object>> params,@Param("taskId") int taskId,@Param("readState") int readState);
 }

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

@@ -1,10 +1,8 @@
 package cn.cslg.report.service;
 
 import cn.cslg.report.common.core.base.Constants;
-import cn.cslg.report.common.model.vo.LoginVO;
-import cn.cslg.report.common.model.vo.PatentVO;
-import cn.cslg.report.common.model.vo.PersonnelVO;
-import cn.cslg.report.common.model.vo.TaskParams;
+import cn.cslg.report.common.model.ProjectSourceVO;
+import cn.cslg.report.common.model.vo.*;
 import cn.cslg.report.common.utils.CacheUtils;
 import cn.cslg.report.common.utils.JsonUtils;
 import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
@@ -452,6 +450,12 @@ public class OutInterfaceService {
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
 
+    /**
+     * @params 传对象
+     * @title 导入专利
+     * @description 导入专利
+     * @author lrj
+     */
     public String importPatents(TaskParams taskParams) throws IOException {
         OkHttpClient httpClient = new OkHttpClient.Builder()
                 .pingInterval(400, TimeUnit.SECONDS) // 设置 PING 帧发送间隔
@@ -466,4 +470,49 @@ public class OutInterfaceService {
                 .build();
         return Objects.requireNonNull(httpClient.newCall(request).execute().body()).string();
     }
+
+    /**
+     * @title 获得分析系统自定义字段
+     * @description 获得分析系统自定义字段
+     * @autor lrj
+     */
+    public String getfieldFromPAS(Integer projectId) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PASUrl + "/api/v2/system/field/list?projectId=" + projectId)
+//                .addHeader("Cookie", LoginUtils.getToken())
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * @title 获得分析系统自定义字段选项
+     * @description 获得分析系统自定义字段选项
+     * @autor lrj
+     */
+    public String getSourceFromPAS(ProjectSourceVO params) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        String param = new Gson().toJson(params);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        Request request = new Request.Builder()
+                .url(PASUrl + "/api/v2/patent/query/source")
+//                .addHeader("Cookie", LoginUtils.getToken())
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+    /**
+     * @title 获得分析系统自定义字段选项
+     * @description 获得分析系统自定义字段选项
+     * @autor lrj
+     */
+    public String getPatentQueryTree(Integer projectId) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PASUrl + "/api/v2/project/field/tree?projectId="+projectId)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
 }

+ 6 - 43
RMS/src/main/java/cn/cslg/report/service/business/CompareFilesService.java

@@ -52,7 +52,6 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
         Report report = reportService.getById(compareFilesVO.getReportId());
         //根据标的专利号获得专利信息
         String res1 = outInterfaceService.getPatentFromPAS( report.getSignPatentNo());
-
         JSONObject res1Object = JSONObject.parseObject(res1);
         JSONObject patentNoJSON = JSONObject.parseObject(res1Object.get("data").toString());
             //获得引用专利号
@@ -120,12 +119,11 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
         //获取文件对比表的详情的专利号
         List<String> patentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
         String res;
-        //1 代表已
+        //1 代表已添加
         if (patentVO.getState() == 1) {
             patentVO.setPatentNos(patentNos);
             //详情见outInterfaceService.getPatentFromPAS
             res = outInterfaceService.getPatentFromPAS(patentVO, 1);
-
         } else {
             //根据标的专利号和报告id找到报告
             LambdaQueryWrapper<Report> wrapper1 = new LambdaQueryWrapper<>();
@@ -135,12 +133,9 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
             if(reportService.list(wrapper1).size()==0){
                 return "";
             }
-            String signPatentNO = reportService.list(wrapper1).get(0).getSignPatentNo();
-          patentNos.add(signPatentNO);
             patentVO.setNotInPatentNos(patentNos);
             //详情见outInterfaceService.getPatentFromPAS
             res = outInterfaceService.getPatentFromPAS(patentVO, 0);
-
         }
         JSONObject jsonObject = JSONObject.parseObject(res);
         JSONObject resData = JSONObject.parseObject(jsonObject.getString("data"));
@@ -151,7 +146,6 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
             if (patentNos.contains(list.get(i).get("patentNo").toString())) {
                 temNos.add(list.get(i).get("patentNo").toString());
             }
-
         }
         //根据报告id获取对比文件的数量
         int i = compareFilesMapper.selectedTotal(patentVO.getReportId());
@@ -171,38 +165,18 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
     //
     public String getSureCompareFile(PatentVO patentVO) throws IOException {
         List<String> patentNos= new ArrayList<>();
-        //根据任务Id和类型获得任务的清单
-        LambdaQueryWrapper<AssoTaskPersonel> queryWrapper1 = new LambdaQueryWrapper<>();
-        queryWrapper1.eq(AssoTaskPersonel::getReportId, patentVO.getReportId())
-                      .eq(AssoTaskPersonel::getState,1);
-        List<AssoTaskPersonel> assoTaskPersonels = assoTaskPersonelService.list(queryWrapper1);
-        List<String> readPatentNos = assoTaskPersonels.stream().map(AssoTaskPersonel::getPatentNo).collect(Collectors.toList());
         LambdaQueryWrapper<CompareFiles> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(CompareFiles::getReportId, patentVO.getReportId());
         List<CompareFiles> compareFiles = this.list(queryWrapper);
       List<String>  AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
-        if(patentVO.getTaskStatus()!=null&&patentVO.getTaskStatus().equals(0)){
-            AllpatentNos.removeAll(readPatentNos);
-            patentNos =AllpatentNos;
-        }
-        else if(patentVO.getTaskStatus()!=null&&patentVO.getTaskStatus().equals(1)){
-            patentNos =readPatentNos;
-
-        }
-        else if(patentVO.getTaskStatus()==null||patentVO.getTaskStatus().equals(3))
-        {
-            patentNos= AllpatentNos;
-        }
         //无查询条件
         if (patentVO.getFiledOptions() == null||patentVO.getFiledOptions().size() == 0) {
-            patentVO.setPatentNos(patentNos);
+            patentNos=AllpatentNos;
         }
         //有查询条件时,自定义字段的专利号和任务的专利号取交集
         else {
-//          patentNos = reportFieldService.getPatentNo(patentVO.getFiledOptions());
-//            List<String> jiaoList = new ArrayList<>(AllpatentNos);
-//            jiaoList.retainAll(patentNos);
-//            patentVO.setPatentNos(jiaoList);
+          patentNos = reportFieldService.getPatentNo1(patentVO.getFiledOptions(),patentVO.getReportId(),patentVO.getTaskId(),patentVO.getTaskStatus());
+            patentVO.setPatentNos(patentNos);
         }
         patentVO.setPatentNos(patentNos);
         //详情见outInterfaceService.getPatentFromPAS 接口
@@ -305,20 +279,9 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
      */
     @Transactional(rollbackFor = Exception.class)
     public void getPatentIndexSetting(PatentIndexSettingVO params)throws IOException {
+        //详情见reportFieldPatentLinkService updatePatentIndexSetting方法
+       reportFieldPatentLinkService.updatePatentIndexSetting(params);
 
-        if(params.getTaskID()!=null) {
-            reportFieldPatentLinkService.updatePatentIndexSetting(params);
-            LambdaQueryWrapper<AssoTaskPersonel> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(AssoTaskPersonel::getTaskId, params.getTaskID()).eq(AssoTaskPersonel::getPatentNo, params.getPatentNo());
-            AssoTaskPersonel assoTaskPersonel = assoTaskPersonelService.list(queryWrapper).get(0);
-            assoTaskPersonel.setState(1);
-            assoTaskPersonel.updateById();
-
-        }else {
-            reportFieldPatentLinkService.updatePatentIndexSetting(params);
-
-
-        }
     }
 
     /**

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

@@ -74,7 +74,7 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
     }
 
     /**
-     * @function  根据报告id查询对比方案
+     * @function:根据报告id查询对比方案
      * @param reportID
      * @return:对比方案 对应实体:CompareScenariosVO
      * @throws IOException
@@ -128,7 +128,7 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
            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.size()!=0) {
+            if(featuresIds!=null&&featuresIds.size()>0) {
                 LambdaQueryWrapper<Features> wrapper4 = new LambdaQueryWrapper<>();
                 wrapper4.in(Features::getId,featuresIds);
                 featuresList=featureService.list(wrapper4);

+ 132 - 90
RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java

@@ -6,9 +6,11 @@ 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.CompareRecords;
 import cn.cslg.report.entity.Features;
 import cn.cslg.report.entity.PatentRight;
 import cn.cslg.report.entity.Report;
+import cn.cslg.report.entity.asso.AssoRecordsFeature;
 import cn.cslg.report.mapper.FeatureMapper;
 import cn.cslg.report.service.OutInterfaceService;
 import cn.dev33.satoken.stp.StpUtil;
@@ -39,11 +41,13 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
     private final ReportService reportService;
     private final LoginUtils loginUtils;
     private final FeatureMapper featureMapper;
+    private final AssoRecordsFeatureService assoRecordsFeatureService;
+    private final CompareRecordsService compareRecordsService;
 
     /**
-     *@function 对权要进行合并操作
      * @param patentRights(专利权利要求)
-     * @return  List<PatentRight>
+     * @return List<PatentRight>
+     * @function 对权要进行合并操作
      */
 
     private List<PatentRight> FormatPatentRights(List<PatentRight> patentRights) {
@@ -69,13 +73,13 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
     }
 
     /**
-     *@function 从PAS系统上获得权要并拆分
-     * @param patentNo 专利号
+     * @param patentNo  专利号
      * @param splitType 拆分类型
-     * @param splitBy  拆分依据
-     * @param reportId 报告id
+     * @param splitBy   拆分依据
+     * @param reportId  报告id
      * @return 是否拆分成功
      * @throws IOException
+     * @function 从PAS系统上获得权要并拆分
      */
     public String splitPatentRight(String patentNo, Integer splitType, Integer splitBy, Integer reportId) throws IOException {
         PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
@@ -83,16 +87,16 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper();
         queryWrapper.eq(Report::getId, reportId);
         //未查到报告报错
-       if( reportService.list(queryWrapper).size()==0){
-           return Response.error("未查询到报告");
-       }
+        if (reportService.list(queryWrapper).size() == 0) {
+            return Response.error("未查询到报告");
+        }
         Report report = reportService.list(queryWrapper).get(0);
         Integer flag = 0;
-        if(splitBy==null){
-            splitBy=0;
+        if (splitBy == null) {
+            splitBy = 0;
         }
-        if(splitType==null){
-            splitType=0;
+        if (splitType == null) {
+            splitType = 0;
         }
         //如果报告未拆分过权要,或者拆分类型不同则更新报告
         if (report.getSplitBy() == null || report.getSplitType() == null || report.getSplitBy() != splitBy || report.getSplitType() != splitType) {
@@ -113,10 +117,10 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         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());
+        if (splitType.equals(0)) {
+            partRightIds = patentRights.stream().filter(item -> item.getType().equals(1)).map(PatentRight::getId).collect(Collectors.toList());
         }// 当splitType=1拆解全部权要
-        else if (splitType .equals(1) ) {
+        else if (splitType.equals(1)) {
             partRightIds = patentRights.stream().map(PatentRight::getId).collect(Collectors.toList());
         }
         //当splitBy=0时仅仅根据“,”拆解
@@ -135,8 +139,8 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
             flags.add(",");
             flags.add(",");
         }
-        Integer a=splitBy;
-        Integer b =splitType;
+        Integer a = splitBy;
+        Integer b = splitType;
         Features featureTO = new Features();
         featureTO.setReportId(reportId);
         featureTO.setSignPatentNo(patentNo);
@@ -150,54 +154,54 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         wrapper.eq(Features::getReportId, reportId)
                 .eq(Features::getSignPatentNo, patentNo)
                 .eq(Features::getPartnerId, personnelVO.getId());
-        wrapper.and(QueryWrapper -> QueryWrapper.ne(Features::getSplitBy,a).or().ne(Features::getSplitType,b));
+        wrapper.and(QueryWrapper -> QueryWrapper.ne(Features::getSplitBy, a).or().ne(Features::getSplitType, b));
         this.remove(wrapper);
         //将拆解的权要和特征装载到对象PatentRightVo
         for (int i = 0; i < patentRights.size(); i++) {
             //特征序号
-            Integer order =1;
+            Integer order = 1;
             List<Features> featuresList = new ArrayList<>();
-            String[] tems= patentRights.get(i).getContent().split("\\.");
-            String name ="权要"+tems[0].replace(" ","");
+            String[] tems = patentRights.get(i).getContent().split("\\.");
+            String name = "权要" + tems[0].replace(" ", "");
             int rightId = patentRights.get(i).getId();
             //对需要拆解的权要进行拆解
 
-                if (featureFromDb != null && featureFromDb.size() != 0) {
-                    featuresList = featureFromDb.stream().filter(item -> item.getRightId() .equals(rightId) &&item.getSplitBy().equals(a) &&item.getPartnerId().equals(personnelVO.getId())&&item.getSplitType().equals(b)).collect(Collectors.toList());
+            if (featureFromDb != null && featureFromDb.size() != 0) {
+                featuresList = featureFromDb.stream().filter(item -> item.getRightId().equals(rightId) && item.getSplitBy().equals(a) && item.getPartnerId().equals(personnelVO.getId()) && item.getSplitType().equals(b)).collect(Collectors.toList());
+            }
+            //如果数据库里无拆解记录则手动插入一条
+            if (featuresList == null || featuresList.size() == 0 || flag == 1) {
+                featuresList = new ArrayList<>();
+                List<String> contentOuts = Arrays.asList(patentRights.get(i).getContentOut());
+                List<String> contents = Arrays.asList(patentRights.get(i).getContent());
+                //如果是需要拆解的权要
+                if (partRightIds.contains(patentRights.get(i).getId())) {
+                    //获得权要的译文并且拆解
+                    contentOuts = this.splitStringByFlags(patentRights.get(i).getContentOut(), flags);
+                    //获得权要的原文并且拆解
+                    contents = this.splitStringByFlags(patentRights.get(i).getContent(), flags);
                 }
-                //如果数据库里无拆解记录则手动插入一条
-                if (featuresList == null || featuresList.size() == 0 || flag == 1) {
-                    featuresList = new ArrayList<>();
-                    List<String> contentOuts = Arrays.asList(patentRights.get(i).getContentOut());
-                    List<String> contents =Arrays.asList(patentRights.get(i).getContent());
-                    //如果是需要拆解的权要
-                    if (partRightIds.contains(patentRights.get(i).getId())) {
-                        //获得权要的译文并且拆解
-                       contentOuts = this.splitStringByFlags(patentRights.get(i).getContentOut(), flags);
-                        //获得权要的原文并且拆解
-                         contents = this.splitStringByFlags(patentRights.get(i).getContent(), flags);
-                    }
-                    //遍历拆解出来的内容并装载到features最后存入列表
-                    for (int t = 0; t < contents.size(); t++) {
-                        Features features = new Features();
-                        features.setRightId(patentRights.get(i).getId());
-                        features.setIsFinal(0);
-                        features.setSignPatentNo(patentNo);
-                        features.setReportId(reportId);
-                        String countOut = contentOuts.size() - 1 >= t ? contentOuts.get(t) : "";
-                        features.setContentOut(countOut);
-                        features.setContent(contents.get(t));
-                        features.setSplitBy(splitBy);
-                        features.setPartnerId(personnelVO.getId());
-                        features.setRightName(name);
-                        features.setFeaturesOrder(order);
-                        features.setRightType(patentRights.get(i).getType());
-                        features.setSplitType(splitType);
-                        featuresList.add(features);
-                        order+=1;
-                    }
-                    this.saveBatch(featuresList);
+                //遍历拆解出来的内容并装载到features最后存入列表
+                for (int t = 0; t < contents.size(); t++) {
+                    Features features = new Features();
+                    features.setRightId(patentRights.get(i).getId());
+                    features.setIsFinal(0);
+                    features.setSignPatentNo(patentNo);
+                    features.setReportId(reportId);
+                    String countOut = contentOuts.size() - 1 >= t ? contentOuts.get(t) : "";
+                    features.setContentOut(countOut);
+                    features.setContent(contents.get(t));
+                    features.setSplitBy(splitBy);
+                    features.setPartnerId(personnelVO.getId());
+                    features.setRightName(name);
+                    features.setFeaturesOrder(order);
+                    features.setRightType(patentRights.get(i).getType());
+                    features.setSplitType(splitType);
+                    featuresList.add(features);
+                    order += 1;
                 }
+                this.saveBatch(featuresList);
+            }
             //装载到对象PatentRightVo
             PatentRightVo patentRightVo = new PatentRightVo();
             patentRightVo.setPatentId(patentRights.get(i).getPatentId());
@@ -219,27 +223,27 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
     }
 
     /**
-     * @function 根据报告id 和专利号查询专利特征表
      * @param patentNos 专利号
      * @param reportId  报告id
      * @return map
      * @throws IOException
+     * @function 根据报告id 和专利号查询专利特征表
      */
 
     public String getFeatures(String patentNos, Integer reportId) throws IOException {
 
         LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper();
         queryWrapper.eq(Report::getId, reportId);
-        if(reportService.list(queryWrapper).size()==0){
+        if (reportService.list(queryWrapper).size() == 0) {
             return "";
         }
         Report report = reportService.list(queryWrapper).get(0);
         //权要(带拆分的特征)列表
         List<PatentRightVo> patentRightVos = new ArrayList<>();
-        String patentNo =report.getSignPatentNo();
+        String patentNo = report.getSignPatentNo();
         //从pas获得权要信息
-        if(patentNos!=null){
-            patentNo=patentNos;
+        if (patentNos != null) {
+            patentNo = patentNos;
         }
         String resBody = outInterfaceService.getPatentRightFromPAS(patentNo);
         JSONObject jsonObject = JSONObject.parseObject(resBody);
@@ -247,7 +251,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         List<PatentRight> patentRightsOrgin = JSON.parseArray(jsonObject.getString("data"), PatentRight.class);
         //处理权要
         List<PatentRight> patentRights = FormatPatentRights(patentRightsOrgin);
-     Features featureTO = new Features();
+        Features featureTO = new Features();
         featureTO.setReportId(reportId);
         featureTO.setSignPatentNo(patentNo);
         featureTO.setPartnerId(report.getPersonId());
@@ -258,10 +262,10 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
 
             List<Features> featuresList = new ArrayList<>();
             //对需要拆解的权要进行拆解
-                if (featureFromDb != null && featureFromDb.size() != 0) {
-                    int rightId = patentRights.get(i).getId();
-                    featuresList = featureFromDb.stream().filter(item -> item.getRightId().equals(rightId)  &&item.getPartnerId().equals(report.getPersonId())).collect(Collectors.toList());
-                }
+            if (featureFromDb != null && featureFromDb.size() != 0) {
+                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);
@@ -282,6 +286,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         map.put("splitType", report.getSplitType());
         return Response.success(map);
     }
+
     //根据符号拆分字符串
     public List<String> splitStringByFlags(String sentence, List<String> flags) {
         List<String> sectences = new ArrayList<>();
@@ -351,17 +356,17 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
             //根据登录人Id,报告Id,标的专利号删除原有特征
             this.remove(wrapper);
             for (int i = 0; i < patentRightVos.size(); i++) {
-                int order=1;
+                int order = 1;
                 PatentRightVo patentRightVo = patentRightVos.get(i);
                 if (patentRightVo.getFeatures() != null && patentRightVo.getFeatures().size() != 0) {
-                    List<Features> tem =patentRightVo.getFeatures();
+                    List<Features> tem = patentRightVo.getFeatures();
                     for (int t = 0; t < tem.size(); t++) {
                         tem.get(t).setFeaturesOrder(order);
                         tem.get(t).setPartnerId(personnelVO.getId());
                         tem.get(t).setSplitBy(feature.getSplitBy());
                         tem.get(t).setSplitType(feature.getSplitType());
                         tem.get(t).setId(null);
-                        order+=1;
+                        order += 1;
                         features.add(tem.get(t));
                     }
                 }
@@ -371,46 +376,83 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         return Response.success();
     }
 
-    public String querySimFeaturePatent(PatentVO patentVO) throws IOException {
+    public List<Map<String,Object>> querySimFeaturePatent(PatentVO patentVO) throws IOException {
         //获得当前用户信息
-       PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         //根据报告Id,拆分人Id,标的专利号获得特征。
         LambdaQueryWrapper<Features> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Features::getReportId, patentVO.getReportId())
-             .eq(Features::getPartnerId, personnelVO.getId());
+                .eq(Features::getPartnerId, personnelVO.getId());
         List<Features> features = this.list(queryWrapper);
-        LambdaQueryWrapper<Report> lambdaQueryWrapper =new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(Report::getId,patentVO.getReportId());
-        List<Report> reports =reportService.list(lambdaQueryWrapper);
-        List<String> signPatentNos =reports.stream().map(Report::getSignPatentNo).collect(Collectors.toList());
+        LambdaQueryWrapper<Report> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(Report::getId, patentVO.getReportId());
+        Report report = reportService.list(lambdaQueryWrapper).get(0);
+       String signPatentNo = report.getSignPatentNo();
         //获得特征内容
         List<String> contents = features.stream().map(Features::getContent).collect(Collectors.toList());
-        List<String> patentNos = featureMapper.getSignPatentNo(contents);
-        patentNos.removeAll(signPatentNos);
-        if(patentNos.size()==0)
-        {return Response.success();}
-        patentVO.setPatentNos(patentNos);
-      String res=  outInterfaceService.getPatentFromPAS(patentVO,1);
+        List<Features> featuresList = featureMapper.getSignPatentNo(contents,signPatentNo);
+        if (featuresList.size() == 0) {
+            return new ArrayList<Map<String,Object>>();
+        }
+        //根据特征Id 查询 对比记录特征关联信息
+        List<Integer> featureIds =featuresList.stream().map(Features::getId).collect(Collectors.toList());
+        List<AssoRecordsFeature> assoRecordsFeatures =new ArrayList<>();
+        List<CompareRecords> compareRecords  =new ArrayList<>();
+        if(featureIds!=null&featureIds.size()>0) {
+            LambdaQueryWrapper<AssoRecordsFeature> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.in(AssoRecordsFeature::getFeatureId, featureIds);
+            assoRecordsFeatures = assoRecordsFeatureService.list(queryWrapper1);
+            // 根据关联信息获得对比记录ID
+            List<Integer> recordsId =assoRecordsFeatures.stream().map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
+            //根据对比记录ID获得对比记录信息
+            LambdaQueryWrapper<CompareRecords> queryWrapper2 =new LambdaQueryWrapper<>();
+            queryWrapper2.in(CompareRecords::getId,recordsId);
+            compareRecords =compareRecordsService.list(queryWrapper2);
+        }
+        //装载信息
+List<Map<String,Object>> mapList =new ArrayList<Map<String,Object>>();
+        //装载特征对应划出的话
+        while (featuresList.size()>0) {
+            Map<String,Object> map =new HashMap<>();
+            List<Map<String,Object>> temMapList =new ArrayList<>();
+            Features features1 =featuresList.get(0);
+            featuresList.remove(features1);
+            map.put("signPatentNo",features1.getSignPatentNo());
+            for (Features tem : featuresList) {
+                if(tem.getSignPatentNo().equals(features1.getSignPatentNo())){
+                    Map<String, Object> temMap = new HashMap<>();
+                    List<Integer> recordIds = assoRecordsFeatures.stream().filter(item -> item.getFeatureId().equals(tem.getId())).map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
+                    List<CompareRecords> PartRecords = compareRecords.stream().filter(item -> recordIds.contains(item)).collect(Collectors.toList());
+                    temMap.put("feature", tem);
+                    temMap.put("CompareRecords", PartRecords);
+                    temMapList.add(temMap);
+                    features.remove(tem);
+                }
+            }
+            map.put("features",temMapList);
+            mapList.add(map);
+        }
+
 
-        return res;
+        return mapList;
     }
-    public Features select(int id){
+
+    public Features select(int id) {
         LambdaQueryWrapper<Features> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(Features::getId,id);
-        if(this.list(queryWrapper).size()==0){
+        queryWrapper.eq(Features::getId, id);
+        if (this.list(queryWrapper).size() == 0) {
             return null;
         }
         return this.list(queryWrapper).get(0);
     }
 
 
-
     @Transactional(rollbackFor = Exception.class)
-    public Integer delByReportId(int reportId){
+    public Integer delByReportId(int reportId) {
         LambdaQueryWrapper<Features> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(Features::getReportId,reportId);
+        queryWrapper.eq(Features::getReportId, reportId);
         this.remove(queryWrapper);
-        List<Features> features =this.list(queryWrapper);
+        List<Features> features = this.list(queryWrapper);
         return 1;
     }
 

+ 101 - 61
RMS/src/main/java/cn/cslg/report/service/business/ReportFieldService.java

@@ -49,7 +49,6 @@ public class ReportFieldService extends ServiceImpl<ReportFieldMapper, ReportFie
     private final ReportFieldPatentLinkService reportFieldPatentLinkService;
     private final AssoTaskPersonelService assoTaskPersonelService;
     private final ReportFieldService reportFieldService;
-    private ReportField reportField;
     private final CompareFilesService compareFilesService;
 
     //增加自定义字段
@@ -308,6 +307,24 @@ public class ReportFieldService extends ServiceImpl<ReportFieldMapper, ReportFie
             return list;
         }
         ReportField reportField = this.list(wrapper).get(0);
+        //获得所有专利号
+        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());
+
+        }
+
         //根据自定义字段的类型,从三张值表中查询该自定义字段所有值的id
         int type1 = reportField.getType();
         switch (type1) {
@@ -369,25 +386,15 @@ public class ReportFieldService extends ServiceImpl<ReportFieldMapper, ReportFie
         List<ReportFieldPatentLink> reportFieldPatentLinks = reportFieldPatentLinkService.list(lambdaQueryWrapper);
         if (reportFieldPatentLinks.size() == 0) {
             list.forEach(item -> item.setCount(0));
+            //未选择选项
+            PatentQueryFieldSourceVO patentQueryFieldSourceVO = new PatentQueryFieldSourceVO();
+            patentQueryFieldSourceVO.setFieldId(params.getFieldId());
+            patentQueryFieldSourceVO.setKey(null);
+            patentQueryFieldSourceVO.setLabel("未选择");
+            patentQueryFieldSourceVO.setCount(allNos.size());
+            list.add(patentQueryFieldSourceVO);
             return list;
         }
-        //获得所有专利号
-        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) {
@@ -425,21 +432,20 @@ public class ReportFieldService extends ServiceImpl<ReportFieldMapper, ReportFie
      * @throws IOException
      * @funtion 查询标引内容关联专利
      */
-    public List<String> getString(SourceVO params,List<String> allPatentNos) throws IOException {
+    public List<String> getString(SourceVO params, List<String> allPatentNos) throws IOException {
         List<String> list = new ArrayList<>();
-        List<ReportFieldPatentLink> reportFieldPatentLinks =new ArrayList<>();
+        List<ReportFieldPatentLink> reportFieldPatentLinks = new ArrayList<>();
         LambdaQueryWrapper<ReportFieldPatentLink> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(ReportFieldPatentLink::getFieldId, params.getFieldId());
         if (params.getKey() != null) {
             lambdaQueryWrapper.eq(ReportFieldPatentLink::getOptionId, params.getKey());
             reportFieldPatentLinks = reportFieldPatentLinkService.list(lambdaQueryWrapper);
-            list=    reportFieldPatentLinks.stream().map(ReportFieldPatentLink::getPatentNo).collect(Collectors.toList());
-        }
-       else {
+            list = reportFieldPatentLinks.stream().map(ReportFieldPatentLink::getPatentNo).collect(Collectors.toList());
+        } else {
             reportFieldPatentLinks = reportFieldPatentLinkService.list(lambdaQueryWrapper);
-            List<String> patentNos =reportFieldPatentLinks.stream().map(ReportFieldPatentLink::getPatentNo).collect(Collectors.toList());
-             allPatentNos.removeAll(patentNos);
-            list=allPatentNos;
+            List<String> patentNos = reportFieldPatentLinks.stream().map(ReportFieldPatentLink::getPatentNo).collect(Collectors.toList());
+            allPatentNos.removeAll(patentNos);
+            list = allPatentNos;
         }
 
         return list;
@@ -532,7 +538,7 @@ public class ReportFieldService extends ServiceImpl<ReportFieldMapper, ReportFie
      * @throws IOException
      */
 
-    public List<String> getPatentNo(List<SourceVO> params,List<String> allPatentNos) throws IOException {
+    public List<String> getPatentNo(List<SourceVO> params, List<String> allPatentNos) throws IOException {
 
         if (params.size() == 0) {
             List<String> list = new ArrayList<>();
@@ -545,59 +551,93 @@ public class ReportFieldService extends ServiceImpl<ReportFieldMapper, ReportFie
 
 
     public List<String> getPatentNo2(List<SourceVO> params) throws IOException {
-        List<String> str=new ArrayList<>();
-        if(params.size()==0){
+        List<String> str = new ArrayList<>();
+        if (params.size() == 0) {
             return str;
         }
-        if(params.size()==1){
+        if (params.size() == 1) {
             LambdaQueryWrapper<ReportFieldPatentLink> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-            lambdaQueryWrapper.eq(ReportFieldPatentLink::getOptionId,params.get(0).getKey());
-            lambdaQueryWrapper.eq(ReportFieldPatentLink::getFieldId,params.get(0).getFieldId());
+            lambdaQueryWrapper.eq(ReportFieldPatentLink::getOptionId, params.get(0).getKey());
+            lambdaQueryWrapper.eq(ReportFieldPatentLink::getFieldId, params.get(0).getFieldId());
             List<ReportFieldPatentLink> list = reportFieldPatentLinkService.list(lambdaQueryWrapper);
             str = list.stream().map(ReportFieldPatentLink::getPatentNo).collect(Collectors.toList());
             return str;
 
 
         }
-      List< List<SourceVO>> lists=new ArrayList<>();
-       for( int i=0;i<params.size()-1;i++ ){
-           List<SourceVO> list=new ArrayList<>();
-           list.add(params.get(i));
-           for(int j=i+1;j<params.size();j++){
-               //找到自定义字段相同的字段
-               if(params.get(i).getFieldId().equals(params.get(j).getFieldId())){
-                  list.add(params.get(j));
-                   //有相同的就删除
-                   params.remove(list.get(j));
-               }
-           }
-          lists.add(list);
-
-       }
-
-       LambdaQueryWrapper<ReportFieldPatentLink> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-       for(List<SourceVO> list:lists) {
-           lambdaQueryWrapper.and(Wrapper->{
-               List<Integer> collect1 = list.stream().map(SourceVO::getFieldId).collect(Collectors.toList());
-               List<Integer> collect = list.stream().map(SourceVO::getKey).collect(Collectors.toList());
-               Wrapper.in(ReportFieldPatentLink::getFieldId,collect1);
-               Wrapper.in(ReportFieldPatentLink::getOptionId,collect);
-
-
-           });
-
-       }
+        List<List<SourceVO>> lists = new ArrayList<>();
+        for (int i = 0; i < params.size() - 1; i++) {
+            List<SourceVO> list = new ArrayList<>();
+            list.add(params.get(i));
+            for (int j = i + 1; j < params.size(); j++) {
+                //找到自定义字段相同的字段
+                if (params.get(i).getFieldId().equals(params.get(j).getFieldId())) {
+                    list.add(params.get(j));
+                    //有相同的就删除
+                    params.remove(list.get(j));
+                }
+            }
+            lists.add(list);
+
+        }
+
+        LambdaQueryWrapper<ReportFieldPatentLink> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        for (List<SourceVO> list : lists) {
+            lambdaQueryWrapper.and(Wrapper -> {
+                List<Integer> collect1 = list.stream().map(SourceVO::getFieldId).collect(Collectors.toList());
+                List<Integer> collect = list.stream().map(SourceVO::getKey).collect(Collectors.toList());
+                Wrapper.eq(ReportFieldPatentLink::getFieldId, collect1.get(0));
+                Wrapper.in(ReportFieldPatentLink::getOptionId, collect);
+            });
+
+        }
 
         List<ReportFieldPatentLink> list = reportFieldPatentLinkService.list(lambdaQueryWrapper);
         List<String> collect = list.stream().map(ReportFieldPatentLink::getPatentNo).collect(Collectors.toList());
         return collect;
 
 
-
     }
 
 
+    public List<String> getPatentNo1(List<SourceVO> params, Integer reportId, Integer taskId, Integer taskStatus) throws IOException {
+        List<Map<String, Object>> mapList = new ArrayList<>();
+        while (params.size() > 0) {
+            Map<String, Object> map = new HashMap<>();
+            Integer haveNull = 0;
+            List<SourceVO> list = new ArrayList<>();
+            list.add(params.get(0));
+            if (params.get(0).getKey() == null) {
+                haveNull = 1;
+            }
+            if (params.size() != 1) {
+                for (int j = 1; j < params.size(); j++) {
+                    //找到自定义字段相同的字段
+                    if (params.get(0).getFieldId().equals(params.get(j).getFieldId())) {
+                        if (params.get(j).getKey() == null) {
+                            haveNull = 1;
+                        }
+                        list.add(params.get(j));
+                    }
+                }
+            }
+            map.put("field", params.get(0).getFieldId());
+            map.put("optionList", list);
+            map.put("haveNull", haveNull);
+            mapList.add(map);
+            params.removeAll(list);
+        }
+        List<String> collect = new ArrayList<>();
+        if (taskId != null) {
+            collect = baseMapper.getFieldTaskPNos(mapList, taskId, taskStatus);
+        } else {
+            if (reportId != null) {
+                collect = baseMapper.getFieldPatentNos(mapList, reportId);
+            }
+        }
+        return collect;
 
+    }
 
 
 }

+ 83 - 9
RMS/src/main/java/cn/cslg/report/service/business/TaskService.java

@@ -7,6 +7,7 @@ import cn.cslg.report.common.utils.CacheUtils;
 import cn.cslg.report.common.utils.DataUtils;
 import cn.cslg.report.common.utils.LogExceptionUtil;
 import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.common.utils.message.MessageUtils;
 import cn.cslg.report.entity.*;
 import cn.cslg.report.entity.asso.AssoTaskPersonel;
 import cn.cslg.report.mapper.TaskMapper;
@@ -46,6 +47,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
     private final CompareFilesService compareFilesService;
     private final AssoTaskPersonelService assoTaskPersonelService;
     private final ReportFieldService reportFieldService;
+    private final MessageUtils mailUtils;
 
     /**
      * @param id(Task 任务id)
@@ -193,9 +195,25 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
                 task.setCreateID(personnelVO.getId());
                 task.setCreateName(personnelVO.getName());
                 task.setTaskStatus(0);
+               task.setPersonEmail(personnel.getPersonnelEmail());
                 tasks.add(task);
             }
-            this.saveBatch(tasks);
+            if(this.saveBatch(tasks)){
+               for(Task tem :tasks){
+                   Map<String, Object> map = new HashMap<>();
+                   map.put("title", "任务通知");
+                   map.put("template", "mail/eTask.html");
+                   map.put("value1", tem.getHandlePersonName());
+                   map.put("img", "\\src\\main\\resources\\mail\\logo.png");
+                   map.put("email", tem.getPersonEmail());
+                   map.put("value2", tem.getCreateName());
+                   map.put("value3","审核任务");
+                   map.put("value4",tem.getEndTime());
+                   map.put("value5","http://139.224.24.90:8086/");
+                   mailUtils.sendEmailMessage(map);
+
+               }
+            };
         }
         return Response.success();
     }
@@ -230,7 +248,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
 
 
     //添加分配任务
-    @Transactional(rollbackFor = Exception.class,isolation = Isolation.REPEATABLE_READ ,timeout = 30)
+    @Transactional(rollbackFor = Exception.class)
     public String addAssTask(AssignTaskVO assignTaskVO) throws ParseException, IOException {
         PatentVO patentVO = new PatentVO();
         if (assignTaskVO.getPatentVO() != null) {
@@ -263,7 +281,6 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         List<Personnel> personnels = JSON.parseArray(jsonObject.getString("data"), Personnel.class);
         //获得登录人的信息
         PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
-
         num += selectedNos.size();
         // 根据报告Id获得待分配的专利号
         LambdaQueryWrapper<CompareFiles> wrapper = new LambdaQueryWrapper<>();
@@ -278,10 +295,8 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         }
         //有查询条件时,自定义字段的专利号和任务的专利号取交集
         else {
-//            List<String> temPatentNos = reportFieldService.getPatentNo(patentVO.getFiledOptions());
-//            List<String> jiaoList = new ArrayList<>(AllpatentNos);
-//            jiaoList.retainAll(temPatentNos);
-//            patentVO.setPatentNos(jiaoList);
+            List<String> temPatentNos = reportFieldService.getPatentNo1(patentVO.getFiledOptions(),patentVO.getReportId(),patentVO.getTaskId(),patentVO.getTaskStatus());
+            patentVO.setPatentNos(temPatentNos);
         }
         String res = outInterfaceService.getConPantentNos(patentVO, 1);
         JSONObject jsonObject1 = JSONObject.parseObject(res);
@@ -311,7 +326,20 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
             task.setCreateID(personnelVO.getId());
             task.setCreateName(personnelVO.getName());
             task.setSignPatentNo(signPatentNO);
-            task.insert();
+            //发送邮件
+            if(task.insert()) {
+                Map<String, Object> map = new HashMap<>();
+                map.put("title", "任务通知");
+                map.put("template", "mail/eTask.html");
+                map.put("value1", task.getHandlePersonName());
+                map.put("img", "\\src\\main\\resources\\mail\\logo.png");
+                map.put("email", task.getPersonEmail());
+                map.put("value2", task.getCreateName());
+                map.put("value3", "分配任务");
+                map.put("value4", task.getEndTime());
+                map.put("value5", "http://139.224.24.90:8086/");
+                mailUtils.sendEmailMessage(map);
+            }
             //根据数量从分配的专利号列表中截取该数量的专利号,加上分配信息的专利号进行装配
             List<String> partNos = new ArrayList<>();
             if (personPatents.get(i).getPatentNos() == null || personPatents.get(i).getPatentNos().size() == 0) {
@@ -339,7 +367,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
     @Transactional(rollbackFor = Exception.class)
     public String reTaskPatents(PatentVO patentVO) throws ParseException, IOException {
         List<String> taskPatentNos = new ArrayList<>();
-        //根据任务Id和类型获得任务的清单
+        //根据报告Id和类型获得任务的清单
         LambdaQueryWrapper<AssoTaskPersonel> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(AssoTaskPersonel::getReportId, patentVO.getReportId());
         //当taskID存在时
@@ -385,6 +413,52 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         return jsonObject.toString();
     }
 
+    //返回任务专利清单
+    @Transactional(rollbackFor = Exception.class)
+    public String reTaskPatents1(PatentVO patentVO) throws ParseException, IOException {
+        List<String> taskPatentNos = new ArrayList<>();
+       //无自定义字段查询条件
+        if (patentVO.getFiledOptions().size() == 0 || patentVO.getFiledOptions() == null) {
+            //当有任务Id时
+            if(patentVO.getTaskId() != null) {
+                LambdaQueryWrapper<AssoTaskPersonel> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(AssoTaskPersonel::getTaskId, patentVO.getTaskId());
+                if(patentVO.getTaskStatus()!=3){
+                    queryWrapper.eq(AssoTaskPersonel::getState, patentVO.getTaskStatus());
+                }
+                List<AssoTaskPersonel> assoTaskPersonels = assoTaskPersonelService.list(queryWrapper);
+                taskPatentNos = assoTaskPersonels.stream().map(AssoTaskPersonel::getPatentNo).collect(Collectors.toList());
+            }
+            // 当无任务Id时
+            else{
+                LambdaQueryWrapper<CompareFiles> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(CompareFiles::getReportId, patentVO.getReportId());
+                    List<CompareFiles> assoTaskPersonels = compareFilesService.list(queryWrapper);
+                    taskPatentNos = assoTaskPersonels.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
+            }
+        }
+        //有自定义查询条件
+        else {
+            taskPatentNos=reportFieldService.getPatentNo1(patentVO.getFiledOptions(),patentVO.getReportId(),patentVO.getTaskId(),patentVO.getTaskStatus());
+
+        }
+        patentVO.setPatentNos(taskPatentNos);
+        String res = outInterfaceService.getPatentFromPAS(patentVO, 1);
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        JSONObject jsonObject1 = JSONObject.parseObject(jsonObject.get("data").toString());
+        List<JSONObject> jsonObjects = JSONArray.parseArray(jsonObject1.get("records").toString(), JSONObject.class);
+        for (int i = 0; i < jsonObjects.size(); i++) {
+            jsonObjects.get(i).put("field", reportFieldService.getPatentFieldByPatentIdAndProjectId(patentVO.getReportId(), jsonObjects.get(i).getString("patentNo")));
+        }
+        jsonObject1.put("records", jsonObjects);
+        jsonObject.put("data", jsonObject1);
+
+
+        return jsonObject.toString();
+    }
+
+
+
     public Map<String, Object> reTaskStateCount(Integer reportId, Integer taskId) {
         //根据任务Id和类型获得任务的清单
         LambdaQueryWrapper<AssoTaskPersonel> queryWrapper = new LambdaQueryWrapper<>();

+ 1 - 0
RMS/src/main/resources/mapper/CompareFilesMapper.xml

@@ -34,4 +34,5 @@ and REMARK in
     #{item}
 </foreach>
     </select>
+
 </mapper>

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

@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="cn.cslg.report.mapper.FeatureMapper">
-    <select id="getSignPatentNo" resultType="java.lang.String" >
-        select DISTINCT SIGN_PATENT_NO from FEATURES
+    <select id="getSignPatentNo" resultType="cn.cslg.report.entity.Features" >
+        select DISTINCT a.* from FEATURES a
         <where>
-            SIGN_PATENT_NO="0"
+            SIGN_PATENT_NO!=#{patentNos}
         <if test="contents!=null and contents.size()!=0">
-       or CONTENT in
+       and CONTENT in
         <foreach item="item" collection="contents" index="index" open="(" separator="," close=")">
             #{item}
         </foreach>

+ 44 - 0
RMS/src/main/resources/mapper/ReportFieldMapper.xml

@@ -98,4 +98,48 @@
             )) as temp where 1 = 1 order by `count` desc, `value` asc
         </if>
     </select>
+
+    <select id="getFieldPatentNos" parameterType="java.util.List" resultType="java.lang.String">
+        select distinct a.PATENT_NO from COMPARE_FILES a left join  OS_PATENT_FIELD_PATENT_LINK b on a.PATENT_NO =b.PATENT_NO
+        <where>
+            a.REPORT_ID=#{reportId}  and
+            <foreach collection="params" item="item" separator=" and " open="(" close=")">
+                b.CID=#{item.field} and b.FID in
+                <foreach collection="item.optionList" item="item1" separator="," open="(" close=")">
+                   #{item1.key}
+                </foreach>
+                <if test="item.haveNull == 1">
+                    or b.CID !=#{item.field} or b.CID is null
+                </if>
+            </foreach>
+        </where>
+
+    </select>
+
+    <select id="getFieldTaskPNos" parameterType="java.util.List" resultType="java.lang.String">
+        select distinct c.PATENT_NO from COMPARE_FILES c <where>
+        <foreach collection="params" item="item" separator=" and ">
+            c.PATENT_NO in (
+            select  distinct a.PATENT_NO from ASSO_TASK_PERSONEL a left join  OS_PATENT_FIELD_PATENT_LINK b on a.PATENT_NO =b.PATENT_NO
+            and a.REPORT_ID=b.REPORT_ID
+            <where>
+                a.TASK_ID=#{taskId}
+                <if test="readState!=3">
+                    and  a.STATE =#{readState}
+                </if>
+                and (
+                b.CID=#{item.field} and b.FID in
+                <foreach collection="item.optionList" item="item1" separator="," open="(" close=")">
+                #{item1.key}
+                </foreach>
+                <if test="item.haveNull == 1">
+                or b.CID is null
+                </if>
+                )
+            </where>
+            )
+        </foreach>
+    </where>
+    </select>
+
 </mapper>