瀏覽代碼

去除重复保存流程记录/统计

licailing 4 年之前
父節點
當前提交
613271dd3a

+ 5 - 1
src/main/java/com/izouma/uwip/dto/PatentDTO.java

@@ -3,6 +3,7 @@ package com.izouma.uwip.dto;
 import com.izouma.uwip.domain.LogoPatent;
 import com.izouma.uwip.domain.Patent;
 import com.izouma.uwip.enums.ApplyStatus;
+import com.izouma.uwip.enums.LogoWorkflow;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -32,6 +33,9 @@ public class PatentDTO {
         this.name = patent.getName();
         this.uwNo = patent.getUwNo();
         this.applyStatus = patent.getApplyStatus();
-
+        this.workflow = patent.getLogoWorkflow().getDescription();
+        if (LogoWorkflow.PALINDROME_CORRECTION.equals(patent.getLogoWorkflow())) {
+            this.date = patent.getCorrectionPeriod();
+        }
     }
 }

+ 11 - 32
src/main/java/com/izouma/uwip/service/CountryPatentService.java

@@ -2,13 +2,16 @@ package com.izouma.uwip.service;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
 import com.izouma.uwip.domain.CountryPatent;
 import com.izouma.uwip.domain.Handle;
+import com.izouma.uwip.domain.InternationalPatent;
 import com.izouma.uwip.domain.Patent;
 import com.izouma.uwip.dto.CountryPatentDTO;
 import com.izouma.uwip.dto.PageQuery;
-import com.izouma.uwip.enums.*;
+import com.izouma.uwip.enums.ApplyStatus;
+import com.izouma.uwip.enums.CaseStage;
+import com.izouma.uwip.enums.CaseType;
+import com.izouma.uwip.enums.CountryWorkflow;
 import com.izouma.uwip.exception.BusinessException;
 import com.izouma.uwip.repo.CountryPatentRepo;
 import com.izouma.uwip.repo.PatentRepo;
@@ -19,12 +22,9 @@ import org.apache.commons.collections.CollectionUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.Path;
 import javax.persistence.criteria.Predicate;
-import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 @Service
 @AllArgsConstructor
@@ -34,6 +34,7 @@ public class CountryPatentService {
     private final PatentRepo        patentRepo;
     private final PartnerService    partnerService;
     private final AttachmentService attachmentService;
+    private final PatentService     patentService;
 
 
     public Page<CountryPatent> all(PageQuery pageQuery) {
@@ -52,16 +53,14 @@ public class CountryPatentService {
             Patent patent = new Patent();
             BeanUtil.copyProperties(record, patent);
             ObjUtils.mergePatent(orig1, patent);
+            // 流程
             List<Handle> handleList = orig1.getHandle();
             if (handleList == null) {
                 handleList = new ArrayList<>();
             }
-            handleList.add(Handle.builder()
-                    .workflow(record.getWorkflow().toString())
-                    .userId(userId)
-                    .checkAt(LocalDateTime.now())
-                    .build());
+            patentService.saveHandle(record.getWorkflow().toString(), userId, handleList);
             orig1.setHandle(handleList);
+
             if (ObjectUtil.isNull(record.getApplyStatus()) || !ApplyStatus.COMPLETED.equals(record.getApplyStatus())) {
                 orig1.setApplyStatus(this.getApplyStatus(record.getWorkflow()));
             }
@@ -124,28 +123,8 @@ public class CountryPatentService {
 
     public Page<CountryPatent> allDTO(PageQuery pageQuery) {
         return countryPatentRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
-            List<Predicate> and = new ArrayList<>();
-            Path<Object> patent = root.get("patent");
-            if (StrUtil.isNotBlank(pageQuery.getSearch())) {
-                List<Predicate> or = new ArrayList<>();
-                or.add(criteriaBuilder.like(patent.get("name"), "%" + pageQuery.getSearch() + "%"));
-                or.add(criteriaBuilder.like(patent.get("uwNo"), "%" + pageQuery.getSearch() + "%"));
-                and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
-            }
-            Map<String, Object> query = pageQuery.getQuery();
-            query.keySet().forEach(key -> {
-                if (JpaUtils.isExistField(key, CountryPatent.class)) {
-                    Predicate predicate = JpaUtils.getPredicate(key, query.get(key), CountryPatent.class, root, criteriaBuilder, false);
-                    if (ObjectUtil.isNotNull(predicate)) {
-                        and.add(predicate);
-                    }
-                } else {
-                    Predicate predicate = JpaUtils.getPredicate(key, query.get(key), Patent.class, root, criteriaBuilder, true);
-                    if (ObjectUtil.isNotNull(predicate)) {
-                        and.add(predicate);
-                    }
-                }
-            });
+            List<Predicate> and = patentService.getPredicate(pageQuery, InternationalPatent.class, root, criteriaBuilder);
+
             return criteriaBuilder.and(and.toArray(new Predicate[0]));
         }), JpaUtils.toPageRequest(pageQuery));
     }

+ 5 - 33
src/main/java/com/izouma/uwip/service/DomesticPatentService.java

@@ -2,9 +2,7 @@ package com.izouma.uwip.service;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
 import com.izouma.uwip.domain.DomesticPatent;
-import com.izouma.uwip.domain.Handle;
 import com.izouma.uwip.domain.Patent;
 import com.izouma.uwip.dto.DomesticPatentDTO;
 import com.izouma.uwip.dto.PageQuery;
@@ -19,12 +17,8 @@ import org.apache.commons.collections.CollectionUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.Path;
 import javax.persistence.criteria.Predicate;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 @Service
 @AllArgsConstructor
@@ -34,6 +28,7 @@ public class DomesticPatentService {
     private final AttachmentService  attachmentService;
     private final PatentRepo         patentRepo;
     private final PartnerService     partnerService;
+    private final PatentService      patentService;
 
     public Page<DomesticPatent> all(PageQuery pageQuery) {
         return domesticPatentRepo.findAll(JpaUtils.toSpecification(pageQuery, DomesticPatent.class), JpaUtils.toPageRequest(pageQuery));
@@ -52,11 +47,9 @@ public class DomesticPatentService {
             BeanUtil.copyProperties(record, patent);
             ObjUtils.mergePatent(orig1, patent);
 
-            orig1.getHandle().add(Handle.builder()
-                    .workflow(record.getWorkflow().toString())
-                    .userId(userId)
-                    .checkAt(LocalDateTime.now())
-                    .build());
+            // 流程信息
+            patentService.saveHandle(record.getWorkflow().toString(), userId, orig1.getHandle());
+
             if (ObjectUtil.isNull(record.getApplyStatus()) || !ApplyStatus.COMPLETED.equals(record.getApplyStatus())) {
                 orig1.setApplyStatus(this.getApplyStatus(record.getWorkflow()));
             }
@@ -116,28 +109,7 @@ public class DomesticPatentService {
 
     public Page<DomesticPatent> allDTO(PageQuery pageQuery) {
         return domesticPatentRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
-            List<Predicate> and = new ArrayList<>();
-            Path<Object> patent = root.get("patent");
-            if (StrUtil.isNotBlank(pageQuery.getSearch())) {
-                List<Predicate> or = new ArrayList<>();
-                or.add(criteriaBuilder.like(patent.get("name"), "%" + pageQuery.getSearch() + "%"));
-                or.add(criteriaBuilder.like(patent.get("uwNo"), "%" + pageQuery.getSearch() + "%"));
-                and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
-            }
-            Map<String, Object> query = pageQuery.getQuery();
-            query.keySet().forEach(key -> {
-                if (JpaUtils.isExistField(key, DomesticPatent.class)) {
-                    Predicate predicate = JpaUtils.getPredicate(key, query.get(key), DomesticPatent.class, root, criteriaBuilder, false);
-                    if (ObjectUtil.isNotNull(predicate)) {
-                        and.add(predicate);
-                    }
-                } else {
-                    Predicate predicate = JpaUtils.getPredicate(key, query.get(key), Patent.class, root, criteriaBuilder, true);
-                    if (ObjectUtil.isNotNull(predicate)) {
-                        and.add(predicate);
-                    }
-                }
-            });
+            List<Predicate> and = patentService.getPredicate(pageQuery, DomesticPatent.class, root, criteriaBuilder);
             return criteriaBuilder.and(and.toArray(new Predicate[0]));
         }), JpaUtils.toPageRequest(pageQuery));
     }

+ 4 - 31
src/main/java/com/izouma/uwip/service/InternationalPatentService.java

@@ -2,7 +2,6 @@ package com.izouma.uwip.service;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
 import com.izouma.uwip.domain.Handle;
 import com.izouma.uwip.domain.InternationalPatent;
 import com.izouma.uwip.domain.Patent;
@@ -19,12 +18,9 @@ import org.apache.commons.collections.CollectionUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.Path;
 import javax.persistence.criteria.Predicate;
-import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 @Service
 @AllArgsConstructor
@@ -34,6 +30,7 @@ public class InternationalPatentService {
     private final PatentRepo              patentRepo;
     private final AttachmentService       attachmentService;
     private final PartnerService          partnerService;
+    private final PatentService           patentService;
 
     public Page<InternationalPatent> all(PageQuery pageQuery) {
         return internationalPatentRepo.findAll(JpaUtils.toSpecification(pageQuery, InternationalPatent.class), JpaUtils.toPageRequest(pageQuery));
@@ -55,11 +52,7 @@ public class InternationalPatentService {
             if (handleList == null) {
                 handleList = new ArrayList<>();
             }
-            handleList.add(Handle.builder()
-                    .workflow(record.getWorkflow().toString())
-                    .userId(userId)
-                    .checkAt(LocalDateTime.now())
-                    .build());
+            patentService.saveHandle(record.getWorkflow().toString(), userId, handleList);
             orig1.setHandle(handleList);
             if (ObjectUtil.isNull(record.getApplyStatus()) || !ApplyStatus.COMPLETED.equals(record.getApplyStatus())) {
                 orig1.setApplyStatus(this.getApplyStatus(record.getWorkflow()));
@@ -113,28 +106,8 @@ public class InternationalPatentService {
 
     public Page<InternationalPatent> allDTO(PageQuery pageQuery) {
         return internationalPatentRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
-            List<Predicate> and = new ArrayList<>();
-            Path<Object> patent = root.get("patent");
-            if (StrUtil.isNotBlank(pageQuery.getSearch())) {
-                List<Predicate> or = new ArrayList<>();
-                or.add(criteriaBuilder.like(patent.get("name"), "%" + pageQuery.getSearch() + "%"));
-                or.add(criteriaBuilder.like(patent.get("uwNo"), "%" + pageQuery.getSearch() + "%"));
-                and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
-            }
-            Map<String, Object> query = pageQuery.getQuery();
-            query.keySet().forEach(key -> {
-                if (JpaUtils.isExistField(key, InternationalPatent.class)) {
-                    Predicate predicate = JpaUtils.getPredicate(key, query.get(key), InternationalPatent.class, root, criteriaBuilder, false);
-                    if (ObjectUtil.isNotNull(predicate)) {
-                        and.add(predicate);
-                    }
-                } else {
-                    Predicate predicate = JpaUtils.getPredicate(key, query.get(key), Patent.class, root, criteriaBuilder, true);
-                    if (ObjectUtil.isNotNull(predicate)) {
-                        and.add(predicate);
-                    }
-                }
-            });
+            List<Predicate> and = patentService.getPredicate(pageQuery, InternationalPatent.class, root, criteriaBuilder);
+
             return criteriaBuilder.and(and.toArray(new Predicate[0]));
         }), JpaUtils.toPageRequest(pageQuery));
     }

+ 16 - 7
src/main/java/com/izouma/uwip/service/LogoPatentService.java

@@ -15,6 +15,8 @@ import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.util.Comparator;
+import java.util.List;
 
 @Service
 @AllArgsConstructor
@@ -28,12 +30,17 @@ public class LogoPatentService {
         return logoPatentRepo.findAll(JpaUtils.toSpecification(pageQuery, LogoPatent.class), JpaUtils.toPageRequest(pageQuery));
     }
 
-    public Handle saveHandle(LogoWorkflow workflow, Long userId) {
-        return Handle.builder()
-                .workflow(workflow.toString())
-                .userId(userId)
-                .checkAt(LocalDateTime.now())
-                .build();
+    public void saveHandle(LogoWorkflow workflow, Long userId, List<Handle> handles) {
+        handles.sort(Comparator.comparing(Handle::getCheckAt));
+        int size = handles.size();
+
+        if (size == 0 || !workflow.toString().equals(handles.get(size - 1).getWorkflow())) {
+            handles.add(Handle.builder()
+                    .workflow(workflow.toString())
+                    .userId(userId)
+                    .checkAt(LocalDateTime.now())
+                    .build());
+        }
     }
 
     public LogoPatent save(LogoPatent record, Long userId) {
@@ -48,7 +55,9 @@ public class LogoPatentService {
                 attachmentService.batchSave(record.getAttachments(), userId, record.getId());
             }
             ObjUtils.merge(orig, record);
-            orig.getHandle().add(this.saveHandle(workflow, userId));
+            // 流程记录
+            this.saveHandle(workflow, userId,orig.getHandle());
+
             if (ObjectUtil.isNull(record.getApplyStatus()) || !ApplyStatus.COMPLETED.equals(record.getApplyStatus())) {
                 orig.setApplyStatus(this.getApplyStatus(workflow));
             }

+ 62 - 0
src/main/java/com/izouma/uwip/service/PatentService.java

@@ -1,8 +1,12 @@
 package com.izouma.uwip.service;
 
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.izouma.uwip.domain.Handle;
 import com.izouma.uwip.domain.LogoPatent;
 import com.izouma.uwip.domain.Patent;
 import com.izouma.uwip.dto.PageQuery;
+import com.izouma.uwip.dto.PatentDTO;
 import com.izouma.uwip.enums.ApplyStatus;
 import com.izouma.uwip.repo.LogoPatentRepo;
 import com.izouma.uwip.repo.PatentRepo;
@@ -11,8 +15,16 @@ import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.Path;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
@@ -26,6 +38,46 @@ public class PatentService {
         return patentRepo.findAll(JpaUtils.toSpecification(pageQuery, Patent.class), JpaUtils.toPageRequest(pageQuery));
     }
 
+    public void saveHandle(String workflow, Long userId, List<Handle> handles) {
+        handles.sort(Comparator.comparing(Handle::getCheckAt));
+        int size = handles.size();
+
+        if (size == 0 || !workflow.equals(handles.get(size - 1).getWorkflow())) {
+            handles.add(Handle.builder()
+                    .workflow(workflow)
+                    .userId(userId)
+                    .checkAt(LocalDateTime.now())
+                    .build());
+        }
+    }
+
+    public <T> List<Predicate> getPredicate(PageQuery pageQuery, Class<?> queryClass, Root<T> root,
+                                            CriteriaBuilder criteriaBuilder) {
+        List<Predicate> and = new ArrayList<>();
+        Path<Object> patent = root.get("patent");
+        if (StrUtil.isNotBlank(pageQuery.getSearch())) {
+            List<Predicate> or = new ArrayList<>();
+            or.add(criteriaBuilder.like(patent.get("name"), "%" + pageQuery.getSearch() + "%"));
+            or.add(criteriaBuilder.like(patent.get("uwNo"), "%" + pageQuery.getSearch() + "%"));
+            and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
+        }
+        Map<String, Object> query = pageQuery.getQuery();
+        query.keySet().forEach(key -> {
+            if (JpaUtils.isExistField(key, queryClass)) {
+                Predicate predicate = JpaUtils.getPredicate(key, query.get(key), queryClass, root, criteriaBuilder, false);
+                if (ObjectUtil.isNotNull(predicate)) {
+                    and.add(predicate);
+                }
+            } else {
+                Predicate predicate = JpaUtils.getPredicate(key, query.get(key), Patent.class, root, criteriaBuilder, true);
+                if (ObjectUtil.isNotNull(predicate)) {
+                    and.add(predicate);
+                }
+            }
+        });
+        return and;
+    }
+
     public void total() {
         List<Patent> patents = patentRepo.findAll();
         List<LogoPatent> logoPatents = logoPatentRepo.findAll();
@@ -49,6 +101,16 @@ public class PatentService {
         //已结束
         int end = total - inProgress;
         //代办案件列表
+        List<PatentDTO> lAgent = lInProgress.stream().map(PatentDTO::new).collect(Collectors.toList());
+
+        //数据统计
+        Map<ApplyStatus, List<Patent>> byPStatus = patents.stream()
+                .collect(Collectors.groupingBy(Patent::getApplyStatus));
+
+        Map<ApplyStatus, List<LogoPatent>> byLStatus = logoPatents.stream()
+                .collect(Collectors.groupingBy(LogoPatent::getApplyStatus));
+
+        //本周数据对比
 
 
     }

+ 8 - 0
src/test/java/com/izouma/uwip/service/CountryPatentServiceTest.java

@@ -1,12 +1,16 @@
 package com.izouma.uwip.service;
 
 import com.izouma.uwip.ApplicationTests;
+import com.izouma.uwip.domain.CountryPatent;
 import com.izouma.uwip.dto.CountryPatentDTO;
+import com.izouma.uwip.dto.PageQuery;
 import com.izouma.uwip.enums.ApplyRoute;
 import com.izouma.uwip.enums.PatentType;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.List;
+
 public class CountryPatentServiceTest extends ApplicationTests {
 
     @Autowired
@@ -32,5 +36,9 @@ public class CountryPatentServiceTest extends ApplicationTests {
 
     @Test
     public void allDTO() {
+        PageQuery pageQuery = new PageQuery();
+        pageQuery.getQuery().put("applyStatus","APPLY_STAGE");
+        List<CountryPatent> content = countryPatentService.allDTO(pageQuery).getContent();
+        content.forEach(System.out::println);
     }
 }

+ 1 - 1
src/test/java/com/izouma/uwip/service/InternationalPatentServiceTest.java

@@ -54,7 +54,7 @@ public class InternationalPatentServiceTest {
     public void test() {
         PageQuery pageQuery = new PageQuery();
         Map<String, Object> query = pageQuery.getQuery();
-        query.put("applyStatus", "COMPLETED");
+        query.put("applyStatus", "APPLY_STAGE");
         Page<InternationalPatent> all = internationalPatentService.allDTO(pageQuery);
         all.getContent().forEach(System.out::println);
     }