فهرست منبع

Merge remote-tracking branch 'origin/master'

lwhhszx 1 سال پیش
والد
کامیت
907a359f79
28فایلهای تغییر یافته به همراه1234 افزوده شده و 128 حذف شده
  1. 0 32
      src/main/java/cn/cslg/pas/common/dto/business/AvoidDesignUpdateDTO.java
  2. 0 28
      src/main/java/cn/cslg/pas/common/dto/business/AvoidDesignWholeUpdateDTO.java
  3. 68 0
      src/main/java/cn/cslg/pas/common/dto/business/ProductMessageDTO.java
  4. 23 0
      src/main/java/cn/cslg/pas/common/dto/business/TortCompareRecordDTO.java
  5. 42 0
      src/main/java/cn/cslg/pas/common/dto/business/TortDTO.java
  6. 7 9
      src/main/java/cn/cslg/pas/common/model/cronModel/SystemFile.java
  7. 82 0
      src/main/java/cn/cslg/pas/common/vo/business/ProductMessageVO.java
  8. 44 0
      src/main/java/cn/cslg/pas/common/vo/business/TortCompareRecordVO.java
  9. 62 0
      src/main/java/cn/cslg/pas/common/vo/business/TortRightVO.java
  10. 77 0
      src/main/java/cn/cslg/pas/common/vo/business/TortVO.java
  11. 88 0
      src/main/java/cn/cslg/pas/controller/FTOReportController.java
  12. 0 16
      src/main/java/cn/cslg/pas/controller/ProjectTaskController.java
  13. 26 0
      src/main/java/cn/cslg/pas/domain/business/AssoProductMessageFile.java
  14. 70 0
      src/main/java/cn/cslg/pas/domain/business/FTOCompareRecord.java
  15. 77 0
      src/main/java/cn/cslg/pas/domain/business/ProductMessage.java
  16. 14 0
      src/main/java/cn/cslg/pas/mapper/AssoProductMessageFileMapper.java
  17. 14 0
      src/main/java/cn/cslg/pas/mapper/FTOCompareRecordMapper.java
  18. 14 0
      src/main/java/cn/cslg/pas/mapper/ProductMessageMapper.java
  19. 17 0
      src/main/java/cn/cslg/pas/service/business/AssoProductMessageFileService.java
  20. 18 10
      src/main/java/cn/cslg/pas/service/business/AvoidDesignWholeService.java
  21. 236 0
      src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java
  22. 5 3
      src/main/java/cn/cslg/pas/service/business/FeatureService.java
  23. 241 0
      src/main/java/cn/cslg/pas/service/business/ProductMessageService.java
  24. 1 1
      src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java
  25. 2 1
      src/main/java/cn/cslg/pas/service/business/ReportProjectService.java
  26. 4 4
      src/main/java/cn/cslg/pas/service/common/PersonFieldService.java
  27. 1 1
      src/main/resources/jsons/reportProject.json
  28. 1 23
      src/test/java/cn/cslg/pas/service/AvoidDesignServiceTests.java

+ 0 - 32
src/main/java/cn/cslg/pas/common/dto/business/AvoidDesignUpdateDTO.java

@@ -1,32 +0,0 @@
-package cn.cslg.pas.common.dto.business;
-
-import lombok.Data;
-
-/**
- * 回避设计UpdateDTO
- * @Author xiexiang
- * @Date 2023/12/5
- */
-@Data
-public class AvoidDesignUpdateDTO {
-    /**
-     * id
-     */
-    private Integer id;
-
-    /**
-     * 对应特征
-     */
-    private Integer featureId;
-
-    /**
-     * 所属报告
-     */
-    private Integer projectId;
-
-    /**
-     * 回避设计方向
-     */
-    private String direction;
-    
-}

+ 0 - 28
src/main/java/cn/cslg/pas/common/dto/business/AvoidDesignWholeUpdateDTO.java

@@ -1,28 +0,0 @@
-package cn.cslg.pas.common.dto.business;
-
-import lombok.Data;
-
-
-/**
- * 回避设计方向DTO
- * @Author xiexiang
- * @Date 2023/12/5
- */
-@Data
-public class AvoidDesignWholeUpdateDTO {
-    /**
-     * id
-     */
-    private Integer id;
-
-    /**
-     * 所属报告
-     */
-    private Integer projectId;
-
-    /**
-     * 内容
-     */
-    private String content;
-    
-}

+ 68 - 0
src/main/java/cn/cslg/pas/common/dto/business/ProductMessageDTO.java

@@ -0,0 +1,68 @@
+package cn.cslg.pas.common.dto.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * FTO、侵权分析报告 标的产品信息
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Data
+public class ProductMessageDTO {
+    /**
+     * 产品id
+     */
+    private String id;
+
+    /**
+     * 产品名称
+     */
+    private String productName;
+
+    /**
+     * 产品说明
+     */
+    private String productDescription;
+
+    /**
+     * 调查区域
+     */
+    private String surveyArea;
+
+    /**
+     * 检索策略
+     */
+    private String searchPolicy;
+
+    /**
+     * 检索截止日期
+     */
+    private Date deadLine;
+
+    /**
+     * 关注企业/发明人/技术方向
+     */
+    private String focusInformation;
+
+    /**
+     * 备注
+     */
+    private String description;
+
+    /**
+     * 项目id(报告)
+     */
+    private Integer projectId;
+
+    /**
+     * 图片guids
+     */
+    private List<String> fileGuids;
+
+}

+ 23 - 0
src/main/java/cn/cslg/pas/common/dto/business/TortCompareRecordDTO.java

@@ -0,0 +1,23 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 侵权分析对比结果保存DTO
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Data
+public class TortCompareRecordDTO {
+    /**
+     * 所属报告
+     */
+    private Integer projectId;
+
+    /**
+     * 特征与侵权分析对比结果DTO
+     */
+    private List<TortDTO> tortDTOS;
+}

+ 42 - 0
src/main/java/cn/cslg/pas/common/dto/business/TortDTO.java

@@ -0,0 +1,42 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+/**
+ * 特征信息与侵权对比结果DTO
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Data
+public class TortDTO {
+    /**
+     * 对应特征
+     */
+    private Integer featureId;
+    private String content;
+    private String explainText;
+    private Integer rightSort;
+    private Integer rightType;
+
+    /**
+     * 侵权分析对比结果字段
+     */
+    private Integer id;
+    /**
+     * 标的说明
+     */
+    private String targetDescription;
+
+    /**
+     * 对比说明
+     */
+    private String compareDescription;
+
+    /**
+     * 对比结果
+     * 0字面相同 1等同 2不等同 3待确定
+     */
+    private Integer compareResult;
+
+
+}

+ 7 - 9
src/main/java/cn/cslg/pas/common/model/cronModel/SystemFile.java

@@ -14,14 +14,11 @@ import java.util.Date;
 @Data
 
 public class SystemFile  {
-
-
+    /**
+     * 文件guid
+     */
     private String guid;
 
-
-
-
-
     /**
      * 文件名称
      */
@@ -30,9 +27,10 @@ public class SystemFile  {
     /**
      * 原始名称
      */
-
     private String originalName;
 
-     private String type;
-
+    /**
+     * 文件类型
+     */
+    private String type;
 }

+ 82 - 0
src/main/java/cn/cslg/pas/common/vo/business/ProductMessageVO.java

@@ -0,0 +1,82 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * FTO、侵权分析报告 标的产品信息返回VO
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Data
+public class ProductMessageVO {
+    /**
+     * 产品id
+     */
+    private Integer id;
+
+    /**
+     * 产品名称
+     */
+    private String productName;
+
+    /**
+     * 产品说明
+     */
+    private String productDescription;
+
+    /**
+     * 调查区域
+     */
+    private String surveyArea;
+
+    /**
+     * 检索策略
+     */
+    private String searchPolicy;
+
+    /**
+     * 检索截止日期
+     */
+    private Date deadLine;
+
+    /**
+     * 关注企业/发明人/技术方向
+     */
+    private String focusInformation;
+
+    /**
+     * 备注
+     */
+    private String description;
+
+    /**
+     * 项目id(报告)
+     */
+    private Integer projectId;
+
+    /**
+     * 图片详情
+     */
+    private List<SystemFile> systemFileList;
+
+    /**
+     * 创建人id
+     */
+    private String createId;
+
+    /**
+     * 创建人名称
+     */
+    private String createName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+}

+ 44 - 0
src/main/java/cn/cslg/pas/common/vo/business/TortCompareRecordVO.java

@@ -0,0 +1,44 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 侵权分析对比结果VO
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Data
+public class TortCompareRecordVO {
+    /**
+     * 所属报告
+     */
+    private Integer projectId;
+
+    private String projectName;
+
+    private Integer projectType;
+
+    /**
+     * 创建人id
+     */
+    private String createId;
+
+    /**
+     * 创建人名称
+     */
+    private String createName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 权要信息
+     */
+    private List<TortRightVO> tortRightVOS;
+
+}

+ 62 - 0
src/main/java/cn/cslg/pas/common/vo/business/TortRightVO.java

@@ -0,0 +1,62 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.vo.CompareMessageVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 侵权分析对比结果与权要层
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Data
+public class TortRightVO {
+    /**
+     * 权要名
+     */
+    private String RightName;
+    /**
+     * 专利号
+     */
+    private String signPatentNo;
+    /**
+     * 特征拆分人ID
+     */
+    private Integer partnerId;
+    /**
+     * 专利ID
+     */
+    private String patentNo;
+
+    /**
+     * 内容
+     */
+    private String contentOut;
+
+    /**
+     * 内容
+     */
+    private String content;
+    /**
+     * 类型
+     */
+    private Integer type;
+
+    private Integer sort;
+
+    /**
+     * 所属报告
+     */
+    private Integer projectId;
+
+    /**
+     *
+     */
+    private List<CompareMessageVO> compareMessageVOS;
+
+    /**
+     * 特征与侵权分析对比结果信息
+     */
+    private List<TortVO> tortVOS;
+}

+ 77 - 0
src/main/java/cn/cslg/pas/common/vo/business/TortVO.java

@@ -0,0 +1,77 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 侵权分析对比结果VO
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Data
+public class TortVO {
+    /**
+     * 对应特征
+     */
+    private Integer featureId;
+
+    /**
+     * 特征内容
+     */
+    private String content;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     *
+     */
+    private Integer rightSort;
+
+    private Integer rightType;
+
+    private String explainText;
+
+    private String formId;
+
+    private Integer sysOrder;
+
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 标的说明
+     */
+    private String targetDescription;
+
+    /**
+     * 对比说明
+     */
+    private String compareDescription;
+
+    /**
+     * 对比结果
+     * 0字面相同 1等同 2不等同 3待确定
+     */
+    private Integer compareResult;
+
+    /**
+     * 创建人id
+     */
+    private String createId;
+
+    /**
+     * 创建人名称
+     */
+    private String createName;
+
+    /**
+     * 创建时间
+     */
+    private Date CreateTime;
+}

+ 88 - 0
src/main/java/cn/cslg/pas/controller/FTOReportController.java

@@ -0,0 +1,88 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.GetAvoidDesignDTO;
+import cn.cslg.pas.common.dto.business.ProductMessageDTO;
+import cn.cslg.pas.common.dto.business.TortCompareRecordDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.business.AvoidDesignWholeVO;
+import cn.cslg.pas.common.vo.business.ProductMessageVO;
+import cn.cslg.pas.common.vo.business.TortCompareRecordVO;
+import cn.cslg.pas.exception.ConditionException;
+import cn.cslg.pas.exception.UnLoginException;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.service.business.FTOCompareRecordService;
+import cn.cslg.pas.service.business.ProductMessageService;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * FTO
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/fto")
+@RestController
+public class FTOReportController {
+    @Autowired
+    private ProductMessageService productMessageService;
+    @Autowired
+    private FTOCompareRecordService ftoCompareRecordService;
+
+    @Operation(summary = "编辑/保存标的产品信息")
+    @PostMapping("/addProductMessage")
+    public Response addProductMessage(@RequestBody ProductMessageDTO productMessageDTO){
+        Integer id = productMessageService.addOrUpdateProductMessage(productMessageDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询标的产品信息")
+    @GetMapping("/getProductMessage")
+    public Response getProductMessage(Integer projectId){
+        Records records = new Records();
+        ProductMessageVO productMessageVO = productMessageService.getProductMessage(projectId);
+        records.setData(productMessageVO);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "保存侵权对比结果")
+    @PostMapping("/addTortCompareRecord")
+    public Response addTortCompareRecord(@RequestBody TortCompareRecordDTO tortCompareRecordDTO){
+        if (tortCompareRecordDTO != null) {
+            List<Integer> ids = new ArrayList<>();
+            try {
+                ids = ftoCompareRecordService.addTortCompareRecord(tortCompareRecordDTO);
+            } catch (Exception e) {
+                if (e instanceof XiaoShiException) {
+                    return Response.error(e.getMessage());
+                } else if (e instanceof UnLoginException) {
+                    return Response.unLogin(e.getMessage());
+                } else if (e instanceof ConditionException) {
+                    return Response.conditionError(e.getMessage());
+                }
+            }
+            Records records = new Records();
+            records.setData(ids);
+            return Response.success(records);
+        } else {
+            return Response.error("入参为null");
+        }
+    }
+
+    @Operation(summary = "查询侵权分析对比结果")
+    @PostMapping("/getTortCompareRecord")
+    public Response getTortCompareRecord(@RequestBody GetAvoidDesignDTO getAvoidDesignDTO) throws Exception {
+        TortCompareRecordVO tortCompareRecordVO = ftoCompareRecordService.getTortCompareRecord(getAvoidDesignDTO);
+        return Response.success(tortCompareRecordVO);
+    }
+
+}

+ 0 - 16
src/main/java/cn/cslg/pas/controller/ProjectTaskController.java

@@ -39,9 +39,6 @@ public class ProjectTaskController {
     @Autowired
     private TaskHandleResultService taskHandleResultService;
 
-//    @Autowired
-//    private AssoTaskFileService assoTaskFileService;
-
     @Operation(summary = "添加项目开卷审核任务")
     @PostMapping("/addProjectOpenAuditTask")
     public Response addProjectOpenAuditTask(@RequestBody PatentDigProjectTaskDTO patentDigProjectTaskDTO) throws Exception {
@@ -104,17 +101,4 @@ public class ProjectTaskController {
             return Response.error("失败");
         }
     }
-//    @Operation(summary = "查询任务与附件关联")
-//    @PostMapping("/getAssoTaskFile")
-//    public Response getAssoTaskFile(@RequestBody GetAssoTaskFileDTO getAssoTaskFileDTO) throws IOException {
-//        List<AssoTaskFileVO> assoTaskFileVOS = assoTaskFileService.getAssoTaskFile(getAssoTaskFileDTO.getTaskId());
-//        return Response.success(assoTaskFileVOS);
-//    }
-//
-//    @Operation(summary = "删除任务与附件关联")
-//    @PostMapping("/deleteAssoTaskFile")
-//    public String deleteAssoTaskFile(@RequestBody List<Integer> ids){
-//        assoTaskFileService.deleteAssoTaskFile(ids);
-//        return Response.success();
-//    }
 }

+ 26 - 0
src/main/java/cn/cslg/pas/domain/business/AssoProductMessageFile.java

@@ -0,0 +1,26 @@
+package cn.cslg.pas.domain.business;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 标的产品与图片关联表
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Data
+@TableName("asso_product_message_file")
+public class AssoProductMessageFile {
+    /**
+     * 标的产品id
+     */
+    @TableField(value = "product_message_id")
+    private Integer productMessageId;
+
+    /**
+     * 文件guid
+     */
+    @TableField(value = "file_guid")
+    private String fileGuid;
+}

+ 70 - 0
src/main/java/cn/cslg/pas/domain/business/FTOCompareRecord.java

@@ -0,0 +1,70 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * FTO对比记录
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Data
+@TableName("fto_compare_record")
+public class FTOCompareRecord extends BaseEntity<FTOCompareRecord> {
+    /**
+     * 标的说明
+     */
+    @TableField(value = "target_description")
+    private String targetDescription;
+    /**
+     * 对比说明
+     */
+    @TableField(value = "compare_description")
+    private String compareDescription;
+    /**
+     * 对比文献编号
+     */
+    @TableField(value = "compare_file_number")
+    private String compareFileNumber;
+
+    /**
+     * 报告id
+     */
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+    /**
+     * 0字面相同  1等同  2不相同  3待确定
+     */
+    @TableField(value = "compare_result")
+    private Integer compareResult;
+
+    /**
+     * 特征id
+     */
+    @TableField(value = "featureId")
+    private Integer featureId;
+
+    /**
+     * 任务id
+     */
+    @TableField(value = "project_task_id")
+    private Integer projectTaskId;
+
+    /**
+     * 创建人id
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+}

+ 77 - 0
src/main/java/cn/cslg/pas/domain/business/ProductMessage.java

@@ -0,0 +1,77 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * FTO、侵权分析报告 标的产品信息
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Data
+@TableName("product_message")
+public class ProductMessage extends BaseEntity<ProductMessage> {
+    /**
+     * 产品名称
+     */
+    @TableField(value = "product_name")
+    private String productName;
+
+    /**
+     * 产品说明
+     */
+    @TableField(value = "product_description")
+    private String productDescription;
+
+    /**
+     * 调查区域
+     */
+    @TableField(value = "survey_area")
+    private String surveyArea;
+
+    /**
+     * 检索策略
+     */
+    @TableField(value = "search_policy")
+    private String searchPolicy;
+
+    /**
+     * 检索截止日期
+     */
+    @TableField(value = "dead_line")
+    private Date deadLine;
+
+    /**
+     * 关注企业/发明人/技术方向
+     */
+    @TableField(value = "focus_information")
+    private String focusInformation;
+
+    /**
+     * 备注
+     */
+    @TableField(value = "description")
+    private String description;
+
+    /**
+     * 项目id(报告)
+     */
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+    /**
+     * 创建人id
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+}

+ 14 - 0
src/main/java/cn/cslg/pas/mapper/AssoProductMessageFileMapper.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.AssoProductMessageFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 标的产品与图片关联Mapper层
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Repository
+public interface AssoProductMessageFileMapper extends BaseMapper<AssoProductMessageFile> {
+}

+ 14 - 0
src/main/java/cn/cslg/pas/mapper/FTOCompareRecordMapper.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.FTOCompareRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * FTO对比记录的Mapper层
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Repository
+public interface FTOCompareRecordMapper extends BaseMapper<FTOCompareRecord> {
+}

+ 14 - 0
src/main/java/cn/cslg/pas/mapper/ProductMessageMapper.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.ProductMessage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 标的产品信息Mapper
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Repository
+public interface ProductMessageMapper extends BaseMapper<ProductMessage> {
+}

+ 17 - 0
src/main/java/cn/cslg/pas/service/business/AssoProductMessageFileService.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.domain.business.AssoProductMessageFile;
+import cn.cslg.pas.mapper.AssoProductMessageFileMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 标的产品与图片关联Service层
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Service
+@Slf4j
+public class AssoProductMessageFileService extends ServiceImpl<AssoProductMessageFileMapper, AssoProductMessageFile> {
+}

+ 18 - 10
src/main/java/cn/cslg/pas/service/business/AvoidDesignWholeService.java

@@ -1,15 +1,18 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.AvoidDesignWholeDTO;
-import cn.cslg.pas.common.dto.business.AvoidDesignWholeUpdateDTO;
 import cn.cslg.pas.common.dto.business.GetAvoidDesignDTO;
 import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.PatentRightVo;
 import cn.cslg.pas.common.vo.business.AvoidDesignRightVO;
 import cn.cslg.pas.common.vo.business.AvoidDesignVO;
 import cn.cslg.pas.common.vo.business.AvoidDesignWholeVO;
 import cn.cslg.pas.common.vo.business.SplitVO;
 import cn.cslg.pas.domain.business.*;
+import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AvoidDesignWholeMapper;
 import cn.cslg.pas.service.permissions.PermissionService;
@@ -49,6 +52,12 @@ public class AvoidDesignWholeService extends ServiceImpl<AvoidDesignWholeMapper,
     @Autowired
     private ReportProjectService reportProjectService;
 
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private LoginUtils loginUtils;
+
     /**
      * 新增回避设计方案总体方向
      * @param avoidDesignWholeDTO
@@ -57,15 +66,14 @@ public class AvoidDesignWholeService extends ServiceImpl<AvoidDesignWholeMapper,
     public Integer addAvoidDesignWhole(AvoidDesignWholeDTO avoidDesignWholeDTO){
         AvoidDesignWhole avoidDesignWhole = new AvoidDesignWhole();
         BeanUtils.copyProperties(avoidDesignWholeDTO, avoidDesignWhole);
-//        //获取登录人信息
-//        PersonnelVO personnelVO = new PersonnelVO();
-//        try {
-//            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-//        } catch (Exception e) {
-//            throw new UnLoginException("未登录");
-//        }
-//        avoidDesignWhole.setCreateId(personnelVO.getId());
-        avoidDesignWhole.setCreateId("328");
+        //获取登录人信息
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        avoidDesignWhole.setCreateId(personnelVO.getId());
         avoidDesignWhole.insert();
         return avoidDesignWhole.getId();
     }

+ 236 - 0
src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java

@@ -0,0 +1,236 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.GetAvoidDesignDTO;
+import cn.cslg.pas.common.dto.business.TortCompareRecordDTO;
+import cn.cslg.pas.common.dto.business.TortDTO;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.vo.PatentRightVo;
+import cn.cslg.pas.common.vo.business.SplitVO;
+import cn.cslg.pas.common.vo.business.TortCompareRecordVO;
+import cn.cslg.pas.common.vo.business.TortRightVO;
+import cn.cslg.pas.common.vo.business.TortVO;
+import cn.cslg.pas.domain.business.AvoidDesign;
+import cn.cslg.pas.domain.business.FTOCompareRecord;
+import cn.cslg.pas.domain.business.Feature;
+import cn.cslg.pas.domain.business.ReportProject;
+import cn.cslg.pas.exception.UnLoginException;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.FTOCompareRecordMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * FTO对比记录的Service层
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Service
+@Slf4j
+public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper, FTOCompareRecord> {
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private FeatureService featureService;
+
+    @Autowired
+    private ReportProjectService reportProjectService;
+
+    /**
+     * 新增侵权对比结果
+     *
+     * @param tortCompareRecordDTO
+     * @return
+     */
+    public List<Integer> addTortCompareRecord(TortCompareRecordDTO tortCompareRecordDTO) {
+        //获取登录人信息
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        Integer projectId = tortCompareRecordDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("projectId不能为空");
+        }
+        //根据projctId查询出专利号
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getProjectId, projectId);
+        List<ReportProject> reportProjects = reportProjectService.list(queryWrapper);
+        String patentNo = "";
+        if (!reportProjects.isEmpty()) {
+            ReportProject reportProject = reportProjects.get(0);
+            patentNo = reportProject.getSignPatentNo();
+        } else {
+            throw new XiaoShiException("未查询到报告专利号");
+        }
+        List<TortDTO> tortDTOS = tortCompareRecordDTO.getTortDTOS();
+        //根据专利号和projectId,删除特征
+        LambdaQueryWrapper<Feature> deleteWrapper = new LambdaQueryWrapper<>();
+        deleteWrapper.eq(Feature::getPatentNo, patentNo)
+                .eq(Feature::getProjectId, projectId);
+        featureService.remove(deleteWrapper);
+        //根据报告id删除侵权对比结果数据
+        LambdaQueryWrapper<FTOCompareRecord> deleteWrapper2 = new LambdaQueryWrapper<>();
+        deleteWrapper2.eq(FTOCompareRecord::getProjectId, projectId);
+        this.remove(deleteWrapper2);
+        //新增侵权对比结果集合
+        List<FTOCompareRecord> ftoCompareRecords = new ArrayList<>();
+        //遍历传入集合
+        if (!tortDTOS.isEmpty()) {
+            for (TortDTO tortDTO : tortDTOS) {
+                Feature feature = new Feature();
+                feature.setRightSort(tortDTO.getRightSort());
+                feature.setPatentNo(patentNo);
+                feature.setProjectId(projectId);
+                feature.setContent(tortDTO.getContent());
+                feature.setExplainText(tortDTO.getExplainText());
+                feature.setCreateId(personnelVO.getId());
+                feature.setRightType(tortDTO.getRightType());
+                feature.insert();
+                //获取特征id
+                Integer featureId = feature.getId();
+                if (tortDTO.getCompareResult() != null || tortDTO.getCompareDescription() != null || tortDTO.getTargetDescription() != null) {
+                    //插入侵权分析对比结果
+                    FTOCompareRecord ftoCompareRecord = new FTOCompareRecord();
+                    ftoCompareRecord.setProjectId(projectId);
+                    ftoCompareRecord.setFeatureId(featureId);
+                    ftoCompareRecord.setCompareResult(tortDTO.getCompareResult());
+                    ftoCompareRecord.setCompareDescription(tortDTO.getCompareDescription());
+                    ftoCompareRecord.setTargetDescription(tortDTO.getTargetDescription());
+                    ftoCompareRecord.setCreateId(personnelVO.getId());
+                    ftoCompareRecords.add(ftoCompareRecord);
+                }
+            }
+            List<Integer> ids = new ArrayList<>();
+            if (!ftoCompareRecords.isEmpty()) {
+                this.saveBatch(ftoCompareRecords);
+                ids = ftoCompareRecords.stream().map(FTOCompareRecord::getId).collect(Collectors.toList());
+            }
+            return ids;
+        } else {
+            throw new XiaoShiException("未传入特征集合");
+        }
+    }
+
+    public TortCompareRecordVO getTortCompareRecord(GetAvoidDesignDTO getAvoidDesignDTO){
+        //判断参数不能为空
+        Integer projectId = getAvoidDesignDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("projectId为空");
+        }
+        if (getAvoidDesignDTO.getIfReSplit() == null) {
+            throw new XiaoShiException("ifReSplit不能为空");
+        }
+        if (getAvoidDesignDTO.getSplitBy() == null) {
+            throw new XiaoShiException("splitBy不能为空");
+        }
+        if (getAvoidDesignDTO.getSplitType() == null) {
+            throw new XiaoShiException("splitType不能为空");
+        }
+        //返回的VO类
+        TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
+        tortCompareRecordVO.setProjectId(projectId);
+        //根据projectId查询专利号
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getProjectId, projectId);
+        ReportProject reportProject = reportProjectService.getOne(queryWrapper, false);
+        String patentNo = reportProject.getSignPatentNo();
+        //新建查询拆分特征DTO
+        SplitVO splitVO = new SplitVO();
+        BeanUtils.copyProperties(getAvoidDesignDTO, splitVO);
+        splitVO.setPatentNo(patentNo);
+        List<PatentRightVo> patentRightVos = new ArrayList<>();
+        //判断是否重拆
+        if (getAvoidDesignDTO.getIfReSplit() == true) {//重拆
+            //重拆需要清空原有特征表、对比结果表
+            LambdaQueryWrapper<FTOCompareRecord> deleteWrapper = new LambdaQueryWrapper<>();
+            deleteWrapper.eq(FTOCompareRecord::getProjectId, projectId);
+            this.remove(deleteWrapper);
+            //清空特征表
+            //根据重拆条件拆分权要保存到特征表
+            try {
+                patentRightVos = featureService.splitPatentFeature(splitVO);
+            } catch (Exception e) {
+                throw new XiaoShiException("查询特征出错");
+            }
+        } else {
+            //不重拆
+            try {
+                patentRightVos = featureService.splitPatentFeature(splitVO);
+            } catch (Exception e) {
+                throw new XiaoShiException("查询特征出错");
+            }
+        }
+        if (!patentRightVos.isEmpty()) {
+            //根据projectId查询
+            //新建权要层信息
+            List<TortRightVO> tortRightVOS = new ArrayList<>();
+            //遍历装载权要层信息
+            patentRightVos.forEach(item -> {
+                TortRightVO tortRightVO = new TortRightVO();
+                BeanUtils.copyProperties(item, tortRightVO);
+                //新建特征与侵权分析对比结果VOS
+                List<TortVO> tortVOS = new ArrayList<>();
+                //特征信息
+                List<Feature> features = item.getFeatures();
+                tortVOS = this.loadTortVO(projectId, features);
+                tortRightVO.setTortVOS(tortVOS);
+                tortRightVOS.add(tortRightVO);
+            });
+            tortCompareRecordVO.setTortRightVOS(tortRightVOS);
+        } else {
+            throw new XiaoShiException("特征查询错误");
+        }
+        return tortCompareRecordVO;
+    }
+
+
+
+
+    public List<TortVO> loadTortVO(Integer projectId, List<Feature> features){
+        List<TortVO> tortVOS = new ArrayList<>();
+        LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(FTOCompareRecord::getProjectId, projectId);
+        List<FTOCompareRecord> ftoCompareRecords = this.list(queryWrapper);
+        for (Feature feature : features) {
+            //新建特征与侵权分析对比结果VO
+            TortVO tortVO = new TortVO();
+            //装载特征部分的信息
+            tortVO.setFeatureId(feature.getId());
+            tortVO.setContent(feature.getContent());
+            tortVO.setPatentNo(feature.getPatentNo());
+            tortVO.setRightSort(feature.getRightSort());
+            tortVO.setRightType(feature.getRightType());
+            tortVO.setExplainText(feature.getExplainText());
+            tortVO.setFormId(feature.getFromId());
+            tortVO.setSysOrder(feature.getSysOrder());
+            //装载侵权分析对比结果的部分(可能为空)
+            if (!ftoCompareRecords.isEmpty()) {
+                FTOCompareRecord ftoCompareRecord = ftoCompareRecords.stream().filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId())).findFirst().orElse(null);
+                if (ftoCompareRecord != null) {
+                    tortVO.setId(ftoCompareRecord.getId());
+                    tortVO.setCompareResult(ftoCompareRecord.getCompareResult());
+                    tortVO.setCompareDescription(ftoCompareRecord.getCompareDescription());
+                    tortVO.setTargetDescription(ftoCompareRecord.getTargetDescription());
+                }
+            }
+            tortVOS.add(tortVO);
+        }
+        return tortVOS;
+    }
+}

+ 5 - 3
src/main/java/cn/cslg/pas/service/business/FeatureService.java

@@ -269,6 +269,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
             flags.add(";");
             flags.add(",");
             flags.add(",");
+        }
             if (splitType.equals(0)) {  //当splitType=0仅拆解主权要
                 partRightSorts = patentRights.stream().filter(item -> item.getType().equals(1)).map(RePatentClaim::getSort).collect(Collectors.toList());
             } else if (splitType.equals(1)) {  //当splitType=1拆解全部权要
@@ -290,6 +291,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
                     feature.setRightSort(patentRights.get(i).getSort());
                     feature.setPatentNo(patentNo);
                     feature.setProjectId(projectId);
+                    feature.setSysOrder(t+1);
                     feature.setContent(contents.get(t));
                     feature.setCreateId(personnelVO.getId());
                     feature.setRightType(patentRights.get(i).getType());
@@ -301,7 +303,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
                     allFeatures.addAll(featureList);
                 }
             }
-        }
+
         return allFeatures;
     }
 
@@ -317,11 +319,11 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
            patentRightVo.setPatentNo(patentRights.get(i).getPatentNo());
            patentRightVo.setFeatures(featureList);
            patentRightVo.setContent(patentRights.get(i).getContent());
-           patentRightVo.setSort(patentRights.get(i).getSort());
+           patentRightVo.setSort(patentRights.get(i).getSort()+1);
            patentRightVo.setType(patentRights.get(i).getType());
            patentRightVo.setContentOut(patentRights.get(i).getContentOut());
            patentRightVo.setProjectId(projectId);
-           patentRightVo.setRightName("权要" + sort);
+           patentRightVo.setRightName("权要" + (sort+1));
            patentRightVo.setSignPatentNo(patentNo);
            patentRightVos.add(patentRightVo);
        }

+ 241 - 0
src/main/java/cn/cslg/pas/service/business/ProductMessageService.java

@@ -0,0 +1,241 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.ProductMessageDTO;
+import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.vo.business.ProductMessageVO;
+import cn.cslg.pas.domain.business.AssoProductMessageFile;
+import cn.cslg.pas.domain.business.ProductMessage;
+import cn.cslg.pas.exception.UnLoginException;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.ProductMessageMapper;
+import cn.cslg.pas.service.common.FileManagerService;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 标的产品信息的Service
+ * @Author xiexiang
+ * @Date 2023/12/8
+ */
+@Service
+@Slf4j
+public class ProductMessageService extends ServiceImpl<ProductMessageMapper, ProductMessage> {
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private AssoProductMessageFileService assoProductMessageFileService;
+
+    @Autowired
+    private FileManagerService fileManagerService;
+
+    @Autowired
+    private PermissionService permissionService;
+
+    /**
+     * 编辑or保存标的产品信息
+     * @param productMessageDTO
+     * @return
+     */
+    public Integer addOrUpdateProductMessage(ProductMessageDTO productMessageDTO){
+        //判空
+        if (productMessageDTO == null) {
+            throw new XiaoShiException("入参不能为空");
+        }
+        if (productMessageDTO.getProjectId() == null) {
+            throw new XiaoShiException("报告id不能为空!");
+        }
+        //获取登录人信息
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        //判断产品id是否传入
+        if (productMessageDTO.getId() != null) {
+            //传入了id,执行更新操作
+            //根据id查询产品信息
+            ProductMessage productMessage = this.getById(productMessageDTO.getId());
+            BeanUtils.copyProperties(productMessageDTO, productMessage);
+            productMessage.updateById();
+            Integer productMessageId = productMessage.getId();
+            //如果文件集合不为空,则需要更新产品与文件关联表
+            if (productMessageDTO.getFileGuids() != null && !productMessageDTO.getFileGuids().isEmpty()) {
+                List<String> newFileGuids = productMessageDTO.getFileGuids();
+                //更新产品与文件关联表
+                this.saveAssoProductMessageFile(productMessageId, newFileGuids);
+            }
+            return productMessageId;
+        } else {
+            //未传入id,执行新增操作
+            ProductMessage productMessage = new ProductMessage();
+            BeanUtils.copyProperties(productMessageDTO, productMessage);
+            productMessage.setCreateId(personnelVO.getId());
+            productMessage.insert();
+            Integer productMessageId = productMessage.getId();
+            if (productMessageId != null) {
+                //如果文件集合不为空,需要插入产品与文件关联表
+                List<String> fileGuids = productMessageDTO.getFileGuids();
+                if (fileGuids != null && !fileGuids.isEmpty()) {
+                    this.addAssoProductMessageFile(productMessageId, fileGuids);
+                }
+            } else {
+                throw new XiaoShiException("产品信息插入失败");
+            }
+            return productMessage.getId();
+        }
+    }
+
+    /**
+     * 更新产品与文件关联
+     * @param productMessageId
+     * @param newFileGuids
+     */
+    public void saveAssoProductMessageFile(Integer productMessageId, List<String> newFileGuids){
+        List<String> oldFileGuids = new ArrayList<>();
+        //根据标的产品id查询出关联的文件集合
+        LambdaQueryWrapper<AssoProductMessageFile> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AssoProductMessageFile::getProductMessageId, productMessageId);
+        List<AssoProductMessageFile> assoProductMessageFiles = assoProductMessageFileService.list(queryWrapper);
+        if (!assoProductMessageFiles.isEmpty()) {
+            oldFileGuids = assoProductMessageFiles.stream().map(AssoProductMessageFile::getFileGuid).collect(Collectors.toList());
+            //新旧文件集合作差,多余的新增,没有的删除;
+            List<String> filesToAdd = new ArrayList<>(newFileGuids);
+            List<String> filesToRemove = new ArrayList<>(oldFileGuids);
+            //需要新增的文件
+            filesToAdd.removeAll(oldFileGuids);
+            //需要删除的文件
+            filesToRemove.removeAll(newFileGuids);
+            //先删除
+            if (!filesToRemove.isEmpty()) {
+                LambdaQueryWrapper<AssoProductMessageFile> deleteWrapper = new LambdaQueryWrapper<>();
+                deleteWrapper.in(AssoProductMessageFile::getFileGuid, filesToRemove);
+                assoProductMessageFileService.remove(deleteWrapper);
+            }
+            //后新增
+            if (!filesToAdd.isEmpty()) {
+                List<AssoProductMessageFile> newAssoFile = new ArrayList<>();
+                filesToAdd.forEach(item -> {
+                    AssoProductMessageFile assoProductMessageFile = new AssoProductMessageFile();
+                    assoProductMessageFile.setFileGuid(item);
+                    assoProductMessageFile.setProductMessageId(productMessageId);
+                    newAssoFile.add(assoProductMessageFile);
+                });
+                assoProductMessageFileService.saveBatch(newAssoFile);
+            }
+        }
+    }
+
+    /**
+     * 新增产品与文件关联
+     * @param productMessageId
+     * @param fileGuids
+     */
+    public void addAssoProductMessageFile(Integer productMessageId, List<String> fileGuids){
+        List<AssoProductMessageFile> assoProductMessageFiles = new ArrayList<>();
+        fileGuids.forEach(item -> {
+            AssoProductMessageFile assoProductMessageFile = new AssoProductMessageFile();
+            assoProductMessageFile.setProductMessageId(productMessageId);
+            assoProductMessageFile.setFileGuid(item);
+            assoProductMessageFiles.add(assoProductMessageFile);
+        });
+        //批量保存产品与文件关联信息
+        assoProductMessageFileService.saveBatch(assoProductMessageFiles);
+    }
+
+    /**
+     * 根据projectId查询标的产品信息
+     * @param projectId
+     * @return
+     */
+    public ProductMessageVO getProductMessage(Integer projectId) {
+        //新建返回VO
+        ProductMessageVO productMessageVO = new ProductMessageVO();
+        //根据projectId查询产品信息
+        LambdaQueryWrapper<ProductMessage> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ProductMessage::getProjectId, projectId);
+        ProductMessage productMessage = this.getOne(queryWrapper, false);
+        if (productMessage != null) {
+            //复制给返回VO
+            BeanUtils.copyProperties(productMessage, productMessageVO);
+            //查询文件信息
+            List<String> fileGuids = this.getFileGuids(productMessageVO.getId());
+            if (!fileGuids.isEmpty()) {
+                List<SystemFile> systemFiles = new ArrayList<>();
+                try {
+                    String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+                    systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                } catch (Exception e) {
+                    throw new XiaoShiException("查询文件详细信息错误" + e);
+                }
+                productMessageVO.setSystemFileList(systemFiles);
+            }
+            this.loadProductMessageVO(productMessageVO);
+        } else {
+            throw new XiaoShiException("未查询到产品");
+        }
+        return productMessageVO;
+    }
+
+    /**
+     * 根据产品id查询关联文件Guids
+     * @param productMessageId
+     * @return
+     */
+    public List<String> getFileGuids(Integer productMessageId){
+        LambdaQueryWrapper<AssoProductMessageFile> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AssoProductMessageFile::getProductMessageId, productMessageId);
+        List<AssoProductMessageFile> assoProductMessageFiles = assoProductMessageFileService.list(queryWrapper);
+        List<String> fileGuids = new ArrayList<>();
+        if (!assoProductMessageFiles.isEmpty()) {
+            fileGuids = assoProductMessageFiles.stream().map(AssoProductMessageFile::getFileGuid).collect(Collectors.toList());
+        }
+        return fileGuids;
+    }
+
+    /**
+     * 装载返回VO
+     * @param productMessageVO
+     */
+    public void loadProductMessageVO(ProductMessageVO productMessageVO){
+        List<String> createIds = new ArrayList<>();
+        createIds.add(productMessageVO.getCreateId());
+        List<Personnel> personnels = new ArrayList<>();
+        //查询创建人名称
+        if (createIds.size() != 0) {
+            try {
+                String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+                JSONObject jsonObject = JSONObject.parseObject(res);
+                personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+            } catch (Exception e) {
+                throw new XiaoShiException("查询创建人名称错误");
+            }
+            //装载人员信息
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(productMessageVO.getCreateId())).findFirst().orElse(null);
+            if (personnel != null) {
+                productMessageVO.setCreateName(personnel.getPersonnelName());
+            } else {
+                throw new XiaoShiException("未获取到当前登陆人信息");
+            }
+        }
+    }
+}

+ 1 - 1
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -80,7 +80,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
      * @param patentDigProjectTaskDTO
      * @return
      */
-    public Object addProjectOpenAuditTask(PatentDigProjectTaskDTO patentDigProjectTaskDTO){
+    public Object  addProjectOpenAuditTask(PatentDigProjectTaskDTO patentDigProjectTaskDTO){
         PatentDigProjectDTO patentDigProjectDTO = patentDigProjectTaskDTO.getPatentDigProjectDTO();
         ProjectTaskDTO projectTaskDTO = patentDigProjectTaskDTO.getProjectTaskDTO();
         //如果专利挖掘项目DTO不为空,则需要先建立专利挖掘项目

+ 2 - 1
src/main/java/cn/cslg/pas/service/business/ReportProjectService.java

@@ -298,6 +298,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         ReportProject reportProject = new ReportProject();
         BeanUtils.copyProperties(reportProjectDTO, reportProject);
         reportProject.setProjectId(project.getId());
+        //根据是否直接完成设置报告的状态
         if (reportProjectDTO.getIfFinish() == true) {
             reportProject.setStatus(3);
         } else {
@@ -807,7 +808,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             }
 
             //装载报告状态
-            SystemDict systemDictStatus = reportTypeList.stream().filter(item -> reportProjectVO.getReportType().equals(Integer.parseInt(item.getValue()))&&item.getType().equals("REPORT_STATE")).findFirst().orElse(null);
+            SystemDict systemDictStatus = reportTypeList.stream().filter(item -> reportProjectVO.getStatus().equals(Integer.parseInt(item.getValue()))&&item.getType().equals("REPORT_STATE")).findFirst().orElse(null);
             if (systemDict != null) {
                 if (systemDictStatus != null) {
                     reportProjectVO.setStatusName(systemDictStatus.getLabel());

+ 4 - 4
src/main/java/cn/cslg/pas/service/common/PersonFieldService.java

@@ -41,10 +41,10 @@ public class PersonFieldService {
         String key = SecureUtil.md5(tableName + RedisConf.SYMBOL_COLON + userId);
         String json = redisUtil.get(RedisConf.USER_FIELD + RedisConf.SYMBOL_COLON + key);
 
-        //如果查到
-        if (StringUtils.isNotEmpty(json)) {
-            return JsonUtils.jsonToList(json, PersonSelfFieldVO.class);
-        }
+//        //如果查到
+//        if (StringUtils.isNotEmpty(json)) {
+//            return JsonUtils.jsonToList(json, PersonSelfFieldVO.class);
+//        }
         String fieldJson = "";
         //如果没查询到,则获取所有栏位添加到redis里
         try {

+ 1 - 1
src/main/resources/jsons/reportProject.json

@@ -34,7 +34,7 @@
   "ifSearch":"true",
   "ifGroup": "false",
     "ifShow":"true",
-    "defaultHidden": "true"
+    "defaultHidden": "false"
 },
   {"name":"创建人",
     "type":"String",

+ 1 - 23
src/test/java/cn/cslg/pas/service/AvoidDesignServiceTests.java

@@ -2,7 +2,6 @@ package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.dto.business.AvoidDesignDTO;
 import cn.cslg.pas.common.dto.business.AvoidDesignInsertDTO;
-import cn.cslg.pas.common.dto.business.AvoidDesignUpdateDTO;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.controller.AvoidDesignController;
 import cn.cslg.pas.service.business.AvoidDesignService;
@@ -27,33 +26,12 @@ public class AvoidDesignServiceTests {
 
     @Test
     public void test() throws Exception {
-        List<AvoidDesignDTO> avoidDesignDTOS = new ArrayList<>();
-        for (int i = 6; i < 12; i++) {
-            AvoidDesignDTO avoidDesignDTO = new AvoidDesignDTO();
-            avoidDesignDTO.setContent("内容" + i);
-            avoidDesignDTO.setRightSort(i);
-            avoidDesignDTO.setRightType(0);
-            avoidDesignDTO.setExplainText("解释" + i);
-            avoidDesignDTO.setDirection("回避设计方向" + i);
-            avoidDesignDTOS.add(avoidDesignDTO);
-        }
-        AvoidDesignInsertDTO avoidDesignInsertDTO = new AvoidDesignInsertDTO();
-        avoidDesignInsertDTO.setProjectId(49);
 
-        avoidDesignInsertDTO.setAvoidDesignDTOS(avoidDesignDTOS);
-        Response response =  avoidDesignController.addAvoidDesign(avoidDesignInsertDTO);
-        System.out.println("-----" + response.getData());
     }
 
     @Test
     public void testUpdate() {
-        AvoidDesignUpdateDTO avoidDesignUpdateDTO = new AvoidDesignUpdateDTO();
-        avoidDesignUpdateDTO.setId(2);
-        avoidDesignUpdateDTO.setFeatureId(1);
-        avoidDesignUpdateDTO.setProjectId(2);
-        avoidDesignUpdateDTO.setDirection("测试更新");
-//        Integer id = avoidDesignService.updateAvoidDesign(avoidDesignUpdateDTO);
-//        System.out.println("testUpdate:" + id);
+
     }
 
     @Test