From 34b07249c7e7a9f487a6bc08f022db6bcb925d42 Mon Sep 17 00:00:00 2001
From: Jack <jack.su@pollex.com.tw>
Date: 星期四, 20 一月 2022 14:46:35 +0800
Subject: [PATCH] [UPDATE] 調整客戶填寫滿意度的API [UPDATE] 調整產生滿意度調查資料的時機點,改為每次進到結案狀態就新增滿意度資料 [UPDATE] 調整結案API,新增和修改都使用同一支API由後端判斷為新增或修改 [BUG] 當沒有任何一筆滿意度的時候取得顧問平均分數會發生錯誤的問題修正

---
 pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java |   35 ++++++++++++++++++++++++++++-------
 1 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java b/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java
index 23461a5..9613973 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java
@@ -6,11 +6,10 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.jpa.domain.Specification;
 
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import javax.persistence.criteria.*;
 import java.util.*;
+
+import static com.pollex.pam.consts.SeniorityQueryConst.*;
 
 public class ConsultantQuerySpec {
     private ConsultantQuerySpec() {
@@ -34,7 +33,16 @@
                 }
 
                 if(Objects.nonNull(param.getAvgScore()) && param.getAvgScore().intValue() != 0) {
-                    set.add(criteriaBuilder.between(root.get("avgScore"), param.getAvgScore().intValue() - 1, param.getAvgScore().intValue() + 1));
+                    set.add(criteriaBuilder.greaterThanOrEqualTo(root.get("avgScore"), param.getAvgScore().intValue()));
+                }
+
+                if(StringUtils.isNotEmpty(param.getSeniority()) && !StringUtils.equals(UNLIMITED, param.getSeniority())) {
+                    if(YOUNG.equals(param.getSeniority())) {
+                        set.add(criteriaBuilder.lessThanOrEqualTo(root.get("seniorityYear"), 5));
+                    }
+                    else if(SENIOR.equals(param.getSeniority())) {
+                        set.add(criteriaBuilder.greaterThan(root.get("seniorityYear"), 5));
+                    }
                 }
 
                 Predicate[] predicates = new Predicate[set.size()];
@@ -58,11 +66,24 @@
                 }
 
                 if(Objects.nonNull(param.getAvgScore()) && param.getAvgScore().intValue() != 0) {
-                    set.add(criteriaBuilder.between(root.get("avgScore"), param.getAvgScore().intValue() - 1, param.getAvgScore().intValue() + 1));
+                    set.add(criteriaBuilder.greaterThanOrEqualTo(root.get("avgScore"), param.getAvgScore().intValue()));
+                }
+
+                if(StringUtils.isNotEmpty(param.getSeniority()) && !StringUtils.equals(UNLIMITED, param.getSeniority())) {
+                    if(YOUNG.equals(param.getSeniority())) {
+                        set.add(criteriaBuilder.lessThanOrEqualTo(root.get("seniorityYear"), 5));
+                    }
+                    else if(SENIOR.equals(param.getSeniority())) {
+                        set.add(criteriaBuilder.greaterThan(root.get("seniorityYear"), 5));
+                    }
                 }
 
                 if(StringUtils.isNotEmpty(param.getArea())) {
-                    set.add(criteriaBuilder.like(root.get("serveArea"), "%" + param.getArea() + "%"));
+                    Predicate predicate1 = criteriaBuilder.like(root.get("serveArea"), "%" + param.getArea() + "%");
+                    Predicate predicate2 = criteriaBuilder.like(root.get("serveArea"), "%��%");
+
+                    Predicate finalPredicate = criteriaBuilder.or(predicate1, predicate2);
+                    set.add(finalPredicate);
                 }
 
                 List<String> allRequirements = Objects.nonNull(param.getRequirements()) ? param.getRequirements() : new ArrayList<>();

--
Gitblit v1.8.0