From ad3d9e645b6fb31760c1aa2b730712b85e153aa3 Mon Sep 17 00:00:00 2001 From: Wasiullah Khan Jadoon Date: Tue, 27 Jan 2026 14:36:04 +0500 Subject: [PATCH] Document Upload Document Uploading for CRM and Deposit --- .../controller/UploadDocumentController.java | 36 ++++++++ .../client/service/UploadDocumentService.java | 85 +++++++++++++++++++ .../configuration/constant/AconnectURI.java | 2 + .../constant/TokenBypassURI.java | 2 + .../configuration/filter/LoggingFilter.java | 10 +++ 5 files changed, 135 insertions(+) create mode 100644 aconnect/src/main/java/com/mfsys/aconnect/client/controller/UploadDocumentController.java create mode 100644 aconnect/src/main/java/com/mfsys/aconnect/client/service/UploadDocumentService.java diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/UploadDocumentController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/UploadDocumentController.java new file mode 100644 index 0000000..c1ba0a2 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/UploadDocumentController.java @@ -0,0 +1,36 @@ +package com.mfsys.aconnect.client.controller; + +import com.mfsys.aconnect.client.service.UploadDocumentService; +import com.mfsys.common.configuration.constant.AconnectURI; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; +import java.util.Map; + +@RestController +public class UploadDocumentController { + + private final UploadDocumentService uploadDocumentService; + + public UploadDocumentController(UploadDocumentService uploadDocumentService){ + this.uploadDocumentService = uploadDocumentService; + } + + @PostMapping(value = AconnectURI.DEPOSIT_DOCUMENT_UPLOAD, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResponseEntity> uploadDepositDocuments(@RequestParam("file") List files, + @RequestHeader("POR_ORGACODE") String porOrgacode, @RequestHeader("Authorization") String token, + @RequestHeader("SUS_USERCODE") String susUserCode) { + return uploadDocumentService.depositCacheFiles(files, porOrgacode, susUserCode, token); + } + + @PostMapping(value = AconnectURI.CRM_DOCUMENT_UPLOAD, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResponseEntity> uploadCRMDocuments(@RequestParam("file") List files, + @RequestHeader("POR_ORGACODE") String porOrgacode, @RequestHeader("Authorization") String token, + @RequestHeader("SUS_USERCODE") String susUserCode) { + return uploadDocumentService.crmCacheFiles(files, porOrgacode, susUserCode, token); + } + +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/UploadDocumentService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/UploadDocumentService.java new file mode 100644 index 0000000..791072b --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/service/UploadDocumentService.java @@ -0,0 +1,85 @@ +package com.mfsys.aconnect.client.service; + +import org.springframework.util.*; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.*; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.multipart.MultipartFile; + +import java.util.*; + +@Service +public class UploadDocumentService { + + @Value("${app.deposit.uri}") + private String depositURI; + + @Value("${app.crm.uri}") + private String crmURI; + + private final RestTemplate restTemplate; + + public UploadDocumentService(RestTemplate restTemplate){ + this.restTemplate = restTemplate; + } + + public ResponseEntity> depositCacheFiles( + List files, String porOrgacode, String susUserCode, String token) { + + String url = depositURI + "/deposit" + "/mongodb/cacheFiles"; + + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", token); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", susUserCode); + headers.setContentType(MediaType.MULTIPART_FORM_DATA); + + MultiValueMap body = new LinkedMultiValueMap<>(); + + body.add("POR_ORGACODE", porOrgacode); + + for (MultipartFile file : files) { + body.add("file", file.getResource()); + } + + HttpEntity> requestEntity = new HttpEntity<>(body, headers); + + return restTemplate.exchange( + url, + HttpMethod.POST, + requestEntity, + new ParameterizedTypeReference>() {} + ); + } + + public ResponseEntity> crmCacheFiles( + List files, String porOrgacode, String susUserCode, String token) { + + String url = crmURI + "/crm" + "/mongodb/cacheFiles"; + + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", token); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", susUserCode); + headers.setContentType(MediaType.MULTIPART_FORM_DATA); + + MultiValueMap body = new LinkedMultiValueMap<>(); + + body.add("POR_ORGACODE", porOrgacode); + + for (MultipartFile file : files) { + body.add("file", file.getResource()); + } + + HttpEntity> requestEntity = new HttpEntity<>(body, headers); + + return restTemplate.exchange( + url, + HttpMethod.POST, + requestEntity, + new ParameterizedTypeReference>() {} + ); + } +} diff --git a/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java b/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java index 0576733..43f432c 100644 --- a/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java +++ b/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java @@ -45,6 +45,8 @@ public interface AconnectURI { String INDIVIDUAL_DEPOSIT_CREATION_URI = DEPOSIT + INDIVIDUAL + "/create"; String APPROVE_INDIVIDUAL_DEPOSIT_CREATION_URI = DEPOSIT + INDIVIDUAL + "/approval"; String APPROVE_BUSINESS_DEPOSIT_CREATION_URI = DEPOSIT + BUSINESS + "/approval"; + String CRM_DOCUMENT_UPLOAD = CRM + "/uploadDocument"; + String DEPOSIT_DOCUMENT_UPLOAD = DEPOSIT + "/uploadDocument"; String BUSINESS_DEPOSIT_CREATION_URI = DEPOSIT + BUSINESS + "/create"; diff --git a/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java b/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java index 86e14e9..63e3ccc 100644 --- a/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java +++ b/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java @@ -10,6 +10,8 @@ public interface TokenBypassURI { "/aconnect/authentication/signup", "/aconnect/signin", + "/aconnect/deposit/uploadDocument", + "/aconnect/crm/uploadDocument", "/aconnect/transactions/accounttogl", "/aconnect/crm/individual/approve", "/aconnect/crm/inprocess", diff --git a/common/src/main/java/com/mfsys/common/configuration/filter/LoggingFilter.java b/common/src/main/java/com/mfsys/common/configuration/filter/LoggingFilter.java index eb21635..b69a1ea 100644 --- a/common/src/main/java/com/mfsys/common/configuration/filter/LoggingFilter.java +++ b/common/src/main/java/com/mfsys/common/configuration/filter/LoggingFilter.java @@ -31,6 +31,16 @@ public class LoggingFilter extends OncePerRequestFilter { this.objectMapper = new ObjectMapper(); } + @Override + protected boolean shouldNotFilter(HttpServletRequest request) { + + String uri = request.getRequestURI(); + String method = request.getMethod(); + + return "POST".equalsIgnoreCase(method) && ("/aconnect/deposit/uploadDocument".equals(uri) || + "/aconnect/crm/uploadDocument".equals(uri)); + } + @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {