Browse Source

2022/12/21 lrj

lwhhszx 2 years ago
parent
commit
6ff3cb22ea

+ 4 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/PatentRightVo.java

@@ -55,4 +55,8 @@ public class PatentRightVo {
      * 特征集合
      */
     private List<Features> features;
+    /**
+     *
+     */
+    private List<CompareMessageVO> compareMessageVOS;
 }

+ 26 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/SplitVO.java

@@ -0,0 +1,26 @@
+package cn.cslg.report.common.model.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author lrj
+ * @date 2022-11-11
+ * @description 审核任务VO类
+ */
+@Data
+@Accessors(chain = true)
+@Schema(description="拆分VO类",required = true)
+public class SplitVO {
+    @Schema(description = "专利号")
+   private String patentNo;
+    @Schema(description = "拆分类型")
+    private Integer splitType;
+    @Schema(description = "拆分形式")
+    private Integer splitBy;
+    @Schema(description = "报告Id")
+    private Integer reportId;
+    @Schema(description = "任务Id")
+    private Integer taskId;
+}

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

@@ -4,7 +4,9 @@ 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.model.vo.SplitVO;
 import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.service.business.AssoTaskPatentSplitService;
 import cn.cslg.report.service.business.FeatureService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -27,17 +29,12 @@ import java.util.List;
 @SuppressWarnings({"all"})
 public class FeatureController {
     private final FeatureService featureService;
+    private final AssoTaskPatentSplitService assoTaskPatentSplitService;
 
-    @RequestMapping(value = "/splitPatentRight", method = RequestMethod.GET)
+    @RequestMapping(value = "/splitPatentRight", method = RequestMethod.POST)
     @Operation(summary = "拆分权要")
-    @Parameters(value = {
-            @Parameter(name = "patentNo",description = "专利号",required = true),
-            @Parameter(name = "splitType",description = "拆分类型(0仅拆主权要,1全部拆分)"),
-            @Parameter(name = "splitBy",description = "拆分符号(0  ',',1';',2','和';')"),
-            @Parameter(name = "ReportId",description = "报告Id"),
-    })
-    public String splitPatentRight(String patentNo,Integer splitType ,Integer splitBy,Integer ReportId) throws IOException {
-     String res =   featureService.splitPatentRight(patentNo,splitType,splitBy,ReportId);
+    public String splitPatentRight(@RequestBody SplitVO splitVO) throws IOException {
+     String res =   featureService.splitPatentRight(splitVO);
         return res;
     }
     @RequestMapping(value = "/getFeatures", method = RequestMethod.GET)
@@ -64,8 +61,8 @@ public class FeatureController {
     }
 
     @RequestMapping(value = "/getSplitMessage", method = RequestMethod.GET)
-    @Operation(summary = "根据专利号和报告ID获得拆分信息")
-    public String getSplitMessage(Integer reportId ,String patentNo) throws IOException {
-        return Response.success(featureService.getSplitMessage(reportId,patentNo));
+    @Operation(summary = "根据专利号和任务Id获得拆分信息")
+    public String getSplitMessage(Integer taskId,String patentNo) throws IOException {
+        return Response.success(assoTaskPatentSplitService.getSplitMessage(taskId,patentNo));
     }
 }

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

@@ -26,7 +26,7 @@ public class CompareMessage extends BaseEntity<CompareMessage> {
 
     @Schema(description = "对比结果")
     @TableField(value = "COMPARE_RESULT")
-    private String compareResult;
+    private Integer compareResult;
 
     @Schema(description = "特征ID")
     @TableField(value = "FEATURE_ID")

+ 3 - 0
RMS/src/main/java/cn/cslg/report/entity/Features.java

@@ -82,6 +82,9 @@ public class Features extends BaseEntity<Features> {
 
     @TableField(value = "FEATURES_ORDER")
     private Integer featuresOrder;
+
+    @TableField(value = "Task_ID")
+    private Integer taskId;
     /**
      * 特征拆分人IDs
      */

+ 31 - 0
RMS/src/main/java/cn/cslg/report/entity/asso/AssoTaskPatentSplit.java

@@ -0,0 +1,31 @@
+package cn.cslg.report.entity.asso;
+
+import cn.cslg.report.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.Value;
+import lombok.experimental.Accessors;
+
+/**
+ * 任务专利拆分信息表
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+@TableName(value = "ASSO_TASK_PATENT_SPLIT")
+public class AssoTaskPatentSplit extends BaseEntity<AssoTaskPatentSplit> {
+    @Schema(description = "任务专利关联ID")
+    @TableField(value="TASK_PATENT_ID")
+    private Integer taskPatentId;
+
+    @Schema(description = "拆分形式")
+    @TableField(value="SPLIT_BY")
+    private Integer splitBy;
+
+    @Schema(description = "拆分类型")
+    @TableField(value="SPLIT_TYPE")
+    private Integer splitType;
+}

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

@@ -1,5 +1,6 @@
 package cn.cslg.report.mapper;
 
+import cn.cslg.report.entity.asso.AssoTaskPatentSplit;
 import cn.cslg.report.entity.asso.AssoTaskPersonel;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -11,5 +12,5 @@ import java.util.List;
 public interface AssoTaskPersonelMapper extends BaseMapper<AssoTaskPersonel> {
 
   public List<String> getPatentNumber(@Param("personelId")int personelId ,@Param("state")int  state,@Param("taskId")int taskId);
-
+  public AssoTaskPatentSplit getSplitMessage(@Param("patentNo")String patentNo , @Param("taskId") Integer taskId);
 }

+ 51 - 0
RMS/src/main/java/cn/cslg/report/service/business/AssoTaskPatentSplitService.java

@@ -0,0 +1,51 @@
+package cn.cslg.report.service.business;
+
+import cn.cslg.report.entity.AssoComapareFiel;
+import cn.cslg.report.entity.asso.AssoTaskPatentSplit;
+import cn.cslg.report.entity.asso.AssoTaskPersonel;
+import cn.cslg.report.mapper.AssoComapareFielMapper;
+import cn.cslg.report.mapper.AssoTaskPatentSplitMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@SuppressWarnings({"all"})
+@Service
+@Slf4j
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class AssoTaskPatentSplitService extends ServiceImpl<AssoTaskPatentSplitMapper, AssoTaskPatentSplit> {
+ private final AssoTaskPersonelService assoTaskPersonelService;
+
+    /**
+     *
+     * @param reportId
+     * @param patentNo
+     * @return
+     * @autor lrj
+     * @description 查找任务专利的拆分详情
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String,Object> getSplitMessage(Integer taskId, String patentNo) {
+        Map<String,Object> map =new HashMap<>();
+       AssoTaskPatentSplit assoTaskPatentSplit = assoTaskPersonelService.getBaseMapper().getSplitMessage(patentNo,taskId);
+       if(assoTaskPatentSplit!=null){
+           map.put("splitBy",assoTaskPatentSplit.getSplitBy());
+           map.put("splitType",assoTaskPatentSplit.getSplitType());
+       }
+       else {
+           map.put("splitBy",null);
+           map.put("splitType",null);
+       }
+        return map;
+    }
+
+}

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

@@ -3,14 +3,14 @@ package cn.cslg.report.service.business;
 import cn.cslg.report.common.model.vo.PatentRightVo;
 import cn.cslg.report.common.model.vo.PatentVO;
 import cn.cslg.report.common.model.vo.PersonnelVO;
+import cn.cslg.report.common.model.vo.SplitVO;
 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.*;
 import cn.cslg.report.entity.asso.AssoRecordsFeature;
+import cn.cslg.report.entity.asso.AssoTaskPatentSplit;
+import cn.cslg.report.entity.asso.AssoTaskPersonel;
 import cn.cslg.report.mapper.FeatureMapper;
 import cn.cslg.report.service.OutInterfaceService;
 import cn.dev33.satoken.stp.StpUtil;
@@ -43,6 +43,10 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
     private final FeatureMapper featureMapper;
     private final AssoRecordsFeatureService assoRecordsFeatureService;
     private final CompareRecordsService compareRecordsService;
+    private final AssoTaskPersonelService assoTaskPersonelService;
+    private final AssoTaskPatentSplitService assoTaskPatentSplitService;
+    private final TaskService taskService;
+    private final  CompareMessageService compareMessageService;
 
     /**
      * @param patentRights(专利权利要求)
@@ -50,7 +54,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
      * @function 对权要进行合并操作
      */
 
-    private List<PatentRight> FormatPatentRights(List<PatentRight> patentRights) {
+    public List<PatentRight> FormatPatentRights(List<PatentRight> patentRights) {
         List<PatentRight> retList = new ArrayList<>();
         for (int i = 0; i < patentRights.size(); i++) {
             String str = patentRights.get(i).getContent();
@@ -81,16 +85,13 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
      * @throws IOException
      * @function 从PAS系统上获得权要并拆分
      */
-    public String splitPatentRight(String patentNo, Integer splitType, Integer splitBy, Integer reportId) throws IOException {
-        PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
-        //根据报告ID查询报告
-        LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper();
-        queryWrapper.eq(Report::getId, reportId);
-        //未查到报告报错
-        if (reportService.list(queryWrapper).size() == 0) {
-            return Response.error("未查询到报告");
-        }
-        Report report = reportService.list(queryWrapper).get(0);
+    @Transactional(rollbackFor = Exception.class)
+    public String splitPatentRight(SplitVO splitVO) throws IOException {
+        String patentNo =splitVO.getPatentNo();
+        Integer reportId =splitVO.getReportId();
+        Integer splitType =splitVO.getSplitType();
+        Integer splitBy =splitVO.getSplitBy();
+        Integer taskId =splitVO.getTaskId();
         Integer flag = 0;
         if (splitBy == null) {
             splitBy = 0;
@@ -98,12 +99,61 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         if (splitType == null) {
             splitType = 0;
         }
-        //如果报告未拆分过权要,或者拆分类型不同则更新报告
-        if (report.getSplitBy() == null || report.getSplitType() == null || report.getSplitBy() != splitBy || report.getSplitType() != splitType) {
-            report.setSplitBy(splitBy);
-            report.setSplitType(splitType);
-            report.updateById();
-            flag = 1;
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
+        //如果是FTO报告则 将拆分信息存入
+        if(taskId!=null){
+            //根据taskId获得报告ID
+        Task task = taskService.getById(taskId);
+            reportId =task.getId();
+                //根据taskId 和专利号找到关联Id
+                LambdaQueryWrapper<AssoTaskPersonel> queryWrapper1 =new LambdaQueryWrapper<>();
+                queryWrapper1.eq(AssoTaskPersonel::getTaskId,taskId)
+                        .eq(AssoTaskPersonel::getPatentNo,patentNo);
+                List<AssoTaskPersonel> assoTaskPersonels= assoTaskPersonelService.list(queryWrapper1);
+                if(assoTaskPersonels!=null&&assoTaskPersonels.size()!=0){
+                    //关联ID
+                    Integer assoId =assoTaskPersonels.get(0).getId();
+                    //根据关联ID 查询任务专利关联信息
+                    LambdaQueryWrapper<AssoTaskPatentSplit> queryWrapper =new LambdaQueryWrapper<>();
+                    queryWrapper.eq(AssoTaskPatentSplit::getTaskPatentId,assoId);
+                List<AssoTaskPatentSplit> assoTaskPatentSplits = assoTaskPatentSplitService.list(queryWrapper);
+                    AssoTaskPatentSplit assoTaskPatentSplit =new AssoTaskPatentSplit();
+                    //如果没查到关联信息代表第一次拆分,新建一条
+                if(assoTaskPatentSplits==null||assoTaskPatentSplits.size()==0){
+                    assoTaskPatentSplit.setTaskPatentId(assoId);
+                    assoTaskPatentSplit.setSplitBy(splitBy);
+                    assoTaskPatentSplit.setSplitType(splitType);
+                    assoTaskPatentSplit.insert();
+                    flag =1;
+                }
+                else{
+                    assoTaskPatentSplit = assoTaskPatentSplits.get(0);
+                    if(assoTaskPatentSplit.getSplitBy() != splitBy || assoTaskPatentSplit.getSplitType() != splitType)
+                    {
+                        assoTaskPatentSplit.setSplitBy(splitBy);
+                        assoTaskPatentSplit.setSplitType(splitType);
+                        assoTaskPatentSplit.updateById();
+                        flag=1;
+                    }
+                }
+                }
+        }
+        else {
+            //根据报告ID查询报告
+            LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper();
+            queryWrapper.eq(Report::getId, reportId);
+            //未查到报告报错
+            if (reportService.list(queryWrapper).size() == 0) {
+                return Response.error("未查询到报告");
+            }
+            Report report = reportService.list(queryWrapper).get(0);
+            //如果报告未拆分过权要,或者拆分类型不同则更新报告
+            if (report.getSplitBy() == null || report.getSplitType() == null || report.getSplitBy() != splitBy || report.getSplitType() != splitType) {
+                report.setSplitBy(splitBy);
+                report.setSplitType(splitType);
+                report.updateById();
+                flag = 1;
+            }
         }
         //权要(带拆分的特征)列表
         List<PatentRightVo> patentRightVos = new ArrayList<>();
@@ -147,14 +197,21 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         featureTO.setPartnerId(personnelVO.getId());
         featureTO.setSplitType(splitType);
         featureTO.setSplitBy(splitBy);
+        featureTO.setTaskId(taskId);
         //查询数据库里是否有拆分记录
         List<Features> featureFromDb = this.queryFeatures(featureTO);
         //删除所有不符合登录人拆分条件的拆分特征
         LambdaQueryWrapper<Features> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(Features::getReportId, reportId)
-                .eq(Features::getSignPatentNo, patentNo)
-                .eq(Features::getPartnerId, personnelVO.getId());
+                .eq(Features::getSignPatentNo, patentNo);
         wrapper.and(QueryWrapper -> QueryWrapper.ne(Features::getSplitBy, a).or().ne(Features::getSplitType, b));
+        if(taskId!=null){
+            List<Features> features =this.list(wrapper);
+            List<Integer> Ids =features.stream().map(Features::getId).collect(Collectors.toList());
+            LambdaQueryWrapper<CompareMessage> queryWrapper =new LambdaQueryWrapper<>();
+            queryWrapper.in(CompareMessage::getFeatureId,Ids);
+            compareMessageService.remove(queryWrapper);
+        }
         this.remove(wrapper);
         //将拆解的权要和特征装载到对象PatentRightVo
         for (int i = 0; i < patentRights.size(); i++) {
@@ -196,6 +253,9 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
                     features.setFeaturesOrder(order);
                     features.setRightType(patentRights.get(i).getType());
                     features.setSplitType(splitType);
+                    if(taskId!=null){
+                        features.setTaskId(taskId);
+                    }
                     featuresList.add(features);
                     order += 1;
                 }
@@ -216,8 +276,8 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         }
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("patentRightVos", patentRightVos);
-        map.put("splitBy", report.getSplitBy());
-        map.put("splitType", report.getSplitType());
+        map.put("splitBy", splitBy);
+        map.put("splitType",splitType);
         return Response.success(map);
     }
 
@@ -337,6 +397,9 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
             lambdaQueryWrapper.in(Features::getPartnerId, features.getPartnerIds());
 
         }
+        if (features.getTaskId() != null) {
+            lambdaQueryWrapper.eq(Features::getTaskId, features.getTaskId());
+        }
         featureList = this.list(lambdaQueryWrapper);
         return featureList;
     }
@@ -354,8 +417,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         LambdaQueryWrapper<Features> wrapper = new LambdaQueryWrapper<>();
         if (patentRightVos.get(0).getReportId() != null && patentRightVos.get(0).getSignPatentNo() != null) {
             wrapper.eq(Features::getReportId, patentRightVos.get(0).getReportId())
-                    .eq(Features::getSignPatentNo, patentRightVos.get(0).getSignPatentNo())
-                    .eq(Features::getPartnerId, personnelVO.getId());
+                    .eq(Features::getSignPatentNo, patentRightVos.get(0).getSignPatentNo());
             Features feature = this.list(wrapper).get(0);
             //根据登录人Id,报告Id,标的专利号删除原有特征
             this.remove(wrapper);
@@ -380,6 +442,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         return Response.success();
     }
 
+
     public List<Map<String,Object>> querySimFeaturePatent(PatentVO patentVO) throws IOException {
         //获得当前用户信息
         PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
@@ -471,17 +534,4 @@ List<Map<String,Object>> mapList =new ArrayList<Map<String,Object>>();
         return 1;
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    public Map<String,Object> getSplitMessage(Integer reportId,String patentNo) {
-      LambdaQueryWrapper<Features> queryWrapper =new LambdaQueryWrapper<>();
-      queryWrapper.eq(Features::getReportId,reportId)
-                  .eq(Features::getSignPatentNo,patentNo);
-      List<Features> features =this.list(queryWrapper);
-      Map<String,Object> map =new HashMap<>();
-      if(features!=null&& features.size()!=0){
-          map.put("splitBy",features.get(0).getSplitBy());
-          map.put("splitType",features.get(0).getSplitType());
-      }
-        return map;
-    }
 }

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

@@ -147,7 +147,7 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
      */
     public List<Report> reportData(List<Report> reports) throws IOException {
         List<Integer> reportIds = reports.stream().map(Report::getId).collect(Collectors.toList());
-        // 查询 对比方案与对比记录
+         //根据报告ID查询报告文件关联信息
         List<AssoReportFile> assoReportFiles = assoReportFileService.queryFileByReportId(reportIds);
         List<ReportFiles> reportFilesList = new ArrayList<>();
         if (assoReportFiles.size() != 0) {
@@ -162,11 +162,13 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
         //过滤报告
         reports.forEach(
                 item -> {
+                    //装载报告应用场景
                     if (StringUtils.isNotEmpty(item.getScenarioId())) {
                         item.setScenarioList(StringUtils.changeStringToString(item.getScenarioId(), ","));
                         item.setScenarioNames(list.stream().filter(systemDict -> systemDict.getType().equals(Constants.ENTERPRISE_APPLICATION_SCENARIO) && item.getScenarioList().contains(systemDict.getValue())).map(SystemDictVO::getLabel).collect(Collectors.toList()));
                         item.setScenarioId(null);
                     }
+                    //装载报告文件
                     List<AssoReportFile> partReportFiles = assoReportFiles.stream().filter(tem -> tem.getReportId().equals(item.getId())).collect(Collectors.toList());
                     if (partReportFiles.size() == 0) {
                         item.setReportFiles(null);
@@ -200,7 +202,6 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
             fileIds.removeAll(updateFileId);
         }
         //做差获得被删除的文件Id
-
         if (fileIds.size() != 0) {
             //根据文件Id删除报告文件关联表记录
             LambdaQueryWrapper<AssoReportFile> deleteWrapper = new LambdaQueryWrapper<>();
@@ -214,7 +215,6 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
             //将文档上传并返回文件入库的Id
             List<Integer> fileIdList = reportFileService.uploadFiles(files);
             assoReportFileService.addAsso(report.getId(), fileIdList);
-
         }
         return report.updateById();
 

+ 5 - 0
RMS/src/main/resources/mapper/AssoTaskPersonelMapper.xml

@@ -6,4 +6,9 @@
        where PERSON_ID=#{personelId} and STATE=#{state} and TASK_ID=#{taskId}
     </select>
 
+    <select id="getSplitMessage" resultType="cn.cslg.report.entity.asso.AssoTaskPatentSplit">
+        select b.* from ASSO_TASK_PATENT a left join ASSO_TASK_PATENT_SPLIT as b on a.id=b.TASK_PATENT_ID
+        where a.PATENT_NO=#{patentNo} and a.TASK_ID=#{taskId} limit 1;
+    </select>
+
 </mapper>

BIN
RMS/target/classes/cn/cslg/report/controller/FeatureController.class


BIN
RMS/target/classes/cn/cslg/report/entity/CompareMessage.class


BIN
RMS/target/classes/cn/cslg/report/entity/Features.class


BIN
RMS/target/classes/cn/cslg/report/entity/asso/AssoTaskPersonel.class


BIN
RMS/target/classes/cn/cslg/report/mapper/AssoTaskPersonelMapper.class


BIN
RMS/target/classes/cn/cslg/report/service/business/FeatureService.class


BIN
RMS/target/classes/cn/cslg/report/service/business/ReportService.class