Răsfoiți Sursa

国内筛选

licailing 4 ani în urmă
părinte
comite
bb2f7cda3f

+ 2 - 4
src/main/java/com/izouma/uwip/service/DomesticPatentService.java

@@ -18,9 +18,7 @@ import lombok.AllArgsConstructor;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
-
-import javax.persistence.criteria.Join;
-import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.Path;
 import javax.persistence.criteria.Predicate;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -118,7 +116,7 @@ public class DomesticPatentService {
     public Page<DomesticPatent> allDTO(PageQuery pageQuery) {
        return domesticPatentRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
             List<Predicate> and = new ArrayList<>();
-            Join<DomesticPatent, Patent> patent = root.join("patent", JoinType.LEFT);
+            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() + "%"));

+ 26 - 23
src/main/java/com/izouma/uwip/utils/JpaUtils.java

@@ -1,7 +1,5 @@
 package com.izouma.uwip.utils;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.izouma.uwip.annotations.Searchable;
 import com.izouma.uwip.dto.PageQuery;
 import lombok.extern.slf4j.Slf4j;
@@ -183,7 +181,7 @@ public class JpaUtils {
                         list.add(Enum.valueOf(fieldType, String.valueOf(o)));
                     }
                     if (isPatent) {
-                        return root.join("patent", JoinType.LEFT).get(property).in(list);
+                        return root.get("patent").get(property).in(list);
                     }
                     return root.get(property).in(list);
                 }
@@ -195,13 +193,13 @@ public class JpaUtils {
                         list.add(Enum.valueOf(fieldType, s));
                     }
                     if (isPatent) {
-                        return root.join("patent", JoinType.LEFT).get(property).in(list);
+                        return root.get("patent").get(property).in(list);
                     }
                     return root.get(property).in(list);
                 } else {
                     if (isPatent) {
                         return criteriaBuilder.and(criteriaBuilder
-                                .equal(root.join("patent", JoinType.LEFT)
+                                .equal(root.get("patent")
                                         .get(property), Enum.valueOf(fieldType, String.valueOf(value))));
                     }
                     return criteriaBuilder.and(criteriaBuilder
@@ -215,7 +213,7 @@ public class JpaUtils {
                     LocalDateTime start = DateTimeUtils
                             .toLocalDateTime((String) list.get(0), "yyyy-MM-dd HH:mm:ss");
                     if (isPatent) {
-                        return criteriaBuilder.greaterThanOrEqualTo(root.join("patent", JoinType.LEFT)
+                        return criteriaBuilder.greaterThanOrEqualTo(root.get("patent")
                                 .get(property), start);
                     }
                     return criteriaBuilder.greaterThanOrEqualTo(root.get(property), start);
@@ -223,7 +221,7 @@ public class JpaUtils {
                     LocalDateTime end = DateTimeUtils
                             .toLocalDateTime((String) list.get(1), "yyyy-MM-dd HH:mm:ss");
                     if (isPatent) {
-                        return criteriaBuilder.lessThanOrEqualTo(root.join("patent", JoinType.LEFT).get(property), end);
+                        return criteriaBuilder.lessThanOrEqualTo(root.get("patent").get(property), end);
                     }
                     return criteriaBuilder.lessThanOrEqualTo(root.get(property), end);
                 }
@@ -233,19 +231,19 @@ public class JpaUtils {
                 List<Predicate> and = new ArrayList<>();
                 LocalDateTime start = DateTimeUtils.toLocalDateTime(arr[0], "yyyy-MM-dd HH:mm:ss");
                 if (isPatent) {
-                    and.add(criteriaBuilder.greaterThanOrEqualTo(root.join("patent", JoinType.LEFT)
+                    and.add(criteriaBuilder.greaterThanOrEqualTo(root.get("patent")
                             .get(property), start));
                 }
                 and.add(criteriaBuilder.greaterThanOrEqualTo(root.get(property), start));
                 LocalDateTime end = DateTimeUtils.toLocalDateTime(arr[1], "yyyy-MM-dd HH:mm:ss");
                 if (isPatent) {
-                    and.add(criteriaBuilder.lessThanOrEqualTo(root.join("patent", JoinType.LEFT).get(property), end));
+                    and.add(criteriaBuilder.lessThanOrEqualTo(root.get("patent").get(property), end));
                 }
                 and.add(criteriaBuilder.lessThanOrEqualTo(root.get(property), end));
                 return criteriaBuilder.and(and.toArray(new Predicate[0]));
             } else {
                 if (isPatent) {
-                    return criteriaBuilder.and(criteriaBuilder.equal(root.join("patent", JoinType.LEFT)
+                    return criteriaBuilder.and(criteriaBuilder.equal(root.get("patent")
                             .get(property), DateTimeUtils
                             .toLocalDateTime((String) value, "yyyy-MM-dd HH:mm:ss")));
                 }
@@ -259,7 +257,7 @@ public class JpaUtils {
                     LocalDate start = DateTimeUtils
                             .toLocalDate((String) list.get(0), "yyyy-MM-dd");
                     if (isPatent) {
-                        return criteriaBuilder.greaterThanOrEqualTo(root.join("patent", JoinType.LEFT)
+                        return criteriaBuilder.greaterThanOrEqualTo(root.get("patent")
                                 .get(property), start);
                     }
                     return criteriaBuilder.greaterThanOrEqualTo(root.get(property), start);
@@ -267,7 +265,7 @@ public class JpaUtils {
                     LocalDate end = DateTimeUtils
                             .toLocalDate((String) list.get(1), "yyyy-MM-dd");
                     if (isPatent) {
-                        return criteriaBuilder.lessThanOrEqualTo(root.join("patent", JoinType.LEFT).get(property), end);
+                        return criteriaBuilder.lessThanOrEqualTo(root.get("patent").get(property), end);
                     }
                     return criteriaBuilder.lessThanOrEqualTo(root.get(property), end);
                 }
@@ -277,18 +275,18 @@ public class JpaUtils {
                 List<Predicate> and = new ArrayList<>();
                 LocalDate start = DateTimeUtils.toLocalDate(arr[0], "yyyy-MM-dd");
                 if (isPatent) {
-                    and.add(criteriaBuilder.greaterThanOrEqualTo(root.join("patent", JoinType.LEFT).get(property), start));
+                    and.add(criteriaBuilder.greaterThanOrEqualTo(root.get("patent").get(property), start));
                 }
                 and.add(criteriaBuilder.greaterThanOrEqualTo(root.get(property), start));
                 LocalDate end = DateTimeUtils.toLocalDate(arr[1], "yyyy-MM-dd");
                 if (isPatent) {
-                    and.add(criteriaBuilder.lessThanOrEqualTo(root.join("patent", JoinType.LEFT).get(property), end));
+                    and.add(criteriaBuilder.lessThanOrEqualTo(root.get("patent").get(property), end));
                 }
                 and.add(criteriaBuilder.lessThanOrEqualTo(root.get(property), end));
                 return criteriaBuilder.and(and.toArray(new Predicate[0]));
             } else {
                 if (isPatent) {
-                    return criteriaBuilder.and(criteriaBuilder.equal(root.join("patent", JoinType.LEFT)
+                    return criteriaBuilder.and(criteriaBuilder.equal(root.get("patent")
                             .get(property), DateTimeUtils
                             .toLocalDateTime((String) value, "yyyy-MM-dd")));
                 }
@@ -297,23 +295,28 @@ public class JpaUtils {
             }
         } else {
             if (isPatent) {
-                return criteriaBuilder.and(criteriaBuilder.equal(root.join("patent", JoinType.LEFT).get(property), value));
+                return criteriaBuilder.and(criteriaBuilder.equal(root.get("patent").get(property), value));
             }
             return criteriaBuilder.and(criteriaBuilder.equal(root.get(property), value));
         }
         return null;
     }
 
-    public static Boolean isExistField(String field, Object obj) {
-        if (obj == null || StringUtils.isEmpty(field)) {
+    public static Boolean isExistField(String field, Class<?> clazz) {
+        if (clazz == null || clazz == Object.class || StringUtils.isEmpty(field)) {
             return null;
         }
-        Object o = JSON.toJSON(obj);
-        JSONObject jsonObj = new JSONObject();
-        if (o instanceof JSONObject) {
-            jsonObj = (JSONObject) o;
+        //获取这个类的所有属性
+        Field[] fields = clazz.getDeclaredFields();
+        boolean flag = false;
+        //循环遍历所有的fields
+        for (int i = 0; i < fields.length; i++) {
+            if (fields[i].getName().equals(field)) {
+                flag = true;
+                break;
+            }
         }
-        return jsonObj.containsKey(field);
+        return flag;
     }
 
     private static Field getDeclaredField(Class<?> clazz, String property) {

+ 10 - 3
src/test/java/com/izouma/uwip/service/DomesticPatentServiceTest.java

@@ -2,10 +2,12 @@ package com.izouma.uwip.service;
 
 
 import com.izouma.uwip.ApplicationTests;
+import com.izouma.uwip.domain.DomesticPatent;
 import com.izouma.uwip.dto.PageQuery;
 import com.izouma.uwip.enums.ApplyStatus;
 import com.izouma.uwip.enums.CaseType;
 import com.izouma.uwip.enums.PatentType;
+import com.izouma.uwip.utils.JpaUtils;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -24,11 +26,16 @@ public class DomesticPatentServiceTest extends ApplicationTests {
     @Test
     public void test1() {
         PageQuery pageQuery = new PageQuery();
-//        pageQuery.setSearch("1001");
+//        pageQuery.setSearch("123");
         Map<String, Object> query = pageQuery.getQuery();
         query.put("applyStatus", "APPLY_STAGE");
-        query.put("workflow","ADD_SUPPLIERS");
-        domesticPatentService.allDTO(pageQuery).forEach(System.out::println);
+        query.put("workflow", "MAINTAIN_CASE");
+        domesticPatentService.allDTO(pageQuery).forEach(dp -> System.out.println(dp.getId() + "----->"));
+    }
+
+    @Test
+    public void test2() {
+        System.out.println(JpaUtils.isExistField("workflow", DomesticPatent.class));
     }
 
 }