From 75d1209791a26cc27d9ba489792788513bd70446 Mon Sep 17 00:00:00 2001 From: Mila <Mila@pollex.com.tw> Date: 星期四, 13 一月 2022 10:07:02 +0800 Subject: [PATCH] Merge branch 'Phase3' of https://192.168.0.10:8443/r/pcalife/PAM into Phase3 --- PAMapp/components/Interview/InterviewAdd.vue | 78 ++++++ pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java | 35 ++ pamapi/src/main/java/com/pollex/pam/service/dto/DoneProcessDTO.java | 39 +++ pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java | 11 pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java | 28 ++ PAMapp/pages/appointment/_appointmentId/interview/new/index.vue | 56 ---- pamapi/src/doc/sql/20220112_j.sql | 24 ++ pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java | 31 ++ pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java | 34 ++ PAMapp/components/Appointment/AppointmentRecordList.vue | 2 pamapi/src/main/java/com/pollex/pam/repository/AppointmentClosedInfoRepository.java | 11 pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java | 68 +++++ pamapi/src/main/java/com/pollex/pam/domain/Appointment.java | 38 ++ pamapi/src/main/java/com/pollex/pam/service/dto/ClosedProcessDTO.java | 29 ++ PAMapp/pages/appointment/_appointmentId/interview/_interviewId/index.vue | 14 + pamapi/src/main/java/com/pollex/pam/service/AppointmentClosedInfoService.java | 10 pamapi/src/main/java/com/pollex/pam/domain/AppointmentClosedInfo.java | 112 +++++++++ pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java | 25 ++ PAMapp/components/Appointment/AppointmentInterviewList.vue | 4 pamapi/src/doc/預約單/結案API.txt | 30 ++ PAMapp/assets/scss/utilities/_heading.scss | 9 PAMapp/pages/appointment/_appointmentId/index.vue | 2 22 files changed, 628 insertions(+), 62 deletions(-) diff --git a/PAMapp/assets/scss/utilities/_heading.scss b/PAMapp/assets/scss/utilities/_heading.scss index 83403f5..9e4b562 100644 --- a/PAMapp/assets/scss/utilities/_heading.scss +++ b/PAMapp/assets/scss/utilities/_heading.scss @@ -126,3 +126,12 @@ @extend .cursor--pointer; @extend .text--underline; } + +.pam-link-button--lg { + @extend .fix-chrome-click--issue; + @extend .mdTxt; + @extend .text--bold; + @extend .text--primary; + @extend .cursor--pointer; + @extend .text--underline; +} diff --git a/PAMapp/components/Appointment/AppointmentInterviewList.vue b/PAMapp/components/Appointment/AppointmentInterviewList.vue index 66c1774..14e66b3 100644 --- a/PAMapp/components/Appointment/AppointmentInterviewList.vue +++ b/PAMapp/components/Appointment/AppointmentInterviewList.vue @@ -2,7 +2,7 @@ <div> <div class="interview__header"> <div class="mdTxt">蝝赤蝝����</div> - <div class="mdTxt text--underline text--primary" + <div class="pam-link-button--lg" @click="addInterview">+�憓�</div> </div> @@ -39,7 +39,7 @@ </section> <section class="more-log-action"> - <div class="mdTxt text--primary text--underline">撅��憭�</div> + <div class="pam-link-button--lg">撅��憭�</div> </section> </template> </div> diff --git a/PAMapp/components/Appointment/AppointmentRecordList.vue b/PAMapp/components/Appointment/AppointmentRecordList.vue index 9bc21b1..b9c4b15 100644 --- a/PAMapp/components/Appointment/AppointmentRecordList.vue +++ b/PAMapp/components/Appointment/AppointmentRecordList.vue @@ -27,7 +27,7 @@ <div class="time-line"></div> <section class="more-log-action"> - <div class="mdTxt text--primary text--underline">撅��憭�</div> + <div class="pam-link-button--lg">撅��憭�</div> </section> </div> </template> diff --git a/PAMapp/components/Interview/InterviewAdd.vue b/PAMapp/components/Interview/InterviewAdd.vue new file mode 100644 index 0000000..7d6684b --- /dev/null +++ b/PAMapp/components/Interview/InterviewAdd.vue @@ -0,0 +1,78 @@ +<template> + <div class="edit-appointment-record"> + <div class="edit-appointment-record-date"> + <span>隞予 11:00 撱箇��</span> + <span>隞予 11:00 ��</span> + </div> + + <div class="mdTxt mb-10">蝝赤����</div> + <div class="date-input"> + 2022/01/10 09:00 + <i class="icon-calender icon"></i> + </div> + + <div class="mdTxt mb-10">蝝赤蝝����</div> + <el-input type="textarea" :rows="5" placeholder="蝝赤�" resize="none"> + </el-input> + + <div class="edit-appointment-record-btn"> + <el-button>����</el-button> + <el-button>蝣箏��</el-button> + </div> + </div> +</template> +<script lang="ts"> +import { AppointmentLog } from '~/shared/models/appointment.model'; +import { Vue, Component, Prop } from 'nuxt-property-decorator'; +import authService from '~/shared/services/auth.service'; + +@Component +export default class InterviewAdd extends Vue { + // @Prop() + // myAppointmentReviewLogList!: AppointmentLog[]; + + // isUserLogin = false; + + ////////////////////////////////////////////////////////////////////// + // mounted() { + // this.isUserLogin = authService.isUserLogin(); + // } + +} +</script> + +<style lang="scss" scoped> +.edit-appointment-record { + padding-left : 10px; + padding-right: 10px; + .edit-appointment-record-date{ + color : #68737A; + display : flex; + justify-content: space-between; + margin-bottom : 26px; + } +} +.date-input { + align-items : center; + background-color: #fff; + border : 1px solid #707070; + border-radius : 5px; + display : flex; + font-size : 20px; + height : 46px; + margin-bottom : 30px; + padding-left : 20px; + padding-right : 20px; +} +.icon { + color : $PRIMARY_RED; + display : flex; + flex : 1; + justify-content: flex-end; +} +.edit-appointment-record-btn{ + margin-top: 30px; + display: flex; + justify-content: center; +} +</style> diff --git a/PAMapp/pages/appointment/_appointmentId/index.vue b/PAMapp/pages/appointment/_appointmentId/index.vue index 41290f7..6d9dd06 100644 --- a/PAMapp/pages/appointment/_appointmentId/index.vue +++ b/PAMapp/pages/appointment/_appointmentId/index.vue @@ -45,7 +45,7 @@ <div class="client-detail-action"> <el-button @click="closeAppointment" >蝯��</el-button> - <el-button @click="$router.go(-1)" style="margin-left: 0px">�/�閮�</el-button> + <el-button @click="$router.go(-1)" style="margin-left: 0px">�/蝝赤</el-button> </div> </section> diff --git a/PAMapp/pages/appointment/_appointmentId/interview/_interviewId/index.vue b/PAMapp/pages/appointment/_appointmentId/interview/_interviewId/index.vue new file mode 100644 index 0000000..7d1fd02 --- /dev/null +++ b/PAMapp/pages/appointment/_appointmentId/interview/_interviewId/index.vue @@ -0,0 +1,14 @@ +<template> + <InterviewAdd></InterviewAdd> +</template> +<script lang="ts"> +import { Vue, Component } from 'nuxt-property-decorator'; + +@Component +export default class EditAppointmentInterview extends Vue { + +} +</script> +<style lang="scss" scoped> + +</style> diff --git a/PAMapp/pages/appointment/_appointmentId/interview/new/index.vue b/PAMapp/pages/appointment/_appointmentId/interview/new/index.vue index ce4909f..7dbba46 100644 --- a/PAMapp/pages/appointment/_appointmentId/interview/new/index.vue +++ b/PAMapp/pages/appointment/_appointmentId/interview/new/index.vue @@ -1,25 +1,5 @@ <template> - <div class="edit-appointment-record"> - <div class="edit-appointment-record-date"> - <span>隞予 11:00 撱箇��</span> - <span>隞予 11:00 ��</span> - </div> - - <div class="mdTxt mb-10">蝝赤����</div> - <div class="date-input"> - 2022/01/10 09:00 - <i class="icon-calender icon"></i> - </div> - - <div class="mdTxt mb-10">蝝赤蝝����</div> - <el-input type="textarea" :rows="5" placeholder="蝝赤�" resize="none"> - </el-input> - - <div class="edit-appointment-record-btn"> - <el-button>����</el-button> - <el-button>蝣箏��</el-button> - </div> - </div> + <InterviewAdd></InterviewAdd> </template> <script lang="ts"> import { Vue, Component } from 'nuxt-property-decorator'; @@ -30,37 +10,5 @@ } </script> <style lang="scss" scoped> -.edit-appointment-record { - padding-left : 10px; - padding-right: 10px; - .edit-appointment-record-date{ - color : #68737A; - display : flex; - justify-content: space-between; - margin-bottom : 26px; - } -} -.date-input { - align-items : center; - background-color: #fff; - border : 1px solid #707070; - border-radius : 5px; - display : flex; - font-size : 20px; - height : 46px; - margin-bottom : 30px; - padding-left : 20px; - padding-right : 20px; -} -.icon { - color : $PRIMARY_RED; - display : flex; - flex : 1; - justify-content: flex-end; -} -.edit-appointment-record-btn{ - margin-top: 30px; - display: flex; - justify-content: center; -} + </style> diff --git a/pamapi/src/doc/sql/20220112_j.sql b/pamapi/src/doc/sql/20220112_j.sql index 3d64d79..504c4da 100644 --- a/pamapi/src/doc/sql/20220112_j.sql +++ b/pamapi/src/doc/sql/20220112_j.sql @@ -40,3 +40,27 @@ CONSTRAINT interview_record_pkey PRIMARY KEY (id) ); +-- �憓��蝯���able + +-- Drop table + +-- DROP TABLE public.appointment_closed_info; + +-- Drop table + +-- DROP TABLE public.appointment_closed_info; + +CREATE TABLE public.appointment_closed_info ( + id bigserial NOT NULL, + policyholder_identity_id varchar NULL, + plan_code varchar NULL, + policy_entry_date date NULL, + remark varchar NULL, + closed_reason varchar NULL, + closed_other_reason varchar NULL, + appointment_id bigserial NOT NULL, + CONSTRAINT appointment_closed_info_pkey PRIMARY KEY (id) +); + + + diff --git "a/pamapi/src/doc/\351\240\220\347\264\204\345\226\256/\347\265\220\346\241\210API.txt" "b/pamapi/src/doc/\351\240\220\347\264\204\345\226\256/\347\265\220\346\241\210API.txt" new file mode 100644 index 0000000..016f7ad --- /dev/null +++ "b/pamapi/src/doc/\351\240\220\347\264\204\345\226\256/\347\265\220\346\241\210API.txt" @@ -0,0 +1,30 @@ +http post : + +http://localhost:8080/api/appointment/close + + +request body : + +��漱 +contactStatus: done + +{ + "policyholderIdentityId":"A123456789", + "planCode":"ATM", + "policyEntryDate":"2022-01-12", + "contactStatus":"done", + "appointmentId": 385 +} + + + +���漱 +contactStatus: closed + +{ + "contactStatus":"closed", + "closedReason":"other", + "closedOtherReason":"敹��末銝鞎�", + "appointmentId": 385, + "remark":"test remark" +} \ No newline at end of file diff --git a/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java b/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java new file mode 100644 index 0000000..10f2e86 --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java @@ -0,0 +1,25 @@ +package com.pollex.pam.appointment.process; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO; + +@Service +public class AppointmentProcess{ + + @Autowired + List<AppointmentProcessInterface> processList; + + public void process(AbstractAppointmentProcessDTO dto) { + AbstractAppointmentProcessDTO appointmentProcessDTO = (AbstractAppointmentProcessDTO)dto; + processList.stream().forEach(process ->{ + if(process.getProcessType() == appointmentProcessDTO.getContactStatus()) { + process.doProcess(appointmentProcessDTO); + } + }); + } + +} diff --git a/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java b/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java new file mode 100644 index 0000000..140f01f --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java @@ -0,0 +1,11 @@ +package com.pollex.pam.appointment.process; + +import com.pollex.pam.enums.ContactStatusEnum; +import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO; + +public interface AppointmentProcessInterface { + + void doProcess(AbstractAppointmentProcessDTO dto); + ContactStatusEnum getProcessType(); + +} diff --git a/pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java b/pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java new file mode 100644 index 0000000..8d728c5 --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java @@ -0,0 +1,35 @@ +package com.pollex.pam.appointment.process; + +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.pollex.pam.domain.AppointmentClosedInfo; +import com.pollex.pam.enums.ContactStatusEnum; +import com.pollex.pam.repository.AppointmentClosedInfoRepository; +import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO; +import com.pollex.pam.service.dto.ClosedProcessDTO; +import com.pollex.pam.service.dto.DoneProcessDTO; + +@Service +public class ClosedProcess implements AppointmentProcessInterface{ + + @Autowired + AppointmentClosedInfoRepository appointmentClosedInfoRepository; + + @Override + public void doProcess(AbstractAppointmentProcessDTO processDTO) { + ClosedProcessDTO doneProcess = (ClosedProcessDTO)processDTO; + BeanUtils.copyProperties(processDTO, doneProcess); + AppointmentClosedInfo closedInfo = new AppointmentClosedInfo(); + BeanUtils.copyProperties(doneProcess, closedInfo); + appointmentClosedInfoRepository.save(closedInfo); + } + + @Override + public ContactStatusEnum getProcessType() { + return ContactStatusEnum.CLOSED; + } + + +} diff --git a/pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java b/pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java new file mode 100644 index 0000000..feab05a --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java @@ -0,0 +1,34 @@ +package com.pollex.pam.appointment.process; + +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.pollex.pam.domain.AppointmentClosedInfo; +import com.pollex.pam.enums.ContactStatusEnum; +import com.pollex.pam.repository.AppointmentClosedInfoRepository; +import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO; +import com.pollex.pam.service.dto.DoneProcessDTO; + +@Service +public class DoneProcess implements AppointmentProcessInterface{ + + @Autowired + AppointmentClosedInfoRepository appointmentClosedInfoRepository; + + @Override + public void doProcess(AbstractAppointmentProcessDTO processDTO) { + DoneProcessDTO doneProcess = (DoneProcessDTO)processDTO; + BeanUtils.copyProperties(processDTO, doneProcess); + AppointmentClosedInfo closedInfo = new AppointmentClosedInfo(); + BeanUtils.copyProperties(doneProcess, closedInfo); + appointmentClosedInfoRepository.save(closedInfo); + } + + @Override + public ContactStatusEnum getProcessType() { + return ContactStatusEnum.DONE; + } + + +} diff --git a/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java b/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java index 6dbf168..5b6082b 100644 --- a/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java +++ b/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java @@ -4,13 +4,26 @@ import java.time.Instant; import java.util.List; -import javax.persistence.*; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EntityListeners; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.Table; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; import com.pollex.pam.enums.AppointmentStatusEnum; import com.pollex.pam.enums.ContactStatusEnum; -import org.springframework.data.annotation.CreatedDate; -import org.springframework.data.annotation.LastModifiedDate; -import org.springframework.data.jpa.domain.support.AuditingEntityListener; @EntityListeners(AuditingEntityListener.class) @Entity @@ -86,6 +99,15 @@ @JoinColumn(name = "appointment_id") @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE) private List<AppointmentMemo> appointmentMemoList; + +// @OneToOne(cascade = CascadeType.REMOVE,fetch=FetchType.EAGER) +//// @JoinColumn(name = "form_authority_id", referencedColumnName = "id") +// @JoinColumn(name = "appointment_id", referencedColumnName = "id") +// private AppointmentClosedInfo closedInfo; + +// @OneToOne(cascade = CascadeType.REMOVE +// , mappedBy = "appointment", fetch=FetchType.LAZY) +// private AppointmentClosedInfo closedInfo; public Long getId() { return id; @@ -246,6 +268,14 @@ public void setAppointmentMemoList(List<AppointmentMemo> appointmentMemoList) { this.appointmentMemoList = appointmentMemoList; } + +// public AppointmentClosedInfo getClosedInfo() { +// return closedInfo; +// } +// +// public void setClosedInfo(AppointmentClosedInfo closedInfo) { +// this.closedInfo = closedInfo; +// } diff --git a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentClosedInfo.java b/pamapi/src/main/java/com/pollex/pam/domain/AppointmentClosedInfo.java new file mode 100644 index 0000000..bc16a7a --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/domain/AppointmentClosedInfo.java @@ -0,0 +1,112 @@ +package com.pollex.pam.domain; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "appointment_closed_info") +public class AppointmentClosedInfo implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "policyholder_identity_id") + private String policyholderIdentityId; + + @Column(name = "plan_code") + private String planCode; + + @Column(name = "policy_entry_date") + private Date policyEntryDate; + + @Column(name = "remark") + private String remark; + + @Column(name = "closed_reason") + private String closedReason; + + @Column(name = "closed_other_reason") + private String closedOtherReason; + + @Column(name = "appointment_id") + private Long appointmentId; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getPolicyholderIdentityId() { + return policyholderIdentityId; + } + + public void setPolicyholderIdentityId(String policyholderIdentityId) { + this.policyholderIdentityId = policyholderIdentityId; + } + + public String getPlanCode() { + return planCode; + } + + public void setPlanCode(String planCode) { + this.planCode = planCode; + } + + public Date getPolicyEntryDate() { + return policyEntryDate; + } + + public void setPolicyEntryDate(Date policyEntryDate) { + this.policyEntryDate = policyEntryDate; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getClosedReason() { + return closedReason; + } + + public void setClosedReason(String closedReason) { + this.closedReason = closedReason; + } + + public String getClosedOtherReason() { + return closedOtherReason; + } + + public void setClosedOtherReason(String closedOtherReason) { + this.closedOtherReason = closedOtherReason; + } + + public Long getAppointmentId() { + return appointmentId; + } + + public void setAppointmentId(Long appointmentId) { + this.appointmentId = appointmentId; + } + + +} diff --git a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentClosedInfoRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/AppointmentClosedInfoRepository.java new file mode 100644 index 0000000..4b4454a --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/repository/AppointmentClosedInfoRepository.java @@ -0,0 +1,11 @@ +package com.pollex.pam.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.pollex.pam.domain.AppointmentClosedInfo; + +@Repository +public interface AppointmentClosedInfoRepository extends JpaRepository<AppointmentClosedInfo, Long>{ + +} diff --git a/pamapi/src/main/java/com/pollex/pam/service/AppointmentClosedInfoService.java b/pamapi/src/main/java/com/pollex/pam/service/AppointmentClosedInfoService.java new file mode 100644 index 0000000..dbed395 --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/AppointmentClosedInfoService.java @@ -0,0 +1,10 @@ +package com.pollex.pam.service; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +public class AppointmentClosedInfoService { + +} diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java new file mode 100644 index 0000000..feecdc2 --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java @@ -0,0 +1,28 @@ +package com.pollex.pam.service.dto; + +import com.pollex.pam.enums.ContactStatusEnum; + +public abstract class AbstractAppointmentProcessDTO{ + + private ContactStatusEnum contactStatus; + private Long appointmentId; + + public ContactStatusEnum getContactStatus() { + return contactStatus; + } + + public void setContactStatus(ContactStatusEnum contactStatus) { + this.contactStatus = contactStatus; + } + + public Long getAppointmentId() { + return appointmentId; + } + + public void setAppointmentId(Long appointmentId) { + this.appointmentId = appointmentId; + } + + + +} diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java new file mode 100644 index 0000000..cbcc51f --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java @@ -0,0 +1,68 @@ +package com.pollex.pam.service.dto; + +import java.util.Date; + +import com.pollex.pam.enums.ContactStatusEnum; + +public class AppointmentCloseDTO{ + + private String policyholderIdentityId; + private String planCode; + private Date policyEntryDate; + private String remark; + private String closedReason; + private String closedOtherReason; + private ContactStatusEnum contactStatus; + private Long appointmentId; + + public String getPolicyholderIdentityId() { + return policyholderIdentityId; + } + public void setPolicyholderIdentityId(String policyholderIdentityId) { + this.policyholderIdentityId = policyholderIdentityId; + } + public String getPlanCode() { + return planCode; + } + public void setPlanCode(String planCode) { + this.planCode = planCode; + } + public Date getPolicyEntryDate() { + return policyEntryDate; + } + public void setPolicyEntryDate(Date policyEntryDate) { + this.policyEntryDate = policyEntryDate; + } + public String getRemark() { + return remark; + } + public void setRemark(String remark) { + this.remark = remark; + } + public String getClosedReason() { + return closedReason; + } + public void setClosedReason(String closedReason) { + this.closedReason = closedReason; + } + public String getClosedOtherReason() { + return closedOtherReason; + } + public void setClosedOtherReason(String closedOtherReason) { + this.closedOtherReason = closedOtherReason; + } + public ContactStatusEnum getContactStatus() { + return contactStatus; + } + public void setContactStatus(ContactStatusEnum contactStatus) { + this.contactStatus = contactStatus; + } + public Long getAppointmentId() { + return appointmentId; + } + public void setAppointmentId(Long appointmentId) { + this.appointmentId = appointmentId; + } + + +} diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/ClosedProcessDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/ClosedProcessDTO.java new file mode 100644 index 0000000..9b18da4 --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/dto/ClosedProcessDTO.java @@ -0,0 +1,29 @@ +package com.pollex.pam.service.dto; + +public class ClosedProcessDTO extends AbstractAppointmentProcessDTO{ + + private String remark; + private String closedReason; + private String closedOtherReason; + + public String getRemark() { + return remark; + } + public void setRemark(String remark) { + this.remark = remark; + } + public String getClosedReason() { + return closedReason; + } + public void setClosedReason(String closedReason) { + this.closedReason = closedReason; + } + public String getClosedOtherReason() { + return closedOtherReason; + } + public void setClosedOtherReason(String closedOtherReason) { + this.closedOtherReason = closedOtherReason; + } + + +} diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/DoneProcessDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/DoneProcessDTO.java new file mode 100644 index 0000000..2c9881a --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/dto/DoneProcessDTO.java @@ -0,0 +1,39 @@ +package com.pollex.pam.service.dto; + +import java.util.Date; + +public class DoneProcessDTO extends AbstractAppointmentProcessDTO{ + + private String policyholderIdentityId; + private String planCode; + private Date policyEntryDate; + private String remark; + + public String getPolicyholderIdentityId() { + return policyholderIdentityId; + } + public void setPolicyholderIdentityId(String policyholderIdentityId) { + this.policyholderIdentityId = policyholderIdentityId; + } + public String getPlanCode() { + return planCode; + } + public void setPlanCode(String planCode) { + this.planCode = planCode; + } + public Date getPolicyEntryDate() { + return policyEntryDate; + } + public void setPolicyEntryDate(Date policyEntryDate) { + this.policyEntryDate = policyEntryDate; + } + public String getRemark() { + return remark; + } + public void setRemark(String remark) { + this.remark = remark; + } + + + +} diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java index b65aa75..7a303c6 100644 --- a/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java +++ b/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java @@ -1,14 +1,22 @@ package com.pollex.pam.web.rest; +import com.pollex.pam.appointment.process.AppointmentProcess; import com.pollex.pam.domain.Appointment; +import com.pollex.pam.enums.ContactStatusEnum; import com.pollex.pam.service.SendMsgService; import com.pollex.pam.service.dto.AppointmentUpdateDTO; +import com.pollex.pam.service.dto.ClosedProcessDTO; +import com.pollex.pam.service.dto.DoneProcessDTO; + +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import com.pollex.pam.service.AppointmentService; import com.pollex.pam.service.SatisfactionService; +import com.pollex.pam.service.dto.AppointmentCloseDTO; import com.pollex.pam.service.dto.AppointmentCreateDTO; import com.pollex.pam.service.dto.AppointmentCustomerViewDTO; @@ -24,6 +32,9 @@ @Autowired SendMsgService sendMsgService; + + @Autowired + AppointmentProcess abstractAppointmentProcess; @PutMapping("") public ResponseEntity<Void> updateAppointment(@RequestBody AppointmentUpdateDTO appointment) { @@ -59,4 +70,24 @@ appointmentService.recordConsultantReadTime(appointmentId); return ResponseEntity.noContent().build(); } + + @PostMapping("/close") + public ResponseEntity<Void> closeAppointment(@RequestBody AppointmentCloseDTO closeDTO) { + + if(closeDTO.getContactStatus() == ContactStatusEnum.DONE) { + DoneProcessDTO dto = new DoneProcessDTO(); + BeanUtils.copyProperties(closeDTO, dto); + abstractAppointmentProcess.process(dto); + }else if(closeDTO.getContactStatus() == ContactStatusEnum.CLOSED){ + ClosedProcessDTO dto = new ClosedProcessDTO(); + BeanUtils.copyProperties(closeDTO, dto); + abstractAppointmentProcess.process(dto); + } + +// Appointment ap = appointmentService.findById(closeDTO.getAppointmentId()); +// System.out.println("getClosedInfo().getClosedOtherReason()::"+ap.getClosedInfo().getClosedOtherReason()); + + + return ResponseEntity.noContent().build(); + } } -- Gitblit v1.8.0