From 0f6c21a63a1d3381861d208db67ca0ef415dbb4b Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Mon, 17 Mar 2025 10:16:55 +0530 Subject: [PATCH 1/4] Scheduler changes --- src/main/environment/common_ci.properties | 2 +- src/main/environment/common_dev.properties | 2 +- .../environment/common_example.properties | 2 +- src/main/environment/common_test.properties | 2 +- src/main/environment/common_uat.properties | 2 +- .../grievance/GrievanceDataRepo.java | 15 +- .../GrievanceOutboundRepository.java | 5 +- .../grievance/GrievanceDataSyncImpl.java | 573 ++++++++---------- .../GrievanceHandlingServiceImpl.java | 9 +- 9 files changed, 277 insertions(+), 335 deletions(-) diff --git a/src/main/environment/common_ci.properties b/src/main/environment/common_ci.properties index 84c70090..c2889de1 100644 --- a/src/main/environment/common_ci.properties +++ b/src/main/environment/common_ci.properties @@ -148,7 +148,7 @@ logging.file.name=@env.COMMON_API_LOGGING_FILE_NAME@ ##grievance API call -updateGrievanceDetails = @env.GRIEVANCE_API_BASE_URL@/grsbepro/igemr1097/public/api/v1/state-wise/grievance-list +updateGrievanceDetails = @env.GRIEVANCE_API_BASE_URL@/grsbepro/igemr1097/public/api/v1/state-wise/grievance-list?page=PageNumber¤tpage=1 updateGrievanceTransactionDetails=@env.GRIEVANCE_API_BASE_URL@/grsbepro/igemr1097/public/api/v1/grievance_details/ ## grievance variables diff --git a/src/main/environment/common_dev.properties b/src/main/environment/common_dev.properties index d59acb42..cfe94971 100644 --- a/src/main/environment/common_dev.properties +++ b/src/main/environment/common_dev.properties @@ -173,7 +173,7 @@ fileBasePath =/Doc jwt.secret= ##grievance API call -updateGrievanceDetails = /grsbepro/igemr1097/public/api/v1/state-wise/grievance-list +updateGrievanceDetails = /grsbepro/igemr1097/public/api/v1/state-wise/grievance-list?page=PageNumber¤tpage=1 updateGrievanceTransactionDetails=/grsbepro/igemr1097/public/api/v1/grievance_details/ ## grievance variables diff --git a/src/main/environment/common_example.properties b/src/main/environment/common_example.properties index bcc6c6ca..b514280d 100644 --- a/src/main/environment/common_example.properties +++ b/src/main/environment/common_example.properties @@ -173,7 +173,7 @@ jwt.secret= fileBasePath =/Doc ##grievance API call -updateGrievanceDetails = /grsbepro/igemr1097/public/api/v1/state-wise/grievance-list +updateGrievanceDetails = /grsbepro/igemr1097/public/api/v1/state-wise/grievance-list?page=PageNumber¤tpage=1 updateGrievanceTransactionDetails=/grsbepro/igemr1097/public/api/v1/grievance_details/ ## grievance variables diff --git a/src/main/environment/common_test.properties b/src/main/environment/common_test.properties index 169317db..89d852bc 100644 --- a/src/main/environment/common_test.properties +++ b/src/main/environment/common_test.properties @@ -175,7 +175,7 @@ jwt.secret= ##grievance API call -updateGrievanceDetails = /grsbepro/igemr1097/public/api/v1/state-wise/grievance-list +updateGrievanceDetails = /grsbepro/igemr1097/public/api/v1/state-wise/grievance-list?page=PageNumber¤tpage=1 updateGrievanceTransactionDetails=/grsbepro/igemr1097/public/api/v1/grievance_details/ ## grievance variables diff --git a/src/main/environment/common_uat.properties b/src/main/environment/common_uat.properties index 0b55a003..fb8f849f 100644 --- a/src/main/environment/common_uat.properties +++ b/src/main/environment/common_uat.properties @@ -146,7 +146,7 @@ fileBasePath =/Doc jwt.secret= ##grievance API call -updateGrievanceDetails = /grsbepro/igemr1097/public/api/v1/state-wise/grievance-list +updateGrievanceDetails = /grsbepro/igemr1097/public/api/v1/state-wise/grievance-list?page=PageNumber¤tpage=1 updateGrievanceTransactionDetails=/grsbepro/igemr1097/public/api/v1/grievance_details/ ## grievance variables 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 7d8f39b7..1ff10da6 100644 --- a/src/main/java/com/iemr/common/repository/grievance/GrievanceDataRepo.java +++ b/src/main/java/com/iemr/common/repository/grievance/GrievanceDataRepo.java @@ -1,5 +1,6 @@ package com.iemr.common.repository.grievance; +import java.math.BigInteger; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; @@ -33,8 +34,8 @@ List findGrievancesInDateRangeAndLanguage(@Param("startDate") public int allocateGrievance(@Param("grievanceId") Long grievanceId, @Param("userId") Integer userId); - @Query(nativeQuery = true, value = "SELECT PreferredLanguageId, PreferredLanguage, VanSerialNo, VanID, ParkingPlaceId, VehicalNo FROM db_1097_identity.i_beneficiarydetails WHERE BeneficiaryRegID = :benRegId") - public ArrayList getBeneficiaryGrievanceDetails(@Param("benRegId") Long benRegId); + @Query(nativeQuery = true, value = "SELECT preferredLanguageId, preferredLanguage, VanSerialNo, VanID, ParkingPlaceID, VehicalNo FROM db_1097_identity.i_beneficiarydetails WHERE beneficiarydetailsid = :beneficiarydetailsid") + public ArrayList getBeneficiaryGrievanceDetails(@Param("beneficiarydetailsid") Long beneficiarydetailsid); @Query(nativeQuery = true, value = "SELECT t2.preferredPhoneNum FROM db_1097_identity.i_beneficiarymapping t1 join" + " db_1097_identity.i_beneficiarycontacts t2 on t1.benContactsId = t2.benContactsID" @@ -43,11 +44,10 @@ public int allocateGrievance(@Param("grievanceId") Long grievanceId, @Query("select grievance.preferredLanguage, count(distinct grievance.grievanceId) " - + "from GrievanceDetails grievance " + "where grievance.providerServiceMapID = :providerServiceMapID " - + "and grievance.userID = :userID " + "and grievance.deleted = false " + + "from GrievanceDetails grievance " + "where " + + "grievance.userID = :userID " + "and grievance.deleted = false " + "group by grievance.preferredLanguage") - public Set fetchGrievanceRecordsCount(@Param("providerServiceMapID") Integer providerServiceMapID, - @Param("userID") Integer userID); + public Set fetchGrievanceRecordsCount(@Param("userID") Integer userID); @Query("SELECT g FROM GrievanceDetails g WHERE g.userID = :userID AND g.preferredLanguage = :language AND g.isAllocated = true") List findAllocatedGrievancesByUserAndLanguage(@Param("userID") Integer userID, @@ -160,6 +160,9 @@ List fetchGrievanceDetailsBasedOnParams( @Query("SELECT g.gwid FROM GrievanceDetails g WHERE g.grievanceId = :grievanceId") Long getUniqueGwid(@Param("grievanceId")Long grievanceIdObj); +@Query(value = "SELECT BenDetailsId FROM db_1097_identity.i_beneficiarymapping WHERE BenRegId = :beneficiaryRegID", nativeQuery = true) +Long getBeneficiaryMapping(@Param("beneficiaryRegID") Long beneficiaryRegID); + } diff --git a/src/main/java/com/iemr/common/repository/grievance/GrievanceOutboundRepository.java b/src/main/java/com/iemr/common/repository/grievance/GrievanceOutboundRepository.java index 88c8dfa9..6df5853e 100644 --- a/src/main/java/com/iemr/common/repository/grievance/GrievanceOutboundRepository.java +++ b/src/main/java/com/iemr/common/repository/grievance/GrievanceOutboundRepository.java @@ -15,8 +15,7 @@ public interface GrievanceOutboundRepository extends JpaRepository { - @Query(value =" call db_iemr.Pr_Grievanceworklist(:providerServiceMapID, :userId)", nativeQuery = true) - List getGrievanceWorklistData(@Param("providerServiceMapID") Integer providerServiceMapID, - @Param("userId") Integer userId); + @Query(value =" call db_iemr.Pr_Grievanceworklist(:userId)", nativeQuery = true) + List getGrievanceWorklistData(@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 113a6c7c..6327978a 100644 --- a/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java +++ b/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java @@ -1,5 +1,7 @@ package com.iemr.common.service.grievance; +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Arrays; @@ -30,6 +32,7 @@ import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -73,8 +76,8 @@ public class GrievanceDataSyncImpl implements GrievanceDataSync { // Constructor-based injection @Autowired public GrievanceDataSyncImpl(GrievanceDataRepo grievanceDataRepo, GrievanceTransactionRepo grievanceTransactionRepo, - GrievanceFetchBenDetailsRepo grievanceFetchBenDetailsRepo, - LocationStateRepository locationStateRepository, IEMRCalltypeRepositoryImplCustom iEMRCalltypeRepositoryImplCustom) { + GrievanceFetchBenDetailsRepo grievanceFetchBenDetailsRepo, LocationStateRepository locationStateRepository, + IEMRCalltypeRepositoryImplCustom iEMRCalltypeRepositoryImplCustom) { this.grievanceDataRepo = grievanceDataRepo; this.grievanceTransactionRepo = grievanceTransactionRepo; this.grievanceFetchBenDetailsRepo = grievanceFetchBenDetailsRepo; @@ -102,155 +105,133 @@ public GrievanceDataSyncImpl(GrievanceDataRepo grievanceDataRepo, GrievanceTrans @Value("${grievanceAllocationRetryConfiguration}") private int grievanceAllocationRetryConfiguration; - + private String GRIEVANCE_AUTH_TOKEN; private Long GRIEVANCE_TOKEN_EXP; - //public List> dataSyncToGrievance() { - public String dataSyncToGrievance() { + public String dataSyncToGrievance() { - int count = 0; - String registeringUser = ""; - List> responseData = new ArrayList<>(); - List grievanceDetailsListAS = new ArrayList<>(); - // List grievanceDetailsListAS = new ArrayList<>(); - List grievanceDetailsListAll = new ArrayList<>(); + List grievanceDetailsListAll = new ArrayList<>(); List grievanceTransactionList = new ArrayList<>(); - // GrievanceTransaction grievanceTransaction = new GrievanceTransaction(); GrievanceTransaction grievanceTransactionListObj = new GrievanceTransaction(); - List grievanceIds = new ArrayList<>(); // List to collect all grievance IDs - + List grievanceIds = new ArrayList<>(); Long gwid; try { - // Loop to fetch data for multiple pages while (count >= 0) { RestTemplate restTemplate = new RestTemplate(); if (GRIEVANCE_AUTH_TOKEN != null && GRIEVANCE_TOKEN_EXP != null && GRIEVANCE_TOKEN_EXP > System.currentTimeMillis()) { - // no need of calling auth API } else { - // call method to generate Auth Token at Everwell end generateGrievanceAuthToken(); } HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + headers.setContentType(MediaType.APPLICATION_JSON); headers.add(USER_AGENT_HEADER, USER_AGENT_VALUE); headers.add("AUTHORIZATION", GRIEVANCE_AUTH_TOKEN); - //headers.add("Authorization", "Bearer " + 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)); - - // Request object - HttpEntity request = new HttpEntity(headers); - - // Call rest-template to call API to download master data for given table - ResponseEntity response = restTemplate.exchange(updateGrievanceDetails, HttpMethod.POST, - request, String.class); + 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_CODE) && obj.getInt(STATUS_CODE) == 200) { if (obj != null && obj.has("data") && obj.has("status") && obj.getInt("status") == 200) { - logger.info("Grievance data details response received successfully "); + 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(); - - // Handle "data" as a JsonArray - JsonArray grievanceJsonDataArray = jsnOBJ.getAsJsonArray("data"); - // registeringUser = grievanceJsonDataArray.get(0).getAsJsonObject().get("userName").getAsString(); - - // registeringUser = grievanceJsonData.get("userName").getAsString(); - - - // if (Integer.parseInt(jsnOBJ.get("TotalRecords").toString()) > 0) { - if (Integer.parseInt(jsnOBJ.get("total").toString()) > 0) { - - - List grievanceDetailsList = new ArrayList<>(); - - - // Iterate over the data array - for (JsonElement grievanceElement : grievanceJsonDataArray) { - JsonObject grievanceJsonData = grievanceElement.getAsJsonObject(); - - - GrievanceDetails grievance = new GrievanceDetails(); - - // Loop through the fetched grievance list and integrate transaction details + 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(); - String formattedComplaintId = complaintId.replace("\\/", "/"); - - // Check if the complaintId is already present in the t_grievance_worklist table + formattedComplaintId = complaintId.replace("\\/", "/"); boolean complaintExists = grievanceDataRepo.existsByComplaintId(formattedComplaintId); if (complaintExists) { - throw new RuntimeException("Complaint ID " + formattedComplaintId + 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()); - + grievanceIds.add(grievanceJsonData.get("grievanceId").getAsLong()); - // Adding other grievance-related fields - - grievance.setSubjectOfComplaint(grievanceJsonData.has("subject") && !grievanceJsonData.get("subject").isJsonNull() - ? grievanceJsonData.get("subject").getAsString() : null); + 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);; + 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]); - // String state = locationStateRepository - // .findByStateIDForGrievance((Integer) objects[4]); - // grievance.setState(state); } } - - - - - // setting language related properties and other + Long benDetailsID = grievanceDataRepo + .getBeneficiaryMapping(grievance.getBeneficiaryRegID()); ArrayList list1 = grievanceDataRepo - .getBeneficiaryGrievanceDetails(grievance.getBeneficiaryRegID()); + .getBeneficiaryGrievanceDetails(benDetailsID); for (Object[] objects : list1) { if (objects != null && objects.length >= 6) { grievance.setPreferredLanguageId((Integer) objects[0]); @@ -259,127 +240,66 @@ public String dataSyncToGrievance() { grievance.setVanID((Integer) objects[3]); grievance.setParkingPlaceID((Integer) objects[4]); grievance.setVehicalNo((String) objects[5]); - } } - String phoneNum = grievanceDataRepo.getPrimaryNumber(grievance.getBeneficiaryRegID()); grievance.setPrimaryNumber(phoneNum); - - // Setting remaining grievance properties (similar to the existing code) - // grievance.setAgentid(grievance.getAgentid()); grievance.setDeleted(grievance.getDeleted()); - //grievance.setCreatedBy(registeringUser); grievance.setCreatedBy("Admin"); grievance.setProcessed('N'); grievance.setIsAllocated(false); grievance.setCallCounter(0); grievance.setRetryNeeded(true); - - grievanceDetailsList.add(grievance); - - } - // Add all new grievances to the main list - grievanceDetailsListAll.addAll(grievanceDetailsList); - - // Save the grievance details to the t_grievance table - grievanceDetailsListAS = (List) grievanceDataRepo - .saveAll(grievanceDetailsListAll); - for (Long grievanceIdObj : grievanceIds) { + grievanceDataRepo.save(grievance); - JsonArray transactionDetailsList = fetchGrievanceTransactions(grievanceIdObj); - + JsonArray transactionDetailsList = fetchGrievanceTransactions(grievanceID); if (transactionDetailsList != null && !transactionDetailsList.isEmpty()) { - // Loop through each transaction and set individual properties - for (JsonElement transactionElement : transactionDetailsList) { - JsonObject transactionDetailsJson = transactionElement.getAsJsonObject(); - GrievanceTransaction grievanceTransaction = new GrievanceTransaction(); - gwid = grievanceDataRepo.getUniqueGwid(grievanceIdObj); - grievanceTransaction.setGwid(gwid); - grievanceTransaction.setGrievanceId(grievanceIdObj); - - - 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) + 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) + 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 + grievanceTransaction.setRedressed(transactionDetailsJson.has("redressed") + ? transactionDetailsJson.get("redressed").getAsString() + : null); + grievanceTransaction.setCreatedAt(Timestamp .valueOf(transactionDetailsJson.get("createdAt").getAsString())); - grievanceTransaction.setUpdatedAt(Timestamp + 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); - - // Save individual transaction detail in the t_grievance_transaction table - grievanceTransactionListObj = grievanceTransactionRepo.save(grievanceTransaction); - grievanceTransactionList.add(grievanceTransactionListObj); - } - - // Add the transaction list to the grievance object - // grievance.setGrievanceTransactionDetails(grievanceTransactionList); + 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); + + } + } + }catch(Exception e) { + logger.error("Error while Grievance Details "+e.getMessage() +" Complaint ID " + formattedComplaintId); + } } - // Combine grievance and transaction data for response -// -// for (GrievanceDetails grievanceValue : grievanceDetailsListAS) { -// Map combinedData = new HashMap<>(); -// combinedData.put("complaintID", grievanceValue.getGrievanceId()); -// combinedData.put("subjectOfComplaint", grievanceValue.getSubjectOfComplaint()); -// combinedData.put("complaint", grievanceValue.getComplaint()); -// combinedData.put("beneficiaryRegID", grievanceValue.getBeneficiaryRegID()); -// combinedData.put("providerServiceMapId", grievanceValue.getProviderServiceMapID()); -// -// combinedData.put("primaryNumber", grievanceValue.getPrimaryNumber()); -// -// // Add transaction data -// List> transactions = new ArrayList<>(); -// for (GrievanceTransaction transaction : grievanceValue.getGrievanceTransactionDetails()) { -// Map transactionData = new HashMap<>(); -// //transactionData.put("actionTakenBy", transaction.getActionTakenBy()); -// // transactionData.put("status", transaction.getStatus()); -// transactionData.put(FILE_NAME, transaction.getFileName()); -// transactionData.put(FILE_TYPE, transaction.getFileType()); -// transactionData.put("redressed", transaction.getRedressed()); -// transactionData.put("createdAt", transaction.getCreatedAt().toString()); -// transactionData.put("updatedAt", transaction.getUpdatedAt().toString()); -// transactionData.put("comments", transaction.getComments()); -// transactions.add(transactionData); -// } -// -// combinedData.put("transaction", transactions); -// combinedData.put("severity", grievanceValue.getSeverety()); -// combinedData.put("state", grievanceValue.getState()); -// // combinedData.put("agentId", grievanceValue.getAgentid()); -// combinedData.put("deleted", grievanceValue.getDeleted()); -// combinedData.put("createdBy", grievanceValue.getCreatedBy()); -// combinedData.put("createdDate", grievanceValue.getCreatedDate()); -// combinedData.put("lastModDate", grievanceValue.getLastModDate()); -// combinedData.put("isCompleted", grievanceValue.getIsCompleted()); -// -// combinedData.put("retryNeeded", grievanceValue.getRetryNeeded()); -// combinedData.put("callCounter", grievanceValue.getCallCounter()); -// -// responseData.add(combinedData); -// } - - // Return the combined response as required - } else { logger.info("No records found for page = {}", count); count = -1; @@ -390,10 +310,40 @@ public String dataSyncToGrievance() { } catch (Exception e) { logger.error("Error in saving data into t_grievanceworklist: ", e); } - // return responseData; + // return responseData; return "Grievance Data saved successfully"; } + private String prepareRequestObject() { + Map bodyMap = new HashMap<>(); + bodyMap.put("draw", 1); + bodyMap.put("columns", new Object[]{}); + bodyMap.put("order", new Object[]{}); + bodyMap.put("start", 0); + bodyMap.put("length", 10); + + Map search = new HashMap<>(); + search.put("value", ""); + search.put("regex", false); + bodyMap.put("search", search); + + bodyMap.put("state_id", ""); + bodyMap.put("complain_id", ""); + bodyMap.put("color", ""); + bodyMap.put("level", "3"); + bodyMap.put("start_date", ""); + bodyMap.put("end_date", ""); + + ObjectMapper objectMapper = new ObjectMapper(); + String jsonBody = ""; + try { + jsonBody = objectMapper.writeValueAsString(bodyMap); + } catch (Exception e) { + logger.error("Error while preparing Grievance jsonRequest"); + } + return jsonBody; + } + private JsonArray fetchGrievanceTransactions(Long grievanceId) { List transactionDetailsList = new ArrayList<>(); JsonArray transactionDataArray = new JsonArray(); @@ -417,16 +367,15 @@ private JsonArray fetchGrievanceTransactions(Long grievanceId) { JsonElement jsnElmnt = jsnParser.parse(response.getBody()); jsnOBJ = jsnElmnt.getAsJsonObject(); - - transactionDataArray = jsnOBJ.getAsJsonArray("data"); + transactionDataArray = jsnOBJ.getAsJsonArray("data"); // if (transactionDataArray != null && transactionDataArray.size() > 0) { // GrievanceTransaction[] transactionDetailsArray = new Gson() // .fromJson(transactionDataArray, GrievanceTransaction[].class); // transactionDetailsList = Arrays.asList(transactionDetailsArray); // } + } } - } - + } catch (Exception e) { logger.error("Error fetching grievance transaction details for grievanceId " + grievanceId, e); } @@ -452,36 +401,34 @@ private void generateGrievanceAuthToken() { // JSONObject requestObj = new JSONObject(request); // String complaintResolution = requestObj.optString("ComplaintResolution", null); // String state = requestObj.optString("State", null); - + String responseBody = responseEntity.getBody(); JsonObject jsnOBJ = new JsonObject(); JsonParser jsnParser = new JsonParser(); JsonElement jsnElmnt = jsnParser.parse(responseBody); jsnOBJ = jsnElmnt.getAsJsonObject(); - - // Accessing the "data" object first - if (jsnOBJ.has("data")) { - JsonObject dataObj = jsnOBJ.getAsJsonObject("data"); - - // Now check for "token_type" and "access_token" inside the "data" object - if (dataObj.has("token_type") && dataObj.has("access_token")) { - String tokenType = dataObj.get("token_type").getAsString(); - String accessToken = dataObj.get("access_token").getAsString(); - GRIEVANCE_AUTH_TOKEN = tokenType + " " + accessToken; - } else { - logger.error("Missing token_type or access_token in 'data' object: {}", responseBody); - // Handle missing tokens gracefully - return; - } - } else { - logger.error("'data' object is missing in response: {}", responseBody); - return; - } - - - - // GRIEVANCE_AUTH_TOKEN = jsnOBJ.get("token_type").getAsString() + " " - // + jsnOBJ.get("access_token").getAsString(); + + // Accessing the "data" object first + if (jsnOBJ.has("data")) { + JsonObject dataObj = jsnOBJ.getAsJsonObject("data"); + + // Now check for "token_type" and "access_token" inside the "data" object + if (dataObj.has("token_type") && dataObj.has("access_token")) { + String tokenType = dataObj.get("token_type").getAsString(); + String accessToken = dataObj.get("access_token").getAsString(); + GRIEVANCE_AUTH_TOKEN = tokenType + " " + accessToken; + } else { + logger.error("Missing token_type or access_token in 'data' object: {}", responseBody); + // Handle missing tokens gracefully + return; + } + } else { + logger.error("'data' object is missing in response: {}", responseBody); + return; + } + + // GRIEVANCE_AUTH_TOKEN = jsnOBJ.get("token_type").getAsString() + " " + // + jsnOBJ.get("access_token").getAsString(); JsonObject grievanceLoginJsonData = jsnOBJ.getAsJsonObject("data"); @@ -499,7 +446,7 @@ private void generateGrievanceAuthToken() { int count = 3; while (count > 0) { try { - // List> savedGrievanceData = dataSyncToGrievance(); + // List> savedGrievanceData = dataSyncToGrievance(); String savedGrievanceData = dataSyncToGrievance(); if (savedGrievanceData != null) break; @@ -520,7 +467,7 @@ private void generateGrievanceAuthToken() { } @Override - public String fetchUnallocatedGrievanceCount(String preferredLanguage, Timestamp filterStartDate, + public String fetchUnallocatedGrievanceCount(String preferredLanguage, Timestamp filterStartDate, Timestamp filterEndDate, Integer providerServiceMapID) throws IEMRException, JSONException { logger.debug("Request received for fetchUnallocatedGrievanceCount"); @@ -587,112 +534,106 @@ public String fetchUnallocatedGrievanceCount(String preferredLanguage, Timestamp return resultArray.toString(); } - - + @Override @Transactional public String completeGrievanceCall(String request) throws Exception { - + GrievanceCallRequest grievanceCallRequest = InputMapper.gson().fromJson(request, GrievanceCallRequest.class); - String complaintID = grievanceCallRequest.getComplaintID(); - Integer userID = grievanceCallRequest.getUserID(); - Boolean isCompleted = grievanceCallRequest.getIsCompleted(); - Long beneficiaryRegID = grievanceCallRequest.getBeneficiaryRegID(); - Integer callTypeID = grievanceCallRequest.getCallTypeID(); - Integer providerServiceMapID = grievanceCallRequest.getProviderServiceMapID(); - - CallType callTypeObj = new CallType(); - String response = "failure"; - int updateCount = 0; - int updateCallCounter = 0; - try { - - GrievanceDetails grievanceCallStatus = new GrievanceDetails(); - - List lists = grievanceDataRepo.getCallCounter(complaintID); - for (Object[] objects : lists) { - if (objects != null && objects.length >= 2) { - grievanceCallStatus.setCallCounter((Integer) objects[0]); - grievanceCallStatus.setRetryNeeded((Boolean)objects[1]); - } + String complaintID = grievanceCallRequest.getComplaintID(); + Integer userID = grievanceCallRequest.getUserID(); + Boolean isCompleted = grievanceCallRequest.getIsCompleted(); + Long beneficiaryRegID = grievanceCallRequest.getBeneficiaryRegID(); + Integer callTypeID = grievanceCallRequest.getCallTypeID(); + Integer providerServiceMapID = grievanceCallRequest.getProviderServiceMapID(); + + CallType callTypeObj = new CallType(); + String response = "failure"; + int updateCount = 0; + int updateCallCounter = 0; + try { + + GrievanceDetails grievanceCallStatus = new GrievanceDetails(); + + List lists = grievanceDataRepo.getCallCounter(complaintID); + for (Object[] objects : lists) { + if (objects != null && objects.length >= 2) { + grievanceCallStatus.setCallCounter((Integer) objects[0]); + grievanceCallStatus.setRetryNeeded((Boolean) objects[1]); } - - // Fetching CallDetails using BenCallID and CallTypeID - Set callTypesArray = new HashSet(); - callTypesArray = iEMRCalltypeRepositoryImplCustom.getCallDetails(callTypeID); - for (Object[] object : callTypesArray) - { - if (object != null && object.length >= 2) - { - callTypeObj.setCallGroupType((String) object[0]); - callTypeObj.setCallType((String) object[1]); - - } - - } - - String callGroupType = callTypeObj.getCallGroupType(); - String callType = callTypeObj.getCallType(); - - - // Logic for reattempt based on call group type and call type - - boolean isRetryNeeded = grievanceCallStatus.getRetryNeeded(); - if (callGroupType.equals("Valid")) { - // Conditions when no reattempt is needed - if (callType.equals("Valid") || callType.equals("Test Call")) { - isRetryNeeded = false; - } else if (callType.equals("Disconnected Call") || callType.equals("Serviced Call") || - callType.equals("Silent Call") || callType.equals("Call Back")) { - // Reattempt is needed for these call subtypes - isRetryNeeded = true; - } - } - if (callGroupType.equals("Invalid") && callType.equals("Wrong Number")) { - isRetryNeeded = false; - //isCompleted = true; - grievanceDataRepo.updateCompletedStatusInCall(isCompleted, isRetryNeeded, complaintID, userID, beneficiaryRegID, providerServiceMapID); - } - - // Check if max attempts (3) are reached - if (isRetryNeeded == true && grievanceCallStatus.getCallCounter() < grievanceAllocationRetryConfiguration) { - // Increment the call counter for reattempt - grievanceCallStatus.setCallCounter(grievanceCallStatus.getCallCounter() + 1); - // Update the retryNeeded flag - isRetryNeeded = true; - //isCompleted = false; - updateCallCounter = grievanceDataRepo.updateCallCounter(grievanceCallStatus.getCallCounter(), isRetryNeeded, grievanceCallRequest.getComplaintID(), - grievanceCallRequest.getBeneficiaryRegID(), grievanceCallRequest.getProviderServiceMapID(), - grievanceCallRequest.getUserID()); - // Return success when reattempt logic is applied successfully. The grievance call needs to be retried, and a reattempt is performed. - if (updateCallCounter > 0) - response = "Successfully closing call"; - else { - response = "failure in closing call"; - } - } else if (grievanceCallStatus.getCallCounter()== grievanceAllocationRetryConfiguration) { - // Max attempts reached, no further reattempt - isRetryNeeded = false; - //isCompleted = true; - updateCount = grievanceDataRepo.updateCompletedStatusInCall(isCompleted, isRetryNeeded, complaintID, userID, beneficiaryRegID, providerServiceMapID); - response = "max_attempts_reached"; // Indicate that max attempts are reached - - - } else { + } - response = "no_reattempt_needed"; // No reattempt needed - } + // Fetching CallDetails using BenCallID and CallTypeID + Set callTypesArray = new HashSet(); + callTypesArray = iEMRCalltypeRepositoryImplCustom.getCallDetails(callTypeID); + for (Object[] object : callTypesArray) { + if (object != null && object.length >= 2) { + callTypeObj.setCallGroupType((String) object[0]); + callTypeObj.setCallType((String) object[1]); + } + } - } - catch (Exception e) { - response = "error: " + e.getMessage(); - } + String callGroupType = callTypeObj.getCallGroupType(); + String callType = callTypeObj.getCallType(); - return response; // Return the response (either success or error message) - } + // Logic for reattempt based on call group type and call type + boolean isRetryNeeded = grievanceCallStatus.getRetryNeeded(); + if (callGroupType.equals("Valid")) { + // Conditions when no reattempt is needed + if (callType.equals("Valid") || callType.equals("Test Call")) { + isRetryNeeded = false; + } else if (callType.equals("Disconnected Call") || callType.equals("Serviced Call") + || callType.equals("Silent Call") || callType.equals("Call Back")) { + // Reattempt is needed for these call subtypes + isRetryNeeded = true; + } + } + if (callGroupType.equals("Invalid") && callType.equals("Wrong Number")) { + isRetryNeeded = false; + // isCompleted = true; + grievanceDataRepo.updateCompletedStatusInCall(isCompleted, isRetryNeeded, complaintID, userID, + beneficiaryRegID, providerServiceMapID); + } + // Check if max attempts (3) are reached + if (isRetryNeeded == true && grievanceCallStatus.getCallCounter() < grievanceAllocationRetryConfiguration) { + // Increment the call counter for reattempt + grievanceCallStatus.setCallCounter(grievanceCallStatus.getCallCounter() + 1); + // Update the retryNeeded flag + isRetryNeeded = true; + // isCompleted = false; + updateCallCounter = grievanceDataRepo.updateCallCounter(grievanceCallStatus.getCallCounter(), + isRetryNeeded, grievanceCallRequest.getComplaintID(), + grievanceCallRequest.getBeneficiaryRegID(), grievanceCallRequest.getProviderServiceMapID(), + grievanceCallRequest.getUserID()); + // Return success when reattempt logic is applied successfully. The grievance + // call needs to be retried, and a reattempt is performed. + if (updateCallCounter > 0) + response = "Successfully closing call"; + else { + response = "failure in closing call"; + } + } else if (grievanceCallStatus.getCallCounter() == grievanceAllocationRetryConfiguration) { + // Max attempts reached, no further reattempt + isRetryNeeded = false; + // isCompleted = true; + updateCount = grievanceDataRepo.updateCompletedStatusInCall(isCompleted, isRetryNeeded, complaintID, + userID, beneficiaryRegID, providerServiceMapID); + response = "max_attempts_reached"; // Indicate that max attempts are reached + + } else { + + response = "no_reattempt_needed"; // No reattempt needed + } + + } catch (Exception e) { + response = "error: " + e.getMessage(); + } + + return response; // Return the response (either success or error message) + } } 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 b930bce3..c9296c3b 100644 --- a/src/main/java/com/iemr/common/service/grievance/GrievanceHandlingServiceImpl.java +++ b/src/main/java/com/iemr/common/service/grievance/GrievanceHandlingServiceImpl.java @@ -123,7 +123,7 @@ public String allocatedGrievanceRecordsCount(String request) throws IEMRExceptio Integer providerServiceMapID = grievanceRequest.getProviderServiceMapID(); Integer userID = grievanceRequest.getUserID(); - Set resultSet = grievanceDataRepo.fetchGrievanceRecordsCount(providerServiceMapID, userID); + Set resultSet = grievanceDataRepo.fetchGrievanceRecordsCount(userID); JSONObject result = new JSONObject(); result.put("All", 0); @@ -277,11 +277,10 @@ public List getFormattedGrievanceData(String request) thro // Fetch grievance worklist data using @Procedure annotation List worklistData; try { - if (getGrievanceWorklistRequest.getProviderServiceMapID() == null || - getGrievanceWorklistRequest.getUserId() == null) { - throw new IllegalArgumentException("ProviderServiceMapID and UserId are required"); + if (getGrievanceWorklistRequest.getUserId() == null) { + throw new IllegalArgumentException("UserId are required"); } - worklistData = grievanceOutboundRepo.getGrievanceWorklistData(getGrievanceWorklistRequest.getProviderServiceMapID(), getGrievanceWorklistRequest.getUserId()); + worklistData = grievanceOutboundRepo.getGrievanceWorklistData(getGrievanceWorklistRequest.getUserId()); if (worklistData == null || worklistData.isEmpty()) { logger.info("No grievance data found for the given criteria"); return new ArrayList<>(); From 4ee782c7132cf2c9ca72fac5207d7896a1b58fd3 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 20 Mar 2025 11:48:03 +0530 Subject: [PATCH 2/4] Scheduler time farmat corrected --- src/main/environment/common_ci.properties | 3 +++ src/main/environment/common_dev.properties | 2 +- src/main/environment/common_example.properties | 2 +- src/main/environment/common_test.properties | 2 +- src/main/environment/common_uat.properties | 2 +- 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/environment/common_ci.properties b/src/main/environment/common_ci.properties index c2889de1..93fec357 100644 --- a/src/main/environment/common_ci.properties +++ b/src/main/environment/common_ci.properties @@ -162,4 +162,7 @@ springdoc.swagger-ui.enabled=false grievanceAllocationRetryConfiguration=3 +start-grievancedatasync-scheduler=false +cron-scheduler-grievancedatasync=0 0/2 * * * ? + diff --git a/src/main/environment/common_dev.properties b/src/main/environment/common_dev.properties index cfe94971..25d46740 100644 --- a/src/main/environment/common_dev.properties +++ b/src/main/environment/common_dev.properties @@ -118,7 +118,7 @@ nhm.agent.real.time.data.cron.flag=true ##----------------------------------------------------#grievance data sync----------------------------------------------------------- start-grievancedatasync-scheduler=false -cron-scheduler-grievancedatasync=0 0/5 * * * ? * +cron-scheduler-grievancedatasync=0 0/2 * * * ? carestream_socket_ip = 192.168.43.39 carestream_socket_port = 1235 diff --git a/src/main/environment/common_example.properties b/src/main/environment/common_example.properties index b514280d..5791a7fd 100644 --- a/src/main/environment/common_example.properties +++ b/src/main/environment/common_example.properties @@ -88,7 +88,7 @@ cron-scheduler-nhmdashboard=0 1 * * * ? * ##----------------------------------------------------#grievance data sync----------------------------------------------------------- start-grievancedatasync-scheduler=false -cron-scheduler-grievancedatasync=0 0/5 * * * ? * +cron-scheduler-grievancedatasync=0 0/2 * * * ? ### Redis IP spring.redis.host=localhost diff --git a/src/main/environment/common_test.properties b/src/main/environment/common_test.properties index 89d852bc..be2818bd 100644 --- a/src/main/environment/common_test.properties +++ b/src/main/environment/common_test.properties @@ -84,7 +84,7 @@ cron-scheduler-everwelldatasync=0 0/5 * * * ? * ##----------------------------------------------------#grievance data sync----------------------------------------------------------- start-grievancedatasync-scheduler=false -cron-scheduler-grievancedatasync=0 0/5 * * * ? * +cron-scheduler-grievancedatasync=0 0/2 * * * ? ##-----------------------------------------------#NHM data dashboard schedular---------------------------------------------------------------- # run at everyday 12:01AM start-nhmdashboard-scheduler=true diff --git a/src/main/environment/common_uat.properties b/src/main/environment/common_uat.properties index fb8f849f..5d419d6a 100644 --- a/src/main/environment/common_uat.properties +++ b/src/main/environment/common_uat.properties @@ -59,7 +59,7 @@ cron-scheduler-ctidatacheck=0 10 00 * * * ##----------------------------------------------------#grievance data sync----------------------------------------------------------- start-grievancedatasync-scheduler=false -cron-scheduler-grievancedatasync=0 0/5 * * * ? * +cron-scheduler-grievancedatasync=0 0/2 * * * ? ### generate Beneficiary IDs URL genben-api=/bengenapi-v1.0 From 7fd2b5d50b0b9621842dd9449a8b5326c99a1d33 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 20 Mar 2025 13:52:01 +0530 Subject: [PATCH 3/4] Format corrected --- .../grievance/GrievanceDataSyncImpl.java | 251 +++++++++--------- 1 file changed, 127 insertions(+), 124 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 6327978a..a7471dc8 100644 --- a/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java +++ b/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java @@ -170,135 +170,138 @@ public String dataSyncToGrievance() { 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; - } + 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]); + 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]); - } - } - 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(); - 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); - + 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(); + 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); + + } + } + } 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); From 670212ad3b9a277293e82cf59cd5bba285cb6072 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 20 Mar 2025 13:53:33 +0530 Subject: [PATCH 4/4] format corrected --- .../grievance/GrievanceDataSyncImpl.java | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 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 a7471dc8..d4c6dce4 100644 --- a/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java +++ b/src/main/java/com/iemr/common/service/grievance/GrievanceDataSyncImpl.java @@ -319,31 +319,31 @@ public String dataSyncToGrievance() { private String prepareRequestObject() { Map bodyMap = new HashMap<>(); - bodyMap.put("draw", 1); - bodyMap.put("columns", new Object[]{}); - bodyMap.put("order", new Object[]{}); - bodyMap.put("start", 0); - bodyMap.put("length", 10); - - Map search = new HashMap<>(); - search.put("value", ""); - search.put("regex", false); - bodyMap.put("search", search); - - bodyMap.put("state_id", ""); - bodyMap.put("complain_id", ""); - bodyMap.put("color", ""); - bodyMap.put("level", "3"); - bodyMap.put("start_date", ""); - bodyMap.put("end_date", ""); - - ObjectMapper objectMapper = new ObjectMapper(); - String jsonBody = ""; - try { - jsonBody = objectMapper.writeValueAsString(bodyMap); - } catch (Exception e) { - logger.error("Error while preparing Grievance jsonRequest"); - } + bodyMap.put("draw", 1); + bodyMap.put("columns", new Object[] {}); + bodyMap.put("order", new Object[] {}); + bodyMap.put("start", 0); + bodyMap.put("length", 10); + + Map search = new HashMap<>(); + search.put("value", ""); + search.put("regex", false); + bodyMap.put("search", search); + + bodyMap.put("state_id", ""); + bodyMap.put("complain_id", ""); + bodyMap.put("color", ""); + bodyMap.put("level", "3"); + bodyMap.put("start_date", ""); + bodyMap.put("end_date", ""); + + ObjectMapper objectMapper = new ObjectMapper(); + String jsonBody = ""; + try { + jsonBody = objectMapper.writeValueAsString(bodyMap); + } catch (Exception e) { + logger.error("Error while preparing Grievance jsonRequest"); + } return jsonBody; }