package in.gov.chennaicorporation.gccoffice.pensioner.service; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.sql.DataSource; import java.util.Comparator; import java.util.Date; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; @Service public class NewEntryService { @Autowired private JdbcTemplate jdbcTemplate; private RestTemplate restTemplate; private ObjectMapper objectMapper; @Autowired private AppConfig appconfig; public NewEntryService(RestTemplate restTemplate, ObjectMapper objectMapper) { this.restTemplate = restTemplate; this.objectMapper = objectMapper; } @Autowired public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } @Autowired public GetFileStatusService getFileStatus; // old retiment list getting method // public Map fetchEmplyeeDetails(String fromDate, String toDate, Integer deptId) { // Map response = new HashMap<>(); // // String apiUrl = appconfig.qaqcurl + "serviceId=common_api" // + "&jsonResp=Yes" // + "&subService=getEmpPenDetDuration" // + "&fromDate=" + fromDate // + "&toDate=" + toDate // + "&deptId=" + deptId; // // System.out.println("url: " + apiUrl); // System.out.println("deptId:" + deptId); // try { // String rawResponse = restTemplate.getForObject(apiUrl, String.class); // System.out.println("Raw Response: " + rawResponse); // Debugging step // // if (isValidJson(rawResponse)) { // JsonNode jsonResponse = objectMapper.readTree(rawResponse); // // // Extract the "ListResult" array // JsonNode details = jsonResponse.path("ListResult"); // // if (details.isArray() && details.size() > 0) { // List> list = new ArrayList<>(); // for (JsonNode detail : details) { // Map listResult = new HashMap<>(); // // listResult.put("RETIREMENT_DATE", getNonNullValue(detail.path("RETIREMENT_DATE"))); // listResult.put("DEATH_DATE", getNonNullValue(detail.path("DEATH_DATE"))); // listResult.put("COMMUNITY_NAME", getNonNullValue(detail.path("COMMUNITY_NAME"))); // listResult.put("GROUP_TYPE", getNonNullValue(detail.path("GROUP_TYPE"))); // listResult.put("ID_DEPT", getNonNullValue(detail.path("ID_DEPT"))); // listResult.put("EMPLOYEE_CODE", getNonNullValue(detail.path("EMPLOYEE_CODE"))); // listResult.put("FUNCTIONARY", getNonNullValue(detail.path("FUNCTIONARY"))); // listResult.put("IS_HANDICAPPED", getNonNullValue(detail.path("IS_HANDICAPPED"))); // listResult.put("GENDER", getNonNullValue(detail.path("GENDER"))); // listResult.put("DATE_OF_BIRTH", getNonNullValue(detail.path("DATE_OF_BIRTH"))); // listResult.put("DATE_OF_APPOINTMENT", getNonNullValue(detail.path("DATE_OF_APPOINTMENT"))); // listResult.put("DESIGNATION", getNonNullValue(detail.path("DESIGNATION"))); // listResult.put("EMPLOYEE_NAME", getNonNullValue(detail.path("EMPLOYEE_NAME"))); // listResult.put("DEPARTMENT", getNonNullValue(detail.path("DEPARTMENT"))); // list.add(listResult); // } // // Sort the list by RETIREMENT_DATE in ascending order // list.sort(Comparator.comparing(map -> parseDate(((Map) map).get("RETIREMENT_DATE")))); // // response.put("list", list); // // } else { // response.put("list", Collections.emptyList()); // } // } else { // System.err.println("Invalid JSON Response: " + rawResponse); // response.put("list", Collections.emptyList()); // } // // } catch (Exception e) { // e.printStackTrace(); // response.put("list", Collections.emptyList()); // } // return response; // } // new retirement list getting method with condition public Map fetchEmplyeeDetails(String fromDate, String toDate, Integer deptId) { Map response = new HashMap<>(); String apiUrl = appconfig.qaqcurl + "serviceId=common_api" + "&jsonResp=Yes" + "&subService=getEmpPenDetDuration" + "&fromDate=" + fromDate + "&toDate=" + toDate + "&deptId=" + deptId; System.out.println("url: " + apiUrl); System.out.println("deptId:" + deptId); try { String rawResponse = restTemplate.getForObject(apiUrl, String.class); System.out.println("Raw Response: " + rawResponse); // Debugging step if (isValidJson(rawResponse)) { JsonNode jsonResponse = objectMapper.readTree(rawResponse); JsonNode details = jsonResponse.path("ListResult"); if (details.isArray() && details.size() > 0) { List> list = new ArrayList<>(); LocalDate currentDate = LocalDate.now(); // Get today's date for (JsonNode detail : details) { String retirementDateStr = getNonNullValue(detail.path("RETIREMENT_DATE")); LocalDate retirementDate = parseDate(retirementDateStr); // Only add to the list if RETIREMENT_DATE is today or in the future if (retirementDate != null && !retirementDate.isBefore(currentDate)) { Map listResult = new HashMap<>(); listResult.put("RETIREMENT_DATE", retirementDateStr); listResult.put("DEATH_DATE", getNonNullValue(detail.path("DEATH_DATE"))); listResult.put("COMMUNITY_NAME", getNonNullValue(detail.path("COMMUNITY_NAME"))); listResult.put("GROUP_TYPE", getNonNullValue(detail.path("GROUP_TYPE"))); listResult.put("ID_DEPT", getNonNullValue(detail.path("ID_DEPT"))); listResult.put("EMPLOYEE_CODE", getNonNullValue(detail.path("EMPLOYEE_CODE"))); listResult.put("FUNCTIONARY", getNonNullValue(detail.path("FUNCTIONARY"))); listResult.put("IS_HANDICAPPED", getNonNullValue(detail.path("IS_HANDICAPPED"))); listResult.put("GENDER", getNonNullValue(detail.path("GENDER"))); listResult.put("DATE_OF_BIRTH", getNonNullValue(detail.path("DATE_OF_BIRTH"))); listResult.put("DATE_OF_APPOINTMENT", getNonNullValue(detail.path("DATE_OF_APPOINTMENT"))); listResult.put("DESIGNATION", getNonNullValue(detail.path("DESIGNATION"))); listResult.put("EMPLOYEE_NAME", getNonNullValue(detail.path("EMPLOYEE_NAME"))); listResult.put("DEPARTMENT", getNonNullValue(detail.path("DEPARTMENT"))); list.add(listResult); } } // Sort the list by RETIREMENT_DATE in ascending order list.sort(Comparator.comparing(map -> parseDate(map.get("RETIREMENT_DATE")))); response.put("list", list); } else { response.put("list", Collections.emptyList()); } } else { System.err.println("Invalid JSON Response: " + rawResponse); response.put("list", Collections.emptyList()); } } catch (Exception e) { e.printStackTrace(); response.put("list", Collections.emptyList()); } return response; } public Map fetchEmplyeeDetailsbyCode(String empCode) { Map response = new HashMap<>(); String apiUrl = appconfig.qaqcurl + "serviceId=common_api" + "&jsonResp=Yes" + "&subService=getEmpWorkDet" + "&empCode=" + empCode; System.out.println("url: " + apiUrl); System.out.println("empCode:" + empCode); try { String rawResponse = restTemplate.getForObject(apiUrl, String.class); System.out.println("Raw Response: " + rawResponse); // Debugging step if (isValidJson(rawResponse)) { JsonNode jsonResponse = objectMapper.readTree(rawResponse); // Extract the "ListResult" array JsonNode details = jsonResponse.path("ListResult"); if (details.isArray() && details.size() > 0) { List> list = new ArrayList<>(); for (JsonNode detail : details) { Map listResult = new HashMap<>(); listResult.put("RETIREMENT_DATE", formatToISODate(getNonNullValue(detail.path("RETIREMENT_DATE")))); listResult.put("TO_DATE", parseDate(getNonNullValue(detail.path("TO_DATE"))).toString()); listResult.put("DEATH_DATE", getNonNullValue(detail.path("DEATH_DATE"))); listResult.put("COMMUNITY_NAME", getNonNullValue(detail.path("COMMUNITY_NAME"))); listResult.put("GROUP_TYPE", getNonNullValue(detail.path("GROUP_TYPE"))); listResult.put("ID_DEPT", getNonNullValue(detail.path("ID_DEPT"))); listResult.put("EMPLOYEE_CODE", getNonNullValue(detail.path("EMPLOYEE_CODE"))); listResult.put("FUNCTIONARY", getNonNullValue(detail.path("FUNCTIONARY"))); listResult.put("IS_HANDICAPPED", getNonNullValue(detail.path("IS_HANDICAPPED"))); listResult.put("GENDER", getNonNullValue(detail.path("GENDER"))); listResult.put("DATE_OF_BIRTH", getNonNullValue(detail.path("DATE_OF_BIRTH"))); listResult.put("DATE_OF_APPOINTMENT", getNonNullValue(detail.path("DATE_OF_APPOINTMENT"))); listResult.put("DESIGNATION", getNonNullValue(detail.path("DESIGNATION"))); listResult.put("EMPLOYEE_NAME", getNonNullValue(detail.path("EMPLOYEE_NAME"))); listResult.put("DEPARTMENT", getNonNullValue(detail.path("DEPARTMENT"))); list.add(listResult); } // Sort the list by RETIREMENT_DATE in ascending order list.sort(Comparator.comparing(map -> parseDate(((Map) map).get("RETIREMENT_DATE")))); response.put("list", list); System.out.println("listresult: "+list); } else { response.put("list", Collections.emptyList()); } } else { System.err.println("Invalid JSON Response: " + rawResponse); response.put("list", Collections.emptyList()); } } catch (Exception e) { e.printStackTrace(); response.put("list", Collections.emptyList()); } return response; } // Utility method to convert DD-MM-YYYY to YYYY-MM-DD private String formatToISODate(String date) { if (date == null || date.isEmpty()) { return ""; } try { SimpleDateFormat inputFormat = new SimpleDateFormat("dd-MM-yyyy"); SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd"); Date parsedDate = inputFormat.parse(date); return outputFormat.format(parsedDate); } catch (ParseException e) { System.err.println("Date parsing error: " + e.getMessage()); return date; // Return original date if parsing fails } } //getting deptId from login public Integer getloginuserDeptId(int userId) { String query = "select emp_dept_id from login_details where gcc_login_id = ?"; try { // Use queryForObject to return a single value return jdbcTemplate.queryForObject(query, Integer.class, userId); } catch (EmptyResultDataAccessException e) { // Log the issue and handle the case when no result is found System.out.println("No department found for user ID: " + userId); return null; // Or return a default value if required } } private LocalDate parseDate(String date) { if (date == null || date.isEmpty()) { return LocalDate.MIN; // Use a minimum value for invalid or empty dates } try { // Remove time part if present if (date.contains(" ")) { date = date.split(" ")[0]; // Extract only the date part before space } DateTimeFormatter formatter; if (date.matches("\\d{4}-\\d{2}-\\d{2}")) { // yyyy-MM-dd formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); } else if (date.matches("\\d{2}-\\d{2}-\\d{4}")) { // dd-MM-yyyy formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); } else { System.err.println("Unknown date format: " + date); return LocalDate.MIN; } return LocalDate.parse(date, formatter); } catch (DateTimeParseException e) { e.printStackTrace(); return LocalDate.MIN; // Fallback for invalid dates } } // private LocalDate parseDate(String date) { // if (date == null || date.isEmpty()) { // return LocalDate.MIN; // Use a minimum value for invalid or empty dates // } // try { // DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); // Adjust format as needed // return LocalDate.parse(date, formatter); // } catch (DateTimeParseException e) { // e.printStackTrace(); // return LocalDate.MIN; // Fallback for invalid dates // } // } private boolean isValidJson(String json) { try { objectMapper.readTree(json); return true; } catch (Exception e) { return false; } } private String getNonNullValue(JsonNode node) { //String value = node.isMissingNode() || node.isNull() || node.asText().isEmpty() ? "N/A" : node.asText(); String value = node.isMissingNode() || node.isNull() || node.asText().isEmpty() || node.asText().isBlank() ? "N/A" : node.asText(); //2024-565EAT return "null".equals(value) ? "N/A" : value; // Check for string "null" } public String getDeptNameById(Integer deptId) { String query = "SELECT dept_name FROM department_master WHERE dept_id=? AND isactive=1 AND isdelete=0"; try { // Query execution and returning the department name //return jdbcTemplate.queryForObject(query, new Object[]{deptId}, String.class); return jdbcTemplate.queryForObject(query, String.class,deptId); } catch (Exception e) { // Handle exception if deptId is not found or query fails e.printStackTrace(); return null; } } @Transactional public boolean saveRetirementEmployeeDetails(Map requestData) { try { String empNo = (String) requestData.get("empNo"); String empName = (String) requestData.get("empName"); String deptName = (String) requestData.get("deptName"); String designation = (String) requestData.get("designation"); String typeOfRetirement = (String) requestData.get("typeOfRetirement"); String retirementdate = (String) requestData.get("retirementdate"); String retirementclass = (String) requestData.get("retirementclass"); String dateToAudit = (String) requestData.get("dateToAudit"); String filemovedby =(String)requestData.get("filemovedby"); String remarks = (String) requestData.get("remarks"); String dept_Id = (String) requestData.get("deptId"); String file_category = (String) requestData.get("filecategory"); // Safely parse integer values int deptId; int filecategory; try { deptId = Integer.parseInt(dept_Id); filecategory = Integer.parseInt(file_category); } catch (NumberFormatException e) { System.out.println("Invalid number format for deptId or filecategory."); return false; } int filestatus = getFileStatus.getFileStatus1Id(); if (filestatus == 0) { System.out.println("File status not found. Aborting insertion."); return false; } // Execute a query to fetch the required String based on filecategory String additionalDataQuery = "SELECT file_name FROM file_category_master WHERE id = ?"; String fc_name = jdbcTemplate.queryForObject(additionalDataQuery,String.class,filecategory); System.out.println("fc_name==="+fc_name); String fileentrytype ="NEW"; System.out.println("filemovedby====="+filemovedby); // Generate the variable (PR + current date + current time) String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss")); String temp_id = "PR" + currentTimestamp; String query = "INSERT INTO pensioner_details (emp_no, emp_name, dept_name, designation, type_of_retirement,retirement_date ,retirement_class,file_moved_date, remarks,file_category,file_status,file_entry_type,dept_id,file_category_name,temp_id) VALUES (?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?)"; int rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, typeOfRetirement,retirementdate ,retirementclass,dateToAudit, remarks,filecategory,filestatus,fileentrytype,deptId,fc_name,temp_id); String query1 = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement,retirement_date ,retirement_class,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?)"; int rowsInsertedHistory = jdbcTemplate.update(query1, empNo, empName, deptName, designation, typeOfRetirement,retirementdate ,retirementclass,dateToAudit, remarks,filecategory,filestatus,fileentrytype,filemovedby,deptId,fc_name,temp_id); String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?, ?, ?, ?, ?,?)"; int rowsInsertedFileMovement = jdbcTemplate.update(query2, empNo,dateToAudit,filestatus,filemovedby,remarks,temp_id); return rowsInserted > 0 && rowsInsertedHistory > 0 && rowsInsertedFileMovement > 0; } catch (Exception e) { e.printStackTrace(); return false; // Return false if an exception occurs } } public List getRegisteredEmps(Integer deptId, Integer file_category) { String query = "SELECT DISTINCT emp_no FROM pensioner_details WHERE dept_id=? " + "UNION ALL " + "SELECT DISTINCT emp_no FROM cps_pensioner_details WHERE dept_id=?"; List emps = jdbcTemplate.queryForList(query, String.class, deptId, deptId); System.out.println("emps====" + emps); return emps; } public Integer getRetirementFileCategoryId() { String query = "SELECT id FROM file_category_master WHERE file_name = 'Retirement'"; try { return jdbcTemplate.queryForObject(query, Integer.class); } catch (EmptyResultDataAccessException e) { return null; // or handle as needed } } public Integer getFamilyPensionFileCategoryId() { String query = "SELECT id FROM file_category_master WHERE file_name = 'Family Pension'"; try { return jdbcTemplate.queryForObject(query, Integer.class); } catch (EmptyResultDataAccessException e) { return null; // or handle as needed } } public Integer getPendencyFileCategoryId() { String query = "SELECT id FROM file_category_master WHERE file_name = 'Pendency'"; try { return jdbcTemplate.queryForObject(query, Integer.class); } catch (EmptyResultDataAccessException e) { return null; // or handle as needed } } public Integer getGISFileCategoryId() { String query = "SELECT id FROM file_category_master WHERE file_name = 'GIS'"; try { return jdbcTemplate.queryForObject(query, Integer.class); } catch (EmptyResultDataAccessException e) { return null; // or handle as needed } } public Integer getPRFileCategoryId() { String query = "SELECT id FROM file_category_master WHERE file_name = 'Provisional Retirement'"; try { return jdbcTemplate.queryForObject(query, Integer.class); } catch (EmptyResultDataAccessException e) { return null; // or handle as needed } } public Integer getCPSFileCategoryId() { String query = "SELECT id FROM file_category_master WHERE file_name = 'Contributory Pension Scheme'"; try { return jdbcTemplate.queryForObject(query, Integer.class); } catch (EmptyResultDataAccessException e) { return null; // or handle as needed } } @Transactional public boolean saveFamilyPensionDetails(Map requestData) { try { // Extract data from the request body String empNo = (String) requestData.get("empNo"); String empName = (String) requestData.get("empName"); String deptName = (String) requestData.get("deptName"); String designation = (String) requestData.get("designation"); String sanctionedgis = (String) requestData.get("sanctionedgis"); String serviceDeath =(String) requestData.get("serviceDeath"); String deceased =(String) requestData.get("deceased"); String dateToAudit = (String) requestData.get("dateToAudit"); String remarks = (String) requestData.get("remarks"); String filemovedby =(String)requestData.get("filemovedby"); String pendingDuration = (String) requestData.get("pendingDuration"); String reasonPending = (("yes".equals(pendingDuration) || "no".equals(pendingDuration)) && requestData.get("reasonPending") != null) ? requestData.get("reasonPending").toString() : null; String dept_Id = (String) requestData.get("deptId"); int deptId = Integer.parseInt(dept_Id); String file_category = (String) requestData.get("filecategory"); int filecategory = Integer.parseInt(file_category); // Execute a query to fetch the required String based on filecategory String additionalDataQuery = "SELECT file_name FROM file_category_master WHERE id = ?"; String fc_name = jdbcTemplate.queryForObject(additionalDataQuery, String.class,filecategory); System.out.println("fc_name==="+fc_name); int filestatus = getFileStatus.getFileStatus1Id(); if (filestatus == 0) { System.out.println("File status not found. Aborting insertion."); return false; } String fileentrytype ="NEW"; int rowsInserted=0; // Generate the variable (PR + current date + current time) String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss")); String temp_id = "PF" + currentTimestamp; String query = "INSERT INTO pensioner_details (emp_no, emp_name, dept_name, designation, sanctioned_gis_amount,service_death,relationship_deceased,file_moved_date, remarks,dept_id,file_category,file_status,file_entry_type,file_category_name,temp_id,pending_duration,reason_for_pending) VALUES (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, sanctionedgis,serviceDeath ,deceased,dateToAudit, remarks,deptId,filecategory,filestatus,fileentrytype,fc_name,temp_id, pendingDuration,reasonPending); String query1 = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, sanctioned_gis_amount,service_death,relationship_deceased,file_moved_date, remarks,dept_id,file_category,file_status,file_entry_type,file_moved_by,file_category_name,temp_id,pending_duration,reason_for_pending) VALUES (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?)"; rowsInserted = jdbcTemplate.update(query1, empNo, empName, deptName, designation, sanctionedgis,serviceDeath ,deceased,dateToAudit, remarks,deptId,filecategory,filestatus,fileentrytype,filemovedby,fc_name,temp_id, pendingDuration,reasonPending); String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?, ?, ?, ?, ?,?)"; rowsInserted = jdbcTemplate.update(query2, empNo,dateToAudit,filestatus,filemovedby,remarks,temp_id); return rowsInserted > 0; } catch (Exception e) { e.printStackTrace(); return false; // Return false if an exception occurs } } ///gis saving method service @Transactional public boolean savenewEntryDetailsGis(Map requestData) { try { String empNo = (String) requestData.get("empNo"); String empName = (String) requestData.get("empName"); String deptName = (String) requestData.get("deptName"); String designation = (String) requestData.get("designation"); String dateToPension = (String) requestData.get("dateToPension"); String filemovedby =(String)requestData.get("filemovedby"); String remarks = (String) requestData.get("remarks"); String serviceDeath =(String) requestData.get("serviceDeath"); String deceased =(String) requestData.get("deceased"); String gisentry = (String) requestData.get("gisentry"); String gisAdvanceamount =(String) requestData.get("gisAdvanceamount"); String gisAdvance = (String) requestData.get("gisAdvance"); String dept_Id = (String) requestData.get("deptId"); int deptId = Integer.parseInt(dept_Id); String file_category = (String) requestData.get("filecategory"); int filecategory = Integer.parseInt(file_category); // Execute a query to fetch the required String based on filecategory String additionalDataQuery = "SELECT file_name FROM file_category_master WHERE id = ?"; String fc_name = jdbcTemplate.queryForObject(additionalDataQuery, String.class,filecategory); System.out.println("fc_name==="+fc_name); int filestatus = getFileStatus.getFileStatus7Id(); if (filestatus == 0) { System.out.println("File status not found. Aborting insertion."); return false; } String fileentrytype ="NEW"; System.out.println("filemovedby====="+filemovedby); // Generate the variable (PR + current date + current time) String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss")); String temp_id = "PG" + currentTimestamp; String query = "INSERT INTO pensioner_details (emp_no, emp_name, dept_name, designation,file_moved_date, remarks,service_death,relationship_deceased,gis_entry,gis_advance_amount,gis_advance ,file_category,file_status,file_entry_type,dept_id,file_category_name,temp_id) VALUES (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; int rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, dateToPension, remarks,serviceDeath,deceased,gisentry,gisAdvanceamount,gisAdvance,filecategory,filestatus,fileentrytype,deptId,fc_name,temp_id); String query1 = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,file_moved_date, remarks,service_death,relationship_deceased,gis_entry,gis_advance_amount,gis_advance ,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id) VALUES (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?)"; int rowsInsertedHistory = jdbcTemplate.update(query1, empNo, empName, deptName, designation,dateToPension, remarks,serviceDeath,deceased,gisentry,gisAdvanceamount,gisAdvance,filecategory,filestatus,fileentrytype,filemovedby,deptId,fc_name,temp_id); String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?, ?, ?, ?, ?,?)"; int rowsInsertedFileMovement = jdbcTemplate.update(query2, empNo,dateToPension,filestatus,filemovedby,remarks,temp_id); // return rowsInserted > 0 && rowsInsertedHistory > 0 && rowsInsertedFileMovement > 0; } catch (Exception e) { e.printStackTrace(); return false; // Return false if an exception occurs } } //provisional retirement method service @Transactional public boolean savenewEntryDetailsProvisionalretirement(Map requestData) { try { String empNo = (String) requestData.get("empNo"); String empName = (String) requestData.get("empName"); String deptName = (String) requestData.get("deptName"); String designation = (String) requestData.get("designation"); String typeOfRetirement = (String) requestData.get("typeOfRetirement"); String ReasonofPension = (String) requestData.get("ReasonofPension"); String retirementClass = (String) requestData.get("retirementClass"); String retirementDate = (String) requestData.get("retirementDate"); String pendingDuration = (String) requestData.get("pendingDuration"); String reasonofPending = (String) requestData.get("reasonofPending"); String dp = (String) requestData.get("dp"); String otherReason = (String) requestData.get("otherReason"); String dateToAudit = (String) requestData.get("dateToAudit"); String filemovedby =(String)requestData.get("filemovedby"); String remarks = (String) requestData.get("remarks"); String dept_Id = (String) requestData.get("deptId"); int deptId = Integer.parseInt(dept_Id); String file_category = (String) requestData.get("filecategory"); int filecategory = Integer.parseInt(file_category); // Execute a query to fetch the required String based on filecategory String additionalDataQuery = "SELECT file_name FROM file_category_master WHERE id = ?"; String fc_name = jdbcTemplate.queryForObject(additionalDataQuery, String.class,filecategory); System.out.println("fc_name==="+fc_name); int filestatus = getFileStatus.getFileStatus7Id(); if (filestatus == 0) { System.out.println("File status not found. Aborting insertion."); return false; } String fileentrytype ="NEW"; System.out.println("filemovedby====="+filemovedby); // Generate the variable (PR + current date + current time) String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss")); String temp_id = "PPR" + currentTimestamp; String query = "INSERT INTO pensioner_details (emp_no, emp_name, dept_name, designation,type_of_retirement,retirement_class,retirement_date , reason_for_provisional_pension,file_moved_date, pending_duration,reason_for_pending,dp,remarks,file_category,file_status,file_entry_type,dept_id,file_category_name,others_provisional_pension,temp_id) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?)"; int rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, typeOfRetirement,retirementClass ,retirementDate , ReasonofPension,dateToAudit,pendingDuration,reasonofPending,dp,remarks,filecategory,filestatus,fileentrytype,deptId,fc_name,otherReason,temp_id); String query1 = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,type_of_retirement,retirement_class, retirement_date,reason_for_provisional_pension ,file_moved_date, remarks,pending_duration,reason_for_pending,dp ,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,others_provisional_pension,temp_id) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?,?)"; int rowsInsertedHistory = jdbcTemplate.update(query1, empNo, empName, deptName, designation,typeOfRetirement,retirementClass,retirementDate ,ReasonofPension,dateToAudit,remarks,pendingDuration,reasonofPending,dp,filecategory,filestatus,fileentrytype,filemovedby,deptId,fc_name,otherReason,temp_id); String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?, ?, ?, ?, ?,?)"; int rowsInsertedFileMovement = jdbcTemplate.update(query2, empNo,dateToAudit,filestatus,filemovedby,remarks,temp_id); // return rowsInserted > 0 && rowsInsertedHistory > 0 && rowsInsertedFileMovement > 0; } catch (Exception e) { e.printStackTrace(); return false; // Return false if an exception occurs } } //cps saving method: @Transactional public boolean savenewEntryDetailspensionscheme(Map requestData) { try { // Safely extract input values from requestData String empNo = requestData.get("empNo") != null ? requestData.get("empNo").toString() : null; String empName = requestData.get("empName") != null ? requestData.get("empName").toString() : null; String deptName = requestData.get("deptName") != null ? requestData.get("deptName").toString() : null; String designation = requestData.get("designation") != null ? requestData.get("designation").toString() : null; String classes = requestData.get("classes") != null ? requestData.get("classes").toString() : null; String fileMovedBy = requestData.get("fileMovedBy") != null ? requestData.get("fileMovedBy").toString() : null; String remarks = requestData.get("remarks") != null ? requestData.get("remarks").toString() : null; String retirementType = requestData.get("retirementType") != null ? requestData.get("retirementType").toString() : null; String retirementdate = requestData.get("retirementdate") !=null ? requestData.get("retirementdate").toString() : null; String uac = (String) requestData.get("uac"); String uacDate = "yes".equals(uac) && requestData.get("uacDate") != null ? requestData.get("uacDate").toString() : null; String pendingDuration = (String) requestData.get("pendingDuration"); String reasonPending = "yes".equals(pendingDuration) && requestData.get("reasonPending") != null ? requestData.get("reasonPending").toString() : null; String cps =(String) requestData.get("cps"); String cpsAmount = "yes".equals(cps) && requestData.get("cpsAmount") != null ? requestData.get("cpsAmount").toString() : null; String elOrLpa = (String)requestData.get("elOrLpa"); String elOrLpaAmount = "yes".equals(elOrLpa) && requestData.get("elOrLpaAmount") != null ? requestData.get("elOrLpaAmount").toString() : null; String spfgs = (String) requestData.get("spfgs"); String spfgsAmount = "yes".equals(spfgs) && requestData.get("spfgsAmount") != null ? requestData.get("spfgsAmount").toString() : null; int deptId = requestData.get("deptId") != null ? Integer.parseInt(requestData.get("deptId").toString()) : 0; // Default static values String file_category = (String) requestData.get("filecategory"); int filecategory = Integer.parseInt(file_category); int fileStatus = getFileStatus.getFileStatus11Id(); if (fileStatus == 0) { System.out.println("File status not found. Aborting insertion."); return false; } String fileEntryType = "FILE_COMPLETED"; // Fetch file_category_name dynamically String fileCategoryQuery = "SELECT file_name FROM file_category_master WHERE id = ?"; String fileCategoryName = jdbcTemplate.queryForObject(fileCategoryQuery, String.class,filecategory); // Generate the variable (PR + current date + current time) String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss")); String temp_id = "PC" + currentTimestamp; // Insert into cps_pensioner_details String queryDetails = "INSERT INTO cps_pensioner_details " + "(emp_no, emp_name, dept_name, designation, file_category, retirement_class, retirement_date,type_of_retirement, uac, uac_date, " + "pending_duration,reason_for_pending ,cps, cps_amount, el_or_lpa, el_or_lpa_amount, spfgs, spfgs_amount, remarks, " + "file_status, file_entry_type, dept_id, file_category_name,temp_id) " + "VALUES (?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)"; int rowsInsertedDetails = jdbcTemplate.update(queryDetails, empNo, empName, deptName, designation, filecategory, classes, retirementdate,retirementType, uac, uacDate, pendingDuration,reasonPending ,cps, cpsAmount, elOrLpa, elOrLpaAmount, spfgs, spfgsAmount, remarks, fileStatus, fileEntryType, deptId, fileCategoryName,temp_id); // Insert into cps_pensioner_details_history String queryHistory = "INSERT INTO cps_pensioner_details_history " + "(emp_no, emp_name, dept_name, designation, file_category, retirement_class, retirement_date,type_of_retirement, uac, uac_date, " + "pending_duration,reason_for_pending ,cps, cps_amount, el_or_lpa, el_or_lpa_amount, spfgs, spfgs_amount, remarks, " + "file_status, file_entry_type, file_moved_by, dept_id, file_category_name,temp_id) " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?)"; int rowsInsertedHistory = jdbcTemplate.update(queryHistory, empNo, empName, deptName, designation, filecategory, classes, retirementdate,retirementType, uac, uacDate, pendingDuration, reasonPending,cps, cpsAmount, elOrLpa, elOrLpaAmount, spfgs, spfgsAmount, remarks, fileStatus, fileEntryType, fileMovedBy, deptId, fileCategoryName,temp_id); // Current date and time LocalDateTime fileMovedDate = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formattedFileMovedDate = fileMovedDate.format(formatter); // Insert into file_movement_history String queryFileMovement = "INSERT INTO file_movement_history (emp_no, file_status,file_moved_date, file_moved_by, remarks,temp_id) " + "VALUES (?, ?, ?, ?, ?,?)"; int rowsInsertedFileMovement = jdbcTemplate.update(queryFileMovement, empNo, fileStatus, formattedFileMovedDate, fileMovedBy, remarks,temp_id); // Return true if all inserts were successful return rowsInsertedDetails > 0 && rowsInsertedHistory > 0 && rowsInsertedFileMovement > 0; } catch (Exception e) { e.printStackTrace(); return false; // Return false if an exception occurs } } //pendency saving method @Transactional public boolean savePendencyDetails(Map requestData) { try { String empNo = (String) requestData.get("empNo"); String empName = (String) requestData.get("empName"); String deptName = (String) requestData.get("deptName"); String designation = (String) requestData.get("designation"); String retirementclass = (String) requestData.get("retirementclass"); String typeOfRetirement = (String) requestData.get("typeOfRetirement"); String retirementDate = (String) requestData.get("retirementDate"); //String pendencyCategory=(String)requestData.get("pendencyCategory"); String pendencyCategory="Retirement"; String dateToAudit = (String) requestData.get("dateToAudit"); String remarks = (String) requestData.get("remarks"); String filemovedby =(String)requestData.get("filemovedby"); String pendingDuration = (String) requestData.get("pendingDuration"); String reasonPending =requestData.get("reasonPending") != null ? requestData.get("reasonPending").toString() : null; String dept_Id = (String) requestData.get("deptId"); System.out.println("dept_Id = "+dept_Id); int deptId = Integer.parseInt(dept_Id); String file_category = (String) requestData.get("filecategory"); int filecategory = Integer.parseInt(file_category); int filestatus = getFileStatus.getFileStatus1Id(); if (filestatus == 0) { System.out.println("File status not found. Aborting insertion."); return false; } String fileentrytype ="NEW"; int rowsInserted = 0; // Generate the variable (PR + current date + current time) String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss")); String temp_id = "PP" + currentTimestamp; String query = "INSERT INTO pensioner_details (emp_no, emp_name, dept_name, designation, retirement_class,retirement_date,pending_duration,reason_for_pending,file_moved_date,dept_id,remarks,file_category,file_status,file_entry_type,file_category_name,type_of_retirement,temp_id) VALUES (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, retirementclass,retirementDate,pendingDuration,reasonPending,dateToAudit, deptId,remarks,filecategory,filestatus,fileentrytype,pendencyCategory,typeOfRetirement,temp_id); String query1 = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, retirement_class,retirement_date,pending_duration,reason_for_pending,file_moved_date,dept_id,remarks,file_category,file_status,file_entry_type,file_category_name,type_of_retirement,file_moved_by,temp_id) VALUES (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?)"; rowsInserted = jdbcTemplate.update(query1, empNo, empName, deptName, designation, retirementclass,retirementDate,pendingDuration,reasonPending,dateToAudit, deptId,remarks,filecategory,filestatus,fileentrytype,pendencyCategory,typeOfRetirement,filemovedby,temp_id); String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; rowsInserted = jdbcTemplate.update(query2, empNo,dateToAudit,filestatus,filemovedby,remarks,temp_id); return rowsInserted > 0; } catch (Exception e) { e.printStackTrace(); return false; // Return false if an exception occurs } } public boolean doesEmployeeExistRPR(String empCode) { String sql = "SELECT COUNT(*) FROM ( " + " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,2,3,4,5) " + " UNION ALL " + " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " + ") AS combined"; // Note: Pass empCode twice since there are two placeholders. Integer count = jdbcTemplate.queryForObject(sql, Integer.class,empCode,empCode); return count != null && count > 0; } // public boolean doesEmployeeExist(String empCode) { // // String sql = "SELECT COUNT(*) FROM ( " + // " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,3,5) "+ // " UNION ALL " + // " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " + // ") AS combined"; // // Note: Pass empCode twice since there are two placeholders. // Integer count = jdbcTemplate.queryForObject(sql,Integer.class,empCode,empCode); // System.out.println("count<<<<<<<<<<<"+count); // return count != null && count > 0; // } // // // public boolean doesEmployeeExistgis(String empCode) { // String sql = "SELECT COUNT(*) FROM ( " + // " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,2,3,5,6) " + // " UNION ALL " + // " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " + // ") AS combined"; // // Note: Pass empCode twice since there are two placeholders. // Integer count = jdbcTemplate.queryForObject(sql, Integer.class,empCode,empCode); // return count != null && count > 0; // } // // // public boolean doesEmployeeExistfp(String empCode) { // // String sql = "SELECT COUNT(*) FROM ( " + // // " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,2,3,5) AND is_closed IN (0)" + // " UNION ALL " + // // " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " + // ") AS combined"; // // // Note: Pass empCode twice since there are two placeholders. // Integer count = jdbcTemplate.queryForObject(sql, Integer.class,empCode,empCode); // return count != null && count > 0; // } public boolean doesEmployeeExist(String empCode) { String sql = "SELECT COUNT(*) FROM ( " + " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (3,4,5) "+ " UNION ALL " + " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1) AND is_closed=0 "+ " UNION ALL " + " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " + ") AS combined"; // Note: Pass empCode twice since there are two placeholders. Integer count = jdbcTemplate.queryForObject(sql,Integer.class,empCode,empCode,empCode); System.out.println("count<<<<<<<<<<<"+count); return count != null && count > 0; } public boolean doesEmployeeExistgis(String empCode) { String sql = "SELECT COUNT(*) FROM ( " + " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,2,3,5) " + " UNION ALL " + " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " + ") AS combined"; // Note: Pass empCode twice since there are two placeholders. Integer count = jdbcTemplate.queryForObject(sql, Integer.class,empCode,empCode); return count != null && count > 0; } public boolean doesEmployeeExistfp(String empCode) { String sql = "SELECT COUNT(*) FROM ( " + " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,2,3,5) AND is_closed IN (0)" + " UNION ALL " + " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " + ") AS combined"; // Note: Pass empCode twice since there are two placeholders. Integer count = jdbcTemplate.queryForObject(sql, Integer.class,empCode,empCode); return count != null && count > 0; } }