Refactor CRM application controllers and services

Replaced InProcessApplicationsController with PendingCRMApplicationsController to handle individual and business pending CRM applications. Updated InProcessApplicationsService to separate logic for individual and business workflows, adding new methods for pending CRM retrieval. Adjusted AconnectURI and TokenBypassURI constants to support new endpoints.
dev-pending-20-01-2026-V2
Naeem Ullah 2 weeks ago
parent be297f507f
commit e07a74565d

@ -1,32 +0,0 @@
package com.mfsys.aconnect.client.controller;
import com.mfsys.aconnect.client.dto.InProcessApplicationsRequestDTO;
import com.mfsys.aconnect.client.service.InProcessApplicationsService;
import com.mfsys.common.configuration.constant.AconnectURI;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
public class InProcessApplicationsController {
private final InProcessApplicationsService service;
public InProcessApplicationsController(
InProcessApplicationsService service) {
this.service = service;
}
@PostMapping(AconnectURI.CHECK_PENDING_APPLICATIONS_URI)
public ResponseEntity<String> getInProcessApplications(@RequestBody InProcessApplicationsRequestDTO request,
@RequestHeader("Authorization") String token, @RequestHeader("SUS_USERCODE") String susUserCode) {
return service.getInProcessApplications(request, token, susUserCode);
}
@GetMapping(AconnectURI.CHECK_INDIVIDUAL_APPLICATIONS_URI)
public ResponseEntity<String>getIndividualApplication(
@RequestParam("POR_ORGACODE") String porOrgacode,@RequestParam("formId") String formId,
@RequestParam(value = "includeFields", required = false) String includeFields,
@RequestHeader("Authorization") String token, @RequestHeader("SUS_USERCODE") String susUserCode){
return service.getPendingIndividualApplication(porOrgacode, formId, includeFields, token, susUserCode);
}
}

@ -0,0 +1,38 @@
package com.mfsys.aconnect.client.controller;
import com.mfsys.aconnect.client.dto.InProcessApplicationsRequestDTO;
import com.mfsys.aconnect.client.service.InProcessApplicationsService;
import com.mfsys.common.configuration.constant.AconnectURI;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
public class PendingCRMApplicationsController {
private final InProcessApplicationsService inProcessApplicationsService;
public PendingCRMApplicationsController(
InProcessApplicationsService inProcessApplicationsService) {
this.inProcessApplicationsService = inProcessApplicationsService;
}
@PostMapping(AconnectURI.GET_INDIVIDUAL_PENDING_APPLICATIONS_URI)
public ResponseEntity<String> getIndividualPendingCRMs(@RequestBody InProcessApplicationsRequestDTO request,
@RequestHeader("Authorization") String token, @RequestHeader("SUS_USERCODE") String susUserCode) {
return inProcessApplicationsService.getIndividualPendingCRM(request, token, susUserCode);
}
@PostMapping(AconnectURI.GET_BUSINESS_PENDING_APPLICATIONS_URI)
public ResponseEntity<String> getBusinessPendingCRMs(@RequestBody InProcessApplicationsRequestDTO request,
@RequestHeader("Authorization") String token, @RequestHeader("SUS_USERCODE") String susUserCode) {
return inProcessApplicationsService.getBusinessPendingCRM(request, token, susUserCode);
}
@GetMapping(AconnectURI.CHECK_INDIVIDUAL_APPLICATIONS_URI)
public ResponseEntity<String>getIndividualApplication(
@RequestParam("POR_ORGACODE") String porOrgacode,@RequestParam("formId") String formId,
@RequestParam(value = "includeFields", required = false) String includeFields,
@RequestHeader("Authorization") String token, @RequestHeader("SUS_USERCODE") String susUserCode){
return inProcessApplicationsService.getPendingIndividualApplication(porOrgacode, formId, includeFields, token, susUserCode);
}
}

@ -64,7 +64,42 @@ public class InProcessApplicationsService {
);
}
private LazyListRequestDTO buildLazyListPayload(InProcessApplicationsRequestDTO req) {
private Map<String, Object> businessBuildWorkflowFilter(InProcessApplicationsRequestDTO req) {
List<Object> workflowQueries = new ArrayList<>();
if (req.isIncludeRegistrationPending()) {
workflowQueries.add(Map.of(
"params", List.of(
param("workFlowStage", "BN_WF_BP_REGISTRATION", "text", "="),
param("applicationStatus", "Pending", "text", "=")
),
"operator", "$and"
));
}
if (req.isIncludeAuthorizationApproved()) {
workflowQueries.add(Map.of(
"params", List.of(
param("workFlowStage", "BN_WF_BP_AUTHORIZATION", "text", "="),
param("applicationStatus", "Approved", "text", "="),
param("postProcessCompleted", true, "boolean", "!=")
),
"operator", "$and"
));
}
workflowQueries.add(Map.of(
"params", List.of(
param("workFlowStage", "BN_WF_BP_REGISTRATION", "text", "="),
param("applicationStatus", "[\"Rejected\",\"Hold\"]", "text", "in")
),
"operator", "$and"
));
return Map.of(
"nestedQuery", workflowQueries,
"operator", "$or"
);
}
private LazyListRequestDTO indivdualBuildLazyListPayload(InProcessApplicationsRequestDTO req) {
List<Object> rootQueries = new ArrayList<>();
@ -105,12 +140,76 @@ public class InProcessApplicationsService {
return dto;
}
public ResponseEntity<String> getInProcessApplications(
private LazyListRequestDTO BusinessBuildLazyListPayload(InProcessApplicationsRequestDTO req) {
List<Object> rootQueries = new ArrayList<>();
rootQueries.add(Map.of(
"params", List.of(
param("POR_ORGACODE", req.getPorOrgacode(), "text", "="),
param("POR_ORGACODE_ENTRY", req.getPorOrgacode(), "text", "=")
),
"operator", "$or"
));
rootQueries.add(Map.of(
"params", List.of(
param("PLC_LOCACODE", "[\"" + req.getPlclocacode() + "\"]", "text", "in"),
param("PLC_LOCACODE_ENTRY", "[\"" + req.getPlclocacode() + "\"]", "text", "in")
),
"operator", "$or"
));
rootQueries.add(businessBuildWorkflowFilter(req));
LazyListRequestDTO dto = new LazyListRequestDTO();
dto.setCollection("BN_WF_BP_BUSINESSPROFILE");
dto.setFilter(Map.of(
"nestedQuery", rootQueries,
"operator", "$and"
));
if (req.getLimit() != null) {
dto.setLimit(req.getLimit());
}
dto.setSortBy("{\"workFlowRefNum\":-1}");
dto.setIncludeFields(List.of(
"CMP_CUSTCODE", "CMP_COMPANYNAME", "workFlowRefNum", "applicationStatus", "workFlowStage",
"workFlowStage", "workFlowLog", "postProcessCompleted", "failureCause",
"postProcessInProgress"
));
return dto;
}
public ResponseEntity<String> getIndividualPendingCRM(
InProcessApplicationsRequestDTO request, String token, String susUserCode) {
String url = crmURI + "/crm" + "/mongodb/lazylist";
LazyListRequestDTO payload = indivdualBuildLazyListPayload(request);
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", token);
headers.set("POR_ORGACODE", request.getPorOrgacode());
headers.set("SUS_USERCODE", susUserCode);
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<LazyListRequestDTO> entity = new HttpEntity<>(payload, headers);
return restTemplate.exchange(
url,
HttpMethod.POST,
entity,
String.class
);
}
public ResponseEntity<String> getBusinessPendingCRM(
InProcessApplicationsRequestDTO request, String token, String susUserCode) {
String url = crmURI + "/crm" + "/mongodb/lazylist";
LazyListRequestDTO payload = buildLazyListPayload(request);
LazyListRequestDTO payload = BusinessBuildLazyListPayload(request);
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", token);

@ -30,8 +30,11 @@ public interface AconnectURI {
String GL_TO_ACCOUNT_TRANSACTION_URI = TRANSACTION_URI + "/gl-account";
String INDIVIDUAL_CRM_CREATION_URI = CRM + INDIVIDUAL + "/create";
String APPROVE_INDIVIDUAL_CRM_URI = CRM + INDIVIDUAL + "/approve";
String CHECK_PENDING_APPLICATIONS_URI = CRM + "/inprocess";
String GET_INDIVIDUAL_PENDING_APPLICATIONS_URI = CRM + INDIVIDUAL + "/pending-workflow";
String CHECK_INDIVIDUAL_PENDING_APPLICATIONS_URI = CRM + INDIVIDUAL + "/inprocess";
String CHECK_INDIVIDUAL_APPLICATIONS_URI = CRM + INDIVIDUAL + "/inprocess";
String GET_BUSINESS_PENDING_APPLICATIONS_URI = CRM + BUSINESS + "/pending-workflow";
String CHECK_BUSINESS_APPLICATIONS_URI = CRM + BUSINESS + "/inprocess";
String BUSINESS_CRM_CREATION_URI = CRM + BUSINESS + "/create";
String INDIVIDUAL_DEPOSIT_CREATION_URI = DEPOSIT + INDIVIDUAL + "/create";
String UPDATE_DEPOSIT_CREATION_URI = DEPOSIT + INDIVIDUAL + "/approval";

@ -13,6 +13,8 @@ public interface TokenBypassURI {
"/aconnect/transactions/accounttogl",
"/aconnect/crm/individual/approve",
"/aconnect/crm/inprocess",
"/aconnect/crm/individual/pending-workflow",
"/aconnect/crm/business/pending-workflow",
"/aconnect/crm/individual/inprocess",
"/aconnect/account/miscDetails",
"/deposit/account/miscDetails",

Loading…
Cancel
Save