xiexiang 1 년 전
부모
커밋
380bb79289
19개의 변경된 파일1158개의 추가작업 그리고 13개의 파일을 삭제
  1. 54 0
      src/main/java/cn/cslg/pas/common/dto/business/AsInvalidReasonHistoryDTO.java
  2. 58 0
      src/main/java/cn/cslg/pas/common/dto/business/InvalidRecordDTO.java
  3. 71 0
      src/main/java/cn/cslg/pas/common/vo/business/AsInvalidReasonHistoryVO.java
  4. 71 0
      src/main/java/cn/cslg/pas/common/vo/business/InvalidRecordVO.java
  5. 53 0
      src/main/java/cn/cslg/pas/controller/AsInvalidReasonHistoryController.java
  6. 53 0
      src/main/java/cn/cslg/pas/controller/InvalidRecordController.java
  7. 68 0
      src/main/java/cn/cslg/pas/domain/business/AsInvalidReasonHistory.java
  8. 65 0
      src/main/java/cn/cslg/pas/domain/business/InvalidRecord.java
  9. 13 0
      src/main/java/cn/cslg/pas/mapper/AsInvalidReasonHistoryMapper.java
  10. 13 0
      src/main/java/cn/cslg/pas/mapper/InvalidRecordMapper.java
  11. 298 0
      src/main/java/cn/cslg/pas/service/business/AsInvalidReasonHistoryService.java
  12. 3 1
      src/main/java/cn/cslg/pas/service/business/HightlightTemplateService.java
  13. 309 0
      src/main/java/cn/cslg/pas/service/business/InvalidRecordService.java
  14. 2 1
      src/main/java/cn/cslg/pas/service/business/LitigationHistoryService.java
  15. 1 0
      src/main/java/cn/cslg/pas/service/business/OtherReferencesService.java
  16. 2 3
      src/main/java/cn/cslg/pas/service/business/PermissionRecordService.java
  17. 3 1
      src/main/java/cn/cslg/pas/service/business/ReviewHistoryService.java
  18. 19 5
      src/main/resources/jsons/patentDigProjectFiles.json
  19. 2 2
      src/main/resources/jsons/projectTask.json

+ 54 - 0
src/main/java/cn/cslg/pas/common/dto/business/AsInvalidReasonHistoryDTO.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;
+import java.util.List;
+
+/**
+ * 作为无效证据使用历史dto
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Data
+public class AsInvalidReasonHistoryDTO {
+    private Integer id;
+    /**
+     * 无效案号
+     */
+    private String invalidCaseNum;
+
+    /**
+     * 被无效的专利
+     */
+    private String invalidedPatent;
+
+    /**
+     * 被无效的时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date invalidTime;
+
+    /**
+     * 无效理由
+     */
+    private String invalidReason;
+
+    /**
+     * 是否被审查员认可
+     */
+    private Boolean ifApproved;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    private List<String> fileGuids;
+}

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

@@ -0,0 +1,58 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Data
+public class InvalidRecordDTO {
+    private Integer id;
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 无效案号
+     */
+    private String invalidCaseNum;
+
+    /**
+     * 无效时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date invalidTime;
+
+    /**
+     * 判决时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date judgementTime;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+    /**
+     * 无效申请人
+     */
+    private String invalidApplicant;
+
+    private List<String> fileGuids;
+}

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

@@ -0,0 +1,71 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+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;
+import java.util.List;
+
+/**
+ * 作为无效证据使用历史VO
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Data
+public class AsInvalidReasonHistoryVO {
+    private Integer id;
+    /**
+     * 无效案号
+     */
+    private String invalidCaseNum;
+
+    /**
+     * 被无效的专利
+     */
+    private String invalidedPatent;
+
+    /**
+     * 被无效的时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date invalidTime;
+
+    /**
+     * 无效理由
+     */
+    private String invalidReason;
+
+    /**
+     * 是否被审查员认可
+     */
+    private Boolean ifApproved;
+
+    /**
+     * 创建人
+     */
+    private String createId;
+
+    private String createName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    private List<String> fileGuids;
+
+    private List<SystemFile> systemFileList;
+
+    private Boolean ifAdd;
+}

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

@@ -0,0 +1,71 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Data
+public class InvalidRecordVO {
+    private Integer id;
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 无效案号
+     */
+    private String invalidCaseNum;
+
+    /**
+     * 无效时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date invalidTime;
+
+    /**
+     * 判决时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date judgementTime;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+    /**
+     * 无效申请人id
+     */
+    private String invalidApplicantId;
+
+    /**
+     * 无效申请人
+     */
+    private String invalidApplicant;
+
+    private String createId;
+
+    private String createName;
+
+    private Date createTime;
+
+    private List<String> fileGuids;
+
+    private List<SystemFile> systemFileList;
+
+    private Boolean ifAdd;
+}

+ 53 - 0
src/main/java/cn/cslg/pas/controller/AsInvalidReasonHistoryController.java

@@ -0,0 +1,53 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.AsInvalidReasonHistoryDTO;
+import cn.cslg.pas.common.dto.business.OtherPatentInfoDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.service.business.AsInvalidReasonHistoryService;
+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/19
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/asInvalidReasonHistory")
+@RestController
+public class AsInvalidReasonHistoryController {
+    @Autowired
+    private AsInvalidReasonHistoryService asInvalidReasonHistoryService;
+
+    @Operation(summary = "添加or更新作为无效证据使用历史")
+    @PostMapping("/saveOrUpdate")
+    public Response saveOrUpdate(@RequestBody AsInvalidReasonHistoryDTO asInvalidReasonHistoryDTO){
+        Integer id = asInvalidReasonHistoryService.saveOrUpdate(asInvalidReasonHistoryDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询作为无效证据使用历史")
+    @PostMapping("/query")
+    public Response queryAsInvalidReasonHistory(@RequestBody OtherPatentInfoDTO otherPatentInfoDTO) throws Exception {
+        String patentNo = otherPatentInfoDTO.getPatentNo();
+        Records records = asInvalidReasonHistoryService.getAsInvalidReasonHistory(patentNo);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "删除作为无效证据使用历史")
+    @PostMapping("/delete")
+    public Response delete(@RequestBody List<Integer> ids) throws Exception {
+        List<Integer> deleteIds = asInvalidReasonHistoryService.deleteAsInvalidReasonHistory(ids);
+        Records records = new Records();
+        records.setData(deleteIds);
+        return Response.success(records);
+    }
+}

+ 53 - 0
src/main/java/cn/cslg/pas/controller/InvalidRecordController.java

@@ -0,0 +1,53 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.InvalidRecordDTO;
+import cn.cslg.pas.common.dto.business.OtherPatentInfoDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.service.business.InvalidRecordService;
+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/19
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/invalidRecord")
+@RestController
+public class InvalidRecordController {
+    @Autowired
+    private InvalidRecordService invalidRecordService;
+
+    @Operation(summary = "添加or更新被无效历史")
+    @PostMapping("/saveOrUpdate")
+    public Response saveOrUpdate(@RequestBody InvalidRecordDTO invalidRecordDTO){
+        Integer id = invalidRecordService.saveOrUpdate(invalidRecordDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询被无效历史")
+    @PostMapping("/query")
+    public Response queryAsInvalidReasonHistory(@RequestBody OtherPatentInfoDTO otherPatentInfoDTO) throws Exception {
+        String patentNo = otherPatentInfoDTO.getPatentNo();
+        Records records = invalidRecordService.getInvalidRecord(patentNo);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "删除被无效历史")
+    @PostMapping("/delete")
+    public Response delete(@RequestBody List<Integer> ids) throws Exception {
+        List<Integer> deleteIds = invalidRecordService.deleteInvalidRecord(ids);
+        Records records = new Records();
+        records.setData(deleteIds);
+        return Response.success(records);
+    }
+}

+ 68 - 0
src/main/java/cn/cslg/pas/domain/business/AsInvalidReasonHistory.java

@@ -0,0 +1,68 @@
+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;
+
+/**
+ * 作为无效证据使用历史
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Data
+@TableName("as_invalid_reason_history")
+public class AsInvalidReasonHistory extends BaseEntity<AsInvalidReasonHistory> {
+    /**
+     * 无效案号
+     */
+    @TableField(value = "invalid_case_num")
+    private String invalidCaseNum;
+
+    /**
+     * 被无效的专利
+     */
+    @TableField(value = "invalided_patent")
+    private String invalidedPatent;
+
+    /**
+     * 被无效的时间
+     */
+    @TableField(value = "invalid_time")
+    private Date invalidTime;
+
+    /**
+     * 无效理由
+     */
+    @TableField(value = "invalid_reason")
+    private String invalidReason;
+
+    /**
+     * 是否被审查员认可
+     */
+    @TableField(value = "if_approved")
+    private Boolean ifApproved;
+
+    /**
+     * 创建人
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /**
+     * 专利号
+     */
+    @TableField(value = "patent_no")
+    private String patentNo;
+
+    @TableField(value = "tenant_id")
+    private Integer tenantId;
+}

+ 65 - 0
src/main/java/cn/cslg/pas/domain/business/InvalidRecord.java

@@ -0,0 +1,65 @@
+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;
+
+/**
+ * 被无效历史
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Data
+@TableName("invalid_record")
+public class InvalidRecord extends BaseEntity<InvalidRecord> {
+    /**
+     * 专利号
+     */
+    @TableField(value = "patent_no")
+    private String patentNo;
+
+    /**
+     * 无效案号
+     */
+    @TableField(value = "invalid_case_num")
+    private String invalidCaseNum;
+
+    /**
+     * 无效时间
+     */
+    @TableField(value = "invalid_time")
+    private Date invalidTime;
+
+    /**
+     * 判决时间
+     */
+    @TableField(value = "judgement_time")
+    private Date judgementTime;
+
+    /**
+     * 结果
+     */
+    @TableField(value = "result")
+    private String result;
+
+    /**
+     * 无效申请人
+     */
+    @TableField(value = "invalid_applicant")
+    private String invalidApplicant;
+
+    /**
+     * 创建人
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+}

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

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

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

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

+ 298 - 0
src/main/java/cn/cslg/pas/service/business/AsInvalidReasonHistoryService.java

@@ -0,0 +1,298 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.AsInvalidReasonHistoryDTO;
+import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
+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.utils.StringUtils;
+import cn.cslg.pas.common.vo.business.AsInvalidReasonHistoryVO;
+import cn.cslg.pas.domain.business.*;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.AsInvalidReasonHistoryMapper;
+import cn.cslg.pas.service.business.invalidReport.AssoReasonLiteratureService;
+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.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 作为无效证据使用历史
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Slf4j
+@Service
+public class AsInvalidReasonHistoryService extends ServiceImpl<AsInvalidReasonHistoryMapper, AsInvalidReasonHistory> {
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private PermissionService permissionService;
+
+    @Autowired
+    private AssoOtherPatentInfoFileService assoOtherPatentInfoFileService;
+
+    @Autowired
+    private OtherReferencesService otherReferencesService;
+
+    @Autowired
+    private FileManagerService fileManagerService;
+
+    @Autowired
+    private CompareLiteratureService compareLiteratureService;
+
+    @Autowired
+    private ReportProjectService reportProjectService;
+
+    @Autowired
+    private ProjectService projectService;
+
+    @Autowired
+    private InvalidRecordService invalidRecordService;
+
+    @Autowired
+    private AssoReasonLiteratureService assoReasonLiteratureService;
+
+    /**
+     * 新增or更新
+     * @param asInvalidReasonHistoryDTO
+     * @return
+     */
+    public Integer saveOrUpdate(AsInvalidReasonHistoryDTO asInvalidReasonHistoryDTO){
+        if (asInvalidReasonHistoryDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer id = asInvalidReasonHistoryDTO.getId();
+        List<String> fileGuids = asInvalidReasonHistoryDTO.getFileGuids();
+        AsInvalidReasonHistory asInvalidReasonHistory = new AsInvalidReasonHistory();
+        Integer type = 5;
+        if (id != null) {
+            //update
+            asInvalidReasonHistory = this.getById(id);
+            BeanUtils.copyProperties(asInvalidReasonHistoryDTO, asInvalidReasonHistory);
+            asInvalidReasonHistory.updateById();
+            //先删除 后添加
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, id)
+                    .eq(AssoOtherPatentInfoFile::getType, type);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                List<Integer> fileIds = otherReferencesService.addFile(asInvalidReasonHistory.getId(), fileGuids, type);
+            }
+        } else {
+            BeanUtils.copyProperties(asInvalidReasonHistoryDTO, asInvalidReasonHistory);
+            PersonnelVO personnelVO = new PersonnelVO();
+            try {
+                personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            } catch (Exception e) {
+                throw new XiaoShiException("未查询到当前登陆人");
+            }
+            asInvalidReasonHistory.setCreateId(personnelVO.getId());
+            asInvalidReasonHistory.setTenantId(personnelVO.getTenantId());
+            asInvalidReasonHistory.insert();
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                //先删除 后添加
+                List<Integer> fileIds = otherReferencesService.addFile(asInvalidReasonHistory.getId(), fileGuids, type);
+            }
+        }
+        return asInvalidReasonHistory.getId();
+    }
+
+    /**
+     * 查询
+     * @param patentNo
+     * @return
+     * @throws IOException
+     */
+    public Records getAsInvalidReasonHistory(String patentNo) throws IOException {
+        List<AsInvalidReasonHistoryVO> asInvalidReasonHistoryVOS = new ArrayList<>();
+        if (patentNo == null || StringUtils.isEmpty(patentNo)) {
+            throw new XiaoShiException("入参为空");
+        }
+
+        LambdaQueryWrapper<AsInvalidReasonHistory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AsInvalidReasonHistory::getPatentNo, patentNo)
+                .orderByDesc(AsInvalidReasonHistory::getInvalidTime);
+        List<AsInvalidReasonHistory> asInvalidReasonHistories = this.list(queryWrapper);
+
+        if (!asInvalidReasonHistories.isEmpty()) {
+            asInvalidReasonHistories.forEach(item -> {
+                AsInvalidReasonHistoryVO asInvalidReasonHistoryVO = new AsInvalidReasonHistoryVO();
+                BeanUtils.copyProperties(item, asInvalidReasonHistoryVO);
+                asInvalidReasonHistoryVO.setIfAdd(true);
+                LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper1 = new LambdaQueryWrapper<>();
+                queryWrapper1.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, asInvalidReasonHistoryVO.getId())
+                        .eq(AssoOtherPatentInfoFile::getType, 5);
+                List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = assoOtherPatentInfoFileService.list(queryWrapper1);
+                if (!assoOtherPatentInfoFiles.isEmpty()) {
+                    List<String> fileGuids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getFileGuid).collect(Collectors.toList());
+                    asInvalidReasonHistoryVO.setFileGuids(fileGuids);
+                }
+                asInvalidReasonHistoryVOS.add(asInvalidReasonHistoryVO);
+            });
+        }
+        List<AsInvalidReasonHistoryVO> finalVOS = this.findInInvalidReport(patentNo, asInvalidReasonHistoryVOS);
+        this.loadAsInvalidReasonHistoryVOS(finalVOS);
+        Records records = new Records();
+        records.setData(finalVOS);
+        return records;
+    }
+
+    /**
+     * 装载
+     * @param asInvalidReasonHistoryVOS
+     * @throws IOException
+     */
+    public void loadAsInvalidReasonHistoryVOS(List<AsInvalidReasonHistoryVO> asInvalidReasonHistoryVOS) throws IOException {
+        List<String> createIds = new ArrayList<>();
+        asInvalidReasonHistoryVOS.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 (AsInvalidReasonHistoryVO asInvalidReasonHistoryVO : asInvalidReasonHistoryVOS) {
+            //装载人员信息
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(asInvalidReasonHistoryVO.getCreateId())).findFirst().orElse(null);
+            if (personnel != null) {
+                asInvalidReasonHistoryVO.setCreateName(personnel.getPersonnelName());
+            }
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, asInvalidReasonHistoryVO.getId())
+                    .eq(AssoOtherPatentInfoFile::getType, 5);
+            List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = assoOtherPatentInfoFileService.list(queryWrapper);
+            if (!assoOtherPatentInfoFiles.isEmpty()) {
+                List<String> fileGuids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getFileGuid).collect(Collectors.toList());
+                asInvalidReasonHistoryVO.setFileGuids(fileGuids);
+                List<SystemFile> systemFiles = new ArrayList<>();
+                if (fileGuids.size() != 0) {
+                    String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+                    systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                }
+                if (!systemFiles.isEmpty()) {
+                    asInvalidReasonHistoryVO.setSystemFileList(systemFiles);
+                }
+            }
+        }
+    }
+
+    /**
+     * 删除
+     * @param ids
+     * @return
+     */
+    public List<Integer> deleteAsInvalidReasonHistory(List<Integer> ids) {
+        if (!ids.isEmpty()) {
+            //先删除附件
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoOtherPatentInfoFile::getOtherPatentInfoId, ids)
+                    .eq(AssoOtherPatentInfoFile::getType, 5);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
+            this.removeBatchByIds(ids);
+        }
+        return ids;
+    }
+
+    /**
+     * 查询全部的
+     * @param patentNo
+     * @param asInvalidReasonHistoryVOS
+     * @return
+     */
+    public List<AsInvalidReasonHistoryVO> findInInvalidReport(String patentNo, List<AsInvalidReasonHistoryVO> asInvalidReasonHistoryVOS){
+        List<AsInvalidReasonHistoryVO> finalVOS = new ArrayList<>();
+        finalVOS.addAll(asInvalidReasonHistoryVOS);
+        //查询出所有的projectId
+        LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CompareLiterature::getLiteratureNo, patentNo);
+        List<CompareLiterature> compareLiteratures = compareLiteratureService.list(queryWrapper);
+        //对比文献号存在
+        if (!compareLiteratures.isEmpty()) {
+            //取出所有报告并留下是无效的
+            List<Integer> projectIds = compareLiteratures
+                    .stream()
+                    .map(CompareLiterature::getProjectId)
+                    .collect(Collectors.toList());
+            LambdaQueryWrapper<ReportProject> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.in(ReportProject::getProjectId, projectIds);
+            List<ReportProject> results = reportProjectService.list(queryWrapper1);
+            if (!results.isEmpty()) {
+                results.forEach(
+                        item -> {
+                            Project project = projectService.getById(item.getProjectId());
+                            if (project.getType().equals(2)) {
+                                if (item.getReportType().equals(7)) {
+                                    AsInvalidReasonHistoryVO asVO = new AsInvalidReasonHistoryVO();
+                                    asVO.setPatentNo(patentNo);
+                                    asVO.setInvalidedPatent(item.getSignPatentNo());
+                                    asVO.setInvalidCaseNum(item.getCaseNumber());
+                                    Integer affairType = 1;
+                                    Date invalidTime = invalidRecordService.loadInvalidTime(affairType, item);
+                                    asVO.setInvalidTime(invalidTime);
+                                    asVO.setCreateId(project.getCreateId());
+                                    asVO.setCreateTime(project.getCreateTime());
+                                    List<String> fileGuids = invalidRecordService.loadFileGuids(item.getProjectId());
+                                    asVO.setFileGuids(fileGuids);
+                                    asVO.setIfAdd(false);
+                                    finalVOS.add(asVO);
+                                } else if (item.getReportType().equals(1) || item.getReportType().equals(2)) {
+                                    //判断是否有对比结果
+                                    LambdaQueryWrapper<CompareLiterature> queryWrapper2 = new LambdaQueryWrapper<>();
+                                    queryWrapper2.eq(CompareLiterature::getLiteratureNo, patentNo)
+                                            .eq(CompareLiterature::getProjectId, item.getProjectId());
+                                    CompareLiterature compareLiterature = compareLiteratureService.getOne(queryWrapper2, false);
+                                    if (compareLiterature != null) {
+                                        Integer compareLiteratureId = compareLiterature.getId();
+                                        LambdaQueryWrapper<AssoReasonLiterature> queryWrapper3 = new LambdaQueryWrapper<>();
+                                        queryWrapper3.eq(AssoReasonLiterature::getLiteratureId, compareLiteratureId);
+                                        List<AssoReasonLiterature> assoReasonLiteratures = assoReasonLiteratureService.list(queryWrapper3);
+                                        if (!assoReasonLiteratures.isEmpty()) {
+                                            AsInvalidReasonHistoryVO asVO = new AsInvalidReasonHistoryVO();
+                                            asVO.setPatentNo(patentNo);
+                                            asVO.setInvalidedPatent(item.getSignPatentNo());
+                                            asVO.setInvalidCaseNum(item.getCaseNumber());
+                                            Integer affairType = 1;
+                                            Date invalidTime = invalidRecordService.loadInvalidTime(affairType, item);
+                                            asVO.setInvalidTime(invalidTime);
+                                            asVO.setCreateId(project.getCreateId());
+                                            asVO.setCreateTime(project.getCreateTime());
+                                            List<String> fileGuids = invalidRecordService.loadFileGuids(item.getProjectId());
+                                            asVO.setFileGuids(fileGuids);
+                                            asVO.setIfAdd(false);
+                                            finalVOS.add(asVO);
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                );
+            }
+        }
+        return finalVOS;
+    }
+
+}

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

@@ -10,6 +10,7 @@ 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.domain.business.LitigationHistory;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.HightlightTemplateMapper;
 import cn.cslg.pas.service.permissions.PermissionService;
@@ -102,7 +103,8 @@ public class HightlightTemplateService extends ServiceImpl<HightlightTemplateMap
         List<HightlightTemplateVO> hightlightTemplateVOS = new ArrayList<>();
         LambdaQueryWrapper<HightlightTemplate> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(HightlightTemplate::getProjectId, projectId)
-                .eq(HightlightTemplate::getCreateId, personnelVO.getId());
+                .eq(HightlightTemplate::getCreateId, personnelVO.getId())
+                .orderByDesc(HightlightTemplate::getCreateTime);
         List<HightlightTemplate> hightlightTemplates = this.list(queryWrapper);
 
         if (!hightlightTemplates.isEmpty()) {

+ 309 - 0
src/main/java/cn/cslg/pas/service/business/InvalidRecordService.java

@@ -0,0 +1,309 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.InvalidRecordDTO;
+import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
+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.utils.StringUtils;
+import cn.cslg.pas.common.vo.business.InvalidRecordVO;
+import cn.cslg.pas.domain.business.*;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.InvalidRecordMapper;
+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.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 被无效历史
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Slf4j
+@Service
+public class InvalidRecordService extends ServiceImpl<InvalidRecordMapper, InvalidRecord> {
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private PermissionService permissionService;
+
+    @Autowired
+    private AssoOtherPatentInfoFileService assoOtherPatentInfoFileService;
+
+    @Autowired
+    private OtherReferencesService otherReferencesService;
+
+    @Autowired
+    private FileManagerService fileManagerService;
+
+    @Autowired
+    private CompareLiteratureService compareLiteratureService;
+
+    @Autowired
+    private ReportProjectService reportProjectService;
+
+    @Autowired
+    private ProjectService projectService;
+
+    @Autowired
+    private ReportAffairService reportAffairService;
+
+    @Autowired
+    private AssoProjectFileService assoProjectFileService;
+
+    /**
+     * 新增or更新
+     * @param invalidRecordDTO
+     * @return
+     */
+    public Integer saveOrUpdate(InvalidRecordDTO invalidRecordDTO){
+        if (invalidRecordDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer id = invalidRecordDTO.getId();
+        List<String> fileGuids = invalidRecordDTO.getFileGuids();
+        InvalidRecord invalidRecord = new InvalidRecord();
+        Integer type = 6;
+        if (id != null) {
+            //update
+            invalidRecord = this.getById(id);
+            BeanUtils.copyProperties(invalidRecordDTO, invalidRecord);
+            invalidRecord.updateById();
+            //先删除 后添加
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, id)
+                    .eq(AssoOtherPatentInfoFile::getType, type);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                List<Integer> fileIds = otherReferencesService.addFile(invalidRecord.getId(), fileGuids, type);
+            }
+        } else {
+            BeanUtils.copyProperties(invalidRecordDTO, invalidRecord);
+            PersonnelVO personnelVO = new PersonnelVO();
+            try {
+                personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            } catch (Exception e) {
+                throw new XiaoShiException("未查询到当前登陆人");
+            }
+            invalidRecord.setCreateId(personnelVO.getId());
+            invalidRecord.insert();
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                //先删除 后添加
+                List<Integer> fileIds = otherReferencesService.addFile(invalidRecord.getId(), fileGuids, type);
+            }
+        }
+        return invalidRecord.getId();
+    }
+
+    /**
+     * 查询
+     * @param patentNo
+     * @return
+     * @throws IOException
+     */
+    public Records getInvalidRecord(String patentNo) throws IOException {
+        List<InvalidRecordVO> invalidRecordVOS = new ArrayList<>();
+        if (patentNo == null || StringUtils.isEmpty(patentNo)) {
+            throw new XiaoShiException("入参为空");
+        }
+
+        LambdaQueryWrapper<InvalidRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(InvalidRecord::getPatentNo, patentNo);
+        List<InvalidRecord> invalidRecords = this.list(queryWrapper);
+
+        if (!invalidRecords.isEmpty()) {
+            invalidRecords.forEach(item -> {
+                InvalidRecordVO invalidRecordVO = new InvalidRecordVO();
+                BeanUtils.copyProperties(item, invalidRecordVO);
+                invalidRecordVO.setIfAdd(true);
+                invalidRecordVOS.add(invalidRecordVO);
+            });
+        }
+        List<InvalidRecordVO> finalVOS = this.findInvalidRecord(patentNo, invalidRecordVOS);
+        this.loadInvalidRecordVOS(finalVOS);
+        Records records = new Records();
+        records.setData(finalVOS);
+        return records;
+    }
+
+    /**
+     * 装载
+     * @param invalidRecordVOS
+     * @throws IOException
+     */
+    public void loadInvalidRecordVOS(List<InvalidRecordVO> invalidRecordVOS) throws IOException {
+        List<String> createIds = new ArrayList<>();
+        invalidRecordVOS.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 (InvalidRecordVO invalidRecordVO : invalidRecordVOS) {
+            //装载人员信息
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(invalidRecordVO.getCreateId())).findFirst().orElse(null);
+            if (personnel != null) {
+                invalidRecordVO.setCreateName(personnel.getPersonnelName());
+            }
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, invalidRecordVO.getId())
+                    .eq(AssoOtherPatentInfoFile::getType, 6);
+            List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = assoOtherPatentInfoFileService.list(queryWrapper);
+            if (!assoOtherPatentInfoFiles.isEmpty()) {
+                List<String> fileGuids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getFileGuid).collect(Collectors.toList());
+                invalidRecordVO.setFileGuids(fileGuids);
+                List<SystemFile> systemFiles = new ArrayList<>();
+                if (fileGuids.size() != 0) {
+                    String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+                    systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                }
+                if (!systemFiles.isEmpty()) {
+                    invalidRecordVO.setSystemFileList(systemFiles);
+                }
+            }
+        }
+    }
+
+    /**
+     * 删除
+     * @param ids
+     * @return
+     */
+    public List<Integer> deleteInvalidRecord(List<Integer> ids) {
+        if (!ids.isEmpty()) {
+            //先删除附件
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoOtherPatentInfoFile::getOtherPatentInfoId, ids)
+                    .eq(AssoOtherPatentInfoFile::getType, 5);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
+            this.removeBatchByIds(ids);
+        }
+        return ids;
+    }
+
+    public List<InvalidRecordVO> findInvalidRecord(String patentNo, List<InvalidRecordVO> invalidRecordVOS){
+        List<InvalidRecordVO> finalVOS = new ArrayList<>();
+        finalVOS.addAll(invalidRecordVOS);
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getSignPatentNo, patentNo);
+        List<ReportProject> reportProjects = reportProjectService.list(queryWrapper);
+        if (!reportProjects.isEmpty()) {
+            reportProjects.forEach(item -> {
+                Project project = projectService.getById(item.getProjectId());
+                Integer type = item.getReportType();
+                //报告类型为稳定性分析和第三方意见  查询无效请求书
+                if (type.equals(1) || type.equals(2)) {
+                    InvalidRecordVO invalidRecordVO = new InvalidRecordVO();
+                    invalidRecordVO.setInvalidCaseNum(item.getCaseNumber());
+                    invalidRecordVO.setPatentNo(patentNo);
+                    Integer affairType = 1;
+                    Date time = this.loadInvalidTime(affairType, item);
+                    invalidRecordVO.setInvalidTime(time);
+                    invalidRecordVO.setCreateId(project.getCreateId());
+                    invalidRecordVO.setCreateTime(project.getCreateTime());
+                    List<String> fileGuids = this.loadFileGuids(item.getProjectId());
+                    invalidRecordVO.setFileGuids(fileGuids);
+                    invalidRecordVO.setIfAdd(false);
+                    finalVOS.add(invalidRecordVO);
+                } else if (type.equals(7)) {
+                    //报告类型为官方无效  查询行政判决诉讼书
+                    InvalidRecordVO invalidRecordVO = new InvalidRecordVO();
+                    invalidRecordVO.setInvalidCaseNum(item.getCaseNumber());
+                    invalidRecordVO.setPatentNo(patentNo);
+                    Integer affairType = 1;
+                    Date invalidTime = this.loadInvalidTime(affairType, item);
+                    invalidRecordVO.setInvalidTime(invalidTime);
+                    Integer judgeType = 5;
+                    Date judgeTime = this.loadInvalidTime(judgeType, item);
+                    invalidRecordVO.setJudgementTime(judgeTime);
+                    invalidRecordVO.setCreateId(project.getCreateId());
+                    invalidRecordVO.setCreateTime(project.getCreateTime());
+                    List<String> fileGuids = this.loadFileGuids(item.getProjectId());
+                    invalidRecordVO.setFileGuids(fileGuids);
+                    invalidRecordVO.setIfAdd(false);
+                    finalVOS.add(invalidRecordVO);
+                }
+            });
+        }
+        return finalVOS;
+    }
+
+    public Date loadInvalidTime(Integer type, ReportProject reportProject){
+        LambdaQueryWrapper<ReportAffair> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportAffair::getAffairType, type)
+                .eq(ReportAffair::getProjectId, reportProject.getProjectId())
+                .orderByDesc(ReportAffair::getCreateTime)
+                .last("LIMIT 1");
+        ReportAffair reportAffair = reportAffairService.getOne(queryWrapper, false);
+        if (reportAffair != null) {
+            return reportAffair.getOccurredTime();
+        } else {
+            return null;
+        }
+    }
+
+    public List<String> loadFileGuids(Integer projectId){
+        List<String> fileGuids = new ArrayList<>();
+        LambdaQueryWrapper<AssoProjectFile> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AssoProjectFile::getProjectId, projectId);
+        List<AssoProjectFile> assoProjectFiles = assoProjectFileService.list(queryWrapper);
+        if (!assoProjectFiles.isEmpty()) {
+            fileGuids = assoProjectFiles.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
+        }
+        return fileGuids;
+    }
+
+//    /**
+//     * 先查判决书 后查决定书
+//     * @param reportProject
+//     * @return
+//     */
+//    public String getResult(ReportProject reportProject){
+//        LambdaQueryWrapper<ReportAffair> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(ReportAffair::getAffairType, 5)
+//                .eq(ReportAffair::getProjectId, reportProject.getProjectId())
+//                .orderByDesc(ReportAffair::getCreateTime)
+//                .last("LIMIT 1");
+//        ReportAffair reportAffair = reportAffairService.getOne(queryWrapper, false);
+//        if (reportAffair != null) {
+//            return reportAffair.getDescription();
+//        } else {
+//            LambdaQueryWrapper<ReportAffair> queryWrapper1 = new LambdaQueryWrapper<>();
+//            queryWrapper1.eq(ReportAffair::getAffairType, 3)
+//                    .eq(ReportAffair::getProjectId, reportProject.getProjectId())
+//                    .orderByDesc(ReportAffair::getCreateTime)
+//                    .last("LIMIT 1");
+//            ReportAffair reportAffair1 = reportAffairService.getOne(queryWrapper1, false);
+//            if (reportAffair1 != null) {
+//                LambdaQueryWrapper<InvalidDecisionFile> queryWrapper2 = new LambdaQueryWrapper<>();
+//                queryWrapper2.eq(InvalidDecisionFile::)
+//            }
+//        }
+//    }
+}

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

@@ -118,7 +118,8 @@ public class LitigationHistoryService extends ServiceImpl<LitigationHistoryMappe
         Page<LitigationHistory> page = new Page<>(current, size);
 
         LambdaQueryWrapper<LitigationHistory> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(LitigationHistory::getPatentNo, patentNo);
+        queryWrapper.eq(LitigationHistory::getPatentNo, patentNo)
+                    .orderByDesc(LitigationHistory::getCreateTime);
         IPage<LitigationHistory> litigationHistoryPage = this.page(page, queryWrapper);
         List<LitigationHistory> litigationHistories = litigationHistoryPage.getRecords();
         long total = litigationHistoryPage.getTotal();

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

@@ -117,6 +117,7 @@ public class OtherReferencesService extends ServiceImpl<OtherReferencesMapper, O
                 assoOtherPatentInfoFiles.add(assoOtherPatentInfoFile);
             });
             assoOtherPatentInfoFileService.saveBatch(assoOtherPatentInfoFiles);
+            ids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getId).collect(Collectors.toList());
         }
         return ids;
     }

+ 2 - 3
src/main/java/cn/cslg/pas/service/business/PermissionRecordService.java

@@ -9,9 +9,7 @@ import cn.cslg.pas.common.model.cronModel.Records;
 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;
@@ -94,7 +92,8 @@ public class PermissionRecordService extends ServiceImpl<PermissionRecordMapper,
         Page<PermissionRecord> page = new Page<>(current, size);
 
         LambdaQueryWrapper<PermissionRecord> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(PermissionRecord::getPatentNo, patentNo);
+        queryWrapper.eq(PermissionRecord::getPatentNo, patentNo)
+                .orderByDesc(PermissionRecord::getCreateTime);
         IPage<PermissionRecord> permissionRecordPage = this.page(page, queryWrapper);
         List<PermissionRecord> permissionRecords = permissionRecordPage.getRecords();
         long total = permissionRecordPage.getTotal();

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

@@ -11,6 +11,7 @@ import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.common.vo.business.ReviewHistoryVO;
 import cn.cslg.pas.domain.business.AssoOtherPatentInfoFile;
+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;
@@ -119,7 +120,8 @@ public class ReviewHistoryService extends ServiceImpl<ReviewHistoryMapper, Revie
         Page<ReviewHistory> page = new Page<>(current, size);
 
         LambdaQueryWrapper<ReviewHistory> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ReviewHistory::getPatentNo, patentNo);
+        queryWrapper.eq(ReviewHistory::getPatentNo, patentNo)
+                .orderByDesc(ReviewHistory::getCreateTime);
         IPage<ReviewHistory> reviewHistoryPage = this.page(page, queryWrapper);
         List<ReviewHistory> reviewHistories = reviewHistoryPage.getRecords();
         long total = reviewHistoryPage.getTotal();

+ 19 - 5
src/main/resources/jsons/patentDigProjectFiles.json

@@ -43,7 +43,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "所属流程",
+    "name": "流程节点",
     "type": "String",
     "value": "processName",
     "field": "processName",
@@ -58,7 +58,7 @@
     "ifAsCondition": "false"
   },
   {
-    "name": "所属流程",
+    "name": "流程节点",
     "type": "Array",
     "value": "processId",
     "field": "processId",
@@ -88,12 +88,12 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "是否最终",
+    "name": "最终文件",
     "type": "Boolean",
     "value": "ifFinal",
     "field": "ifFinal",
     "sqlField": "if_final",
-    "sqlClass": "getComSql",
+    "sqlClass": "GetComBoolSql",
     "orderClass": "getComOrder",
     "groupClass": "getComGroup",
     "ifSearch": "false",
@@ -101,7 +101,21 @@
     "ifShow": "true",
     "defaultHidden": "true",
     "ifAsCondition": "true"
-  },
+  },{
+  "name": "最终文件",
+  "type": "Array",
+  "value": "ifFinal",
+  "field": "ifFinal",
+  "sqlField": "if_final",
+  "sqlClass": "getComSql",
+  "orderClass": "getComOrder",
+  "groupClass": "getComGroup",
+  "ifSearch": "true",
+  "ifGroup": "false",
+  "ifShow": "false",
+  "defaultHidden": "false",
+  "ifAsCondition": "true"
+},
   {
     "name": "发生时间",
     "type": "DateTime",

+ 2 - 2
src/main/resources/jsons/projectTask.json

@@ -58,7 +58,7 @@
     "ifAsCondition": "false"
   },
   {
-    "name": "所属流程",
+    "name": "流程节点",
     "type": "String",
     "value": "processName",
     "field": "processName",
@@ -73,7 +73,7 @@
     "ifAsCondition": "false"
   },
   {
-    "name": "所属流程",
+    "name": "流程节点",
     "type": "Array",
     "value": "processId",
     "field": "processId",