You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

761 lines
42 KiB

2 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
  1. package in.gov.chennaicorporation.gccoffice.pensioner.service;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.time.LocalDate;
  5. import java.time.LocalDateTime;
  6. import java.time.format.DateTimeFormatter;
  7. import java.time.format.DateTimeParseException;
  8. import java.util.ArrayList;
  9. import java.util.Collections;
  10. import java.util.HashMap;
  11. import java.util.List;
  12. import java.util.Map;
  13. import javax.sql.DataSource;
  14. import java.util.Comparator;
  15. import java.util.Date;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.beans.factory.annotation.Qualifier;
  18. import org.springframework.dao.EmptyResultDataAccessException;
  19. import org.springframework.jdbc.core.JdbcTemplate;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import org.springframework.web.client.RestTemplate;
  23. import com.fasterxml.jackson.databind.JsonNode;
  24. import com.fasterxml.jackson.databind.ObjectMapper;
  25. import in.gov.chennaicorporation.gccoffice.configuration.AppConfig;
  26. @Service
  27. public class NewEntryService {
  28. @Autowired
  29. private JdbcTemplate jdbcTemplate;
  30. private RestTemplate restTemplate;
  31. private ObjectMapper objectMapper;
  32. @Autowired
  33. private AppConfig appconfig;
  34. public NewEntryService(RestTemplate restTemplate, ObjectMapper objectMapper) {
  35. this.restTemplate = restTemplate;
  36. this.objectMapper = objectMapper;
  37. }
  38. @Autowired
  39. public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) {
  40. this.jdbcTemplate = new JdbcTemplate(dataSource);
  41. }
  42. public Map<String, Object> fetchEmplyeeDetails(String fromDate, String toDate, Integer deptId) {
  43. Map<String, Object> response = new HashMap<>();
  44. String apiUrl = appconfig.qaqcurl + "serviceId=common_api"
  45. + "&jsonResp=Yes"
  46. + "&subService=getEmpPenDetDuration"
  47. + "&fromDate=" + fromDate
  48. + "&toDate=" + toDate
  49. + "&deptId=" + deptId;
  50. System.out.println("url: " + apiUrl);
  51. System.out.println("deptId:" + deptId);
  52. try {
  53. String rawResponse = restTemplate.getForObject(apiUrl, String.class);
  54. System.out.println("Raw Response: " + rawResponse); // Debugging step
  55. if (isValidJson(rawResponse)) {
  56. JsonNode jsonResponse = objectMapper.readTree(rawResponse);
  57. // Extract the "ListResult" array
  58. JsonNode details = jsonResponse.path("ListResult");
  59. if (details.isArray() && details.size() > 0) {
  60. List<Map<String, String>> list = new ArrayList<>();
  61. for (JsonNode detail : details) {
  62. Map<String, String> listResult = new HashMap<>();
  63. listResult.put("RETIREMENT_DATE", getNonNullValue(detail.path("RETIREMENT_DATE")));
  64. listResult.put("DEATH_DATE", getNonNullValue(detail.path("DEATH_DATE")));
  65. listResult.put("COMMUNITY_NAME", getNonNullValue(detail.path("COMMUNITY_NAME")));
  66. listResult.put("GROUP_TYPE", getNonNullValue(detail.path("GROUP_TYPE")));
  67. listResult.put("ID_DEPT", getNonNullValue(detail.path("ID_DEPT")));
  68. listResult.put("EMPLOYEE_CODE", getNonNullValue(detail.path("EMPLOYEE_CODE")));
  69. listResult.put("FUNCTIONARY", getNonNullValue(detail.path("FUNCTIONARY")));
  70. listResult.put("IS_HANDICAPPED", getNonNullValue(detail.path("IS_HANDICAPPED")));
  71. listResult.put("GENDER", getNonNullValue(detail.path("GENDER")));
  72. listResult.put("DATE_OF_BIRTH", getNonNullValue(detail.path("DATE_OF_BIRTH")));
  73. listResult.put("DATE_OF_APPOINTMENT", getNonNullValue(detail.path("DATE_OF_APPOINTMENT")));
  74. listResult.put("DESIGNATION", getNonNullValue(detail.path("DESIGNATION")));
  75. listResult.put("EMPLOYEE_NAME", getNonNullValue(detail.path("EMPLOYEE_NAME")));
  76. listResult.put("DEPARTMENT", getNonNullValue(detail.path("DEPARTMENT")));
  77. list.add(listResult);
  78. }
  79. // Sort the list by RETIREMENT_DATE in ascending order
  80. list.sort(Comparator.comparing(map -> parseDate(((Map<String, String>) map).get("RETIREMENT_DATE"))));
  81. response.put("list", list);
  82. } else {
  83. response.put("list", Collections.emptyList());
  84. }
  85. } else {
  86. System.err.println("Invalid JSON Response: " + rawResponse);
  87. response.put("list", Collections.emptyList());
  88. }
  89. } catch (Exception e) {
  90. e.printStackTrace();
  91. response.put("list", Collections.emptyList());
  92. }
  93. return response;
  94. }
  95. public Map<String, Object> fetchEmplyeeDetailsbyCode(String empCode) {
  96. Map<String, Object> response = new HashMap<>();
  97. String apiUrl = appconfig.qaqcurl + "serviceId=common_api"
  98. + "&jsonResp=Yes"
  99. + "&subService=getEmpPenDet"
  100. + "&empCode=" + empCode;
  101. System.out.println("url: " + apiUrl);
  102. System.out.println("empCode:" + empCode);
  103. try {
  104. String rawResponse = restTemplate.getForObject(apiUrl, String.class);
  105. System.out.println("Raw Response: " + rawResponse); // Debugging step
  106. if (isValidJson(rawResponse)) {
  107. JsonNode jsonResponse = objectMapper.readTree(rawResponse);
  108. // Extract the "ListResult" array
  109. JsonNode details = jsonResponse.path("ListResult");
  110. if (details.isArray() && details.size() > 0) {
  111. List<Map<String, String>> list = new ArrayList<>();
  112. for (JsonNode detail : details) {
  113. Map<String, String> listResult = new HashMap<>();
  114. listResult.put("RETIREMENT_DATE", formatToISODate(getNonNullValue(detail.path("RETIREMENT_DATE"))));
  115. listResult.put("DEATH_DATE", getNonNullValue(detail.path("DEATH_DATE")));
  116. listResult.put("COMMUNITY_NAME", getNonNullValue(detail.path("COMMUNITY_NAME")));
  117. listResult.put("GROUP_TYPE", getNonNullValue(detail.path("GROUP_TYPE")));
  118. listResult.put("ID_DEPT", getNonNullValue(detail.path("ID_DEPT")));
  119. listResult.put("EMPLOYEE_CODE", getNonNullValue(detail.path("EMPLOYEE_CODE")));
  120. listResult.put("FUNCTIONARY", getNonNullValue(detail.path("FUNCTIONARY")));
  121. listResult.put("IS_HANDICAPPED", getNonNullValue(detail.path("IS_HANDICAPPED")));
  122. listResult.put("GENDER", getNonNullValue(detail.path("GENDER")));
  123. listResult.put("DATE_OF_BIRTH", getNonNullValue(detail.path("DATE_OF_BIRTH")));
  124. listResult.put("DATE_OF_APPOINTMENT", getNonNullValue(detail.path("DATE_OF_APPOINTMENT")));
  125. listResult.put("DESIGNATION", getNonNullValue(detail.path("DESIGNATION")));
  126. listResult.put("EMPLOYEE_NAME", getNonNullValue(detail.path("EMPLOYEE_NAME")));
  127. listResult.put("DEPARTMENT", getNonNullValue(detail.path("DEPARTMENT")));
  128. list.add(listResult);
  129. }
  130. // Sort the list by RETIREMENT_DATE in ascending order
  131. list.sort(Comparator.comparing(map -> parseDate(((Map<String, String>) map).get("RETIREMENT_DATE"))));
  132. response.put("list", list);
  133. } else {
  134. response.put("list", Collections.emptyList());
  135. }
  136. } else {
  137. System.err.println("Invalid JSON Response: " + rawResponse);
  138. response.put("list", Collections.emptyList());
  139. }
  140. } catch (Exception e) {
  141. e.printStackTrace();
  142. response.put("list", Collections.emptyList());
  143. }
  144. return response;
  145. }
  146. // Utility method to convert DD-MM-YYYY to YYYY-MM-DD
  147. private String formatToISODate(String date) {
  148. if (date == null || date.isEmpty()) {
  149. return "";
  150. }
  151. try {
  152. SimpleDateFormat inputFormat = new SimpleDateFormat("dd-MM-yyyy");
  153. SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd");
  154. Date parsedDate = inputFormat.parse(date);
  155. return outputFormat.format(parsedDate);
  156. } catch (ParseException e) {
  157. System.err.println("Date parsing error: " + e.getMessage());
  158. return date; // Return original date if parsing fails
  159. }
  160. }
  161. //getting deptId from login
  162. public Integer getloginuserDeptId(int userId) {
  163. String query = "select emp_dept_id from login_details where gcc_login_id = ?";
  164. try {
  165. // Use queryForObject to return a single value
  166. return jdbcTemplate.queryForObject(query, Integer.class, userId);
  167. } catch (EmptyResultDataAccessException e) {
  168. // Log the issue and handle the case when no result is found
  169. System.out.println("No department found for user ID: " + userId);
  170. return null; // Or return a default value if required
  171. }
  172. }
  173. private LocalDate parseDate(String date) {
  174. if (date == null || date.isEmpty()) {
  175. return LocalDate.MIN; // Use a minimum value for invalid or empty dates
  176. }
  177. try {
  178. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); // Adjust format as needed
  179. return LocalDate.parse(date, formatter);
  180. } catch (DateTimeParseException e) {
  181. e.printStackTrace();
  182. return LocalDate.MIN; // Fallback for invalid dates
  183. }
  184. }
  185. private boolean isValidJson(String json) {
  186. try {
  187. objectMapper.readTree(json);
  188. return true;
  189. } catch (Exception e) {
  190. return false;
  191. }
  192. }
  193. private String getNonNullValue(JsonNode node) {
  194. //String value = node.isMissingNode() || node.isNull() || node.asText().isEmpty() ? "N/A" : node.asText();
  195. String value = node.isMissingNode() || node.isNull() || node.asText().isEmpty() || node.asText().isBlank() ? "N/A" : node.asText();
  196. //2024-565EAT
  197. return "null".equals(value) ? "N/A" : value; // Check for string "null"
  198. }
  199. public String getDeptNameById(Integer deptId) {
  200. String query = "SELECT dept_name FROM department_master WHERE dept_id=? AND isactive=1 AND isdelete=0";
  201. try {
  202. // Query execution and returning the department name
  203. return jdbcTemplate.queryForObject(query, new Object[]{deptId}, String.class);
  204. } catch (Exception e) {
  205. // Handle exception if deptId is not found or query fails
  206. e.printStackTrace();
  207. return null;
  208. }
  209. }
  210. @Transactional
  211. public boolean saveRetirementEmployeeDetails(Map<String, Object> requestData) {
  212. try {
  213. String empNo = (String) requestData.get("empNo");
  214. String empName = (String) requestData.get("empName");
  215. String deptName = (String) requestData.get("deptName");
  216. String designation = (String) requestData.get("designation");
  217. String typeOfRetirement = (String) requestData.get("typeOfRetirement");
  218. String retirementdate = (String) requestData.get("retirementdate");
  219. String retirementclass = (String) requestData.get("retirementclass");
  220. String dateToAudit = (String) requestData.get("dateToAudit");
  221. String filemovedby =(String)requestData.get("filemovedby");
  222. String remarks = (String) requestData.get("remarks");
  223. String dept_Id = (String) requestData.get("deptId");
  224. String file_category = (String) requestData.get("filecategory");
  225. int deptId = Integer.parseInt(dept_Id);
  226. int filecategory = Integer.parseInt(file_category);
  227. // Execute a query to fetch the required String based on filecategory
  228. String additionalDataQuery = "SELECT file_name FROM file_category_master WHERE id = ?";
  229. String fc_name = jdbcTemplate.queryForObject(additionalDataQuery,
  230. String.class,
  231. filecategory
  232. );
  233. System.out.println("fc_name==="+fc_name);
  234. int filestatus = 1;
  235. String fileentrytype ="NEW";
  236. System.out.println("filemovedby====="+filemovedby);
  237. // Generate the variable (PR + current date + current time)
  238. String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss"));
  239. String temp_id = "PR" + currentTimestamp;
  240. 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 (?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?)";
  241. int rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, typeOfRetirement,retirementdate ,retirementclass,dateToAudit, remarks,filecategory,filestatus,fileentrytype,deptId,fc_name,temp_id);
  242. 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 (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?)";
  243. int rowsInsertedHistory = jdbcTemplate.update(query1, empNo, empName, deptName, designation, typeOfRetirement,retirementdate ,retirementclass,dateToAudit, remarks,filecategory,filestatus,fileentrytype,filemovedby,deptId,fc_name,temp_id);
  244. String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?, ?, ?, ?, ?,?)";
  245. int rowsInsertedFileMovement = jdbcTemplate.update(query2, empNo,dateToAudit,filestatus,filemovedby,remarks,temp_id);
  246. return rowsInserted > 0 && rowsInsertedHistory > 0 && rowsInsertedFileMovement > 0;
  247. } catch (Exception e) {
  248. e.printStackTrace();
  249. return false; // Return false if an exception occurs
  250. }
  251. }
  252. public List<Map<String, Object>> getRegisteredEmps(Integer deptId,Integer file_category) {
  253. String query="select distinct emp_no from pensioner_details where dept_id=?";
  254. List<Map<String, Object>>emps= jdbcTemplate.queryForList(query,deptId);
  255. System.out.println("emps===="+emps);
  256. if(emps.isEmpty())
  257. {
  258. return Collections.emptyList();
  259. }
  260. else
  261. {
  262. return emps;
  263. }
  264. }
  265. public Integer getRetirementFileCategoryId() {
  266. String query = "SELECT id FROM file_category_master WHERE file_name = 'Retirement'";
  267. try {
  268. return jdbcTemplate.queryForObject(query, Integer.class);
  269. } catch (EmptyResultDataAccessException e) {
  270. return null; // or handle as needed
  271. }
  272. }
  273. public Integer getFamilyPensionFileCategoryId() {
  274. String query = "SELECT id FROM file_category_master WHERE file_name = 'Family Pension'";
  275. try {
  276. return jdbcTemplate.queryForObject(query, Integer.class);
  277. } catch (EmptyResultDataAccessException e) {
  278. return null; // or handle as needed
  279. }
  280. }
  281. public Integer getPendencyFileCategoryId() {
  282. String query = "SELECT id FROM file_category_master WHERE file_name = 'Pendency'";
  283. try {
  284. return jdbcTemplate.queryForObject(query, Integer.class);
  285. } catch (EmptyResultDataAccessException e) {
  286. return null; // or handle as needed
  287. }
  288. }
  289. public Integer getGISFileCategoryId() {
  290. String query = "SELECT id FROM file_category_master WHERE file_name = 'GIS'";
  291. try {
  292. return jdbcTemplate.queryForObject(query, Integer.class);
  293. } catch (EmptyResultDataAccessException e) {
  294. return null; // or handle as needed
  295. }
  296. }
  297. public Integer getPRFileCategoryId() {
  298. String query = "SELECT id FROM file_category_master WHERE file_name = 'Provisional Retirement'";
  299. try {
  300. return jdbcTemplate.queryForObject(query, Integer.class);
  301. } catch (EmptyResultDataAccessException e) {
  302. return null; // or handle as needed
  303. }
  304. }
  305. public Integer getCPSFileCategoryId() {
  306. String query = "SELECT id FROM file_category_master WHERE file_name = 'Contributory Pension Scheme'";
  307. try {
  308. return jdbcTemplate.queryForObject(query, Integer.class);
  309. } catch (EmptyResultDataAccessException e) {
  310. return null; // or handle as needed
  311. }
  312. }
  313. @Transactional
  314. public boolean saveFamilyPensionDetails(Map<String, Object> requestData) {
  315. try {
  316. // Extract data from the request body
  317. String empNo = (String) requestData.get("empNo");
  318. String empName = (String) requestData.get("empName");
  319. String deptName = (String) requestData.get("deptName");
  320. String designation = (String) requestData.get("designation");
  321. String sanctionedgis = (String) requestData.get("sanctionedgis");
  322. String serviceDeath =(String) requestData.get("serviceDeath");
  323. String deceased =(String) requestData.get("deceased");
  324. String dateToAudit = (String) requestData.get("dateToAudit");
  325. String remarks = (String) requestData.get("remarks");
  326. String filemovedby =(String)requestData.get("filemovedby");
  327. String pendingDuration = (String) requestData.get("pendingDuration");
  328. String reasonPending = (("yes".equals(pendingDuration) || "no".equals(pendingDuration))
  329. && requestData.get("reasonPending") != null) ? requestData.get("reasonPending").toString() : null;
  330. String dept_Id = (String) requestData.get("deptId");
  331. int deptId = Integer.parseInt(dept_Id);
  332. String file_category = (String) requestData.get("filecategory");
  333. int filecategory = Integer.parseInt(file_category);
  334. // Execute a query to fetch the required String based on filecategory
  335. String additionalDataQuery = "SELECT file_name FROM file_category_master WHERE id = ?";
  336. String fc_name = jdbcTemplate.queryForObject(additionalDataQuery, new Object[]{filecategory}, String.class);
  337. System.out.println("fc_name==="+fc_name);
  338. int filestatus = 1;
  339. String fileentrytype ="NEW";
  340. int rowsInserted=0;
  341. // Generate the variable (PR + current date + current time)
  342. String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss"));
  343. String temp_id = "PF" + currentTimestamp;
  344. 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 (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)";
  345. rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, sanctionedgis,serviceDeath ,deceased,dateToAudit, remarks,deptId,filecategory,filestatus,fileentrytype,fc_name,temp_id, pendingDuration,reasonPending);
  346. 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 (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?)";
  347. rowsInserted = jdbcTemplate.update(query1, empNo, empName, deptName, designation, sanctionedgis,serviceDeath ,deceased,dateToAudit, remarks,deptId,filecategory,filestatus,fileentrytype,filemovedby,fc_name,temp_id, pendingDuration,reasonPending);
  348. String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?, ?, ?, ?, ?,?)";
  349. rowsInserted = jdbcTemplate.update(query2, empNo,dateToAudit,filestatus,filemovedby,remarks,temp_id);
  350. return rowsInserted > 0;
  351. } catch (Exception e) {
  352. e.printStackTrace();
  353. return false; // Return false if an exception occurs
  354. }
  355. }
  356. ///gis saving method service
  357. @Transactional
  358. public boolean savenewEntryDetailsGis(Map<String, Object> requestData) {
  359. try {
  360. String empNo = (String) requestData.get("empNo");
  361. String empName = (String) requestData.get("empName");
  362. String deptName = (String) requestData.get("deptName");
  363. String designation = (String) requestData.get("designation");
  364. String dateToPension = (String) requestData.get("dateToPension");
  365. String filemovedby =(String)requestData.get("filemovedby");
  366. String remarks = (String) requestData.get("remarks");
  367. String serviceDeath =(String) requestData.get("serviceDeath");
  368. String deceased =(String) requestData.get("deceased");
  369. String gisentry = (String) requestData.get("gisentry");
  370. String gisAdvanceamount =(String) requestData.get("gisAdvanceamount");
  371. String gisAdvance = (String) requestData.get("gisAdvance");
  372. String dept_Id = (String) requestData.get("deptId");
  373. int deptId = Integer.parseInt(dept_Id);
  374. String file_category = (String) requestData.get("filecategory");
  375. int filecategory = Integer.parseInt(file_category);
  376. // Execute a query to fetch the required String based on filecategory
  377. String additionalDataQuery = "SELECT file_name FROM file_category_master WHERE id = ?";
  378. String fc_name = jdbcTemplate.queryForObject(additionalDataQuery, new Object[]{filecategory}, String.class);
  379. System.out.println("fc_name==="+fc_name);
  380. int filestatus = 7;
  381. String fileentrytype ="NEW";
  382. System.out.println("filemovedby====="+filemovedby);
  383. // Generate the variable (PR + current date + current time)
  384. String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss"));
  385. String temp_id = "PG" + currentTimestamp;
  386. 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 (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)";
  387. int rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, dateToPension, remarks,serviceDeath,deceased,gisentry,gisAdvanceamount,gisAdvance,filecategory,filestatus,fileentrytype,deptId,fc_name,temp_id);
  388. 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 (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?)";
  389. 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);
  390. String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?, ?, ?, ?, ?,?)";
  391. int rowsInsertedFileMovement = jdbcTemplate.update(query2, empNo,dateToPension,filestatus,filemovedby,remarks,temp_id);
  392. //
  393. return rowsInserted > 0 && rowsInsertedHistory > 0 && rowsInsertedFileMovement > 0;
  394. } catch (Exception e) {
  395. e.printStackTrace();
  396. return false; // Return false if an exception occurs
  397. }
  398. }
  399. //provisional retirement method service
  400. @Transactional
  401. public boolean savenewEntryDetailsProvisionalretirement(Map<String, Object> requestData) {
  402. try {
  403. String empNo = (String) requestData.get("empNo");
  404. String empName = (String) requestData.get("empName");
  405. String deptName = (String) requestData.get("deptName");
  406. String designation = (String) requestData.get("designation");
  407. String typeOfRetirement = (String) requestData.get("typeOfRetirement");
  408. String ReasonofPension = (String) requestData.get("ReasonofPension");
  409. String retirementClass = (String) requestData.get("retirementClass");
  410. String retirementDate = (String) requestData.get("retirementDate");
  411. String pendingDuration = (String) requestData.get("pendingDuration");
  412. String reasonofPending = (String) requestData.get("reasonofPending");
  413. String dp = (String) requestData.get("dp");
  414. String otherReason = (String) requestData.get("otherReason");
  415. String dateToAudit = (String) requestData.get("dateToAudit");
  416. String filemovedby =(String)requestData.get("filemovedby");
  417. String remarks = (String) requestData.get("remarks");
  418. String dept_Id = (String) requestData.get("deptId");
  419. int deptId = Integer.parseInt(dept_Id);
  420. String file_category = (String) requestData.get("filecategory");
  421. int filecategory = Integer.parseInt(file_category);
  422. // Execute a query to fetch the required String based on filecategory
  423. String additionalDataQuery = "SELECT file_name FROM file_category_master WHERE id = ?";
  424. String fc_name = jdbcTemplate.queryForObject(additionalDataQuery, new Object[]{filecategory}, String.class);
  425. System.out.println("fc_name==="+fc_name);
  426. int filestatus = 7;
  427. String fileentrytype ="NEW";
  428. System.out.println("filemovedby====="+filemovedby);
  429. // Generate the variable (PR + current date + current time)
  430. String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss"));
  431. String temp_id = "PPR" + currentTimestamp;
  432. 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 (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?)";
  433. 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);
  434. 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 (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?,?)";
  435. int rowsInsertedHistory = jdbcTemplate.update(query1, empNo, empName, deptName, designation,typeOfRetirement,retirementClass,retirementDate ,ReasonofPension,dateToAudit,pendingDuration,reasonofPending,dp,remarks,filecategory,filestatus,fileentrytype,filemovedby,deptId,fc_name,otherReason,temp_id);
  436. String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?, ?, ?, ?, ?,?)";
  437. int rowsInsertedFileMovement = jdbcTemplate.update(query2, empNo,dateToAudit,filestatus,filemovedby,remarks,temp_id);
  438. //
  439. return rowsInserted > 0 && rowsInsertedHistory > 0 && rowsInsertedFileMovement > 0;
  440. } catch (Exception e) {
  441. e.printStackTrace();
  442. return false; // Return false if an exception occurs
  443. }
  444. }
  445. //cps saving method:
  446. @Transactional
  447. public boolean savenewEntryDetailspensionscheme(Map<String, Object> requestData) {
  448. try {
  449. // Safely extract input values from requestData
  450. String empNo = requestData.get("empNo") != null ? requestData.get("empNo").toString() : null;
  451. String empName = requestData.get("empName") != null ? requestData.get("empName").toString() : null;
  452. String deptName = requestData.get("deptName") != null ? requestData.get("deptName").toString() : null;
  453. String designation = requestData.get("designation") != null ? requestData.get("designation").toString() : null;
  454. String classes = requestData.get("classes") != null ? requestData.get("classes").toString() : null;
  455. String fileMovedBy = requestData.get("fileMovedBy") != null ? requestData.get("fileMovedBy").toString() : null;
  456. String remarks = requestData.get("remarks") != null ? requestData.get("remarks").toString() : null;
  457. String retirementType = requestData.get("retirementType") != null ? requestData.get("retirementType").toString() : null;
  458. String uac = (String) requestData.get("uac");
  459. String uacDate = "yes".equals(uac) && requestData.get("uacDate") != null ? requestData.get("uacDate").toString() : null;
  460. String pendingDuration = (String) requestData.get("pendingDuration");
  461. String reasonPending = "yes".equals(pendingDuration) && requestData.get("reasonPending") != null
  462. ? requestData.get("reasonPending").toString() : null;
  463. String cps =(String) requestData.get("cps");
  464. String cpsAmount = "yes".equals(cps) && requestData.get("cpsAmount") != null ? requestData.get("cpsAmount").toString() : null;
  465. String elOrLpa = (String)requestData.get("elOrLpa");
  466. String elOrLpaAmount = "yes".equals(elOrLpa) && requestData.get("elOrLpaAmount") != null ? requestData.get("elOrLpaAmount").toString() : null;
  467. String spfgs = (String) requestData.get("spfgs");
  468. String spfgsAmount = "yes".equals(spfgs) && requestData.get("spfgsAmount") != null ? requestData.get("spfgsAmount").toString() : null;
  469. int deptId = requestData.get("deptId") != null ? Integer.parseInt(requestData.get("deptId").toString()) : 0;
  470. // Default static values
  471. String file_category = (String) requestData.get("filecategory");
  472. int filecategory = Integer.parseInt(file_category);
  473. int fileStatus = 11;
  474. String fileEntryType = "FILE_COMPLETED";
  475. // Fetch file_category_name dynamically
  476. String fileCategoryQuery = "SELECT file_name FROM file_category_master WHERE id = ?";
  477. String fileCategoryName = jdbcTemplate.queryForObject(fileCategoryQuery, new Object[]{filecategory}, String.class);
  478. // Generate the variable (PR + current date + current time)
  479. String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss"));
  480. String temp_id = "PC" + currentTimestamp;
  481. // Insert into cps_pensioner_details
  482. String queryDetails = "INSERT INTO cps_pensioner_details " +
  483. "(emp_no, emp_name, dept_name, designation, file_category, retirement_class, type_of_retirement, uac, uac_date, " +
  484. "pending_duration,reason_for_pending ,cps, cps_amount, el_or_lpa, el_or_lpa_amount, spfgs, spfgs_amount, remarks, " +
  485. "file_status, file_entry_type, dept_id, file_category_name,temp_id) " +
  486. "VALUES (?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)";
  487. int rowsInsertedDetails = jdbcTemplate.update(queryDetails,
  488. empNo, empName, deptName, designation, filecategory, classes, retirementType, uac, uacDate,
  489. pendingDuration,reasonPending ,cps, cpsAmount, elOrLpa, elOrLpaAmount, spfgs, spfgsAmount, remarks,
  490. fileStatus, fileEntryType, deptId, fileCategoryName,temp_id);
  491. // Insert into cps_pensioner_details_history
  492. String queryHistory = "INSERT INTO cps_pensioner_details_history " +
  493. "(emp_no, emp_name, dept_name, designation, file_category, retirement_class, type_of_retirement, uac, uac_date, " +
  494. "pending_duration,reason_for_pending ,cps, cps_amount, el_or_lpa, el_or_lpa_amount, spfgs, spfgs_amount, remarks, " +
  495. "file_status, file_entry_type, file_moved_by, dept_id, file_category_name,temp_id) " +
  496. "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)";
  497. int rowsInsertedHistory = jdbcTemplate.update(queryHistory,
  498. empNo, empName, deptName, designation, filecategory, classes, retirementType, uac, uacDate,
  499. pendingDuration, reasonPending,cps, cpsAmount, elOrLpa, elOrLpaAmount, spfgs, spfgsAmount, remarks,
  500. fileStatus, fileEntryType, fileMovedBy, deptId, fileCategoryName,temp_id);
  501. // Current date and time
  502. LocalDateTime fileMovedDate = LocalDateTime.now();
  503. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  504. String formattedFileMovedDate = fileMovedDate.format(formatter);
  505. // Insert into file_movement_history
  506. String queryFileMovement = "INSERT INTO file_movement_history (emp_no, file_status,file_moved_date, file_moved_by, remarks,temp_id) " +
  507. "VALUES (?, ?, ?, ?, ?,?)";
  508. int rowsInsertedFileMovement = jdbcTemplate.update(queryFileMovement, empNo, fileStatus, formattedFileMovedDate, fileMovedBy, remarks,temp_id);
  509. // Return true if all inserts were successful
  510. return rowsInsertedDetails > 0 && rowsInsertedHistory > 0 && rowsInsertedFileMovement > 0;
  511. } catch (Exception e) {
  512. e.printStackTrace();
  513. return false; // Return false if an exception occurs
  514. }
  515. }
  516. //pendency saving method
  517. @Transactional
  518. public boolean savePendencyDetails(Map<String, Object> requestData) {
  519. try {
  520. String empNo = (String) requestData.get("empNo");
  521. String empName = (String) requestData.get("empName");
  522. String deptName = (String) requestData.get("deptName");
  523. String designation = (String) requestData.get("designation");
  524. String retirementclass = (String) requestData.get("retirementclass");
  525. String typeOfRetirement = (String) requestData.get("typeOfRetirement");
  526. String retirementDate = (String) requestData.get("retirementDate");
  527. //String pendencyCategory=(String)requestData.get("pendencyCategory");
  528. String pendencyCategory="Retirement";
  529. String dateToAudit = (String) requestData.get("dateToAudit");
  530. String remarks = (String) requestData.get("remarks");
  531. String filemovedby =(String)requestData.get("filemovedby");
  532. String pendingDuration = (String) requestData.get("pendingDuration");
  533. String reasonPending =requestData.get("reasonPending") != null ? requestData.get("reasonPending").toString() : null;
  534. String dept_Id = (String) requestData.get("deptId");
  535. System.out.println("dept_Id = "+dept_Id);
  536. int deptId = Integer.parseInt(dept_Id);
  537. String file_category = (String) requestData.get("filecategory");
  538. int filecategory = Integer.parseInt(file_category);
  539. int filestatus = 1;
  540. String fileentrytype ="NEW";
  541. int rowsInserted = 0;
  542. // Generate the variable (PR + current date + current time)
  543. String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss"));
  544. String temp_id = "PP" + currentTimestamp;
  545. 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 (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)";
  546. rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, retirementclass,retirementDate,pendingDuration,reasonPending,dateToAudit, deptId,remarks,filecategory,filestatus,fileentrytype,pendencyCategory,typeOfRetirement,temp_id);
  547. 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 (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?)";
  548. rowsInserted = jdbcTemplate.update(query1, empNo, empName, deptName, designation, retirementclass,retirementDate,pendingDuration,reasonPending,dateToAudit, deptId,remarks,filecategory,filestatus,fileentrytype,pendencyCategory,typeOfRetirement,filemovedby,temp_id);
  549. String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)";
  550. rowsInserted = jdbcTemplate.update(query2, empNo,dateToAudit,filestatus,filemovedby,remarks,temp_id);
  551. return rowsInserted > 0;
  552. } catch (Exception e) {
  553. e.printStackTrace();
  554. return false; // Return false if an exception occurs
  555. }
  556. }
  557. public boolean doesEmployeeExistRPR(String empCode) {
  558. String sql = "SELECT COUNT(*) FROM ( " +
  559. " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,2,3,4,5,6) " +
  560. " UNION ALL " +
  561. " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " +
  562. ") AS combined";
  563. // Note: Pass empCode twice since there are two placeholders.
  564. Integer count = jdbcTemplate.queryForObject(sql, new Object[]{empCode, empCode}, Integer.class);
  565. return count != null && count > 0;
  566. }
  567. public boolean doesEmployeeExist(String empCode) {
  568. String sql = "SELECT COUNT(*) FROM ( " +
  569. " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,3,5) "+
  570. " UNION ALL " +
  571. " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " +
  572. ") AS combined";
  573. // Note: Pass empCode twice since there are two placeholders.
  574. Integer count = jdbcTemplate.queryForObject(sql, new Object[]{empCode, empCode},Integer.class);
  575. System.out.println("count<<<<<<<<<<<"+count);
  576. return count != null && count > 0;
  577. }
  578. public boolean doesEmployeeExistgis(String empCode) {
  579. String sql = "SELECT COUNT(*) FROM ( " +
  580. " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,2,3,5,6) " +
  581. " UNION ALL " +
  582. " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " +
  583. ") AS combined";
  584. // Note: Pass empCode twice since there are two placeholders.
  585. Integer count = jdbcTemplate.queryForObject(sql, new Object[]{empCode, empCode}, Integer.class);
  586. return count != null && count > 0;
  587. }
  588. public boolean doesEmployeeExistfp(String empCode) {
  589. String sql = "SELECT COUNT(*) FROM ( " +
  590. " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,2,3,5) AND is_closed IN (0)" +
  591. " UNION ALL " +
  592. " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " +
  593. ") AS combined";
  594. // Note: Pass empCode twice since there are two placeholders.
  595. Integer count = jdbcTemplate.queryForObject(sql, new Object[]{empCode, empCode}, Integer.class);
  596. return count != null && count > 0;
  597. }
  598. }