From 3c94dc06c3b99e7fc430e68ee2ce4a6cf2cd422c Mon Sep 17 00:00:00 2001 From: wayne <wayne8692wayne8692@gmail.com> Date: 星期三, 16 二月 2022 15:54:32 +0800 Subject: [PATCH] [update] 修正滿意度評分在沒有撈到任何評分紀錄時,不可直接set 0進顧問的分數中 --- pamapi/src/main/java/com/pollex/pam/repository/SatisfactionRepository.java | 2 +- pamapi/src/main/java/com/pollex/pam/service/ConsultantService.java | 22 ++++++++++++---------- pamapi/src/doc/sql/20220216_w.sql | 22 ++++++++++++++++++++++ 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/pamapi/src/doc/sql/20220216_w.sql b/pamapi/src/doc/sql/20220216_w.sql new file mode 100644 index 0000000..4c9ee45 --- /dev/null +++ b/pamapi/src/doc/sql/20220216_w.sql @@ -0,0 +1,22 @@ +update public.consultant set avg_score = 1 where agent_no = 'A183619275'; +update public.consultant set avg_score = 2 where agent_no = 'AGAM11249699'; +update public.consultant set avg_score = 3 where agent_no = 'Z152717443'; +update public.consultant set avg_score = 4 where agent_no = 'D265260662'; +update public.consultant set avg_score = 5 where agent_no = 'AG0109051204'; +update public.consultant set avg_score = 1 where agent_no = 'B282677963'; +update public.consultant set avg_score = 2 where agent_no = 'AG0101234567'; +update public.consultant set avg_score = 3 where agent_no = 'X147309614'; +update public.consultant set avg_score = 4 where agent_no = 'J149388015'; +update public.consultant set avg_score = 5 where agent_no = 'R221444250'; + +do +$$ +declare +avg_row record; +begin +for avg_row in select round(cast(avg(score) as numeric), 1) as avg_score, agent_no from public.satisfaction where "type" = 'APPOINTMENT' and score is not null group by agent_no + loop +update public.consultant set avg_score = avg_row.avg_score where agent_no = avg_row.agent_no; +end loop; +end +$$ diff --git a/pamapi/src/main/java/com/pollex/pam/repository/SatisfactionRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/SatisfactionRepository.java index 1e670a3..fa37237 100644 --- a/pamapi/src/main/java/com/pollex/pam/repository/SatisfactionRepository.java +++ b/pamapi/src/main/java/com/pollex/pam/repository/SatisfactionRepository.java @@ -27,5 +27,5 @@ + " and agent_no=:agent_no" + " and score is not null" , nativeQuery = true) - Float getAgentScoreAvg(@Param("agent_no") String agentNo); + Optional<Float> getAgentScoreAvg(@Param("agent_no") String agentNo); } diff --git a/pamapi/src/main/java/com/pollex/pam/service/ConsultantService.java b/pamapi/src/main/java/com/pollex/pam/service/ConsultantService.java index 6044a45..58c96d9 100644 --- a/pamapi/src/main/java/com/pollex/pam/service/ConsultantService.java +++ b/pamapi/src/main/java/com/pollex/pam/service/ConsultantService.java @@ -36,6 +36,7 @@ import java.util.Comparator; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; import static com.pollex.pam.consts.SeniorityQueryConst.*; @@ -358,17 +359,18 @@ } public void setConsultantAvgScore(Satisfaction satisfaction) { - float avgScore = getAgentAvgScore(satisfaction.getAgentNo()); - Consultant consultant = consultantRepository.findOneByAgentNo(satisfaction.getAgentNo()) - .get(); - consultant.setAvgScore(avgScore); - consultantRepository.save(consultant); + Optional<Float> avgScore = getAgentAvgScore(satisfaction.getAgentNo()); + + if(avgScore.isPresent()) { + BigDecimal bigDecimal = BigDecimal.valueOf(avgScore.get()); + + Consultant consultant = consultantRepository.findOneByAgentNo(satisfaction.getAgentNo()).get(); + consultant.setAvgScore(bigDecimal.setScale(1, BigDecimal.ROUND_HALF_UP).floatValue()); + consultantRepository.save(consultant); + } } - public float getAgentAvgScore(String agentNo) { - Float avgScore = satisfactionRepository.getAgentScoreAvg(agentNo); - if(avgScore==null)return 0; - BigDecimal bigDecimal = new BigDecimal(avgScore); - return avgScore = bigDecimal.setScale(1,BigDecimal.ROUND_HALF_UP).floatValue(); + public Optional<Float> getAgentAvgScore(String agentNo) { + return satisfactionRepository.getAgentScoreAvg(agentNo); } } -- Gitblit v1.8.0