保誠-保戶業務員媒合平台
Jack
2021-12-03 dd33317a77f862c17b943bd3374c5344e1e77002
[ADD] 新增滿意度調查及時更改顧問的平均分數
修改2個檔案
37 ■■■■■ 已變更過的檔案
pamapi/src/main/java/com/pollex/pam/repository/SatisfactionRepository.java 7 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/SatisfactionService.java 30 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/repository/SatisfactionRepository.java
@@ -4,6 +4,8 @@
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.pollex.pam.domain.Satisfaction;
@@ -16,4 +18,9 @@
    List<Satisfaction> findByCustomerId(Long customerId);
    Optional<Satisfaction> findOneByAppointmentId(Long appointmentId);
    @Query(value = "SELECT avg(score) FROM satisfaction where agent_no=:agent_no"
            , nativeQuery = true)
    Float getAgentScoreAvg(@Param("agent_no") String agentNo);
}
pamapi/src/main/java/com/pollex/pam/service/SatisfactionService.java
@@ -1,5 +1,6 @@
package com.pollex.pam.service;
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
@@ -8,7 +9,9 @@
import org.springframework.transaction.annotation.Transactional;
import com.pollex.pam.domain.Appointment;
import com.pollex.pam.domain.Consultant;
import com.pollex.pam.domain.Satisfaction;
import com.pollex.pam.repository.ConsultantRepository;
import com.pollex.pam.repository.CustomerRepository;
import com.pollex.pam.repository.SatisfactionRepository;
import com.pollex.pam.service.dto.SatisfactionCustomerCreateDTO;
@@ -35,11 +38,36 @@
    @Autowired
    CustomerRepository customerRepository;
    @Autowired
    ConsultantRepository consultantRepository;
    public Satisfaction createSatisfaction(Satisfaction satisfaction) {
        return satisfactionRepository.save(satisfaction);
        satisfaction = satisfactionRepository.save(satisfaction);
        setConsultantAvgScore(satisfaction);
        return satisfaction;
    }
    private void setConsultantAvgScore(Satisfaction satisfaction) {
        float avgScore = getAgentAvgScore(satisfaction);
        Consultant consultant = consultantRepository.findOneByAgentNo(satisfaction.getAgentNo())
                .get();
        consultant.setAvgScore(avgScore);
        consultantRepository.save(consultant);
    }
    private float getAgentAvgScore(Satisfaction satisfaction) {
        Float avgScore = satisfactionRepository.getAgentScoreAvg(satisfaction.getAgentNo());
        BigDecimal bigDecimal = new BigDecimal(avgScore);
        return avgScore = bigDecimal.setScale(1,BigDecimal.ROUND_HALF_UP).floatValue();
    }
    public Satisfaction createSatisfaction(Appointment appointment) {
        Satisfaction satisfaction = appointmentMapper.toSatisfaction(appointment);
        return createSatisfaction(satisfaction);