xiexiang 1 year ago
parent
commit
45ef0fe4e6
31 changed files with 1647 additions and 6 deletions
  1. 1 0
      src/main/java/cn/cslg/pas/common/dto/ExportTaskDTO.java
  2. 58 0
      src/main/java/cn/cslg/pas/common/dto/HightlightTemplateDTO.java
  3. 74 0
      src/main/java/cn/cslg/pas/common/dto/business/LitigationHistoryDTO.java
  4. 63 0
      src/main/java/cn/cslg/pas/common/dto/business/PermissionRecordDTO.java
  5. 54 0
      src/main/java/cn/cslg/pas/common/dto/business/ReviewHistoryDTO.java
  6. 58 0
      src/main/java/cn/cslg/pas/common/vo/HightlightTemplateVO.java
  7. 4 4
      src/main/java/cn/cslg/pas/common/vo/WebSocketMessageVO.java
  8. 78 0
      src/main/java/cn/cslg/pas/common/vo/business/LitigationHistoryVO.java
  9. 71 0
      src/main/java/cn/cslg/pas/common/vo/business/PermissionRecordVO.java
  10. 51 0
      src/main/java/cn/cslg/pas/common/vo/business/ReviewHistoryVO.java
  11. 59 0
      src/main/java/cn/cslg/pas/controller/HightlightTemplateController.java
  12. 54 0
      src/main/java/cn/cslg/pas/controller/LitigationHistoryController.java
  13. 54 0
      src/main/java/cn/cslg/pas/controller/PermissionRecordController.java
  14. 56 0
      src/main/java/cn/cslg/pas/controller/ReviewHistoryController.java
  15. 13 0
      src/main/java/cn/cslg/pas/domain/business/HightlightTemplate.java
  16. 93 0
      src/main/java/cn/cslg/pas/domain/business/LitigationHistory.java
  17. 82 0
      src/main/java/cn/cslg/pas/domain/business/PermissionRecord.java
  18. 73 0
      src/main/java/cn/cslg/pas/domain/business/ReviewHistory.java
  19. 13 0
      src/main/java/cn/cslg/pas/mapper/HightlightTemplateMapper.java
  20. 14 0
      src/main/java/cn/cslg/pas/mapper/LitigationHistoryMapper.java
  21. 13 0
      src/main/java/cn/cslg/pas/mapper/PermissionRecordMapper.java
  22. 13 0
      src/main/java/cn/cslg/pas/mapper/ReviewHistoryMapper.java
  23. 184 0
      src/main/java/cn/cslg/pas/service/business/HightlightTemplateService.java
  24. 1 0
      src/main/java/cn/cslg/pas/service/business/ImportTaskService.java
  25. 127 0
      src/main/java/cn/cslg/pas/service/business/LitigationHistoryService.java
  26. 5 2
      src/main/java/cn/cslg/pas/service/business/PDFExportFirstPageService.java
  27. 2 0
      src/main/java/cn/cslg/pas/service/business/PatentDigProjectFilesService.java
  28. 3 0
      src/main/java/cn/cslg/pas/service/business/PatentExportService.java
  29. 127 0
      src/main/java/cn/cslg/pas/service/business/PermissionRecordService.java
  30. 127 0
      src/main/java/cn/cslg/pas/service/business/ReviewHistoryService.java
  31. 22 0
      src/main/java/cn/cslg/pas/service/common/MessageService.java

+ 1 - 0
src/main/java/cn/cslg/pas/common/dto/ExportTaskDTO.java

@@ -55,4 +55,5 @@ public class ExportTaskDTO {
     private Integer state;
     private String createId;
     private String createName;
+    private Integer doneNum;
 }

+ 58 - 0
src/main/java/cn/cslg/pas/common/dto/HightlightTemplateDTO.java

@@ -0,0 +1,58 @@
+package cn.cslg.pas.common.dto;
+
+import cn.cslg.pas.domain.BaseEntity;
+import cn.cslg.pas.domain.business.HightlightTemplate;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 高亮
+ * @Author xiexiang
+ * @Date 2024/1/12
+ */
+@Data
+public class HightlightTemplateDTO {
+    private Integer id;
+
+    /**
+     * 模板名称
+     */
+    private String name;
+
+    /**
+     * 是否启用
+     */
+    private Boolean ifEnable;
+
+    /**
+     * 是否默认
+     */
+    private Boolean ifDefault;
+
+    /**
+     * description
+     */
+    private String description;
+
+    /**
+     * 创建人
+     */
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * config
+     */
+    private String config;
+
+    private Integer projectId;
+
+    private List<HightlightTemplate.Config> configs;
+}

+ 74 - 0
src/main/java/cn/cslg/pas/common/dto/business/LitigationHistoryDTO.java

@@ -0,0 +1,74 @@
+package cn.cslg.pas.common.dto.business;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Data
+public class LitigationHistoryDTO {
+    private Integer id;
+    /**
+     * 原告
+     */
+    private String plaintiff;
+
+    /**
+     * 被告
+     */
+    private String defendant;
+
+
+    /**
+     * 案由
+     */
+    private String causeOfAction;
+
+    /**
+     * 起诉时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date indictTime;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+    /**
+     * 案件详情
+     */
+    private String caseDetails;
+
+    /**
+     * 附件id
+     */
+    private String fileGuid;
+
+    /**
+     * projectId
+     */
+    private Integer projectId;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 法院
+     */
+    private String court;
+}

+ 63 - 0
src/main/java/cn/cslg/pas/common/dto/business/PermissionRecordDTO.java

@@ -0,0 +1,63 @@
+package cn.cslg.pas.common.dto.business;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 许可历史
+ * @Author xiexiang
+ * @Date 2024/1/16
+ */
+@Data
+public class PermissionRecordDTO {
+    private Integer id;
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 许可人 (默认为专利权利人)
+     */
+    private String licensor;
+
+    /**
+     * 被许可人
+     */
+    private String licensee;
+
+    /**
+     * 被许可人国家
+     */
+    private String licenseeCountry;
+
+    /**
+     * 许可时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date licenseTime;
+
+    /**
+     * 许可费用(万元)
+     */
+    private Double licenseFee;
+
+    /**
+     * 截止时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date licenseDeadLine;
+
+    /**
+     * 许可类型
+     */
+    private String licenseType;
+}

+ 54 - 0
src/main/java/cn/cslg/pas/common/dto/business/ReviewHistoryDTO.java

@@ -0,0 +1,54 @@
+package cn.cslg.pas.common.dto.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 审查历史
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Data
+public class ReviewHistoryDTO {
+
+    private Integer id;
+
+    /**
+     * 时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date reviewTime ;
+
+    /**
+     * 事件
+     */
+    private String reviewEvent;
+
+    /**
+     * 说明
+     */
+    private String reviewExplain;
+
+    /**
+     * 文件id
+     */
+    private String fileGuid;
+
+    /**
+     * 所属project
+     */
+    private Integer projectId;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+}

+ 58 - 0
src/main/java/cn/cslg/pas/common/vo/HightlightTemplateVO.java

@@ -0,0 +1,58 @@
+package cn.cslg.pas.common.vo;
+
+import cn.cslg.pas.domain.business.HightlightTemplate;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 高亮
+ * @Author xiexiang
+ * @Date 2024/1/12
+ */
+@Data
+public class HightlightTemplateVO {
+    private Integer id;
+
+    /**
+     * 模板名称
+     */
+    private String name;
+
+    /**
+     * 是否启用
+     */
+    private Boolean ifEnable;
+
+    /**
+     * 是否默认
+     */
+    private Boolean ifDefault;
+
+    /**
+     * description
+     */
+    private String description;
+
+    /**
+     * 创建人
+     */
+    private String createId;
+
+    private String createName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * config
+     */
+    private String config;
+
+    private Integer projectId;
+
+    private List<HightlightTemplate.Config> configs;
+}

+ 4 - 4
src/main/java/cn/cslg/pas/common/vo/WebSocketMessageVO.java

@@ -9,11 +9,11 @@ import lombok.experimental.Accessors;
 @Data
 @Accessors(chain = true)
 public class WebSocketMessageVO {
-    private  Integer projectId;
-   private  Integer allNum;
-    private Integer   currentNum;
+    private Integer projectId;
+    private Integer allNum;
+    private Integer currentNum;
     private Integer code;
     private Integer state;
     private String createId;
-
+    private Integer taskId;
 }

+ 78 - 0
src/main/java/cn/cslg/pas/common/vo/business/LitigationHistoryVO.java

@@ -0,0 +1,78 @@
+package cn.cslg.pas.common.vo.business;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Data
+public class LitigationHistoryVO {
+    /**
+     * 原告
+     */
+    private String plaintiff;
+
+    /**
+     * 被告
+     */
+    private String defendant;
+
+
+    /**
+     * 案由
+     */
+    private String causeOfAction;
+
+    /**
+     * 起诉时间
+     */
+    private Date indictTime;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+    /**
+     * 案件详情
+     */
+    private String caseDetails;
+
+    /**
+     * 附件id
+     */
+    private String fileGuid;
+
+    /**
+     * projectId
+     */
+    private Integer projectId;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 法院
+     */
+    private String court;
+
+    /**
+     * 创建人id
+     */
+    private String createId;
+
+    private String createName;
+
+    private Date createTime;
+}

+ 71 - 0
src/main/java/cn/cslg/pas/common/vo/business/PermissionRecordVO.java

@@ -0,0 +1,71 @@
+package cn.cslg.pas.common.vo.business;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 许可历史
+ * @Author xiexiang
+ * @Date 2024/1/16
+ */
+@Data
+public class PermissionRecordVO {
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 许可人 (默认为专利权利人)
+     */
+    private String licensor;
+
+    /**
+     * 被许可人
+     */
+    private String licensee;
+
+    /**
+     * 被许可人国家
+     */
+    private String licenseeCountry;
+
+    /**
+     * 许可时间
+     */
+    private Date licenseTime;
+
+    /**
+     * 许可费用(万元)
+     */
+    private Double licenseFee;
+
+    /**
+     * 截止时间
+     */
+    private Date licenseDeadLine;
+
+    /**
+     * 许可类型
+     */
+    private String licenseType;
+
+    /**
+     * 租户id
+     */
+    private Integer tenantId;
+
+    /**
+     * 创建人id
+     */
+    private String createId;
+
+    private String createName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+}

+ 51 - 0
src/main/java/cn/cslg/pas/common/vo/business/ReviewHistoryVO.java

@@ -0,0 +1,51 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+import org.apache.poi.hssf.record.DateWindow1904Record;
+
+import java.util.Date;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Data
+public class ReviewHistoryVO {
+    private Integer id;
+
+    /**
+     * 时间
+     */
+    private Date reviewTime ;
+
+    /**
+     * 事件
+     */
+    private String reviewEvent;
+
+    /**
+     * 说明
+     */
+    private String reviewExplain;
+
+    /**
+     * 文件id
+     */
+    private String fileGuid;
+
+    /**
+     * 所属project
+     */
+    private Integer projectId;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    private String createId;
+
+    private String createName;
+
+    private Date createTime;
+}

+ 59 - 0
src/main/java/cn/cslg/pas/controller/HightlightTemplateController.java

@@ -0,0 +1,59 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.HightlightTemplateDTO;
+import cn.cslg.pas.common.dto.ImportTaskDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.HightlightTemplateVO;
+import cn.cslg.pas.domain.business.HightlightTemplate;
+import cn.cslg.pas.factorys.businessFactory.Business;
+import cn.cslg.pas.service.business.HightlightTemplateService;
+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.List;
+
+/**
+ * 高亮
+ * @Author xiexiang
+ * @Date 2024/1/12
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/hightlightTemplate")
+@RestController
+public class HightlightTemplateController {
+    @Autowired
+    private HightlightTemplateService hightlightTemplateService;
+
+    @Operation(summary = "添加高亮")
+    @PostMapping("/saveOrUpdate")
+    public Response saveOrUpdate(@RequestBody HightlightTemplateDTO hightlightTemplateDTO) throws Exception {
+        HightlightTemplate hightlightTemplate = hightlightTemplateService.saveOrUpdate(hightlightTemplateDTO);
+        Records records = new Records();
+        records.setData(hightlightTemplate);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询高亮")
+    @GetMapping("/query")
+    public Response queryHightlight(Integer projectId) throws Exception {
+       List<HightlightTemplateVO> hightlightTemplateVOS = hightlightTemplateService.getHightlight(projectId);
+        Records records = new Records();
+        records.setData(hightlightTemplateVOS);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "删除高亮")
+    @PostMapping("/delete")
+    public Response delete(@RequestBody List<Integer> ids) throws Exception {
+        List<Integer> deleteIds = hightlightTemplateService.deleteHightlight(ids);
+        Records records = new Records();
+        records.setData(deleteIds);
+        return Response.success(records);
+    }
+
+
+}

+ 54 - 0
src/main/java/cn/cslg/pas/controller/LitigationHistoryController.java

@@ -0,0 +1,54 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.LitigationHistoryDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.business.LitigationHistoryVO;
+import cn.cslg.pas.service.business.LitigationHistoryService;
+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.List;
+
+/**
+ * 诉讼历史
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/litigationHistory")
+@RestController
+public class LitigationHistoryController {
+    @Autowired
+    private LitigationHistoryService litigationHistoryService;
+
+    @Operation(summary = "添加or更新诉讼历史")
+    @PostMapping("/saveOrUpdate")
+    public Response saveOrUpdate(@RequestBody LitigationHistoryDTO litigationHistoryDTO){
+        Integer id = litigationHistoryService.saveOrUpdate(litigationHistoryDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询诉讼历史")
+    @GetMapping("/query")
+    public Response queryLitigationHistory(String patentNo) throws Exception {
+        List<LitigationHistoryVO> litigationHistoryVOS = litigationHistoryService.getLitigationHistory(patentNo);
+        Records records = new Records();
+        records.setData(litigationHistoryVOS);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "删除诉讼历史")
+    @PostMapping("/delete")
+    public Response delete(@RequestBody List<Integer> ids) throws Exception {
+        List<Integer> deleteIds = litigationHistoryService.deleteLitigationHistory(ids);
+        Records records = new Records();
+        records.setData(deleteIds);
+        return Response.success(records);
+    }
+}

+ 54 - 0
src/main/java/cn/cslg/pas/controller/PermissionRecordController.java

@@ -0,0 +1,54 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.PermissionRecordDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.business.PermissionRecordVO;
+import cn.cslg.pas.service.business.PermissionRecordService;
+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.List;
+
+/**
+ * 许可历史
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/permissionRecord")
+@RestController
+public class PermissionRecordController {
+    @Autowired
+    private PermissionRecordService permissionRecordService;
+
+    @Operation(summary = "添加or更新许可历史")
+    @PostMapping("/saveOrUpdate")
+    public Response saveOrUpdate(@RequestBody PermissionRecordDTO permissionRecordDTO){
+        Integer id = permissionRecordService.saveOrUpdate(permissionRecordDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询许可历史")
+    @GetMapping("/query")
+    public Response queryLitigationHistory(String patentNo) throws Exception {
+        List<PermissionRecordVO> permissionRecordVOS = permissionRecordService.getPermissionRecord(patentNo);
+        Records records = new Records();
+        records.setData(permissionRecordVOS);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "删除许可历史")
+    @PostMapping("/delete")
+    public Response delete(@RequestBody List<Integer> ids) throws Exception {
+        List<Integer> deleteIds = permissionRecordService.deletePermissionRecord(ids);
+        Records records = new Records();
+        records.setData(deleteIds);
+        return Response.success(records);
+    }
+}

+ 56 - 0
src/main/java/cn/cslg/pas/controller/ReviewHistoryController.java

@@ -0,0 +1,56 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.ReviewHistoryDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.HightlightTemplateVO;
+import cn.cslg.pas.common.vo.business.ReviewHistoryVO;
+import cn.cslg.pas.service.business.ReviewHistoryService;
+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.List;
+
+/**
+ * 审查历史
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/reviewHistory")
+@RestController
+public class ReviewHistoryController {
+    @Autowired
+    private ReviewHistoryService reviewHistoryService;
+
+    @Operation(summary = "添加or更新审查历史")
+    @PostMapping("/saveOrUpdate")
+    public Response saveOrUpdate(@RequestBody ReviewHistoryDTO reviewHistoryDTO){
+        Integer id = reviewHistoryService.saveOrUpdate(reviewHistoryDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询审查历史")
+    @GetMapping("/query")
+    public Response queryReviewHistory(String patentNo) throws Exception {
+        List<ReviewHistoryVO> reviewHistoryVOS = reviewHistoryService.getReviewHistory(patentNo);
+        Records records = new Records();
+        records.setData(reviewHistoryVOS);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "删除审查历史")
+    @PostMapping("/delete")
+    public Response delete(@RequestBody List<Integer> ids) throws Exception {
+        List<Integer> deleteIds = reviewHistoryService.deleteReviewHistory(ids);
+        Records records = new Records();
+        records.setData(deleteIds);
+        return Response.success(records);
+    }
+
+}

+ 13 - 0
src/main/java/cn/cslg/pas/domain/business/HightlightTemplate.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 高亮
@@ -54,4 +55,16 @@ public class HightlightTemplate extends BaseEntity<HightlightTemplate> {
      */
     @TableField(value = "config")
     private String config;
+
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+    @TableField(exist = false)
+    private List<Config> configs;
+
+    @Data
+    public static class Config {
+        private String color;
+        private String keywords;
+    }
 }

+ 93 - 0
src/main/java/cn/cslg/pas/domain/business/LitigationHistory.java

@@ -0,0 +1,93 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Data
+public class LitigationHistory extends BaseEntity<LitigationHistory> {
+    /**
+     * 原告
+     */
+    @TableField(value = "plaintiff")
+    private String plaintiff;
+
+    /**
+     * 被告
+     */
+    @TableField(value = "defendant")
+    private String defendant;
+
+
+    /**
+     * 案由
+     */
+    @TableField(value = "cause_of_action")
+    private String causeOfAction;
+
+    /**
+     * 起诉时间
+     */
+    @TableField(value = "indict_time")
+    private Date indictTime;
+
+    /**
+     * 结果
+     */
+    @TableField(value = "result")
+    private String result;
+
+    /**
+     * 案件详情
+     */
+    @TableField(value = "case_details")
+    private String caseDetails;
+
+    /**
+     * 附件id
+     */
+    @TableField(value = "file_guid")
+    private String fileGuid;
+
+    /**
+     * projectId
+     */
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+    /**
+     * 专利号
+     */
+    @TableField(value = "patent_no")
+    private String patentNo;
+
+    /**
+     * 备注
+     */
+    @TableField(value = "remark")
+    private String remark;
+
+    /**
+     * 法院
+     */
+    @TableField(value = "court")
+    private String court;
+
+    /**
+     * 创建人id
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+}

+ 82 - 0
src/main/java/cn/cslg/pas/domain/business/PermissionRecord.java

@@ -0,0 +1,82 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.common.dto.business.PermissionRecordDTO;
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 许可历史
+ * @Author xiexiang
+ * @Date 2024/1/16
+ */
+@Data
+public class PermissionRecord extends BaseEntity<PermissionRecord> {
+    /**
+     * 专利号
+     */
+    @TableField(value = "patent_no")
+    private String patentNo;
+
+    /**
+     * 许可人 (默认为专利权利人)
+     */
+    @TableField(value = "licensor")
+    private String licensor;
+
+    /**
+     * 被许可人
+     */
+    @TableField(value = "licensee")
+    private String licensee;
+
+    /**
+     * 被许可人国家
+     */
+    @TableField(value = "licensee_country")
+    private String licenseeCountry;
+
+    /**
+     * 许可时间
+     */
+    @TableField(value = "license_time")
+    private Date licenseTime;
+
+    /**
+     * 许可费用(万元)
+     */
+    @TableField(value = "license_fee")
+    private Double licenseFee;
+
+    /**
+     * 截止时间
+     */
+    @TableField(value = "license_dead_line")
+    private Date licenseDeadLine;
+
+    /**
+     * 许可类型
+     */
+    @TableField(value = "license_type")
+    private String licenseType;
+
+    /**
+     * 租户id
+     */
+    @TableField(value = "tenant_id")
+    private Integer tenantId;
+
+    /**
+     * 创建人id
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+}

+ 73 - 0
src/main/java/cn/cslg/pas/domain/business/ReviewHistory.java

@@ -0,0 +1,73 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 审查历史
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Data
+public class ReviewHistory extends BaseEntity<ReviewHistory> {
+    /**
+     * 时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
+    @TableField(value = "review_time")
+    private Date reviewTime;
+
+    /**
+     * 事件
+     */
+    @TableField(value = "review_event")
+    private String reviewEvent;
+
+    /**
+     * 说明
+     */
+    @TableField(value = "review_explain")
+    private String reviewExplain;
+
+    /**
+     * 文件id
+     */
+    @TableField(value = "file_guid")
+    private String fileGuid;
+
+    /**
+     * 所属project
+     */
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+    /**
+     * 专利号
+     */
+    @TableField(value = "patent_no")
+    private String patentNo;
+
+    /**
+     * 租户id
+     */
+    @TableField(value = "tenant_id")
+    private Integer tenantId;
+
+    /**
+     * 创建人id
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+}

+ 13 - 0
src/main/java/cn/cslg/pas/mapper/HightlightTemplateMapper.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.HightlightTemplate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/12
+ */
+@Repository
+public interface HightlightTemplateMapper extends BaseMapper<HightlightTemplate> {
+}

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

@@ -0,0 +1,14 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.LitigationHistory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Repository
+public interface LitigationHistoryMapper extends BaseMapper<LitigationHistory> {
+}

+ 13 - 0
src/main/java/cn/cslg/pas/mapper/PermissionRecordMapper.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.PermissionRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/16
+ */
+@Repository
+public interface PermissionRecordMapper extends BaseMapper<PermissionRecord> {
+}

+ 13 - 0
src/main/java/cn/cslg/pas/mapper/ReviewHistoryMapper.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.ReviewHistory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Repository
+public interface ReviewHistoryMapper extends BaseMapper<ReviewHistory> {
+}

+ 184 - 0
src/main/java/cn/cslg/pas/service/business/HightlightTemplateService.java

@@ -0,0 +1,184 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.HightlightTemplateDTO;
+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.JsonUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.HightlightTemplateVO;
+import cn.cslg.pas.common.vo.business.ProjectTaskVO;
+import cn.cslg.pas.domain.business.HightlightTemplate;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.HightlightTemplateMapper;
+import cn.cslg.pas.service.permissions.PermissionService;
+import cn.cslg.pas.service.query.Query;
+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.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/12
+ */
+@Slf4j
+@Service
+public class HightlightTemplateService extends ServiceImpl<HightlightTemplateMapper, HightlightTemplate> {
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private PermissionService permissionService;
+
+    /**
+     * 添加or更新
+     * @param hightlightTemplateDTO
+     * @return
+     */
+    public HightlightTemplate saveOrUpdate(HightlightTemplateDTO hightlightTemplateDTO){
+        if (hightlightTemplateDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new XiaoShiException("未查询到当前登陆人");
+        }
+        Integer id = hightlightTemplateDTO.getId();
+        HightlightTemplate hightlightTemplate = new HightlightTemplate();
+        if (id != null) {
+            //update
+            hightlightTemplate = this.getById(id);
+            BeanUtils.copyProperties(hightlightTemplateDTO, hightlightTemplate);
+            hightlightTemplate.setConfig(JsonUtils.objectToJson(hightlightTemplateDTO.getConfigs()));
+            hightlightTemplate.updateById();
+        } else {
+            String name = hightlightTemplateDTO.getName();
+            if (name == null || StringUtils.isEmpty(name)) {
+                name = "新模板";
+                hightlightTemplateDTO.setName(name);
+            }
+            BeanUtils.copyProperties(hightlightTemplateDTO, hightlightTemplate);
+            this.setConfigs(hightlightTemplate);
+            if (hightlightTemplate.getCreateId() == null) {
+                hightlightTemplate.setCreateId(personnelVO.getId());
+            }
+            hightlightTemplate.insert();
+        }
+        return hightlightTemplate;
+    }
+
+    /**
+     * 查询
+     * @param projectId
+     * @return
+     * @throws IOException
+     */
+    public List<HightlightTemplateVO> getHightlight(Integer projectId) throws IOException {
+        if (projectId == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new XiaoShiException("未查询到当前登陆人");
+        }
+
+        List<HightlightTemplateVO> hightlightTemplateVOS = new ArrayList<>();
+        LambdaQueryWrapper<HightlightTemplate> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(HightlightTemplate::getProjectId, projectId)
+                .eq(HightlightTemplate::getCreateId, personnelVO.getId());
+        List<HightlightTemplate> hightlightTemplates = this.list(queryWrapper);
+
+        if (!hightlightTemplates.isEmpty()) {
+            hightlightTemplates.forEach(item -> {
+                HightlightTemplateVO hightlightTemplateVO = new HightlightTemplateVO();
+                BeanUtils.copyProperties(item, hightlightTemplateVO);
+                hightlightTemplateVOS.add(hightlightTemplateVO);
+            });
+        } else {
+            HightlightTemplateVO hightlightTemplateVO = new HightlightTemplateVO();
+            HightlightTemplateDTO hightlightDTO = new HightlightTemplateDTO();
+            hightlightDTO.setName("默认模板");
+            hightlightDTO.setIfEnable(true);
+            hightlightDTO.setProjectId(projectId);
+            hightlightDTO.setCreateId(personnelVO.getId());
+            hightlightDTO.setIfEnable(true);
+            hightlightDTO.setIfDefault(true);
+            Integer id = this.saveOrUpdate(hightlightDTO).getId();
+            HightlightTemplate hightlightTemplate = this.getById(id);
+            BeanUtils.copyProperties(hightlightTemplate, hightlightTemplateVO);
+            hightlightTemplateVOS.add(hightlightTemplateVO);
+        }
+        this.loadHightlightVOS(hightlightTemplateVOS);
+        return hightlightTemplateVOS;
+    }
+
+    public void loadHightlightVOS(List<HightlightTemplateVO> hightlightTemplateVOS) throws IOException {
+        List<String> createIds = new ArrayList<>();
+        hightlightTemplateVOS.forEach(item -> {
+            if (item.getCreateId() != null) {
+                createIds.add(item.getCreateId());
+            }
+        });
+        List<Personnel> personnels = new ArrayList<>();
+        //查询发起人名称
+        if (createIds.size() != 0) {
+            String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+        }
+        //装载信息
+        for (HightlightTemplateVO hightlightTemplateVO : hightlightTemplateVOS) {
+            //装载人员信息
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(hightlightTemplateVO.getCreateId())).findFirst().orElse(null);
+            if (personnel != null) {
+                hightlightTemplateVO.setCreateName(personnel.getPersonnelName());
+            }
+            hightlightTemplateVO.setConfigs(JsonUtils.jsonToList(hightlightTemplateVO.getConfig(), HightlightTemplate.Config.class));
+            hightlightTemplateVO.setConfig(null);
+        }
+    }
+
+    public List<Integer> deleteHightlight(List<Integer> ids) {
+        if (!ids.isEmpty()) {
+            this.removeBatchByIds(ids);
+        }
+        return ids;
+    }
+
+
+    public void setConfigs(HightlightTemplate hightlightTemplate) {
+        List<HightlightTemplate.Config> configs = new ArrayList<>();
+        List<String> colors = new ArrayList<String>() {{
+            add("#5470c6");
+            add("#91cc75");
+            add("#fac858");
+            add("#ee6666");
+            add("#73c0de");
+        }};
+        for (String color : colors) {
+            HightlightTemplate.Config config = new HightlightTemplate.Config();
+            config.setKeywords("");
+            config.setColor(color);
+            configs.add(config);
+        }
+        hightlightTemplate.setConfig(JsonUtils.objectToJson(configs));
+        hightlightTemplate.setConfigs(configs);
+    }
+}

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

@@ -440,6 +440,7 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
 
             importTask.setState(exportTaskDTO.getState());
             importTask.setAllNum(exportTaskDTO.getAllNum());
+            importTask.setDoneNum(exportTaskDTO.getDoneNum());
             importTask.setDefaultNum(exportTaskDTO.getDefaultNum());
             importTask.setFinishTime(exportTaskDTO.getFinishTime());
             importTask.updateById();

+ 127 - 0
src/main/java/cn/cslg/pas/service/business/LitigationHistoryService.java

@@ -0,0 +1,127 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.LitigationHistoryDTO;
+import cn.cslg.pas.common.dto.business.ReviewHistoryDTO;
+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.utils.StringUtils;
+import cn.cslg.pas.common.vo.business.LitigationHistoryVO;
+import cn.cslg.pas.common.vo.business.ReviewHistoryVO;
+import cn.cslg.pas.domain.business.LitigationHistory;
+import cn.cslg.pas.domain.business.ReviewHistory;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.LitigationHistoryMapper;
+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.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Slf4j
+@Service
+public class LitigationHistoryService extends ServiceImpl<LitigationHistoryMapper, LitigationHistory> {
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private PermissionService permissionService;
+
+    /**
+     * 新增or更新
+     * @param litigationHistoryDTO
+     * @return
+     */
+    public Integer saveOrUpdate(LitigationHistoryDTO litigationHistoryDTO){
+        if (litigationHistoryDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer id = litigationHistoryDTO.getId();
+        LitigationHistory litigationHistory = new LitigationHistory();
+        if (id != null) {
+            //update
+            litigationHistory = this.getById(id);
+            BeanUtils.copyProperties(litigationHistoryDTO, litigationHistory);
+            litigationHistory.updateById();
+        } else {
+            BeanUtils.copyProperties(litigationHistoryDTO, litigationHistory);
+            PersonnelVO personnelVO = new PersonnelVO();
+            try {
+                personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            } catch (Exception e) {
+                throw new XiaoShiException("未查询到当前登陆人");
+            }
+            litigationHistory.setCreateId(personnelVO.getId());
+            litigationHistory.insert();
+        }
+        return litigationHistory.getId();
+    }
+
+    public List<LitigationHistoryVO> getLitigationHistory(String patentNo) throws IOException {
+        if (patentNo == null || StringUtils.isEmpty(patentNo)) {
+            throw new XiaoShiException("入参为空");
+        }
+        List<LitigationHistoryVO> litigationHistoryVOS = new ArrayList<>();
+        LambdaQueryWrapper<LitigationHistory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(LitigationHistory::getPatentNo, patentNo);
+        List<LitigationHistory> litigationHistories = this.list(queryWrapper);
+
+        if (!litigationHistories.isEmpty()) {
+            litigationHistories.forEach(item -> {
+                LitigationHistoryVO litigationHistoryVO = new LitigationHistoryVO();
+                BeanUtils.copyProperties(item, litigationHistoryVO);
+                litigationHistoryVOS.add(litigationHistoryVO);
+            });
+            this.loadLitigationHistoryVOS(litigationHistoryVOS);
+        }
+        return litigationHistoryVOS;
+    }
+
+    public void loadLitigationHistoryVOS(List<LitigationHistoryVO> litigationHistoryVOS) throws IOException {
+        List<String> createIds = new ArrayList<>();
+        litigationHistoryVOS.forEach(item -> {
+            if (item.getCreateId() != null) {
+                createIds.add(item.getCreateId());
+            }
+        });
+        List<Personnel> personnels = new ArrayList<>();
+        //查询发起人名称
+        if (createIds.size() != 0) {
+            String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+        }
+        //装载信息
+        for (LitigationHistoryVO litigationHistoryVO : litigationHistoryVOS) {
+            //装载人员信息
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(litigationHistoryVO.getCreateId())).findFirst().orElse(null);
+            if (personnel != null) {
+                litigationHistoryVO.setCreateName(personnel.getPersonnelName());
+            }
+        }
+
+    }
+
+    public List<Integer> deleteLitigationHistory(List<Integer> ids) {
+        if (!ids.isEmpty()) {
+            this.removeBatchByIds(ids);
+        }
+        return ids;
+    }
+
+}

+ 5 - 2
src/main/java/cn/cslg/pas/service/business/PDFExportFirstPageService.java

@@ -137,7 +137,8 @@ public class PDFExportFirstPageService {
                             webSocketMessageVO.setAllNum(total);
                             webSocketMessageVO.setCurrentNum(i+1);
                             webSocketMessageVO.setState(1);
-                            messageService.sendPatentExportMessage(webSocketMessageVO);
+                            webSocketMessageVO.setTaskId(exportTask.getTaskId());
+                            messageService.sendPDFExportMessage(webSocketMessageVO);
                         }
                     } catch (IOException e) {
                         e.printStackTrace();
@@ -162,8 +163,9 @@ public class PDFExportFirstPageService {
         webSocketMessageVO.setCode(605);
         webSocketMessageVO.setAllNum(total);
         webSocketMessageVO.setCurrentNum(total);
+        webSocketMessageVO.setTaskId(exportTask.getTaskId());
         webSocketMessageVO.setState(2);
-        messageService.sendPatentExportMessage(webSocketMessageVO);
+        messageService.sendPDFExportMessage(webSocketMessageVO);
         String fileGuid = "";
         if (out.toByteArray() != null && out.toByteArray().length != 0) {
             fileGuid = parseByteToFileUtils.uploadFile(out.toByteArray(), 2);
@@ -172,6 +174,7 @@ public class PDFExportFirstPageService {
         exportTask.setAllNum(total);
         exportTask.setDefaultNum(defaultNum);
         exportTask.setState(2);
+        exportTask.setDoneNum(total - defaultNum);
         Integer taskId = importTaskService.updateExportTask(exportTask);
         if (taskId == null) {
             throw new XiaoShiException("导出记录失败");

+ 2 - 0
src/main/java/cn/cslg/pas/service/business/PatentDigProjectFilesService.java

@@ -236,6 +236,8 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
         //其次调用新增任务接口
         patentDigProjectFilesDTO.getProjectTaskDTO().setProjectId(patentDigProjectFilesDTO.getProjectId());
         patentDigProjectFilesDTO.getProjectTaskDTO().setProcessId(patentDigProjectFilesDTO.getProcessId());
+        Integer taskType = 7;
+        patentDigProjectFilesDTO.getProjectTaskDTO().setType(taskType);
         Integer taskId = projectTaskService.addTask(patentDigProjectFilesDTO.getProjectTaskDTO());
         if (!ids.isEmpty()) {
             LambdaQueryWrapper<PatentDigProjectFiles> queryWrapper = new LambdaQueryWrapper<>();

+ 3 - 0
src/main/java/cn/cslg/pas/service/business/PatentExportService.java

@@ -162,6 +162,7 @@ public class PatentExportService {
                 webSocketMessageVO.setCode(602);
                 webSocketMessageVO.setAllNum(total);
                 webSocketMessageVO.setCurrentNum(i+1);
+                webSocketMessageVO.setTaskId(exportTask.getTaskId());
                 webSocketMessageVO.setState(1);
                 messageService.sendPatentExportMessage(webSocketMessageVO);
             }
@@ -172,6 +173,7 @@ public class PatentExportService {
             webSocketMessageVO.setCode(603);
             webSocketMessageVO.setAllNum(total);
             webSocketMessageVO.setCurrentNum(total);
+            webSocketMessageVO.setTaskId(exportTask.getTaskId());
             webSocketMessageVO.setState(2);
             messageService.sendPatentExportMessage(webSocketMessageVO);
             String fileGuid = "";
@@ -181,6 +183,7 @@ public class PatentExportService {
             exportTask.setFileGuid(fileGuid);
             exportTask.setAllNum(total);
             exportTask.setDefaultNum(defaultNum);
+            exportTask.setDoneNum(total - defaultNum);
             exportTask.setState(2);
             Integer taskId = importTaskService.updateExportTask(exportTask);
             if (taskId == null) {

+ 127 - 0
src/main/java/cn/cslg/pas/service/business/PermissionRecordService.java

@@ -0,0 +1,127 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.LitigationHistoryDTO;
+import cn.cslg.pas.common.dto.business.PermissionRecordDTO;
+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.utils.StringUtils;
+import cn.cslg.pas.common.vo.business.LitigationHistoryVO;
+import cn.cslg.pas.common.vo.business.PermissionRecordVO;
+import cn.cslg.pas.domain.business.LitigationHistory;
+import cn.cslg.pas.domain.business.PermissionRecord;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.PermissionRecordMapper;
+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.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/16
+ */
+@Service
+@Slf4j
+public class PermissionRecordService extends ServiceImpl<PermissionRecordMapper, PermissionRecord> {
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private PermissionService permissionService;
+
+    /**
+     * 新增or更新
+     * @param permissionRecordDTO
+     * @return
+     */
+    public Integer saveOrUpdate(PermissionRecordDTO permissionRecordDTO){
+        if (permissionRecordDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer id = permissionRecordDTO.getId();
+        PermissionRecord permissionRecord = new PermissionRecord();
+        if (id != null) {
+            //update
+            permissionRecord = this.getById(id);
+            BeanUtils.copyProperties(permissionRecordDTO, permissionRecord);
+            permissionRecord.updateById();
+        } else {
+            BeanUtils.copyProperties(permissionRecordDTO, permissionRecord);
+            PersonnelVO personnelVO = new PersonnelVO();
+            try {
+                personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            } catch (Exception e) {
+                throw new XiaoShiException("未查询到当前登陆人");
+            }
+            permissionRecord.setCreateId(personnelVO.getId());
+            permissionRecord.insert();
+        }
+        return permissionRecord.getId();
+    }
+
+    public List<PermissionRecordVO> getPermissionRecord(String patentNo) throws IOException {
+        if (patentNo == null || StringUtils.isEmpty(patentNo)) {
+            throw new XiaoShiException("入参为空");
+        }
+        List<PermissionRecordVO> permissionRecordVOS = new ArrayList<>();
+        LambdaQueryWrapper<PermissionRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PermissionRecord::getPatentNo, patentNo);
+        List<PermissionRecord> permissionRecords = this.list(queryWrapper);
+
+        if (!permissionRecords.isEmpty()) {
+            permissionRecords.forEach(item -> {
+                PermissionRecordVO permissionRecordVO = new PermissionRecordVO();
+                BeanUtils.copyProperties(item, permissionRecordVO);
+                permissionRecordVOS.add(permissionRecordVO);
+            });
+            this.loadPermissionRecordVOS(permissionRecordVOS);
+        }
+        return permissionRecordVOS;
+    }
+
+    public void loadPermissionRecordVOS(List<PermissionRecordVO> permissionRecordVOS) throws IOException {
+        List<String> createIds = new ArrayList<>();
+        permissionRecordVOS.forEach(item -> {
+            if (item.getCreateId() != null) {
+                createIds.add(item.getCreateId());
+            }
+        });
+        List<Personnel> personnels = new ArrayList<>();
+        //查询发起人名称
+        if (createIds.size() != 0) {
+            String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+        }
+        //装载信息
+        for (PermissionRecordVO permissionRecordVO : permissionRecordVOS) {
+            //装载人员信息
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(permissionRecordVO.getCreateId())).findFirst().orElse(null);
+            if (personnel != null) {
+                permissionRecordVO.setCreateName(personnel.getPersonnelName());
+            }
+        }
+
+    }
+
+    public List<Integer> deletePermissionRecord(List<Integer> ids) {
+        if (!ids.isEmpty()) {
+            this.removeBatchByIds(ids);
+        }
+        return ids;
+    }
+
+}

+ 127 - 0
src/main/java/cn/cslg/pas/service/business/ReviewHistoryService.java

@@ -0,0 +1,127 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.ReviewHistoryDTO;
+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.utils.StringUtils;
+import cn.cslg.pas.common.vo.HightlightTemplateVO;
+import cn.cslg.pas.common.vo.business.ReviewHistoryVO;
+import cn.cslg.pas.domain.business.HightlightTemplate;
+import cn.cslg.pas.domain.business.ReviewHistory;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.ReviewHistoryMapper;
+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.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/15
+ */
+@Service
+@Slf4j
+public class ReviewHistoryService extends ServiceImpl<ReviewHistoryMapper, ReviewHistory> {
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private PermissionService permissionService;
+
+    /**
+     * 新增or更新
+     * @param reviewHistoryDTO
+     * @return
+     */
+    public Integer saveOrUpdate(ReviewHistoryDTO reviewHistoryDTO){
+        if (reviewHistoryDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer id = reviewHistoryDTO.getId();
+        ReviewHistory reviewHistory = new ReviewHistory();
+        if (id != null) {
+            //update
+            reviewHistory = this.getById(id);
+            BeanUtils.copyProperties(reviewHistoryDTO, reviewHistory);
+            reviewHistory.updateById();
+        } else {
+            BeanUtils.copyProperties(reviewHistoryDTO, reviewHistory);
+            PersonnelVO personnelVO = new PersonnelVO();
+            try {
+                personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            } catch (Exception e) {
+                throw new XiaoShiException("未查询到当前登陆人");
+            }
+            reviewHistory.setCreateId(personnelVO.getId());
+            reviewHistory.setTenantId(personnelVO.getTenantId());
+            reviewHistory.insert();
+        }
+        return reviewHistory.getId();
+    }
+
+    public List<ReviewHistoryVO> getReviewHistory(String patentNo) throws IOException {
+        if (patentNo == null || StringUtils.isEmpty(patentNo)) {
+            throw new XiaoShiException("入参为空");
+        }
+        List<ReviewHistoryVO> reviewHistoryVOS = new ArrayList<>();
+        LambdaQueryWrapper<ReviewHistory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReviewHistory::getPatentNo, patentNo);
+        List<ReviewHistory> reviewHistories = this.list(queryWrapper);
+
+        if (!reviewHistories.isEmpty()) {
+            reviewHistories.forEach(item -> {
+                ReviewHistoryVO reviewHistoryVO = new ReviewHistoryVO();
+                BeanUtils.copyProperties(item, reviewHistoryVO);
+                reviewHistoryVOS.add(reviewHistoryVO);
+            });
+            this.loadReviewHistoryVOS(reviewHistoryVOS);
+        }
+        return reviewHistoryVOS;
+    }
+
+    public void loadReviewHistoryVOS(List<ReviewHistoryVO> reviewHistoryVOS) throws IOException {
+        List<String> createIds = new ArrayList<>();
+        reviewHistoryVOS.forEach(item -> {
+            if (item.getCreateId() != null) {
+                createIds.add(item.getCreateId());
+            }
+        });
+        List<Personnel> personnels = new ArrayList<>();
+        //查询发起人名称
+        if (createIds.size() != 0) {
+            String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+        }
+        //装载信息
+        for (ReviewHistoryVO reviewHistoryVO : reviewHistoryVOS) {
+            //装载人员信息
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(reviewHistoryVO.getCreateId())).findFirst().orElse(null);
+            if (personnel != null) {
+                reviewHistoryVO.setCreateName(personnel.getPersonnelName());
+            }
+        }
+
+    }
+
+    public List<Integer> deleteReviewHistory(List<Integer> ids) {
+        if (!ids.isEmpty()) {
+            this.removeBatchByIds(ids);
+        }
+        return ids;
+    }
+
+}

+ 22 - 0
src/main/java/cn/cslg/pas/service/common/MessageService.java

@@ -100,12 +100,34 @@ public class MessageService {
         taskWebSocketDTO.setComplete(flag);
         taskWebSocketDTO.setIndex(webSocketMessageVO.getCurrentNum());
         taskWebSocketDTO.setPercentage(percentage);
+        taskWebSocketDTO.setTaskId(webSocketMessageVO.getTaskId());
+        taskWebSocketDTO.setTaskStatus(webSocketMessageVO.getState());
         if(flag) {
             WebSocketServer.sendInfo(Response.websocket(taskWebSocketDTO, ResponseEnum.PATENT_EXPORT_TASK_DONE), webSocketMessageVO.getCreateId());
         return;
         }
         WebSocketServer.sendInfo(Response.websocket(taskWebSocketDTO, ResponseEnum.PATENT_EXPORT_TASK), webSocketMessageVO.getCreateId());
+    }
+
+
+    //发送导出PDF首页消息
+    public void sendPDFExportMessage(WebSocketMessageVO webSocketMessageVO) {
+        //通过WebSocket 在每一次循环结束后 向前端发送完成进度
+        //当任务状态为完成时,flag为true
+        long percentage = (long) Math.floor((webSocketMessageVO.getCurrentNum() + 0D) / webSocketMessageVO.getAllNum() * 100D);
+        boolean flag = webSocketMessageVO.getState().equals(2);
 
+        TaskWebSocketDTO taskWebSocketDTO = new TaskWebSocketDTO();
+        taskWebSocketDTO.setComplete(flag);
+        taskWebSocketDTO.setIndex(webSocketMessageVO.getCurrentNum());
+        taskWebSocketDTO.setPercentage(percentage);
+        taskWebSocketDTO.setTaskId(webSocketMessageVO.getTaskId());
+        taskWebSocketDTO.setTaskStatus(webSocketMessageVO.getState());
+        if(flag) {
+            WebSocketServer.sendInfo(Response.websocket(taskWebSocketDTO, ResponseEnum.PATENT_PDF_EXPORT_TASK_DONE), webSocketMessageVO.getCreateId());
+            return;
+        }
+        WebSocketServer.sendInfo(Response.websocket(taskWebSocketDTO, ResponseEnum.PATENT_PDF_EXPORT_TASK), webSocketMessageVO.getCreateId());
     }
 
 }