From b8e9d7e76c7f910c770036531eeb7b4141913552 Mon Sep 17 00:00:00 2001 From: vanitha1822 Date: Thu, 8 Jan 2026 15:32:17 +0530 Subject: [PATCH] fix: add pagination and fix the age issue --- .../BeneficiaryRegistrationController.java | 6 +- .../beneficiary/IEMRSearchUserService.java | 2 +- .../IEMRSearchUserServiceImpl.java | 4 +- .../IdentityBeneficiaryService.java | 2 +- .../IdentityBeneficiaryServiceImpl.java | 72 +++++++++++-------- 5 files changed, 50 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/iemr/common/controller/beneficiary/BeneficiaryRegistrationController.java b/src/main/java/com/iemr/common/controller/beneficiary/BeneficiaryRegistrationController.java index 3784f3a9..228535e3 100644 --- a/src/main/java/com/iemr/common/controller/beneficiary/BeneficiaryRegistrationController.java +++ b/src/main/java/com/iemr/common/controller/beneficiary/BeneficiaryRegistrationController.java @@ -39,6 +39,7 @@ import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.fasterxml.jackson.core.JsonProcessingException; @@ -349,7 +350,8 @@ public String searchUserByPhone( @Operation(summary = "Provide the list of beneficiaries using Elasticsearch") @RequestMapping(value = "/searchUser", method = RequestMethod.POST, headers = "Authorization") - public String searchUser(@RequestBody String request, HttpServletRequest httpRequest) { + public String searchUser(@RequestBody String request, HttpServletRequest httpRequest, @RequestParam(defaultValue = "0") int page, + @RequestParam(defaultValue = "100") int size) { OutputResponse response = new OutputResponse(); try { logger.info("Universal search request received"); @@ -379,7 +381,7 @@ public String searchUser(@RequestBody String request, HttpServletRequest httpReq } logger.info("Searching with query: {}, userId: {}, is1097: {}", searchQuery, userID, is1097); - String result = iemrSearchUserService.searchUser(searchQuery, userID, auth, is1097); + String result = iemrSearchUserService.searchUser(searchQuery, userID, auth, is1097, page, size); if (result == null || result.trim().isEmpty()) { response.setError(200, "No beneficiaries found"); diff --git a/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserService.java b/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserService.java index e39cfcab..397e3331 100644 --- a/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserService.java +++ b/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserService.java @@ -38,7 +38,7 @@ String findByBeneficiaryPhoneNo(BenPhoneMap benPhoneMap, Integer pageNo, Integer String findBeneficiary(BeneficiaryModel request, String auth) throws Exception; - String searchUser(String searchQuery, Integer userId, String auth, Boolean is1097) throws Exception; + String searchUser(String searchQuery, Integer userId, String auth, Boolean is1097, int page, int size) throws Exception; String findBeneficiaryES(BeneficiaryModel i_beneficiary, Integer userId, String auth) throws Exception; diff --git a/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserServiceImpl.java b/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserServiceImpl.java index 28d664c8..c30e23b3 100644 --- a/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserServiceImpl.java +++ b/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserServiceImpl.java @@ -329,7 +329,7 @@ private void setBeneficiaryGender(List iBeneficiary) { * Universal search using Elasticsearch */ @Override - public String searchUser(String searchQuery, Integer userId, String auth, Boolean is1097) throws Exception { + public String searchUser(String searchQuery, Integer userId, String auth, Boolean is1097, int page, int size) throws Exception { try { if (searchQuery == null || searchQuery.trim().isEmpty()) { @@ -339,7 +339,7 @@ public String searchUser(String searchQuery, Integer userId, String auth, Boolea logger.info("Universal search with query: {}, userId: {}", searchQuery, userId); Map response = identityBeneficiaryService.searchBeneficiariesUsingES( - searchQuery, userId, auth, is1097); + searchQuery, userId, auth, is1097, page, size); ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(response); diff --git a/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryService.java b/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryService.java index 41a132b0..1a761a3c 100644 --- a/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryService.java +++ b/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryService.java @@ -73,7 +73,7 @@ public List getBeneficiaryListByFamilyId(String familyId, Stri public List getBeneficiaryListByGovId(String identity, String auth, Boolean is1097) throws IEMRException; - public Map searchBeneficiariesUsingES(String query, Integer userId, String auth, Boolean is1097) throws IEMRException; + public Map searchBeneficiariesUsingES(String query, Integer userId, String auth, Boolean is1097, int page, int size) throws IEMRException; } diff --git a/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryServiceImpl.java b/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryServiceImpl.java index 350f2527..5a468d86 100644 --- a/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryServiceImpl.java +++ b/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryServiceImpl.java @@ -100,7 +100,6 @@ public List getBeneficiaryListByIDs(HashSet benIdList, String String s = data1.get("data").getAsString(); JsonArray responseArray = parser.parse(s).getAsJsonArray(); - for (JsonElement jsonElement : responseArray) { BeneficiariesDTO callRequest = inputMapper.gson().fromJson(jsonElement.toString(), @@ -116,26 +115,28 @@ public List getBeneficiaryListByIDs(HashSet benIdList, String * Call Identity API's Elasticsearch universal search */ @Override - public Map searchBeneficiariesUsingES(String query, Integer userId, String auth, Boolean is1097) + public Map searchBeneficiariesUsingES(String query, Integer userId, String auth, Boolean is1097, + int page, int size) throws IEMRException { Map response = new HashMap<>(); - try { - HashMap headers = new HashMap<>(); - if (auth != null && !auth.isEmpty()) { - headers.put("Authorization", auth); - } - - String baseUrl = ConfigProperties - .getPropertyByName("identity-api-url-searchByES") - .replace( - IDENTITY_BASE_URL, - (Boolean.TRUE.equals(is1097)) ? identity1097BaseURL : identityBaseURL - ); + try { + HashMap headers = new HashMap<>(); + if (auth != null && !auth.isEmpty()) { + headers.put("Authorization", auth); + } + + String baseUrl = ConfigProperties + .getPropertyByName("identity-api-url-searchByES") + .replace( + IDENTITY_BASE_URL, + (Boolean.TRUE.equals(is1097)) ? identity1097BaseURL : identityBaseURL); StringBuilder url = new StringBuilder(baseUrl) - .append("?query=").append(URLEncoder.encode(query, StandardCharsets.UTF_8)); + .append("?query=").append(URLEncoder.encode(query, StandardCharsets.UTF_8)) + .append("&page=").append(page) + .append("&size=").append(size); if (userId != null) { url.append("&userId=").append(userId); @@ -143,15 +144,20 @@ public Map searchBeneficiariesUsingES(String query, Integer user logger.info("Calling Identity ES search URL: {}", url); - String result = httpUtils.get(url.toString()); - - if (result == null || result.isEmpty()) { - response.put("data", Collections.emptyList()); - response.put("statusCode", 200); - response.put("status", "Success"); - response.put("errorMessage", "Success"); - return response; - } + String result = httpUtils.get(url.toString()); + + if (result == null || result.isEmpty()) { + response.put("data", Collections.emptyList()); + response.put("totalResults", 0); + response.put("currentPage", page); + response.put("pageSize", size); + response.put("totalPages", 0); + response.put("hasMore", false); + response.put("statusCode", 200); + response.put("status", "Success"); + response.put("errorMessage", "Success"); + return response; + } ObjectMapper mapper = new ObjectMapper(); @@ -167,10 +173,18 @@ public Map searchBeneficiariesUsingES(String query, Integer user throw new IEMRException(errMsg); } - response.put("data", rootNode.path("data")); - response.put("statusCode", 200); - response.put("status", "Success"); - response.put("errorMessage", "Success"); + response.put("data", rootNode.path("data")); + response.put("totalResults", rootNode.path("totalResults").asLong(0)); + response.put("currentPage", rootNode.path("currentPage").asInt(page)); + response.put("pageSize", rootNode.path("pageSize").asInt(size)); + response.put("totalPages", rootNode.path("totalPages").asInt(0)); + response.put("hasMore", rootNode.path("hasMore").asBoolean(false)); + response.put("statusCode", 200); + response.put("status", "Success"); + response.put("errorMessage", "Success"); + + logger.info("ES Search completed: {} results on page {} of {}", + rootNode.path("data").size(), page + 1, rootNode.path("totalPages").asInt(0)); return response; @@ -208,7 +222,6 @@ public List getPartialBeneficiaryListByIDs(HashSet benI String s = data1.get("data").getAsString(); JsonArray responseArray = parser.parse(s).getAsJsonArray(); - for (JsonElement jsonElement : responseArray) { BeneficiariesPartialDTO callRequest = inputMapper.gson().fromJson(jsonElement.toString(), @@ -573,7 +586,6 @@ public List searchBeneficiaryList(String identitySearchDTO, St String s = data1.get("data").getAsString(); JsonArray responseArray = parser.parse(s).getAsJsonArray(); - for (JsonElement jsonElement : responseArray) { BeneficiariesDTO callRequest = inputMapper.gson().fromJson(jsonElement.toString(), BeneficiariesDTO.class);