保誠-保戶業務員媒合平台
wayne
2022-02-22 1a8622c14a2b8686a5655523d22167354b3834cf
pamapi/src/main/java/com/pollex/pam/service/ConsultantService.java
@@ -6,6 +6,7 @@
import com.pollex.pam.domain.Consultant;
import com.pollex.pam.domain.CustomerFavoriteConsultant;
import com.pollex.pam.domain.Satisfaction;
import com.pollex.pam.enums.ConsultantStatusEnum;
import com.pollex.pam.enums.ContactStatusEnum;
import com.pollex.pam.enums.LoginResult;
import com.pollex.pam.repository.ConsultantRepository;
@@ -36,6 +37,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.*;
@@ -58,9 +60,6 @@
    @Autowired
    AppointmentService appointmentService;
    @Autowired
    LoginRecordService loginRecordService;
    @Autowired
    AppointmentCustomerViewMapper appointmentCustomerViewMapper;
@@ -152,6 +151,7 @@
    public List<ConsultantDTO> getRecommendConsultantList() {
        return consultantRepository.findAllByRecommendIsTrue()
            .stream()
            .filter(consultant -> consultant.getStatus() == ConsultantStatusEnum.AVAILABLE)
            .map(consultantMapper::toDto)
            .collect(Collectors.toList());
    }
@@ -224,12 +224,7 @@
    public ConsultantDetailDTO getConsultantDetail(String agentNo) {
        Consultant consultant = consultantRepository.findOneByAgentNo(agentNo).orElseThrow(ConsultantNotFoundException::new);
        ConsultantDetailDTO consultantDetailDTO = consultantMapper.toDetailDto(consultant);
        loginRecordService.findLatestLoginRecord(agentNo, LoginResult.SUCCESS)
                .ifPresent(loginRecord -> consultantDetailDTO.setLatestLoginTime(loginRecord.getLoginDate()));
        return consultantDetailDTO;
        return consultantMapper.toDetailDto(consultant);
    }
    @Transactional
@@ -358,17 +353,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);
   }
}