保誠-保戶業務員媒合平台
[update] [todo 136031] 諮詢度表現,提供前端該顧問所有預約單數量以及近一個月的預約單數量

修改3個檔案
43 ■■■■ 已變更過的檔案
pamapi/src/doc/顧問API/指定顧問詳細資訊.txt 3 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDetailDTO.java 19 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java 21 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/doc/ÅU°ÝAPI/«ü©wÅU°Ý¸Ô²Ó¸ê°T.txt
@@ -13,7 +13,8 @@
  "companyAddress" : "花蓮縣玉里鎮中正路30號9樓",
  "latestLoginTime" : "2021-12-24T08:48:21.497Z",
  "seniority" : "38 å¹´ ",
  "evaluation" : 50,
  "nearlyMonthAppointmentCount" : 30, è¿‘一個月預約單數量,用於諮詢度
  "allAppointmentCount" : 50, æ‰€æœ‰é ç´„單數量,用於諮詢度
  "expertise" : [ "健康與保障", "子女教育", "資產規劃", "樂活退休", "保單健檢/規劃", "分紅保單" ],
  "concept" : "每份保單規劃從「心」出發\r\n用心、熱心、貼心對待每位客戶\r\n\r\n我的三大信念\r\n◆ é«˜cp值 ã€Œä½Žä¿è²»ã€é«˜ä¿éšœã€\r\n◆ ç°¡å–®åŒ– ã€Œè¼•鬆、易懂保險」\r\n◆ å®¢è£½åŒ– ã€Œé¸ä¸€ä»½é©åˆçš„規劃」\r\n\r\n提供完善的規劃保護您及所愛的人",
  "experiences" : "麻省理工學院投資與金融學系,政大EMBA,中原大學財金系,人身保險證照,財產保險證照,投資型保單證照,外幣收付保險證照,退休金類精算師證照,產物保險理賠人員考試證書,美國壽險管理師證書,美國壽險理賠師證書,美國財產和意外險承保師證書",
pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDetailDTO.java
@@ -18,7 +18,8 @@
    private String companyAddress;
    private Instant latestLoginTime;
    private String seniority;
    private Number evaluation;
    private Number nearlyMonthAppointmentCount;
    private Number allAppointmentCount;
    private List<String> expertise;
    private String concept;
    private String experiences;
@@ -115,12 +116,20 @@
        this.seniority = seniority;
    }
    public Number getEvaluation() {
        return evaluation;
    public Number getNearlyMonthAppointmentCount() {
        return nearlyMonthAppointmentCount;
    }
    public void setEvaluation(Number evaluation) {
        this.evaluation = evaluation;
    public void setNearlyMonthAppointmentCount(Number nearlyMonthAppointmentCount) {
        this.nearlyMonthAppointmentCount = nearlyMonthAppointmentCount;
    }
    public Number getAllAppointmentCount() {
        return allAppointmentCount;
    }
    public void setAllAppointmentCount(Number allAppointmentCount) {
        this.allAppointmentCount = allAppointmentCount;
    }
    public List<String> getExpertise() {
pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java
@@ -1,18 +1,26 @@
package com.pollex.pam.service.mapper;
import com.pollex.pam.domain.Appointment;
import com.pollex.pam.domain.Consultant;
import com.pollex.pam.service.AppointmentService;
import com.pollex.pam.service.dto.ConsultantDTO;
import com.pollex.pam.service.dto.ConsultantDetailDTO;
import com.pollex.pam.service.dto.CustomerFavoriteConsultantDTO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.Instant;
import java.time.ZonedDateTime;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class ConsultantMapper {
    @Autowired
    AppointmentService appointmentService;
    private static final Character SPLIT_MASK = ',';
@@ -68,8 +76,17 @@
        consultantDetailDTO.setExpertise(splitStringWithChar(source.getExpertise()));
        consultantDetailDTO.setExperiences(source.getExperience());
        // todo éœ€ç¢ºèªè«®è©¢åº¦è¡¨ç¾
        consultantDetailDTO.setEvaluation(50);
        List<Appointment> appointments = appointmentService.findByAgentNo(source.getAgentNo());
        long allAppointmentCount = appointments.size();
        long nearlyMonthAppointmentCount = appointments
            .stream()
            .filter(appointment -> {
                Instant oneMonthAgo = ZonedDateTime.now().minusMonths(1).toInstant();
                return appointment.getAppointmentDate().isAfter(oneMonthAgo);
            }).count();
        consultantDetailDTO.setAllAppointmentCount(allAppointmentCount);
        consultantDetailDTO.setNearlyMonthAppointmentCount(nearlyMonthAppointmentCount);
        return consultantDetailDTO;
    }