From c2a3da1d4071f2f1d6a5beb63b8442920767584e Mon Sep 17 00:00:00 2001
From: Jack <jack.su@pollex.com.tw>
Date: 星期二, 18 一月 2022 20:33:52 +0800
Subject: [PATCH] [ADD] 結案明細編輯API

---
 pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java               |   28 +++++++++++---
 pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java |    4 +
 pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java          |   18 +++++++-
 pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java       |    9 ++++
 pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java                    |   18 +++++++++
 pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java                 |   28 ++++++++++++--
 pamapi/src/doc/預約單/結案API.txt                                                             |    5 ++
 pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java                 |    9 ++++
 8 files changed, 104 insertions(+), 15 deletions(-)

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"
index 430265f..0b0e66a 100644
--- "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"
@@ -1,7 +1,10 @@
 http post : 
-
+�憓���敦:
 http://localhost:8080/api/appointment/close
 
+��蝯��敦:
+http://localhost:8080/api/appointment/close/info/edit
+
 
 request body :
 
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
index 4f72f86..323773b 100644
--- a/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java
+++ b/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());
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
index 140f01f..ab99efa 100644
--- a/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java
+++ b/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();
 	
 }
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
index 978cb7c..2e75575 100644
--- a/pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java
+++ b/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);
+	}
 	
 	
 }
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
index e65a084..9034f50 100644
--- a/pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java
+++ b/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;
+	}
 	
 }
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
index feecdc2..13b270d 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java
+++ b/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;
+//	}
+
 	
 	
 }
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
index cbcc51f..bc9a8e2 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java
+++ b/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;
+//	}
+	
+	
 	
 	
 }
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 64a4d29..dd2fc14 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
@@ -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();
+    }
 }

--
Gitblit v1.8.0