保誠-保戶業務員媒合平台
Jack
2022-01-18 c2a3da1d4071f2f1d6a5beb63b8442920767584e
[ADD] 結案明細編輯API
修改8個檔案
119 ■■■■ 已變更過的檔案
pamapi/src/doc/預約單/結案API.txt 5 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java 18 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java 4 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java 28 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java 28 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java 9 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java 9 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java 18 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/doc/¹w¬ù³æ/µ²®×API.txt
@@ -1,7 +1,10 @@
http post : 
新增結案明細:
http://localhost:8080/api/appointment/close
更新結案明細:
http://localhost:8080/api/appointment/close/info/edit
request body :
pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java
@@ -13,6 +13,7 @@
import com.pollex.pam.service.AppointmentClosedInfoService;
import com.pollex.pam.service.AppointmentService;
import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
import com.pollex.pam.service.dto.DoneProcessDTO;
@Service
public class AppointmentProcess{
@@ -31,10 +32,21 @@
    
    public void process(AbstractAppointmentProcessDTO dto) {
        
        AbstractAppointmentProcessDTO appointmentProcessDTO = (AbstractAppointmentProcessDTO)dto;
//        AbstractAppointmentProcessDTO appointmentProcessDTO = dto;
        processList.stream().forEach(process ->{
            if(process.getProcessType() == appointmentProcessDTO.getContactStatus()) {
                process.doProcess(appointmentProcessDTO);
            if(process.getProcessType() == dto.getContactStatus()) {
                process.createProcess(dto);
            }
        });
        Appointment appointment = appointmentService.findById(dto.getAppointmentId());
        appointment.setCommunicateStatus(dto.getContactStatus());
        appointmentRepository.save(appointment);
    }
    public void editClosedInfo(AbstractAppointmentProcessDTO dto) {
        processList.stream().forEach(process ->{
            if(process.getProcessType() == dto.getContactStatus()) {
                process.editClosedInfo(dto);
            }
        });
        Appointment appointment = appointmentService.findById(dto.getAppointmentId());
pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java
@@ -1,11 +1,13 @@
package com.pollex.pam.appointment.process;
import com.pollex.pam.domain.AppointmentClosedInfo;
import com.pollex.pam.enums.ContactStatusEnum;
import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
public interface AppointmentProcessInterface {
    
    void doProcess(AbstractAppointmentProcessDTO dto);
    void createProcess(AbstractAppointmentProcessDTO dto);
    AppointmentClosedInfo editClosedInfo(AbstractAppointmentProcessDTO dto);
    ContactStatusEnum getProcessType();
    
}
pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java
@@ -10,10 +10,12 @@
import com.pollex.pam.domain.AppointmentClosedInfo;
import com.pollex.pam.enums.ContactStatusEnum;
import com.pollex.pam.repository.AppointmentClosedInfoRepository;
import com.pollex.pam.service.AppointmentClosedInfoService;
import com.pollex.pam.service.AppointmentService;
import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
import com.pollex.pam.service.dto.ClosedProcessDTO;
import com.pollex.pam.service.dto.DoneProcessDTO;
import com.pollex.pam.web.rest.errors.AppointmentClosedInfoNotFoundException;
@Service
public class ClosedProcess implements AppointmentProcessInterface{
@@ -24,18 +26,23 @@
    @Autowired
    AppointmentService appointmentService;
    
    @Autowired
    AppointmentClosedInfoService appointmentClosedInfoService;
    
    @Override
    public void doProcess(AbstractAppointmentProcessDTO processDTO) {
    public void createProcess(AbstractAppointmentProcessDTO processDTO) {
        checkClosedInfo(processDTO.getAppointmentId());
        ClosedProcessDTO doneProcess = (ClosedProcessDTO)processDTO;
        BeanUtils.copyProperties(processDTO, doneProcess);
        ClosedProcessDTO closeProcess = toClosedProcessDTO(processDTO);
        AppointmentClosedInfo closedInfo = new AppointmentClosedInfo();
        BeanUtils.copyProperties(doneProcess, closedInfo);
        BeanUtils.copyProperties(closeProcess, closedInfo);
        appointmentClosedInfoRepository.save(closedInfo);
        
    }
    private ClosedProcessDTO toClosedProcessDTO(AbstractAppointmentProcessDTO processDTO) {
        ClosedProcessDTO closeProcess = (ClosedProcessDTO)processDTO;
        BeanUtils.copyProperties(processDTO, closeProcess);
        return closeProcess;
    }
    private void checkClosedInfo(Long appointmentId) {
@@ -49,6 +56,15 @@
    public ContactStatusEnum getProcessType() {
        return ContactStatusEnum.CLOSED;
    }
    @Override
    public AppointmentClosedInfo editClosedInfo(AbstractAppointmentProcessDTO abstractDTO) {
        ClosedProcessDTO closeProcess =  toClosedProcessDTO(abstractDTO);
        AppointmentClosedInfo closedInfo = appointmentClosedInfoService.findByAppointmentId(abstractDTO.getAppointmentId());
        BeanUtils.copyProperties(closeProcess, closedInfo);
        return appointmentClosedInfoRepository.save(closedInfo);
    }
    
    
}
pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java
@@ -9,20 +9,25 @@
import com.pollex.pam.domain.AppointmentClosedInfo;
import com.pollex.pam.enums.ContactStatusEnum;
import com.pollex.pam.repository.AppointmentClosedInfoRepository;
import com.pollex.pam.service.AppointmentClosedInfoService;
import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
import com.pollex.pam.service.dto.ClosedProcessDTO;
import com.pollex.pam.service.dto.DoneProcessDTO;
import com.pollex.pam.web.rest.errors.AppointmentClosedInfoNotFoundException;
@Service
public class DoneProcess implements AppointmentProcessInterface{
    
    @Autowired
    AppointmentClosedInfoRepository appointmentClosedInfoRepository;
    @Autowired
    AppointmentClosedInfoService appointmentClosedInfoService;
    @Override
    public void doProcess(AbstractAppointmentProcessDTO processDTO) {
    public void createProcess(AbstractAppointmentProcessDTO processDTO) {
        checkClosedInfo(processDTO.getAppointmentId());
        DoneProcessDTO doneProcess = (DoneProcessDTO)processDTO;
        BeanUtils.copyProperties(processDTO, doneProcess);
        DoneProcessDTO doneProcess = toDoneProcessDTO(processDTO);
        AppointmentClosedInfo closedInfo = new AppointmentClosedInfo();
        BeanUtils.copyProperties(doneProcess, closedInfo);
        appointmentClosedInfoRepository.save(closedInfo);
@@ -39,5 +44,20 @@
            throw new IllegalArgumentException("appointment closed info exist");
        }
    }
    @Override
    public AppointmentClosedInfo editClosedInfo(AbstractAppointmentProcessDTO abstractDTO) {
        DoneProcessDTO doneProcess =  toDoneProcessDTO(abstractDTO);
        AppointmentClosedInfo closedInfo = appointmentClosedInfoService.findByAppointmentId(abstractDTO.getAppointmentId());
        BeanUtils.copyProperties(doneProcess, closedInfo);
        return appointmentClosedInfoRepository.save(closedInfo);
    }
    private DoneProcessDTO toDoneProcessDTO(AbstractAppointmentProcessDTO abstractDTO) {
        DoneProcessDTO doneProcess = (DoneProcessDTO)abstractDTO;
        BeanUtils.copyProperties(abstractDTO, doneProcess);
        return doneProcess;
    }
    
}
pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java
@@ -6,6 +6,7 @@
    
    private ContactStatusEnum contactStatus;
    private Long appointmentId;
//    private Long closedInfoId;
    public ContactStatusEnum getContactStatus() {
        return contactStatus;
@@ -23,6 +24,14 @@
        this.appointmentId = appointmentId;
    }
//    public Long getClosedInfoId() {
//        return closedInfoId;
//    }
//
//    public void setClosedInfoId(Long closedInfoId) {
//        this.closedInfoId = closedInfoId;
//    }
    
    
}
pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java
@@ -6,6 +6,7 @@
public class AppointmentCloseDTO{
    
//    private Long closedInfoId;
    private String policyholderIdentityId;
    private String planCode;
    private Date policyEntryDate;
@@ -63,6 +64,14 @@
    public void setAppointmentId(Long appointmentId) {
        this.appointmentId = appointmentId;
    }
//    public Long getClosedInfoId() {
//        return closedInfoId;
//    }
//    public void setClosedInfoId(Long closedInfoId) {
//        this.closedInfoId = closedInfoId;
//    }
    
    
}
pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java
@@ -88,4 +88,22 @@
        
        return ResponseEntity.noContent().build();
    }
    @PostMapping("/close/info/edit")
    public ResponseEntity<Void> editAppointmentClosedInfo(@RequestBody AppointmentCloseDTO closeDTO) {
        if(closeDTO.getContactStatus() == ContactStatusEnum.DONE) {
            DoneProcessDTO dto = new DoneProcessDTO();
            BeanUtils.copyProperties(closeDTO, dto);
            abstractAppointmentProcess.editClosedInfo(dto);
        }else if(closeDTO.getContactStatus() == ContactStatusEnum.CLOSED){
            ClosedProcessDTO dto = new ClosedProcessDTO();
            BeanUtils.copyProperties(closeDTO, dto);
            abstractAppointmentProcess.editClosedInfo(dto);
        }else {
            return ResponseEntity.notFound().build();
        }
        return ResponseEntity.noContent().build();
    }
}