Selaa lähdekoodia

协同任务发送邮件

lwhhszx 1 vuosi sitten
vanhempi
commit
9532673bb6

+ 4 - 1
src/main/java/cn/cslg/pas/common/dto/ComparedPatentVO.java

@@ -10,6 +10,7 @@ import java.util.Date;
 import java.util.List;
 @Data
 public class ComparedPatentVO {
+    private String patentNo;
     /**
      * 授权号
      */
@@ -33,6 +34,8 @@ public class ComparedPatentVO {
     private List<Priorities> priorities;
 
     private String simpleStatus;
-
+    private String simpleStatusStr;
     private List<String> InpadocFamilyNos;
+
+
 }

+ 6 - 0
src/main/java/cn/cslg/pas/common/dto/FollowUpUpdateDTO.java

@@ -3,6 +3,7 @@ package cn.cslg.pas.common.dto;
 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;
@@ -38,8 +39,13 @@ public class FollowUpUpdateDTO {
     /**
      * 截止时间
      */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
     private Date deadline;
 
     private String   description;
+    private Integer projectId;
 
 }

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

@@ -0,0 +1,42 @@
+package cn.cslg.pas.common.dto;
+
+import cn.cslg.pas.common.dto.business.FollowUpDTO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 登记结果的前端传输DTO数据对象
+ *
+ * @Author xiexiang
+ * @Date 2023/4/3
+ */
+@Data
+public class RegisterDTO {
+
+    /**
+     * 后续事项id
+     *
+     * @param followUpId
+     */
+    private Integer followUpId;
+
+    /**
+     * 结论
+     *
+     * @param conclusion 结论
+     */
+    private String conclusion;
+
+    /**
+     * 文件信息
+     */
+    private List<String> fileGuids;
+
+    /**
+     * 批量新增后续事项
+     *
+     * @param followUpDTOList
+     */
+    private List<FollowUpDTO> followUps;
+}

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

@@ -41,4 +41,5 @@ public class FollowUpDTO  {
 
     private String   description;
 
+    private Integer projectId;
 }

+ 198 - 0
src/main/java/cn/cslg/pas/common/utils/DataUtils.java

@@ -0,0 +1,198 @@
+package cn.cslg.pas.common.utils;
+
+
+import cn.dev33.satoken.secure.SaSecureUtil;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+
+@Component
+public class DataUtils {
+    @Resource
+    private CacheUtils cacheUtils;
+
+    //秘钥
+    public static final String PASSWORD_KEY = "835a9bdc-4f9f-4614-a0cc-493a12454156";
+
+
+
+    /**
+     * 对称加密
+     */
+    public static String aesEncrypt(String password) {
+        return SaSecureUtil.aesEncrypt(PASSWORD_KEY, password);
+    }
+
+    /**
+     * 对称解密
+     */
+    public static String aesDecrypt(String password) {
+        return SaSecureUtil.aesDecrypt(PASSWORD_KEY, password);
+    }
+
+    /**
+     * @return 1.对比数据库内减少了那些数据 2.对比数据库内改变了那些数据(新增 修改) 3.两份数组中不变的数据
+     * @author 沈永艺
+     * @description 计算数据库内已有数据List 和 前台传入新的数据List 之间的比较
+     */
+    public static Map<String, List<Integer>> compareTwoList(List<Integer> dbList, List<Integer> frontList) {
+        //创建一个存放比对结果的Map 数组
+        Map<String, List<Integer>> comparisonResults = new HashMap<>();
+        //减少
+        List<Integer> reduce = dbList.stream().filter(item -> !frontList.contains(item)).collect(Collectors.toList());
+        //改变
+        List<Integer> change = frontList.stream().filter(item -> !dbList.contains(item)).collect(Collectors.toList());
+        //不变
+        List<Integer> unChange = dbList.stream().filter(frontList::contains).collect(Collectors.toList());
+        //填充数据
+        comparisonResults.put("reduce", reduce);
+        comparisonResults.put("change", change);
+        comparisonResults.put("unChange", unChange);
+        return comparisonResults;
+    }
+
+    /**
+     * @return 去重后的数据
+     * @author 沈永艺
+     * @description 在对象数组中按照某一类属性进行去重
+     */
+    //用例:待去重List.stream().filter(DataUtils.distinctByKey(对象::get属性字段)).collect(Collectors.toList());
+    public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
+        Map<Object, Boolean> seen = new ConcurrentHashMap<>();
+        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
+    }
+
+    /**
+     * @return 计算完成度
+     * @author 沈永艺
+     * @description 输入完成数量和全部数量计算完成百分比
+     */
+    public String calculateCompletion(Integer finishNum, Integer allNum) {
+        return finishNum / allNum + "%";
+    }
+
+    /**
+     * @return 拆分出的特征
+     * @author 沈永艺
+     * @description 处理权利要求
+     */
+    // TODO: 2022/11/2 未完成
+    public List<String> processRightToFeatures(List<String> rightList, String patentNo) {
+        List<String> features = new ArrayList<>();
+        if (patentNo != null) {
+            String country = patentNo.substring(0, 2);
+            if (country.equals("CN") || country.equals("JP")) {
+
+            } else {
+
+            }
+        }
+
+        return features;
+    }
+
+
+    /**
+     * 比较两个字符串的相识度
+     * 核心算法:用一个二维数组记录每个字符串是否相同,如果相同记为0,不相同记为1,每行每列相同个数累加
+     * 则数组最后一个数为不相同的总数,从而判断这两个字符的相识度
+     *
+     * @param str
+     * @param target
+     * @return
+     */
+    private static int compare(String str, String target) {
+        int d[][];              // 矩阵
+        int n = str.length();
+        int m = target.length();
+        int i;                  // 遍历str的
+        int j;                  // 遍历target的
+        char ch1;               // str的
+        char ch2;               // target的
+        int temp;               // 记录相同字符,在某个矩阵位置值的增量,不是0就是1
+        if (n == 0) {
+            return m;
+        }
+        if (m == 0) {
+            return n;
+        }
+        d = new int[n + 1][m + 1];
+        // 初始化第一列
+        for (i = 0; i <= n; i++) {
+            d[i][0] = i;
+        }
+        // 初始化第一行
+        for (j = 0; j <= m; j++) {
+            d[0][j] = j;
+        }
+        for (i = 1; i <= n; i++) {
+            // 遍历str
+            ch1 = str.charAt(i - 1);
+            // 去匹配target
+            for (j = 1; j <= m; j++) {
+                ch2 = target.charAt(j - 1);
+                if (ch1 == ch2 || ch1 == ch2 + 32 || ch1 + 32 == ch2) {
+                    temp = 0;
+                } else {
+                    temp = 1;
+                }
+                // 左边+1,上边+1, 左上角+temp取最小
+                d[i][j] = min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + temp);
+            }
+        }
+        return d[n][m];
+    }
+
+
+    /**
+     * 获取最小的值
+     */
+    private static int min(int one, int two, int three) {
+        return (one = one < two ? one : two) < three ? one : three;
+    }
+
+    /**
+     * 获取两字符串的相似度
+     */
+    public static float getSimilarityRatio(String str, String target) {
+        int max = Math.max(str.length(), target.length());
+        return 1 - (float) compare(str, target) / max;
+
+    }
+
+
+    public static String[] chars = new String[] { "a", "b", "c", "d", "e", "f",
+            "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
+            "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
+            "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
+            "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
+            "W", "X", "Y", "Z" };
+
+    public static String generateShortUuid() {
+        StringBuffer shortBuffer = new StringBuffer();
+        String uuid = UUID.randomUUID().toString().replace("-", "");
+        for (int i = 0; i < 8; i++) {
+            String str = uuid.substring(i * 4, i * 4 + 4);
+            int x = Integer.parseInt(str, 16);
+            shortBuffer.append(chars[x % 0x3E]);
+        }
+        return shortBuffer.toString();
+    }
+
+    public static <T> List<T> objToList(Object obj, Class<T> cla){
+        List<T> list = new ArrayList<T>();
+        if (obj instanceof ArrayList<?>) {
+            for (Object o : (List<?>) obj) {
+                list.add(cla.cast(o));
+            }
+            return list;
+        }
+        return null;
+    }
+
+}

+ 1 - 2
src/main/java/cn/cslg/pas/controller/FTOController.java

@@ -34,7 +34,6 @@ import java.util.List;
 @RequestMapping(Constants.API_XiaoSHI + "/fto")
 @RestController
 public class FTOController {
-
     @Autowired
     private FTOCompareRecordService ftoCompareRecordService;
 
@@ -122,7 +121,7 @@ public class FTOController {
         return Response.success(tortCompareRecordVO);
     }
 
-    @Operation(summary = "查询报告专利最新对比结果")
+    @Operation(summary = "获得对比过的专利")
     @GetMapping("/getComparedPatent")
     public Response getComparedPatent(Integer projectId,Integer compareResult) {
         List<ComparedPatentVO> comparedPatentVOS = ftoCompareRecordService.getComparedPatent(projectId,compareResult);

+ 2 - 2
src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -70,8 +70,8 @@ public class PatentController {
     @Operation(summary = "查询分页信息")
     @PostMapping("/getPatentPageMessage")
     public Response getPatentPageMessage(@RequestBody StringRequest stringRequest) throws Exception {
-      List<PatentPageMessageVO> patentPageMessageVOS= patentService.getPatentPageMessage(stringRequest);
-        return Response.success(patentPageMessageVOS);
+    Records records= patentService.getPatentPageMessage(stringRequest);
+        return Response.success(records);
     }
 
     @Operation(summary = "专利的聚合统计")

+ 6 - 0
src/main/java/cn/cslg/pas/domain/business/FollowUp.java

@@ -66,4 +66,10 @@ public class FollowUp extends BaseEntity<FollowUp> {
      */
     @TableField(value = "description")
     private String description;
+
+    @TableField(value = "description")
+    private String conclusion;
+
+    @TableField(value = "finish_time")
+    private Date finishTime;
 }

+ 27 - 0
src/main/java/cn/cslg/pas/domain/business/TaskCode.java

@@ -0,0 +1,27 @@
+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 org.joda.time.DateTime;
+
+/**
+ * <p>
+ * 任务code表
+ * </p>
+ *
+ * @author 李仁杰
+ * @since 2022-12-19
+ */
+@Data
+@TableName("task_code")
+/*数据库中的表对应的类
+ */
+public class TaskCode extends BaseEntity<TaskCode> {
+
+   @TableField(value = "task_id")
+    private Integer taskId;
+    @TableField(value = "code_num")
+    private String codeNum;
+}

+ 2 - 1
src/main/java/cn/cslg/pas/domain/es/Patent.java

@@ -17,6 +17,7 @@ import java.util.List;
 @AllArgsConstructor
 @NoArgsConstructor
 public class Patent {
+
     /**
      * 专利号
      */
@@ -41,7 +42,6 @@ public class Patent {
     @JsonProperty("grant_full_text")
     private List<Text> grantFullText;
 
-
     /**
      * 摘要
      */
@@ -59,6 +59,7 @@ public class Patent {
      */
     @JsonProperty("right_holder_addr")
     private PersonAddress rightHolderAddr;
+
     /**
      * 审查员
      */

+ 16 - 0
src/main/java/cn/cslg/pas/mapper/TaskCodeMapper.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.AssoEventFile;
+import cn.cslg.pas.domain.business.TaskCode;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ *
+ *
+ * @author lrj
+ * @date 2023/12/19
+ */
+@Repository
+public interface TaskCodeMapper extends BaseMapper<TaskCode> {
+}

+ 36 - 13
src/main/java/cn/cslg/pas/service/ReportExportService.java

@@ -1,21 +1,23 @@
 package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.dto.PatentDetailDTO;
+import cn.cslg.pas.common.dto.es.EsCustomFieldValueDTO;
 import cn.cslg.pas.common.model.SystemMO;
 import cn.cslg.pas.common.utils.DateUtils;
 import cn.cslg.pas.common.utils.FileUtils;
 import cn.cslg.pas.common.utils.FormatUtil;
 import cn.cslg.pas.common.utils.PatentRightUtils;
 import cn.cslg.pas.common.vo.AvoidFeaturesVO;
+import cn.cslg.pas.common.vo.FieldValueVO;
 import cn.cslg.pas.common.vo.PatentRightParams;
 import cn.cslg.pas.common.vo.RePatentClaim;
+import cn.cslg.pas.common.vo.business.AllCustomFieldVO;
 import cn.cslg.pas.common.vo.business.PatentNoVO;
-import cn.cslg.pas.domain.business.ReportProject;
-import cn.cslg.pas.domain.business.ReportTemple;
-import cn.cslg.pas.domain.business.TemplateConfig;
+import cn.cslg.pas.domain.business.*;
 import cn.cslg.pas.domain.es.Text;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AvoidDesignMapper;
+import cn.cslg.pas.service.business.CustomFieldService;
 import cn.cslg.pas.service.business.ReportProjectService;
 import cn.cslg.pas.service.business.TemplateConfigService;
 import cn.cslg.pas.service.business.TempleService;
@@ -62,6 +64,10 @@ public class ReportExportService {
 
     @Autowired
     private TemplateConfigService templateConfigService;
+    @Autowired
+    private CustomFieldService customFieldService;
+    ;
+
     /**
      * @param projectId
      * @param templeId
@@ -80,12 +86,12 @@ public class ReportExportService {
         String outPath = fileUtils.getSavePath(directoryName) + fileName;
 
         //根据ProjectId 获得报告
-        LambdaQueryWrapper<ReportProject> queryWrapper =new LambdaQueryWrapper<>();
-        queryWrapper.eq(ReportProject::getProjectId,projectId);
-        ReportProject report =reportProjectService.getOne(queryWrapper,false);
-if(report==null){
-    throw  new XiaoShiException("报告不存在");
-}
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getProjectId, projectId);
+        ReportProject report = reportProjectService.getOne(queryWrapper, false);
+        if (report == null) {
+            throw new XiaoShiException("报告不存在");
+        }
         XWPFTemplate template = null;
         template = this.avoidDesignTemplate(projectId);
         if (report.getReportType() == 0 || report.getReportType() == 2) {
@@ -206,10 +212,10 @@ if(report==null){
         String filePath = fileUtils.getPath("/11.docx");
 
         log.info("开始处理导出规避设计报告,参数为:{}, {}", projectId, filePath);
-        LambdaQueryWrapper<ReportProject> queryWrapper= new LambdaQueryWrapper<>();
-        queryWrapper.eq(ReportProject::getProjectId,projectId);
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getProjectId, projectId);
 
-        ReportProject report = reportProjectService.getOne(queryWrapper,false);
+        ReportProject report = reportProjectService.getOne(queryWrapper, false);
         String signPatentNo = report.getSignPatentNo();
 
         //装载标的专利信息
@@ -358,6 +364,8 @@ if(report==null){
 //        templateConfigWrapper.eq(TemplateConfig::getTemplateId, templateId);
 //        List<TemplateConfig> templateConfigs = templateConfigService.list(templateConfigWrapper);
 //        List<Map<String, Object>> loadMaps = new ArrayList<>();
+//
+//
 //        //根据配置信息装载
 //        for (TemplateConfig item : templateConfigs) {
 //            for (Map<String, Object> map : fieldMaps) {
@@ -471,6 +479,21 @@ if(report==null){
 //        Configure configure = Configure.builder().bind("cM", policy).bind("targetDescription", htmlRenderPolicy).build();
 //        XWPFTemplate template = XWPFTemplate.compile(filePath, configure).render(map);
 //        return template;
-        return  null;
+        return null;
+    }
+
+    /**
+     * 根据名称获得标引栏位以及标引值
+     * @param name
+     * @param projectId
+     */
+    public void re(String name, Integer projectId) {
+        //根据名称获得标引栏位以及标引值
+        LambdaQueryWrapper<CustomField> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(CustomField::getType,Arrays.asList(4,5,6))
+                .eq(CustomField::getProjectId,projectId);
+        List<CustomField> customFields =customFieldService.list(queryWrapper);
+
+
     }
 }

+ 50 - 25
src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java

@@ -11,10 +11,7 @@ import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.common.vo.PatentRightVo;
 import cn.cslg.pas.common.vo.RePatentClaim;
 import cn.cslg.pas.common.vo.business.*;
-import cn.cslg.pas.domain.business.CompareLiterature;
-import cn.cslg.pas.domain.business.FTOCompareRecord;
-import cn.cslg.pas.domain.business.Feature;
-import cn.cslg.pas.domain.business.ProjectTask;
+import cn.cslg.pas.domain.business.*;
 import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
@@ -33,6 +30,7 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
@@ -40,6 +38,7 @@ import java.util.stream.Collectors;
 
 /**
  * FTO
+ *
  * @Author xiexiang
  * @Date 2023/12/13
  */
@@ -72,12 +71,16 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     private EsPatentService esPatentService;
     @Autowired
     private EsFamilyService esFamilyService;
+    @Autowired
+    private SystemDictService systemDictService;
+
     /**
      * 查询FTO对比结果VO
+     *
      * @param getFeatureSplitDTO
      * @return
      */
-    public TortCompareRecordVO getTortCompareRecord(GetFeatureSplitDTO getFeatureSplitDTO){
+    public TortCompareRecordVO getTortCompareRecord(GetFeatureSplitDTO getFeatureSplitDTO) {
         // 判断参数不能为空
         // 分配任务id
         Integer taskId = getFeatureSplitDTO.getTaskId();
@@ -136,10 +139,11 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
 
     /**
      * 装载权要层
+     *
      * @param patentRightVos
      * @return
      */
-    public List<TortRightVO> loadTortRightVO(String patentNo, Integer taskId, List<PatentRightVo> patentRightVos){
+    public List<TortRightVO> loadTortRightVO(String patentNo, Integer taskId, List<PatentRightVo> patentRightVos) {
         //新建权要层信息
         List<TortRightVO> tortRightVOS = new ArrayList<>();
         //遍历装载权要层信息
@@ -163,12 +167,13 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     /**
      * 发起人查询
      * 装载特征与对比结果
+     *
      * @param taskId
      * @param features
      * @param ftoCompareRecords
      * @return
      */
-    public List<TortVO> loadAllTortVO(Integer taskId, List<Feature> features, List<FTOCompareRecord> ftoCompareRecords){
+    public List<TortVO> loadAllTortVO(Integer taskId, List<Feature> features, List<FTOCompareRecord> ftoCompareRecords) {
         List<TortVO> tortVOS = new ArrayList<>();
         for (Feature feature : features) {
             //新建特征与侵权分析对比结果VO
@@ -249,8 +254,8 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
         LambdaQueryWrapper<Feature> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.select(Feature::getId)
                 .eq(Feature::getProjectTaskId, taskId);
-        Function<Object,Integer> f = (o -> Integer.parseInt(o.toString()));
-        List<Integer> featureIds = featureService.listObjs(queryWrapper,f);
+        Function<Object, Integer> f = (o -> Integer.parseInt(o.toString()));
+        List<Integer> featureIds = featureService.listObjs(queryWrapper, f);
         // 删除特征
         List<Integer> ids = new ArrayList<>();
         if (!featureIds.isEmpty()) {
@@ -269,12 +274,13 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
 
     /**
      * 更新剩余特征和对比结果
+     *
      * @param patentNo
      * @param taskId
      * @param featureIds
      * @param tortDTOS
      */
-    public List<Integer> updateFeatures(String patentNo, Integer taskId, List<Integer> featureIds, List<TortDTO> tortDTOS){
+    public List<Integer> updateFeatures(String patentNo, Integer taskId, List<Integer> featureIds, List<TortDTO> tortDTOS) {
         // 获取登录人信息
         PersonnelVO personnelVO = new PersonnelVO();
         try {
@@ -323,19 +329,20 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
                     ftoIds.add(id);
                 }
             }
-            order++ ;
+            order++;
         }
         return ftoIds;
     }
 
     /**
      * 对比结果入库
+     *
      * @param patentNo
      * @param projectId
      * @param taskId
      * @param tortDTO
      */
-    public Integer addCompareRecords(String patentNo, Integer projectId, Integer taskId, TortDTO tortDTO){
+    public Integer addCompareRecords(String patentNo, Integer projectId, Integer taskId, TortDTO tortDTO) {
         Integer featureId = tortDTO.getFeatureId();
         //获取登录人信息
         PersonnelVO personnelVO = new PersonnelVO();
@@ -364,9 +371,10 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
 
     /**
      * 保存协同任务对比结果
+     *
      * @param tortCompareRecordDTO
      */
-    public List<Integer> addFTOAssitTaskResult(TortCompareRecordDTO tortCompareRecordDTO){
+    public List<Integer> addFTOAssitTaskResult(TortCompareRecordDTO tortCompareRecordDTO) {
         if (tortCompareRecordDTO == null) {
             throw new XiaoShiException("入参不能为空");
         }
@@ -432,6 +440,7 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     /**
      * 查询侵权分析协同前后对比结果
      * 三份结果:原始、协同处理、最终
+     *
      * @param taskId
      * @return
      */
@@ -466,12 +475,13 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
 
     /**
      * 协同前后对比结果
+     *
      * @param patentNo
      * @param taskId
      * @param patentRightVos
      * @return
      */
-    public List<TortRightVO> loadBeforeAndAfter(Integer taskId, String patentNo, List<PatentRightVo> patentRightVos){
+    public List<TortRightVO> loadBeforeAndAfter(Integer taskId, String patentNo, List<PatentRightVo> patentRightVos) {
         if (patentRightVos != null && !patentRightVos.isEmpty()) {
             //新建权要层信息
             List<TortRightVO> tortRightVOS = new ArrayList<>();
@@ -498,11 +508,12 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     /**
      * 协同前后对比结果
      * 装载特征与对比结果
+     *
      * @param features
      * @param ftoCompareRecords
      * @return
      */
-    public List<TortVO> loadBeforeAndAfterTortVO(List<Feature> features, List<FTOCompareRecord> ftoCompareRecords){
+    public List<TortVO> loadBeforeAndAfterTortVO(List<Feature> features, List<FTOCompareRecord> ftoCompareRecords) {
         List<TortVO> tortVOS = new ArrayList<>();
         for (Feature feature : features) {
             //新建特征与侵权分析对比结果VO
@@ -542,11 +553,12 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
 
     /**
      * 根据projectId和权要集合装载返回侵权分析对比结果页面VO
+     *
      * @param taskId
      * @param patentRightVos
      * @return
      */
-    public List<TortRightVO> loadTortRightVOS2(Integer taskId, List<PatentRightVo> patentRightVos){
+    public List<TortRightVO> loadTortRightVOS2(Integer taskId, List<PatentRightVo> patentRightVos) {
         if (patentRightVos != null && !patentRightVos.isEmpty()) {
             //新建权要层信息
             List<TortRightVO> tortRightVOS = new ArrayList<>();
@@ -572,11 +584,12 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     /**
      * 发起人查询
      * 装载特征与对比结果
+     *
      * @param features
      * @param ftoCompareRecords
      * @return
      */
-    public List<TortVO> loadTortVO2(List<Feature> features, List<FTOCompareRecord> ftoCompareRecords){
+    public List<TortVO> loadTortVO2(List<Feature> features, List<FTOCompareRecord> ftoCompareRecords) {
         List<TortVO> tortVOS = new ArrayList<>();
         for (Feature feature : features) {
             //新建特征与侵权分析对比结果VO
@@ -635,10 +648,11 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
 
     /**
      * 保存最终对比结果接口
+     *
      * @param tortCompareRecordDTO
      * @return
      */
-    public List<Integer> addFinalAssitResult(TortCompareRecordDTO tortCompareRecordDTO){
+    public List<Integer> addFinalAssitResult(TortCompareRecordDTO tortCompareRecordDTO) {
         List<Integer> ids = new ArrayList<>();
         Integer taskId = tortCompareRecordDTO.getTaskId();
         if (taskId == null) {
@@ -698,12 +712,13 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
 
     /**
      * 从侵权分析中获得对比结果,并复制保存
+     *
      * @param projectId
      * @param taskId
      * @param createId
      * @param patentNo
      */
-    public void copyTortCompareRecords(Integer projectId, Integer taskId, String createId, String patentNo){
+    public void copyTortCompareRecords(Integer projectId, Integer taskId, String createId, String patentNo) {
         if (projectId != null && taskId != null) {
             LambdaQueryWrapper<FTOCompareRecord> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(FTOCompareRecord::getProjectTaskId, taskId)
@@ -734,11 +749,12 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
 
     /**
      * 根据报告id和专利号查询最新的对比结果
+     *
      * @param projectId
      * @param patentNo
      * @return
      */
-    public TortCompareRecordVO getLastRecord(Integer projectId, String patentNo){
+    public TortCompareRecordVO getLastRecord(Integer projectId, String patentNo) {
         TortCompareRecordVO tortCompareRecordVO = new TortCompareRecordVO();
         tortCompareRecordVO.setProjectId(projectId);
         //根据报告id,专利号,ifFinal为true,createTime为最新的查询一条最新的结果
@@ -781,11 +797,12 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
 
     /**
      * 查询最新的对比结果
+     *
      * @param lastFTORecords
      * @param patentRightVos
      * @return
      */
-    public List<TortRightVO> loadLastRecord(List<FTOCompareRecord> lastFTORecords, List<PatentRightVo> patentRightVos){
+    public List<TortRightVO> loadLastRecord(List<FTOCompareRecord> lastFTORecords, List<PatentRightVo> patentRightVos) {
         if (patentRightVos != null && !patentRightVos.isEmpty()) {
             //新建权要层信息
             List<TortRightVO> tortRightVOS = new ArrayList<>();
@@ -805,7 +822,7 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
         }
     }
 
-    public List<TortVO> loadLastVO(List<Feature> features, List<FTOCompareRecord> ftoCompareRecords){
+    public List<TortVO> loadLastVO(List<Feature> features, List<FTOCompareRecord> ftoCompareRecords) {
         List<TortVO> tortVOS = new ArrayList<>();
         for (Feature feature : features) {
             //新建特征与侵权分析对比结果VO
@@ -833,20 +850,28 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
 
     public List<ComparedPatentVO> getComparedPatent(Integer projectId, Integer compareResult) {
         //根据projectId 查询出对比过的专利号
-        List<String> patentNos = this.getBaseMapper().getComparedPatents(projectId,compareResult);
+        List<String> patentNos = this.getBaseMapper().getComparedPatents(projectId, compareResult);
         List<ComparedPatentVO> comparedPatentVOS = new ArrayList<>();
         //根据专利号查询专利信息
         List<Patent> patents = new ArrayList<>();
         try {
             if (patentNos != null && patentNos.size() != 0) {
+                //查询专利状态字典
+                List<SystemDict> systemDicts = systemDictService.getSystemDictListByType(Arrays.asList("PATENT_SIMPLE_STATUS"));
                 patents = esPatentService.getPatentsByNo(patentNos, true);
                 List<Map<String, Object>> maps = esFamilyService.getPatentFamilyByNos(patentNos, "inpadoc");
                 patents.forEach(item -> {
                     ComparedPatentVO comparedPatentVO = new ComparedPatentVO();
                     BeanUtils.copyProperties(item, comparedPatentVO);
                     Map<String, Object> map = maps.stream().filter(i -> i.get("id").toString().equals(item.getInpadocFamilyId())).findFirst().orElse(null);
-                    if(map!=null){
-                        comparedPatentVO.setInpadocFamilyNos((List<String>)map.get("nos"));
+                    if (map != null) {
+                        comparedPatentVO.setInpadocFamilyNos((List<String>) map.get("nos"));
+                    }
+
+
+                    SystemDict systemDict = systemDicts.stream().filter(i -> i.getValue().equals(item.getSimpleStatus())).findFirst().orElse(null);
+                    if(systemDict!=null){
+                        comparedPatentVO.setSimpleStatusStr(systemDict.getLabel());
                     }
                     comparedPatentVOS.add(comparedPatentVO);
                 });

+ 51 - 4
src/main/java/cn/cslg/pas/service/business/FollowUpService.java

@@ -2,12 +2,15 @@ package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.FollowUpQueryDTO;
 import cn.cslg.pas.common.dto.FollowUpUpdateDTO;
+import cn.cslg.pas.common.dto.RegisterDTO;
 import cn.cslg.pas.common.dto.business.FollowUpDTO;
 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.request.GroupRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.business.FollowUpVO;
 import cn.cslg.pas.common.vo.business.ReportProjectVO;
 import cn.cslg.pas.domain.business.FollowUp;
@@ -29,7 +32,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -41,7 +47,10 @@ import java.util.stream.Collectors;
 public class FollowUpService extends ServiceImpl<FollowUpMapper, FollowUp> {
     @Autowired
     private PermissionService permissionService;
-
+    @Autowired
+    private CacheUtils cacheUtils;
+    @Autowired
+    private LoginUtils loginUtils;
 
     /**
      * 新增后续事项
@@ -63,9 +72,7 @@ public class FollowUpService extends ServiceImpl<FollowUpMapper, FollowUp> {
                 FollowUpDTO followUpDTO = followUps.get(i);
                 BeanUtils.copyProperties(followUpDTO, followUp);
                 //获取当前登陆人信息
-//                PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-                PersonnelVO personnelVO = new PersonnelVO();
-                personnelVO.setId("1");
+                PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
                 //给实体类赋值登陆人id和姓名
                 followUp.setCreateId(personnelVO.getId());
                 followUp.insert();
@@ -162,4 +169,44 @@ public class FollowUpService extends ServiceImpl<FollowUpMapper, FollowUp> {
         }
         return followUpVOS;
     }
+
+
+    /**
+     * 登记结果
+     *
+     * @param register
+     * @param files
+     */
+    public void register(RegisterDTO register, List<MultipartFile> files) throws ParseException {
+        //获取当前时间
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
+        String date = dateFormat.format(new Date());//date为当前时间 是String类型的时间
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date finishTime = simpleDateFormat.parse(date);//转换为Date类型
+        System.out.println("等级结果当前完成时间" + finishTime);
+
+        FollowUp followUp = new FollowUp();
+        //从registerDTO中取出后续事项id进行对应的操作
+        followUp.setId(register.getFollowUpId());
+        followUp.setStatus(1);
+        followUp.setConclusion(register.getConclusion());
+        followUp.setFinishTime(finishTime);
+        //更新操作 将conclusion更新进入表
+
+
+        //删除
+
+        //简化定义后续事项id
+        int followUpId = register.getFollowUpId();
+        //根据后续事项id查询关联表找出所有fileId
+
+        //新增文件
+
+        //上传附件 进行关联绑定
+
+        //批量新增后续事项
+        if (register.getFollowUps() != null && register.getFollowUps().size() > 0) {
+            this.add(register.getFollowUps());
+        }
+    }
 }

+ 24 - 0
src/main/java/cn/cslg/pas/service/business/TaskCodeService.java

@@ -0,0 +1,24 @@
+package cn.cslg.pas.service.business;
+
+
+import cn.cslg.pas.common.utils.DataUtils;
+import cn.cslg.pas.domain.business.AssoEventFile;
+import cn.cslg.pas.domain.business.TaskCode;
+import cn.cslg.pas.mapper.AssoEventFileMapper;
+import cn.cslg.pas.mapper.TaskCodeMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TaskCodeService extends ServiceImpl<TaskCodeMapper, TaskCode> {
+
+    //添加taskCode码
+    public String addTaskCode(Integer taskId) {
+        String code = DataUtils.generateShortUuid();
+        TaskCode taskCode = new TaskCode();
+        taskCode.setCodeNum(code);
+        taskCode.setTaskId(taskId);
+        taskCode.insert();
+        return code;
+    }
+}

+ 8 - 2
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -6,6 +6,7 @@ import cn.cslg.pas.common.dto.PatentDTO;
 import cn.cslg.pas.common.dto.PatentDetailDTO;
 import cn.cslg.pas.common.dto.PatentKinDTO;
 import cn.cslg.pas.common.dto.business.ContentDetailDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.MapRequest;
 import cn.cslg.pas.common.model.request.OrderDTO;
 import cn.cslg.pas.common.model.request.QueryRequest;
@@ -262,7 +263,7 @@ public class EsPatentService {
      * @param queryRequest 检索条件
      * @return
      */
-    public List<PatentPageMessageVO> getPatentPageMessage(QueryRequest queryRequest) throws Exception {
+    public Records getPatentPageMessage(QueryRequest queryRequest) throws Exception {
         List<PatentPageMessageVO> patentPageMessageVOS = new ArrayList<>();
 
         Long current = queryRequest.getCurrent();
@@ -303,7 +304,12 @@ public class EsPatentService {
             patentPageMessageVO.setPatentNo(hit.source().getPatentNo());
             patentPageMessageVOS.add(patentPageMessageVO);
         }
-        return patentPageMessageVOS;
+        Records records =new Records();
+        records.setTotal(response.hits().total().value());
+        records.setSize(size);
+        records.setCurrent(current);
+        records.setData(patentPageMessageVOS);
+        return records;
     }
 
 

+ 45 - 0
src/test/java/cn/cslg/pas/service/FollowServiceTests.java

@@ -0,0 +1,45 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.dto.FollowUpQueryDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.vo.business.FollowUpVO;
+import cn.cslg.pas.controller.AvoidDesignController;
+import cn.cslg.pas.service.business.AvoidDesignService;
+import cn.cslg.pas.service.business.FollowUpService;
+import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class FollowServiceTests {
+    @Autowired
+    private FollowUpService followUpService;
+
+
+    @Test
+    public void test() throws Exception {
+
+    }
+
+    @Test
+    public void testUpdate() {
+
+    }
+
+    @Test
+    public void testGet() throws Exception {
+        FollowUpQueryDTO followUpQueryDTO =new FollowUpQueryDTO();
+        followUpQueryDTO.setProjectId(101);
+      Records vos= followUpService.query(followUpQueryDTO);
+      System.out.println(vos);
+    }
+}