Explorar o código

任务部分接口 2022/11/15

lwhhszx %!s(int64=2) %!d(string=hai) anos
pai
achega
3d0dd875d9
Modificáronse 31 ficheiros con 937 adicións e 87 borrados
  1. 25 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/CompareFilesVO.java
  2. 27 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/PatentVO.java
  3. 3 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/ReportVO.java
  4. 24 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/SystemDictVO.java
  5. 69 0
      RMS/src/main/java/cn/cslg/report/common/utils/DataUtils.java
  6. 33 1
      RMS/src/main/java/cn/cslg/report/controller/BaseController.java
  7. 44 0
      RMS/src/main/java/cn/cslg/report/controller/CompareController.java
  8. 8 0
      RMS/src/main/java/cn/cslg/report/controller/FeatureController.java
  9. 36 0
      RMS/src/main/java/cn/cslg/report/controller/PatentFiledController.java
  10. 8 6
      RMS/src/main/java/cn/cslg/report/controller/ReportController.java
  11. 9 0
      RMS/src/main/java/cn/cslg/report/controller/TaskController.java
  12. 5 0
      RMS/src/main/java/cn/cslg/report/entity/Features.java
  13. 25 4
      RMS/src/main/java/cn/cslg/report/entity/Report.java
  14. 1 0
      RMS/src/main/java/cn/cslg/report/entity/ReportDocument.java
  15. 99 0
      RMS/src/main/java/cn/cslg/report/entity/ReportField.java
  16. 22 0
      RMS/src/main/java/cn/cslg/report/entity/ReportFieldExpand.java
  17. 83 0
      RMS/src/main/java/cn/cslg/report/entity/ReportFieldOption.java
  18. 0 1
      RMS/src/main/java/cn/cslg/report/mapper/AssoTaskPersonelMapper.java
  19. 13 0
      RMS/src/main/java/cn/cslg/report/mapper/CompareFilesMapper.java
  20. 4 0
      RMS/src/main/java/cn/cslg/report/mapper/FeatureMapper.java
  21. 10 0
      RMS/src/main/java/cn/cslg/report/mapper/ImportTaskMapper.java
  22. 10 0
      RMS/src/main/java/cn/cslg/report/mapper/ReportFieldMapper.java
  23. 78 4
      RMS/src/main/java/cn/cslg/report/service/OutInterfaceService.java
  24. 4 0
      RMS/src/main/java/cn/cslg/report/service/business/AssoTaskPersonelService.java
  25. 63 0
      RMS/src/main/java/cn/cslg/report/service/business/CompareFilesService.java
  26. 73 36
      RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java
  27. 31 0
      RMS/src/main/java/cn/cslg/report/service/business/ImportTaskService.java
  28. 56 0
      RMS/src/main/java/cn/cslg/report/service/business/ReportFieldService.java
  29. 48 20
      RMS/src/main/java/cn/cslg/report/service/business/ReportService.java
  30. 1 15
      RMS/src/main/java/cn/cslg/report/service/business/TaskService.java
  31. 25 0
      RMS/src/main/resources/mapper/CompareFilesMapper.xml

+ 25 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/CompareFilesVO.java

@@ -0,0 +1,25 @@
+package cn.cslg.report.common.model.vo;
+
+import cn.cslg.report.common.model.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * @author 沈永艺
+ * @date 2022-10-31
+ * @description 登录 前台对应实体
+ */
+
+@Data
+@Accessors(chain = true)
+public class CompareFilesVO extends BaseVO {
+
+    @Schema(description = "专利号列表",required = true)
+    private List<String> patentNos;
+    @Schema(description = "报告Id")
+    private Integer reportId;
+
+}

+ 27 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/PatentVO.java

@@ -0,0 +1,27 @@
+package cn.cslg.report.common.model.vo;
+
+import cn.cslg.report.common.model.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * @author 沈永艺
+ * @date 2022-10-31
+ * @description 登录 前台对应实体
+ */
+
+@Data
+@Accessors(chain = true)
+public class PatentVO extends BaseVO {
+    @Schema(description = "报告Id",required = true)
+    private Integer reportId;
+    @Schema(description = "起始条数")
+    private Integer startNumber;
+    @Schema(description = "结束条数")
+    private Integer endNumber;
+    @Schema(description = "专利号列表")
+    private List<String> patentNos;
+}

+ 3 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/ReportVO.java

@@ -125,4 +125,7 @@ public class ReportVO extends BaseVO {
 
     @Schema(description = "选中人员")
     private List<Integer> PersonnelIds;
+
+    @Schema(description = "选中人员")
+    private List<Integer> scenarioList;
 }

+ 24 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/SystemDictVO.java

@@ -0,0 +1,24 @@
+package cn.cslg.report.common.model.vo;
+
+import lombok.Data;
+
+/**
+ * <p>
+ * 系统字典
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-03-30
+ */
+@Data
+public class SystemDictVO  {
+
+    private String label;
+
+    private String value;
+
+    private String type;
+
+    private  Integer id;
+
+}

+ 69 - 0
RMS/src/main/java/cn/cslg/report/common/utils/DataUtils.java

@@ -107,4 +107,73 @@ public class DataUtils {
 
         return features;
     }
+
+
+    /**
+     * 比较两个字符串的相识度
+     * 核心算法:用一个二维数组记录每个字符串是否相同,如果相同记为0,不相同记为1,每行每列相同个数累加
+     * 则数组最后一个数为不相同的总数,从而判断这两个字符的相识度
+     *
+     * @param str
+     * @param target
+     * @return
+     */
+    private static int compare(String str, String target) {
+        int d[][];              // 矩阵
+        int n = str.length();
+        int m = target.length();
+        int i;                  // 遍历str的
+        int j;                  // 遍历target的
+        char ch1;               // str的
+        char ch2;               // target的
+        int temp;               // 记录相同字符,在某个矩阵位置值的增量,不是0就是1
+        if (n == 0) {
+            return m;
+        }
+        if (m == 0) {
+            return n;
+        }
+        d = new int[n + 1][m + 1];
+        // 初始化第一列
+        for (i = 0; i <= n; i++) {
+            d[i][0] = i;
+        }
+        // 初始化第一行
+        for (j = 0; j <= m; j++) {
+            d[0][j] = j;
+        }
+        for (i = 1; i <= n; i++) {
+            // 遍历str
+            ch1 = str.charAt(i - 1);
+            // 去匹配target
+            for (j = 1; j <= m; j++) {
+                ch2 = target.charAt(j - 1);
+                if (ch1 == ch2 || ch1 == ch2 + 32 || ch1 + 32 == ch2) {
+                    temp = 0;
+                } else {
+                    temp = 1;
+                }
+                // 左边+1,上边+1, 左上角+temp取最小
+                d[i][j] = min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + temp);
+            }
+        }
+        return d[n][m];
+    }
+
+
+    /**
+     * 获取最小的值
+     */
+    private static int min(int one, int two, int three) {
+        return (one = one < two ? one : two) < three ? one : three;
+    }
+
+    /**
+     * 获取两字符串的相似度
+     */
+    public static float getSimilarityRatio(String str, String target) {
+        int max = Math.max(str.length(), target.length());
+        return 1 - (float) compare(str, target) / max;
+
+    }
 }

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

@@ -2,6 +2,7 @@ package cn.cslg.report.controller;
 
 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.utils.Response;
 import cn.cslg.report.service.BaseService;
@@ -118,9 +119,40 @@ public class BaseController {
             @Parameter(name = "patentNo",description = "专利号",required = true),
 
     })
-
     public String getPatentByPatentNo(String patentNo) throws IOException {
         return  outInterfaceService.getPatentFromPAS(patentNo);
     }
 
+    @GetMapping("/getPatentNos")
+    @Operation(summary = "根据专利号获得专利")
+    @Parameters(value = {
+            @Parameter(name = "projectId",description = "专题库Id",required = true),
+
+    })
+    public String getPatentNos(Integer projectId) throws IOException {
+        return  outInterfaceService.getPatentNos(projectId);
+    }
+
+    @GetMapping("/getDictsFromPAS")
+    @Operation(summary = "获得PAS场景信息")
+
+    public String getDictsFromPAS() throws IOException {
+        return  outInterfaceService.getDictsFromPAS();
+
+    }
+
+
+    @PostMapping("/getPatentFromPAS")
+    @Operation(summary = "根据报告Id查询对比文件(分页)")
+    public String getPatentNos(@RequestBody PatentVO patentVO) throws IOException {
+        return  outInterfaceService.getPatentFromPAS(patentVO);
+    }
+
+    @PostMapping("/getComPatentNos")
+    @Operation(summary = "根据报告Id获得对比专利号")
+    public String getComPatentNos(@RequestBody PatentVO patentVO) throws IOException {
+        return  outInterfaceService.getComPatentNos(patentVO);
+    }
+
+
 }

+ 44 - 0
RMS/src/main/java/cn/cslg/report/controller/CompareController.java

@@ -0,0 +1,44 @@
+package cn.cslg.report.controller;
+import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.model.vo.CompareFilesVO;
+import cn.cslg.report.common.model.vo.PatentVO;
+import cn.cslg.report.service.business.CompareFilesService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import java.io.IOException;
+
+
+@Tag(name = "对比专利管理")
+@RestController
+@RequestMapping(Constants.REPORT_API + "/compare")
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class CompareController {
+    private final CompareFilesService compareFilesService;
+
+    @RequestMapping(value = "/addCompareFile", method = RequestMethod.POST)
+    @Operation(summary = "添加对比文件")
+    public String addCompareFile(@RequestBody CompareFilesVO compareFilesVO) throws IOException {
+     String res =   compareFilesService.addCompareFile(compareFilesVO);
+        return res;
+    }
+
+    @RequestMapping(value = "/getCompareFile", method = RequestMethod.POST)
+    @Operation(summary = "获得对比文件详情(分页)")
+    public String getCompareFile(@RequestBody PatentVO patentVO) throws IOException {
+        String res = compareFilesService.getCompareFile(patentVO);
+        return res;
+    }
+
+    @RequestMapping(value = "/getCompareNos", method = RequestMethod.GET)
+    @Operation(summary = "获得对比专利号")
+    public String getCompareNos(Integer reportId) throws IOException {
+        String res = compareFilesService.getCompareNos(reportId);
+        return res;
+    }
+}

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

@@ -46,4 +46,12 @@ public class FeatureController {
         String res =  featureService.addFeatures(patentRightVos);
         return res;
     }
+
+    @RequestMapping(value = "/querySimFeaturePatent", method = RequestMethod.GET)
+    @Operation(summary = "获得相似特征的专利号")
+    public String querySimFeaturePatent(Integer ReportId ,String patentNo) throws IOException {
+        String res =  featureService.querySimFeaturePatent(ReportId,patentNo);
+        return res;
+    }
+
 }

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

@@ -0,0 +1,36 @@
+package cn.cslg.report.controller;
+
+import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.model.vo.CompareFilesVO;
+import cn.cslg.report.entity.ReportField;
+import cn.cslg.report.service.business.CompareFilesService;
+import cn.cslg.report.service.business.ReportFieldService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+
+@Tag(name = "对比专利管理")
+@RestController
+@RequestMapping(Constants.REPORT_API + "/patentField")
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class PatentFiledController {
+    private final ReportFieldService reportFieldService;
+
+    @PostMapping("add")
+    @Operation(summary = "新增自定义字段")
+    public String add(@RequestBody ReportField reportFieldField) {
+        return reportFieldService.add(reportFieldField);
+    }
+
+//    @PostMapping("edit")
+//    @Operation(summary = "编辑自定义字段")
+//    public String edit(@RequestBody ReportField reportField) {
+//        return projectFieldService.edit(projectField);
+//    }
+
+
+}

+ 8 - 6
RMS/src/main/java/cn/cslg/report/controller/ReportController.java

@@ -3,7 +3,9 @@ package cn.cslg.report.controller;
 import cn.cslg.report.common.core.base.Constants;
 import cn.cslg.report.common.model.vo.ReportVO;
 import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.common.utils.StringUtils;
 import cn.cslg.report.entity.Report;
+import cn.cslg.report.service.business.CompareFilesService;
 import cn.cslg.report.service.business.ReportService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -14,12 +16,15 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.IOException;
+
 @Tag(name = "报告管理")
 @RestController
 @RequestMapping(Constants.REPORT_API + "/report")
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ReportController {
     private final ReportService reportService;
+    private final CompareFilesService compareFilesService;
 
     /**
      * @param report 报告类
@@ -40,6 +45,7 @@ public class ReportController {
         // 以上的说明可以参考或者改变,按照实际情况使用,另外这些说明我没有设置CODE码,建议加上
 
         if (report != null) {
+
             Integer flag = reportService.addReport(report);
 
             return Response.success("添加成功");
@@ -53,6 +59,7 @@ public class ReportController {
     @Operation(summary = "修改报告")
     public String updateReport(@RequestBody Report report) {
         if (report != null) {
+            report.setScenarioId(StringUtils.join(report.getScenarioList(), ","));
             Boolean flag = reportService.updateById(report);
             if(flag){
                 return Response.success("添加成功");
@@ -66,13 +73,8 @@ public class ReportController {
 
     @RequestMapping(value = "/queryReport", method = RequestMethod.POST)
     @Operation(summary = "查找报告")
-    public String queryReport(@RequestBody ReportVO reportVO) {
+    public String queryReport(@RequestBody ReportVO reportVO) throws IOException {
      return reportService.queryReport(reportVO);
     }
 
-//    @RequestMapping(value = "/getReportDetail", method = RequestMethod.GET)
-//    @Operation(summary = "查看报告详情")
-//    public String getReportDetail(@RequestBody Integer reportId) {
-//        return reportService.queryReport(reportVO);
-//    }
 }

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

@@ -5,6 +5,8 @@ import cn.cslg.report.common.core.base.Constants;
 import cn.cslg.report.common.model.BaseVO;
 import cn.cslg.report.common.model.vo.AuditTaskVO;
 import cn.cslg.report.common.model.vo.TaskVO;
+import cn.cslg.report.common.utils.DataUtils;
+import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.entity.Task;
 import cn.cslg.report.service.business.TaskService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -65,4 +67,11 @@ public class TaskController {
     public String auditTask(@RequestBody AuditTaskVO auditTaskVO) throws ParseException, IOException {
         return taskService.auditTask(auditTaskVO);
     }
+
+    @RequestMapping(value = "/test", method = RequestMethod.GET)
+    @Operation(summary = "测试")
+    public String test(String text1,String text2) throws ParseException, IOException {
+      float a=   DataUtils.getSimilarityRatio(text1,text2);
+        return Response.success("相似度"+a);
+    }
 }

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

@@ -61,5 +61,10 @@ public class Features extends BaseEntity<Features> {
      */
     @TableField(value = "EXPLAIN_TEXT")
     private String explainText;
+    /**
+     *  拆分类型
+     */
+    @TableField(value = "SPLIT_BY")
+    private Integer splitBy;
 
 }

+ 25 - 4
RMS/src/main/java/cn/cslg/report/entity/Report.java

@@ -9,6 +9,7 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 @Accessors(chain = true)
@@ -124,9 +125,9 @@ public class Report extends BaseEntity<Report> {
      * 应用场景
      */
     @Schema(description="应用场景")
-    @TableField(value = "EAS_FLAG")
-    private String easFlag;
 
+    @TableField("SCENARIO_ID")
+    private String scenarioId;
     /**
      * 调查类型
      */
@@ -138,8 +139,8 @@ public class Report extends BaseEntity<Report> {
      * 专题库ID
      */
     @Schema(description="专题库ID")
-    @TableField(value = "THEMATIC_ID")
-    private Integer thematicId;
+    @TableField(value = "PROJECT_ID")
+    private Integer projectId;
 
     /**
      * 卷号
@@ -147,5 +148,25 @@ public class Report extends BaseEntity<Report> {
     @Schema(description="卷号")
     @TableField(value = "VOLUME_NUMBER")
     private String volumeNumber;
+    /**
+     * 拆分根据
+     */
+    @Schema(description="拆分根据")
+    @TableField(value = "SPLIT_BY")
+    private Integer splitBy;
+    /**
+     * 拆分根据
+     */
+    @Schema(description="拆分类型")
+    @TableField(value = "SPLIT_TYPE")
+    private Integer splitType;
+
+    /**
+     * 场景列表
+     */
+    @TableField(exist = false)
+    private List<String> scenarioList;
 
+    @TableField(exist = false)
+    private List<String> scenarioNames;
 }

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

@@ -15,6 +15,7 @@ import lombok.experimental.Accessors;
 @EqualsAndHashCode(callSuper = true)
 @TableName(value = "REPORT_DOCUMENT")
 public class ReportDocument extends BaseEntity<ReportDocument> {
+
     /**
      * 报告ID
      */

+ 99 - 0
RMS/src/main/java/cn/cslg/report/entity/ReportField.java

@@ -0,0 +1,99 @@
+package cn.cslg.report.entity;
+
+import cn.cslg.report.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 专利信息自定义字段表
+ * </p>
+ *
+ * @author 王岩
+ * @since 2021-12-16
+ */
+@Data
+@TableName("OS_PATENT_FIELD")
+public class ReportField extends BaseEntity<ReportField> {
+
+
+    /**
+     * 自定义字段名称
+     */
+    private String name;
+
+    /**
+     * 1.是标引 2.是分类
+     */
+    private Integer ptype;
+
+    /**
+     * 字段类型
+     */
+    private Integer type;
+
+    /**
+     * 状态(正常、关闭)
+     */
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建人账户ID
+     */
+    @TableField("cid")
+    private Integer createBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField("createtime")
+    private Integer createTime;
+
+    /**
+     * 专题库
+     */
+    private Integer projectId;
+
+    /**
+     * 拓展类型
+     */
+    @TableField(exist = false)
+    public List<ReportFieldExpand> expand;
+
+    /**
+     * 选项
+     */
+    @TableField(exist = false)
+    private List<ReportFieldOption> option;
+
+    @TableField(exist = false)
+    private String createName;
+
+    @TableField(exist = false)
+    private Boolean enabled = false;
+
+    @TableField(exist = false)
+    private String text;
+
+    @TableField(exist = false)
+    private List<Integer> selected;
+
+    @TableField(exist = false)
+    private String projectName;
+
+    @Data
+    public static class dataType {
+        private String name;
+        private Object id;
+    }
+}

+ 22 - 0
RMS/src/main/java/cn/cslg/report/entity/ReportFieldExpand.java

@@ -0,0 +1,22 @@
+package cn.cslg.report.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 专利字段拓展类型
+ * </p>
+ *
+ * @author 王岩
+ * @since 2021-12-16
+ */
+@Data
+public class ReportFieldExpand implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    private String name;
+    private Integer ptype;
+}

+ 83 - 0
RMS/src/main/java/cn/cslg/report/entity/ReportFieldOption.java

@@ -0,0 +1,83 @@
+package cn.cslg.report.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 自定义字段多选关联表
+ * </p>
+ *
+ * @author 王岩
+ * @since 2021-12-17
+ */
+@Data
+@TableName("OS_PATENT_FILED_MULTIPLE")
+public class ReportFieldOption  {
+
+    /**
+     * 唯一ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 多选选项名称
+     */
+    private String name;
+
+    /**
+     * 自定义字段ID
+     */
+    @TableField("cid")
+    private Integer fieldId;
+
+    /**
+     * 子节点
+     */
+    @TableField(exist = false)
+    private List<ReportFieldOption> children;
+
+    /**
+     * 父节点ID
+     */
+    @TableField(exist = false)
+    private Integer parentId;
+
+    /**
+     * 专题库ID
+     */
+    @TableField(exist = false)
+    private Integer projectId;
+
+    /**
+     * 类型
+     */
+    @TableField(exist = false)
+    private Integer type;
+
+    /**
+     * 树形层级
+     */
+    @TableField(exist = false)
+    private Integer level;
+
+    /**
+     * 路径
+     */
+    @TableField(exist = false)
+    private String path;
+
+    @TableField(exist = false)
+    private Integer order;
+
+    @TableField(exist = false)
+    private String remark;
+
+    @TableField(exist = false)
+    private Integer total;
+}

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

@@ -1,6 +1,5 @@
 package cn.cslg.report.mapper;
 
-import cn.cslg.report.entity.Report;
 import cn.cslg.report.entity.asso.AssoTaskPersonel;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;

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

@@ -0,0 +1,13 @@
+package cn.cslg.report.mapper;
+
+import cn.cslg.report.entity.CompareFiles;
+import cn.cslg.report.entity.Features;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface CompareFilesMapper extends BaseMapper<CompareFiles> {
+}

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

@@ -3,7 +3,11 @@ package cn.cslg.report.mapper;
 import cn.cslg.report.entity.Features;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 @Mapper
 public interface FeatureMapper extends BaseMapper<Features> {
+    public List<String> getSignPatentNo(@Param("contents") List<String> contents);
 }

+ 10 - 0
RMS/src/main/java/cn/cslg/report/mapper/ImportTaskMapper.java

@@ -0,0 +1,10 @@
+package cn.cslg.report.mapper;
+
+import cn.cslg.report.entity.ImportTask;
+import cn.cslg.report.entity.Task;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ImportTaskMapper extends BaseMapper<ImportTask> {
+}

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

@@ -0,0 +1,10 @@
+package cn.cslg.report.mapper;
+
+import cn.cslg.report.entity.CompareFiles;
+import cn.cslg.report.entity.ReportField;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ReportFieldMapper extends BaseMapper<ReportField> {
+}

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

@@ -1,11 +1,18 @@
 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.utils.CacheUtils;
 import cn.cslg.report.common.utils.JsonUtils;
 import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
+import cn.cslg.report.entity.ImportTask;
+import cn.cslg.report.entity.Report;
+import cn.cslg.report.service.business.ImportTaskService;
+import cn.cslg.report.service.business.ReportService;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.google.gson.Gson;
 import io.swagger.v3.oas.models.security.SecurityScheme;
 import lombok.RequiredArgsConstructor;
@@ -18,10 +25,8 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author 沈永艺
@@ -38,6 +43,8 @@ public class OutInterfaceService {
     public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
     private final CacheUtils cacheUtils;
     private final  LoginUtils loginUtils;
+    private final ReportService reportService;
+    private final ImportTaskService importTaskService;
     /**
      * @title 获取验证码
      * @description 接口来源:PCS
@@ -283,4 +290,71 @@ if(personnelVO.getName()==null)
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+
+    public String getPatentNos(Integer projectId) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PASUrl + "/api/v2/patent/getPatentNos?projectId=" + projectId)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    public String getDictsFromPAS() throws IOException {
+        List<String> dicts =new ArrayList<>();
+    dicts.add(Constants.ENTERPRISE_APPLICATION_SCENARIO);
+        String param = new Gson().toJson(dicts);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PASUrl + "/api/v2/system/dict")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    public String getPatentFromPAS(PatentVO patentVO) throws IOException {
+        LambdaQueryWrapper<ImportTask> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.eq(ImportTask::getReportId,patentVO.getReportId());
+        List<ImportTask> importTasks =importTaskService.list(queryWrapper);
+        List<Integer> taskIds= importTasks.stream().map(ImportTask::getId).collect(Collectors.toList());
+        Map<String,Object> map =new HashMap<>();
+         Report report = reportService.getById(patentVO.getReportId());
+        map.put("projectId", report.getProjectId());
+        map.put("importTaskId", taskIds);
+        map.put("size", patentVO.getSize());
+        map.put("current", patentVO.getCurrent());
+        map.put("startNumber",patentVO.getStartNumber());
+        map.put("endNumber",patentVO.getEndNumber());
+        map.put("patentNos",patentVO.getPatentNos());
+        JSONObject json = new JSONObject(map);
+        RequestBody requestBody = RequestBody.create(JSON, String.valueOf(json));
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PASUrl + "/api/v2/system/patentList")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    public String getComPatentNos(PatentVO patentVO) throws IOException {
+        LambdaQueryWrapper<ImportTask> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.eq(ImportTask::getReportId,patentVO.getReportId());
+        List<ImportTask> importTasks =importTaskService.list(queryWrapper);
+        List<Integer> taskIds= importTasks.stream().map(ImportTask::getId).collect(Collectors.toList());
+        Map<String,Object> map =new HashMap<>();
+        Report report = reportService.getById(patentVO.getReportId());
+        map.put("projectId", report.getProjectId());
+        map.put("importTaskId", taskIds);
+        map.put("startNumber",patentVO.getStartNumber());
+        map.put("endNumber",patentVO.getEndNumber());
+        JSONObject json = new JSONObject(map);
+        RequestBody requestBody = RequestBody.create(JSON, String.valueOf(json));
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PASUrl + "/api/v2/system/getComPantentNos")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
 }

+ 4 - 0
RMS/src/main/java/cn/cslg/report/service/business/AssoTaskPersonelService.java

@@ -23,4 +23,8 @@ import java.util.Map;
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class AssoTaskPersonelService extends ServiceImpl<AssoTaskPersonelMapper, AssoTaskPersonel> {
 
+    public  void test(){}
+
+
+
 }

+ 63 - 0
RMS/src/main/java/cn/cslg/report/service/business/CompareFilesService.java

@@ -0,0 +1,63 @@
+package cn.cslg.report.service.business;
+
+import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.model.vo.CompareFilesVO;
+import cn.cslg.report.common.model.vo.PatentVO;
+import cn.cslg.report.common.model.vo.SystemDictVO;
+import cn.cslg.report.common.utils.LogExceptionUtil;
+import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.entity.CompareFiles;
+import cn.cslg.report.entity.SysDictItem;
+import cn.cslg.report.mapper.CompareFilesMapper;
+import cn.cslg.report.mapper.SystemDictItemMapper;
+import cn.cslg.report.service.OutInterfaceService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+@Slf4j
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class CompareFilesService extends ServiceImpl<CompareFilesMapper, CompareFiles> {
+      private final OutInterfaceService outInterfaceService;
+    public String addCompareFile(CompareFilesVO compareFilesVO){
+     List<CompareFiles> compareFiles =new ArrayList<>();
+     compareFilesVO.getPatentNos().forEach(item->{
+         CompareFiles compareFiles1 =new CompareFiles();
+         compareFiles1.setPatentNo(item);
+         compareFiles1.setReportId(compareFilesVO.getReportId());
+         compareFiles.add(compareFiles1);
+     });
+      this.saveBatch(compareFiles);
+        return  Response.success();
+    }
+
+    public String getCompareFile(PatentVO patentVO) throws IOException {
+        LambdaQueryWrapper<CompareFiles> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.eq(CompareFiles::getReportId,patentVO.getReportId());
+        List<CompareFiles> compareFiles =this.list(queryWrapper);
+        List<String> patentNos =compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
+        patentVO.setPatentNos(patentNos);
+        return  outInterfaceService.getPatentFromPAS(patentVO);
+    }
+
+    public String getCompareNos(Integer reportId) throws IOException {
+        LambdaQueryWrapper<CompareFiles> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.eq(CompareFiles::getReportId,reportId);
+        List<CompareFiles> compareFiles =this.list(queryWrapper);
+        List<String> patentNos =compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
+        return  Response.success(patentNos);
+    }
+}

+ 73 - 36
RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java

@@ -7,6 +7,7 @@ import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.report.entity.Features;
 import cn.cslg.report.entity.PatentRight;
+import cn.cslg.report.entity.Report;
 import cn.cslg.report.mapper.FeatureMapper;
 import cn.cslg.report.service.OutInterfaceService;
 import cn.dev33.satoken.stp.StpUtil;
@@ -21,9 +22,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -35,31 +34,44 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
 
     private final OutInterfaceService outInterfaceService;
     private final CacheUtils cacheUtils;
+    private final ReportService reportService;
+    private final LoginUtils loginUtils;
 
     //对权要进行合并操作
-    private 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();
-           str =str.replace(" ","");
-           Pattern p = Pattern.compile("^[0-9]+\\..*");
-           Matcher m = p.matcher(str);
-           if( m.matches()){
-               retList.add(patentRights.get(i));
-           }
-           else {
-               if(retList.size()!=0){
-              retList.get(retList.size()-1).setContent(retList.get(retList.size()-1).getContent()+patentRights.get(i).getContent());
-               retList.get(retList.size()-1).setContentOut(retList.get(retList.size()-1).getContentOut()+patentRights.get(i).getContentOut());}
-           }
-
-       }
+    private 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();
+            str = str.replace(" ", "");
+            Pattern p = Pattern.compile("^[0-9]+\\..*");
+            Matcher m = p.matcher(str);
+            if (m.matches()) {
+                retList.add(patentRights.get(i));
+            } else {
+                if (retList.size() != 0) {
+                    retList.get(retList.size() - 1).setContent(retList.get(retList.size() - 1).getContent() + patentRights.get(i).getContent());
+                    retList.get(retList.size() - 1).setContentOut(retList.get(retList.size() - 1).getContentOut() + patentRights.get(i).getContentOut());
+                }
+            }
+
+        }
 
         return retList;
     }
+
     //从PAS系统上获得权要并拆分
     public String splitPatentRight(String patentNo, Integer splitType, Integer splitBy, Integer reportId) throws IOException {
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
+        LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper();
+        queryWrapper.eq(Report::getId, reportId);
+        Report report = reportService.list(queryWrapper).get(0);
+        Integer flag = 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<>();
         //从pas获得权要信息
@@ -83,16 +95,18 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         //当splitBy=0时仅仅根据“,”拆解
         if (splitBy == 0) {
             flags.add(",");
-
+            flags.add(",");
         }
         //当splitBy=1时仅仅根据“;“拆解
         else if (splitBy == 1) {
             flags.add(";");
+            flags.add(";");
         }//当splitBy=2时根据“;“和”,”拆解
         else if (splitBy == 2) {
-
-            flags.add(",");
             flags.add(";");
+            flags.add(";");
+            flags.add(",");
+            flags.add(",");
         }
         Features featureTO = new Features();
         featureTO.setReportId(reportId);
@@ -108,10 +122,15 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
 
                 if (featureFromDb != null && featureFromDb.size() != 0) {
                     int rightId = patentRights.get(i).getId();
-                    featuresList = featureFromDb.stream().filter(item -> item.getRightId() == rightId).collect(Collectors.toList());
+                    featuresList = featureFromDb.stream().filter(item -> item.getRightId() == rightId && item.getSplitBy() == splitBy).collect(Collectors.toList());
                 }
                 //如果数据库里无拆解记录则手动插入一条
-                if (featuresList == null || featuresList.size() == 0) {
+                if (featuresList == null || featuresList.size() == 0 || flag == 1) {
+                    LambdaQueryWrapper<Features> wrapper = new LambdaQueryWrapper<>();
+                    wrapper.eq(Features::getReportId, reportId)
+                            .eq(Features::getSignPatentNo, patentNo)
+                            .eq(Features::getPartnerId, personnelVO.getId());
+                    this.remove(wrapper);
                     featuresList = new ArrayList<>();
                     //获得权要的译文并且拆解
                     List<String> contentOuts = this.splitStringByFlags(patentRights.get(i).getContentOut(), flags);
@@ -127,7 +146,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
                         String countOut = contentOuts.size() - 1 >= t ? contentOuts.get(t) : "";
                         features.setContentOut(countOut);
                         features.setContent(contents.get(t));
-                        PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
+                        features.setSplitBy(splitBy);
                         features.setPartnerId(personnelVO.getId());
                         featuresList.add(features);
                     }
@@ -137,7 +156,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
 
             //装载到对象PatentRightVo
             PatentRightVo patentRightVo = new PatentRightVo();
-            String name="权要"+(i+1);
+            String name = "权要" + (i + 1);
             patentRightVo.setPatentId(patentRights.get(i).getPatentId());
             patentRightVo.setFeatures(featuresList);
             patentRightVo.setContent(patentRights.get(i).getContent());
@@ -149,9 +168,11 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
             patentRightVo.setSignPatentNo(patentNo);
             patentRightVos.add(patentRightVo);
         }
-
-
-        return Response.success(patentRightVos);
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("patentRightVos", patentRightVos);
+        map.put("splitBy", report.getSplitBy());
+        map.put("splitType", report.getSplitType());
+        return Response.success(map);
 
     }
 
@@ -210,26 +231,42 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
     public String addFeatures(List<PatentRightVo> patentRightVos) {
         PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
         LambdaQueryWrapper<Features> wrapper = new LambdaQueryWrapper<>();
-        if(patentRightVos.get(0).getReportId() != null && patentRightVos.get(0).getSignPatentNo() != null ) {
+        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::getPartnerId, personnelVO.getId());
             this.remove(wrapper);
         }
         List<Features> features = new ArrayList<>();
         for (int i = 0; i < patentRightVos.size(); i++) {
             PatentRightVo patentRightVo = patentRightVos.get(i);
-                if (patentRightVo.getFeatures() != null && patentRightVo.getFeatures().size() != 0) {
-                    features.addAll(patentRightVo.getFeatures());
+            if (patentRightVo.getFeatures() != null && patentRightVo.getFeatures().size() != 0) {
+                features.addAll(patentRightVo.getFeatures());
             }
         }
-        for(int t =0 ;t<features.size();t++){
+        for (int t = 0; t < features.size(); t++) {
             features.get(t).setPartnerId(personnelVO.getId());
         }
         this.saveBatch(features);
         return Response.success();
     }
 
+    public String querySimFeaturePatent(Integer reportId, String patentNo) {
+        //获得当前用户信息
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        //根据报告Id,拆分人Id,标的专利号获得特征。
+        LambdaQueryWrapper<Features> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Features::getReportId, reportId)
+                .eq(Features::getSignPatentNo, patentNo)
+                .eq(Features::getPartnerId, personnelVO.getId());
+        List<Features> features = this.list(queryWrapper);
+        //获得特征内容
+        List<String> contents = features.stream().map(Features::getContent).collect(Collectors.toList());
+        return Response.success();
+
+
+    }
+
 
 }

+ 31 - 0
RMS/src/main/java/cn/cslg/report/service/business/ImportTaskService.java

@@ -0,0 +1,31 @@
+package cn.cslg.report.service.business;
+
+import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.utils.LogExceptionUtil;
+import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.entity.ImportTask;
+import cn.cslg.report.entity.SysDictItem;
+import cn.cslg.report.mapper.ImportTaskMapper;
+import cn.cslg.report.mapper.SystemDictItemMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@Slf4j
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask> {
+    /**
+     * @return 成功返回客户列表信息 失败返回错误信息
+     * @title 获取部分客户
+     * @author 沈永艺
+     */
+
+}

+ 56 - 0
RMS/src/main/java/cn/cslg/report/service/business/ReportFieldService.java

@@ -0,0 +1,56 @@
+package cn.cslg.report.service.business;
+
+import cn.cslg.report.common.utils.DateUtils;
+import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
+import cn.cslg.report.entity.ReportField;
+import cn.cslg.report.mapper.ReportFieldMapper;
+import cn.hutool.core.lang.tree.Tree;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 专利信息自定义字段表 服务类
+ * </p>
+ *
+ * @author 王岩
+ * @since 2021-12-16
+ */
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class ReportFieldService extends ServiceImpl<ReportFieldMapper, ReportField> {
+
+ private  final LoginUtils loginUtils;
+
+    public String add(ReportField reportField) {
+        ReportField temp = this.getProjectFieldByName(reportField.getName(), reportField.getProjectId());
+        if (temp != null) {
+            return Response.error("字段名称已存在");
+        }
+        reportField.setPtype(reportField.getType() == 6 ? 2 : 1);
+        reportField.setCreateBy(loginUtils.getId());
+        reportField.setCreateTime(DateUtils.getDateTime());
+        reportField.setProjectId(reportField.getProjectId());
+        reportField.insert();
+        return Response.success(reportField.getId());
+    }
+
+    public ReportField getProjectFieldByName(String name, Integer projectId) {
+        LambdaQueryWrapper<ReportField> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportField::getName, name);
+        queryWrapper.eq(ReportField::getProjectId, projectId);
+        return this.getOne(queryWrapper);
+    }
+
+}

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

@@ -1,12 +1,16 @@
 package cn.cslg.report.service.business;
 
+import cn.cslg.report.common.core.base.Constants;
 import cn.cslg.report.common.model.vo.ReportVO;
+import cn.cslg.report.common.model.vo.SystemDictVO;
 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.StringUtils;
 import cn.cslg.report.entity.Report;
 import cn.cslg.report.mapper.ReportMapper;
 import cn.cslg.report.service.OutInterfaceService;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -18,36 +22,41 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 @Slf4j
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ReportService extends ServiceImpl<ReportMapper, Report> {
-     private final OutInterfaceService outInterfaceService;
+    private final OutInterfaceService outInterfaceService;
+
     /**
-     * @author 沈永艺
      * @param report 报告类
+     * @author 沈永艺
      */
     @Transactional(rollbackFor = Exception.class)
     public Integer addReport(Report report) {
         try {
-         String res1 =   outInterfaceService.getClientNameFromPAS(report.getClientId());
+            report.getScenarioList();
+            report.setScenarioId(StringUtils.join(report.getScenarioList(), ","));
+            String res1 = outInterfaceService.getClientNameFromPAS(report.getClientId());
             JSONObject jsonObject = JSONObject.parseObject(res1);
             String clientName = jsonObject.getString("data");
-         String res2 =   outInterfaceService.getPersonNameAndDepart(report.getPersonId(),report.getDepartmentId());
-         if(report.getAssociateReportId()!=null){
-         LambdaQueryWrapper<Report> wrapper =new LambdaQueryWrapper<>();
-             wrapper.eq(Report::getId,report.getAssociateReportId());
-             Report assioReport =this.list(wrapper).get(0);
-             report.setAssociateReportName(assioReport.getName());
-         }
+            String res2 = outInterfaceService.getPersonNameAndDepart(report.getPersonId(), report.getDepartmentId());
+            if (report.getAssociateReportId() != null) {
+                LambdaQueryWrapper<Report> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(Report::getId, report.getAssociateReportId());
+                Report assioReport = this.list(wrapper).get(0);
+                report.setAssociateReportName(assioReport.getName());
+            }
 
             JSONObject jsonObject2 = JSONObject.parseObject(res2);
-            Map<String,Object> map = (Map<String, Object>) jsonObject2.get("data");
+            Map<String, Object> map = (Map<String, Object>) jsonObject2.get("data");
             report.setClientName(clientName);
             report.setDepartmentName(map.get("departName").toString());
             report.setPersonName(map.get("personName").toString());
@@ -73,22 +82,41 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
 
     @Transactional(rollbackFor = Exception.class)
     //查询报告
-    public String queryReport(ReportVO reportVO) {
-        LambdaQueryWrapper<Report> queryWrapper =new LambdaQueryWrapper<>();
-        if(reportVO.getName()!=null){
-        queryWrapper.like(Report::getName,reportVO.getName());
+    public String queryReport(ReportVO reportVO) throws IOException {
+        LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper<>();
+        if (reportVO.getName() != null) {
+            queryWrapper.like(Report::getName, reportVO.getName());
+        }
+        if (reportVO.getReportId() != null) {
+            queryWrapper.eq(Report::getId, reportVO.getReportId());
         }
-        if(reportVO.getReportId()!=null)
-        { queryWrapper.eq(Report::getId,reportVO.getReportId());}
-        if(reportVO.getSize()!=null&&reportVO.getSize()!=null) {
+        queryWrapper.orderByDesc(Report::getId);
+        if (reportVO.getSize() != null && reportVO.getSize() != null) {
             List<Report> reports = this.page(new Page<>(reportVO.getCurrent(), reportVO.getSize()), queryWrapper).getRecords();
+            reports = this.reportData(reports);
             long count = this.count(queryWrapper);
             return Response.success(reports, DataUtils.setPageColumn(reportVO.getSize(), reportVO.getCurrent(), Math.toIntExact(count)));
+        } else {
+            List<Report> reports = this.list(queryWrapper);
+            reports = this.reportData(reports);
+            return Response.success(reports);
         }
-       else { List<Report> reports =this.list(queryWrapper);
-            return Response.success(reports);}
     }
 
+    public List<Report> reportData(List<Report> reports) throws IOException {
+        String res = outInterfaceService.getDictsFromPAS();
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        List<SystemDictVO> list = JSONArray.parseArray(jsonObject.getString("data"),SystemDictVO.class);
+        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);
+                    }
 
+                });
 
+        return reports;
+    }
 }

+ 1 - 15
RMS/src/main/java/cn/cslg/report/service/business/TaskService.java

@@ -46,20 +46,6 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
     private final CacheUtils cacheUtils;
     private final AssoTaskPersonelService assoTaskPersonelService;
 
-//    @Transactional(rollbackFor = Exception.class)
-//    public String addTask(Task task) {
-//        try {
-//            this.save(task);
-//            return Response.success();
-//        } catch (Exception e) {
-//            log.error("添加任务异常,异常信息:" + LogExceptionUtil.getMessage(e));
-//            log.info("添加任务异常,开始回滚! 时间: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//            log.info("回滚完毕! 时间: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-//            return Response.error();
-//        }
-//    }
-
     @Transactional(rollbackFor = Exception.class)
     public String deleteTask(Integer id) {
         try {
@@ -108,7 +94,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
             }
         }
 
-
+        lambdaQueryWrapper.orderByDesc(Task::getId);
         List<Task> taskList;
         Long count = this.count(lambdaQueryWrapper);
         if (taskVO.getCurrent() != null && taskVO.getSize() != null) {

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

@@ -0,0 +1,25 @@
+<?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.CompareFilesMapper">
+    <select id="patentNos" >
+        select DISTINCT PATENT_NO from COMPARE_FILES where
+        <where>
+            <if test="params.createName != '' and params.createName != null">
+                and b.name like concat('%', #{params.createName}, '%')
+            </if>
+            <if test="params.status != null">
+                and a.status = #{params.status}
+            </if>
+            <if test="params.type != null">
+                and a.type = #{params.type}
+            </if>
+            <if test="params.projectId != null">
+                and a.tid = #{params.projectId}
+            </if>
+            <if test="params.projectName != '' and params.projectName != null">
+                and c.name like concat('%', #{params.projectName}, '%')
+            </if>
+        </where>
+        order by a.ctime ${params.order}
+    </select>
+</mapper>