From 21593efbfab823a0d352be8fafec6f7be13cf1cd Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Mon, 24 Mar 2025 14:46:00 +0530 Subject: [PATCH 1/2] Scheduler changes --- .../grievance/GrievanceDataRepo.java | 4 +- .../grievance/GrievanceDataSyncImpl.java | 74 ++++++++++--------- .../GrievanceHandlingServiceImpl.java | 3 +- 3 files changed, 41 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/iemr/common/repository/grievance/GrievanceDataRepo.java b/src/main/java/com/iemr/common/repository/grievance/GrievanceDataRepo.java index 1ff10da6..47b8e848 100644 --- a/src/main/java/com/iemr/common/repository/grievance/GrievanceDataRepo.java +++ b/src/main/java/com/iemr/common/repository/grievance/GrievanceDataRepo.java @@ -44,8 +44,8 @@ public int allocateGrievance(@Param("grievanceId") Long grievanceId, @Query("select grievance.preferredLanguage, count(distinct grievance.grievanceId) " - + "from GrievanceDetails grievance " + "where " - + "grievance.userID = :userID " + "and grievance.deleted = false " + + "from GrievanceDetails grievance where " + + "grievance.userID = :userID and grievance.isCompleted=false and grievance.deleted = false " + "group by grievance.preferredLanguage") public Set fetchGrievanceRecordsCount(@Param("userID") Integer userID); diff --git a/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java b/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java index d4c6dce4..d50b1df1 100644 --- a/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java +++ b/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java @@ -259,42 +259,44 @@ public String dataSyncToGrievance() { if (transactionDetailsList != null && !transactionDetailsList.isEmpty()) { for (JsonElement transactionElement : transactionDetailsList) { JsonObject transactionDetailsJson = transactionElement.getAsJsonObject(); - GrievanceTransaction grievanceTransaction = new GrievanceTransaction(); - gwid = grievanceDataRepo.getUniqueGwid(grievanceID); - grievanceTransaction.setGwid(gwid); - grievanceTransaction.setGrievanceId(grievanceID); - - grievanceTransaction - .setActionTakenBy(transactionDetailsJson.has("actionTakenBy") - ? transactionDetailsJson.get("actionTakenBy").getAsString() - : null); - grievanceTransaction.setStatus(transactionDetailsJson.has("status") - ? transactionDetailsJson.get("status").getAsString() - : null); - grievanceTransaction.setFileName(transactionDetailsJson.has(FILE_NAME) - ? transactionDetailsJson.get(FILE_NAME).getAsString() - : null); - grievanceTransaction.setFileType(transactionDetailsJson.has(FILE_TYPE) - ? transactionDetailsJson.get(FILE_TYPE).getAsString() - : null); - grievanceTransaction.setRedressed(transactionDetailsJson.has("redressed") - ? transactionDetailsJson.get("redressed").getAsString() - : null); - grievanceTransaction.setCreatedAt(Timestamp - .valueOf(transactionDetailsJson.get("createdAt").getAsString())); - grievanceTransaction.setUpdatedAt(Timestamp - .valueOf(transactionDetailsJson.get("updatedAt").getAsString())); - grievanceTransaction.setComments(transactionDetailsJson.has("comment") - ? transactionDetailsJson.get("comment").getAsString() - : null); - grievanceTransaction.setCreatedBy("Admin"); - Timestamp timestamp = new Timestamp(System.currentTimeMillis()); - grievanceTransaction.setCreatedDate(timestamp); - - grievanceTransactionListObj = grievanceTransactionRepo - .save(grievanceTransaction); - grievanceTransactionList.add(grievanceTransactionListObj); - + JsonArray asJsonArray = transactionDetailsJson.get("transaction") + .getAsJsonArray(); + for (JsonElement arr : asJsonArray) { + JsonObject transaction = transactionElement.getAsJsonObject(); + GrievanceTransaction grievanceTransaction = new GrievanceTransaction(); + gwid = grievanceDataRepo.getUniqueGwid(grievanceID); + grievanceTransaction.setGwid(gwid); + grievanceTransaction.setGrievanceId(grievanceID); + grievanceTransaction.setActionTakenBy(transaction.has("actionTakenBy") + ? transaction.get("actionTakenBy").getAsString() + : null); + grievanceTransaction.setStatus(transaction.has("status") + ? transaction.get("status").getAsString() + : null); + grievanceTransaction.setFileName(transaction.has(FILE_NAME) + ? transaction.get(FILE_NAME).getAsString() + : null); + grievanceTransaction.setFileType(transaction.has(FILE_TYPE) + ? transaction.get(FILE_TYPE).getAsString() + : null); + grievanceTransaction.setRedressed(transaction.has("redressed") + ? transaction.get("redressed").getAsString() + : null); + grievanceTransaction.setCreatedAt( + Timestamp.valueOf(transaction.get("createdAt").getAsString())); + grievanceTransaction.setUpdatedAt( + Timestamp.valueOf(transaction.get("updatedAt").getAsString())); + grievanceTransaction.setComments(transaction.has("comment") + ? transaction.get("comment").getAsString() + : null); + grievanceTransaction.setCreatedBy("Admin"); + Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + grievanceTransaction.setCreatedDate(timestamp); + + grievanceTransactionListObj = grievanceTransactionRepo + .save(grievanceTransaction); + grievanceTransactionList.add(grievanceTransactionListObj); + } } } diff --git a/src/main/java/com/iemr/common/service/grievance/GrievanceHandlingServiceImpl.java b/src/main/java/com/iemr/common/service/grievance/GrievanceHandlingServiceImpl.java index c9296c3b..ded5322e 100644 --- a/src/main/java/com/iemr/common/service/grievance/GrievanceHandlingServiceImpl.java +++ b/src/main/java/com/iemr/common/service/grievance/GrievanceHandlingServiceImpl.java @@ -120,7 +120,6 @@ public String allocateGrievances(String request) throws Exception { public String allocatedGrievanceRecordsCount(String request) throws IEMRException, JSONException { GrievanceDetails grievanceRequest = InputMapper.gson().fromJson(request, GrievanceDetails.class); - Integer providerServiceMapID = grievanceRequest.getProviderServiceMapID(); Integer userID = grievanceRequest.getUserID(); Set resultSet = grievanceDataRepo.fetchGrievanceRecordsCount(userID); @@ -333,7 +332,7 @@ public List getFormattedGrievanceData(String request) thro ageFormatted, (Boolean) row[26], // retryNeeded (Integer) row[27], // callCounter - (Timestamp) row[17] //lastCall yet to fill + (Timestamp) row[18] //lastCall yet to fill ); // Extract transactions from the current row and add them to the grievance object From b7eeeb9bf52be0d5a8f2d56c1a68e743f8c7b243 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Mon, 24 Mar 2025 17:01:47 +0530 Subject: [PATCH 2/2] Scheduler changes --- .../grievance/GrievanceDataSyncImpl.java | 373 +++++++++--------- 1 file changed, 183 insertions(+), 190 deletions(-) diff --git a/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java b/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java index d50b1df1..e70a25e6 100644 --- a/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java +++ b/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java @@ -121,197 +121,197 @@ public String dataSyncToGrievance() { Long gwid; try { - while (count >= 0) { - RestTemplate restTemplate = new RestTemplate(); - if (GRIEVANCE_AUTH_TOKEN != null && GRIEVANCE_TOKEN_EXP != null - && GRIEVANCE_TOKEN_EXP > System.currentTimeMillis()) { - } else { - generateGrievanceAuthToken(); - } + RestTemplate restTemplate = new RestTemplate(); - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - headers.add(USER_AGENT_HEADER, USER_AGENT_VALUE); - headers.add("AUTHORIZATION", GRIEVANCE_AUTH_TOKEN); - - Date date = new Date(); - java.sql.Date sqlDate = new java.sql.Date(date.getTime()); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(sqlDate); - calendar.add(Calendar.DATE, -Integer.parseInt(grievanceDataSyncDuration)); - String json = prepareRequestObject(); - int contentLength = json.getBytes(StandardCharsets.UTF_8).length; - headers.add("Content-Length", String.valueOf(contentLength)); - HttpEntity request = new HttpEntity<>(json, headers); - String url = updateGrievanceDetails.replace("PageNumber", "1"); - ResponseEntity response = restTemplate.exchange(url, HttpMethod.POST, request, String.class); - - if (response != null && response.hasBody()) { - JSONObject obj = new JSONObject(response.getBody()); - if (obj != null && obj.has("data") && obj.has("status") && obj.getInt("status") == 200) { - logger.info("Grievance data details response received successfully "); - - String responseStr = response.getBody(); - JsonObject jsnOBJ = new JsonObject(); - JsonParser jsnParser = new JsonParser(); - JsonElement jsnElmnt = jsnParser.parse(responseStr); - jsnOBJ = jsnElmnt.getAsJsonObject(); - int total = jsnOBJ.get("total").getAsInt(); - String GrievanceUrl = updateGrievanceDetails.replace("PageNumber", String.valueOf(total)); - ResponseEntity grievienceResponse = restTemplate.exchange(GrievanceUrl, HttpMethod.POST, - request, String.class); - String respStr = grievienceResponse.getBody(); - - JsonElement jsnElmntResp = jsnParser.parse(respStr); - jsnOBJ = jsnElmntResp.getAsJsonObject(); - JsonArray grievanceJsonDataArray = jsnOBJ.getAsJsonArray("data"); - if (Integer.parseInt(jsnOBJ.get("total").toString()) > 0) { - for (JsonElement grievanceElement : grievanceJsonDataArray) { - String formattedComplaintId = null; - try { - JsonObject grievanceJsonData = grievanceElement.getAsJsonObject(); - GrievanceDetails grievance = new GrievanceDetails(); - String complaintId = grievanceJsonData.get("complainId").getAsString(); - formattedComplaintId = complaintId.replace("\\/", "/"); - boolean complaintExists = grievanceDataRepo - .existsByComplaintId(formattedComplaintId); - if (complaintExists) { - logger.info("Complaint ID " + formattedComplaintId - + " already exists in the grievance worklist table."); - continue; - } + if (GRIEVANCE_AUTH_TOKEN != null && GRIEVANCE_TOKEN_EXP != null + && GRIEVANCE_TOKEN_EXP > System.currentTimeMillis()) { + } else { + generateGrievanceAuthToken(); + } - grievance.setComplaintID(formattedComplaintId); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.add(USER_AGENT_HEADER, USER_AGENT_VALUE); + headers.add("AUTHORIZATION", GRIEVANCE_AUTH_TOKEN); - // Fetch related grievance transaction details - Long grievanceID = grievanceJsonData.get("grievanceId").getAsLong(); - grievance.setGrievanceId(grievanceID); - grievanceIds.add(grievanceJsonData.get("grievanceId").getAsLong()); + Date date = new Date(); + java.sql.Date sqlDate = new java.sql.Date(date.getTime()); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(sqlDate); + calendar.add(Calendar.DATE, -Integer.parseInt(grievanceDataSyncDuration)); + String json = prepareRequestObject(); + int contentLength = json.getBytes(StandardCharsets.UTF_8).length; + headers.add("Content-Length", String.valueOf(contentLength)); + HttpEntity request = new HttpEntity<>(json, headers); + String url = updateGrievanceDetails.replace("PageNumber", "1"); + ResponseEntity response = restTemplate.exchange(url, HttpMethod.POST, request, String.class); - grievance.setSubjectOfComplaint(grievanceJsonData.has("subject") - && !grievanceJsonData.get("subject").isJsonNull() - ? grievanceJsonData.get("subject").getAsString() - : null); - ArrayList lists = grievanceFetchBenDetailsRepo - .findByComplaintId(formattedComplaintId); - grievance.setComplaint(grievanceJsonData.has("Complaint") - ? grievanceJsonData.get("Complaint").getAsString() - : null); - String severityName = grievanceJsonData.has("severity") - && grievanceJsonData.get("severity").getAsJsonObject().has("severity") - ? grievanceJsonData.get("severity").getAsJsonObject() - .get("severity").getAsString() - : null; - grievance.setSeverety(severityName); - - // Setting Level - Integer levelId = grievanceJsonData.has("level") - && grievanceJsonData.get("level").getAsJsonObject().has("levelId") - ? grievanceJsonData.get("level").getAsJsonObject().get("levelId") - .getAsInt() - : null; - grievance.setLevel(levelId); - - // Setting state - String stateName = grievanceJsonData.has("state") - && grievanceJsonData.get("state").getAsJsonObject().has("stateName") - ? grievanceJsonData.get("state").getAsJsonObject().get("stateName") - .getAsString() - : null; - grievance.setState(stateName); - - for (Object[] objects : lists) { - if (objects != null && objects.length <= 4) { - grievance.setComplaintID((String) objects[0]); - grievance.setBenCallID((Long) objects[1]); - grievance.setBeneficiaryRegID((Long) objects[2]); - grievance.setProviderServiceMapID((Integer) objects[3]); - } + if (response != null && response.hasBody()) { + JSONObject obj = new JSONObject(response.getBody()); + if (obj != null && obj.has("data") && obj.has("status") && obj.getInt("status") == 200) { + logger.info("Grievance data details response received successfully "); + + String responseStr = response.getBody(); + JsonObject jsnOBJ = new JsonObject(); + JsonParser jsnParser = new JsonParser(); + JsonElement jsnElmnt = jsnParser.parse(responseStr); + jsnOBJ = jsnElmnt.getAsJsonObject(); + int total = jsnOBJ.get("total").getAsInt(); + String GrievanceUrl = updateGrievanceDetails.replace("PageNumber", String.valueOf(total)); + ResponseEntity grievienceResponse = restTemplate.exchange(GrievanceUrl, HttpMethod.POST, + request, String.class); + String respStr = grievienceResponse.getBody(); + + JsonElement jsnElmntResp = jsnParser.parse(respStr); + jsnOBJ = jsnElmntResp.getAsJsonObject(); + JsonArray grievanceJsonDataArray = jsnOBJ.getAsJsonArray("data"); + if (Integer.parseInt(jsnOBJ.get("total").toString()) > 0) { + for (JsonElement grievanceElement : grievanceJsonDataArray) { + String formattedComplaintId = null; + try { + JsonObject grievanceJsonData = grievanceElement.getAsJsonObject(); + GrievanceDetails grievance = new GrievanceDetails(); + String complaintId = grievanceJsonData.get("complainId").getAsString(); + formattedComplaintId = complaintId.replace("\\/", "/"); + boolean complaintExists = grievanceDataRepo.existsByComplaintId(formattedComplaintId); + if (complaintExists) { + logger.info("Complaint ID " + formattedComplaintId + + " already exists in the grievance worklist table."); + continue; + } + + grievance.setComplaintID(formattedComplaintId); + + // Fetch related grievance transaction details + Long grievanceID = grievanceJsonData.get("grievanceId").getAsLong(); + grievance.setGrievanceId(grievanceID); + grievanceIds.add(grievanceJsonData.get("grievanceId").getAsLong()); + + grievance.setSubjectOfComplaint(grievanceJsonData.has("subject") + && !grievanceJsonData.get("subject").isJsonNull() + ? grievanceJsonData.get("subject").getAsString() + : null); + ArrayList lists = grievanceFetchBenDetailsRepo + .findByComplaintId(formattedComplaintId); + grievance.setComplaint(grievanceJsonData.has("Complaint") + ? grievanceJsonData.get("Complaint").getAsString() + : null); + String severityName = grievanceJsonData.has("severity") + && grievanceJsonData.get("severity").getAsJsonObject().has("severity") + ? grievanceJsonData.get("severity").getAsJsonObject().get("severity") + .getAsString() + : null; + grievance.setSeverety(severityName); + + // Setting Level + Integer levelId = grievanceJsonData.has("level") + && grievanceJsonData.get("level").getAsJsonObject().has("levelId") + ? grievanceJsonData.get("level").getAsJsonObject().get("levelId") + .getAsInt() + : null; + grievance.setLevel(levelId); + + // Setting state + String stateName = grievanceJsonData.has("state") + && grievanceJsonData.get("state").getAsJsonObject().has("stateName") + ? grievanceJsonData.get("state").getAsJsonObject().get("stateName") + .getAsString() + : null; + grievance.setState(stateName); + + for (Object[] objects : lists) { + if (objects != null && objects.length <= 4) { + grievance.setComplaintID((String) objects[0]); + grievance.setBenCallID((Long) objects[1]); + grievance.setBeneficiaryRegID((Long) objects[2]); + grievance.setProviderServiceMapID((Integer) objects[3]); } - Long benDetailsID = grievanceDataRepo - .getBeneficiaryMapping(grievance.getBeneficiaryRegID()); - ArrayList list1 = grievanceDataRepo - .getBeneficiaryGrievanceDetails(benDetailsID); - for (Object[] objects : list1) { - if (objects != null && objects.length >= 6) { - grievance.setPreferredLanguageId((Integer) objects[0]); - grievance.setPreferredLanguage((String) objects[1]); - grievance.setVanSerialNo((Long) objects[2]); - grievance.setVanID((Integer) objects[3]); - grievance.setParkingPlaceID((Integer) objects[4]); - grievance.setVehicalNo((String) objects[5]); - } + } + Long benDetailsID = grievanceDataRepo + .getBeneficiaryMapping(grievance.getBeneficiaryRegID()); + ArrayList list1 = grievanceDataRepo + .getBeneficiaryGrievanceDetails(benDetailsID); + for (Object[] objects : list1) { + if (objects != null && objects.length >= 6) { + grievance.setPreferredLanguageId((Integer) objects[0]); + grievance.setPreferredLanguage((String) objects[1]); + grievance.setVanSerialNo((Long) objects[2]); + grievance.setVanID((Integer) objects[3]); + grievance.setParkingPlaceID((Integer) objects[4]); + grievance.setVehicalNo((String) objects[5]); } - String phoneNum = grievanceDataRepo - .getPrimaryNumber(grievance.getBeneficiaryRegID()); - grievance.setPrimaryNumber(phoneNum); - grievance.setDeleted(grievance.getDeleted()); - grievance.setCreatedBy("Admin"); - grievance.setProcessed('N'); - grievance.setIsAllocated(false); - grievance.setCallCounter(0); - grievance.setRetryNeeded(true); - - grievanceDataRepo.save(grievance); - - JsonArray transactionDetailsList = fetchGrievanceTransactions(grievanceID); - if (transactionDetailsList != null && !transactionDetailsList.isEmpty()) { - for (JsonElement transactionElement : transactionDetailsList) { - JsonObject transactionDetailsJson = transactionElement.getAsJsonObject(); - JsonArray asJsonArray = transactionDetailsJson.get("transaction") - .getAsJsonArray(); - for (JsonElement arr : asJsonArray) { - JsonObject transaction = transactionElement.getAsJsonObject(); - GrievanceTransaction grievanceTransaction = new GrievanceTransaction(); - gwid = grievanceDataRepo.getUniqueGwid(grievanceID); - grievanceTransaction.setGwid(gwid); - grievanceTransaction.setGrievanceId(grievanceID); - grievanceTransaction.setActionTakenBy(transaction.has("actionTakenBy") - ? transaction.get("actionTakenBy").getAsString() - : null); - grievanceTransaction.setStatus(transaction.has("status") - ? transaction.get("status").getAsString() - : null); - grievanceTransaction.setFileName(transaction.has(FILE_NAME) - ? transaction.get(FILE_NAME).getAsString() - : null); - grievanceTransaction.setFileType(transaction.has(FILE_TYPE) - ? transaction.get(FILE_TYPE).getAsString() - : null); - grievanceTransaction.setRedressed(transaction.has("redressed") - ? transaction.get("redressed").getAsString() - : null); - grievanceTransaction.setCreatedAt( - Timestamp.valueOf(transaction.get("createdAt").getAsString())); - grievanceTransaction.setUpdatedAt( - Timestamp.valueOf(transaction.get("updatedAt").getAsString())); - grievanceTransaction.setComments(transaction.has("comment") - ? transaction.get("comment").getAsString() - : null); - grievanceTransaction.setCreatedBy("Admin"); - Timestamp timestamp = new Timestamp(System.currentTimeMillis()); - grievanceTransaction.setCreatedDate(timestamp); - - grievanceTransactionListObj = grievanceTransactionRepo - .save(grievanceTransaction); - grievanceTransactionList.add(grievanceTransactionListObj); - } - } + } + String phoneNum = grievanceDataRepo.getPrimaryNumber(grievance.getBeneficiaryRegID()); + grievance.setPrimaryNumber(phoneNum); + grievance.setDeleted(grievance.getDeleted()); + grievance.setCreatedBy("Admin"); + grievance.setProcessed('N'); + grievance.setIsAllocated(false); + grievance.setCallCounter(0); + grievance.setRetryNeeded(true); + + grievanceDataRepo.save(grievance); + + JsonArray transactionDetailsList = fetchGrievanceTransactions(grievanceID); + if (transactionDetailsList != null && !transactionDetailsList.isEmpty()) { + for (JsonElement transactionElement : transactionDetailsList) { + JsonObject transactionDetailsJson = transactionElement.getAsJsonObject(); + JsonArray asJsonArray = transactionDetailsJson.get("transaction") + .getAsJsonArray(); + for (JsonElement arr : asJsonArray) { + JsonObject transaction = arr.getAsJsonObject(); + GrievanceTransaction grievanceTransaction = new GrievanceTransaction(); + gwid = grievanceDataRepo.getUniqueGwid(grievanceID); + grievanceTransaction.setGwid(gwid); + grievanceTransaction.setGrievanceId(grievanceID); + grievanceTransaction.setActionTakenBy(transaction.has("actionTakenBy") + && !transaction.get("actionTakenBy").isJsonNull() + ? transaction.get("actionTakenBy").getAsString() + : null); + grievanceTransaction.setStatus( + transaction.has("status") && !transaction.get("status").isJsonNull() + ? transaction.get("status").getAsString() + : null); + grievanceTransaction.setFileName(transaction.has(FILE_NAME) + && !transaction.get(FILE_NAME).isJsonNull() + ? transaction.get(FILE_NAME).getAsString() + : null); + grievanceTransaction.setFileType(transaction.has(FILE_TYPE) + && !transaction.get(FILE_TYPE).isJsonNull() + ? transaction.get(FILE_TYPE).getAsString() + : null); + grievanceTransaction.setRedressed(transaction.has("redressed") + && !transaction.get("redressed").isJsonNull() + ? transaction.get("redressed").getAsString() + : null); + grievanceTransaction.setCreatedAt( + Timestamp.valueOf(transaction.get("createdAt").getAsString())); + grievanceTransaction.setUpdatedAt( + Timestamp.valueOf(transaction.get("updatedAt").getAsString())); + grievanceTransaction.setComments(transaction.has("comment") + ? transaction.get("comment").getAsString() + : null); + grievanceTransaction.setCreatedBy("Admin"); + Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + grievanceTransaction.setCreatedDate(timestamp); + grievanceTransactionListObj = grievanceTransactionRepo + .save(grievanceTransaction); + grievanceTransactionList.add(grievanceTransactionListObj); + } } - } catch (Exception e) { - logger.error("Error while Grievance Details " + e.getMessage() + " Complaint ID " - + formattedComplaintId); + } + } catch (Exception e) { + logger.error("Error while Grievance Details " + e.getMessage() + " Complaint ID " + + formattedComplaintId); } - } else { - logger.info("No records found for page = {}", count); - count = -1; } } } } + } catch (Exception e) { logger.error("Error in saving data into t_grievanceworklist: ", e); } @@ -479,52 +479,45 @@ public String fetchUnallocatedGrievanceCount(String preferredLanguage, Timestamp // Fetch all unallocated grievances count from the database Set resultSet = grievanceDataRepo.fetchUnallocatedGrievanceCount(filterStartDate, filterEndDate); - // Initialize the result JSON object to hold counts JSONObject result = new JSONObject(); boolean preferredLanguageFound = false; result.put("All", 0); // Initialize the "All" language count to 0 - // Loop through the resultSet and populate the counts for each language if (resultSet != null && !resultSet.isEmpty()) { for (Object[] recordSet : resultSet) { - String language = ((String) recordSet[0]).trim(); - Long count = (Long) recordSet[1]; + String language = null; + Long count = null; + if(null != recordSet[0]) + language = ((String) recordSet[0]).trim(); + if(null != recordSet[1]) + count = (Long) recordSet[1]; - // Add the count to the result for the current language result.put(language, count); result.put("All", result.getLong("All") + count); // Add to the total "All" count - // If the preferred language matches, mark it as found if (preferredLanguage != null && preferredLanguage.equalsIgnoreCase(language)) { preferredLanguageFound = true; } } } - // If the preferred language is provided but not found in the results, add it - // with count 0 if (preferredLanguage != null && !preferredLanguageFound) { result.put(preferredLanguage, 0); } - // Create the final JSON response array JSONArray resultArray = new JSONArray(); - // Case 1: If preferredLanguage is provided, return only that language's count if (preferredLanguage != null) { JSONObject preferredLanguageEntry = new JSONObject(); preferredLanguageEntry.put(PREFERRED_LANGUAGE, preferredLanguage); preferredLanguageEntry.put(COUNT_OF_PREFERRED_LANGUAGE, result.getLong(preferredLanguage)); resultArray.put(preferredLanguageEntry); } else { - // Case 2: If no preferredLanguage is provided, return counts for all languages - // Add the "All" entry first + JSONObject allEntry = new JSONObject(); allEntry.put(PREFERRED_LANGUAGE, "All"); allEntry.put(COUNT_OF_PREFERRED_LANGUAGE, result.getLong("All")); resultArray.put(allEntry); - - // Add counts for other languages Iterator keys = result.keys(); while (keys.hasNext()) { String key = keys.next();