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.

335 lines
18 KiB

2 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
2 years ago
​
​
2 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
2 years ago
2 years ago
​
​
​
​
​
​
​
​
2 years ago
​
​
​
​
​
2 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
2 years ago
2 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
  1. package in.gov.chennaicorporation.gccoffice.pensioner.service;
  2. import java.util.List;
  3. import java.util.Map;
  4. import javax.sql.DataSource;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.beans.factory.annotation.Qualifier;
  7. import org.springframework.dao.DataAccessException;
  8. import org.springframework.jdbc.core.JdbcTemplate;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import org.springframework.web.client.RestTemplate;
  12. import com.fasterxml.jackson.databind.ObjectMapper;
  13. import in.gov.chennaicorporation.gccoffice.configuration.AppConfig;
  14. @Service
  15. @Transactional
  16. public class PensionPartiallyCompService {
  17. @Autowired
  18. private JdbcTemplate jdbcTemplate;
  19. private RestTemplate restTemplate;
  20. private ObjectMapper objectMapper;
  21. @Autowired
  22. private AppConfig appconfig;
  23. public PensionPartiallyCompService(RestTemplate restTemplate, ObjectMapper objectMapper) {
  24. this.restTemplate = restTemplate;
  25. this.objectMapper = objectMapper;
  26. }
  27. @Autowired
  28. public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) {
  29. this.jdbcTemplate = new JdbcTemplate(dataSource);
  30. }
  31. @Autowired
  32. public GetFileStatusService getFileStatus;
  33. public List<Map<String, Object>> fetchPensionPartialEmpfiles(Integer file_cat) {
  34. String query = "SELECT * " +
  35. "FROM pensioner_details " +
  36. "WHERE file_status=10 AND file_category=? AND is_closed=0";
  37. return jdbcTemplate.queryForList(query,file_cat);
  38. }
  39. public boolean updateEntryCompletedDetails(Map<String, Object> requestData) {
  40. try {
  41. String empNo = (String) requestData.get("empNo");
  42. String tempId = (String) requestData.get("tempId");
  43. String dateToAudit = (String) requestData.get("dateToAudit");
  44. String filemovedby = (String) requestData.get("filemovedby");
  45. String remarks = (String) requestData.get("remarks");
  46. String dept_Id = (String) requestData.get("deptId");
  47. String gpf = (String) requestData.get("gpf");
  48. String private_affairs = (String) requestData.get("private_affairs");
  49. String spfgs = (String) requestData.get("spfgs");
  50. String recovery_emp = requestData.get("recovery_emp") != null ? requestData.get("recovery_emp").toString() : null;
  51. String dcrg = (String) requestData.get("dcrg");
  52. String gpfAmount = requestData.get("gpfAmount") != null ? requestData.get("gpfAmount").toString() : null;
  53. String private_affairs_amount = requestData.get("private_affairs_amount") != null ? requestData.get("private_affairs_amount").toString() : null;
  54. String spfgs_amount = requestData.get("spfgs_amount") != null ? requestData.get("spfgs_amount").toString() : null;
  55. String pension_number = (String) requestData.get("pension_number");
  56. String ledger_number = (String) requestData.get("ledger_number");
  57. String benefit_pension = (String) requestData.get("benefit_pension");
  58. String benefit_dcrg = (String) requestData.get("benefit_dcrg");
  59. String benefit_commutation = (String) requestData.get("benefit_commutation");
  60. String benefit_pension_amount = requestData.get("benefit_pension_amount")!= null ? requestData.get("benefit_pension_amount").toString() : null;
  61. String benefit_dcrg_amount = requestData.get("benefit_dcrg_amount") != null ? requestData.get("benefit_dcrg_amount").toString() : null;
  62. String benefit_commutation_amount = requestData.get("benefit_commutation_amount") != null ? requestData.get("benefit_commutation_amount").toString() : null;
  63. int deptId = Integer.parseInt(dept_Id);
  64. int filestatus;
  65. String file_entry_type="";
  66. // String updateQuery1 = "UPDATE zone_benefits SET gpf = ?, gpf_amount = ?, spfgs = ?, spfgs_amount = ?, dcrg = ?, private_affairs = ?, private_affairs_amount = ?, recovery_emp = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ?";
  67. // int rowsUpdated3 = jdbcTemplate.update(updateQuery1, gpf, gpfAmount, spfgs, spfgs_amount, dcrg, private_affairs, private_affairs_amount, recovery_emp, tempId);
  68. // System.out.println("Rows updated in zb: " + rowsUpdated3);
  69. String updateQuery2 = "UPDATE pension_benefits SET pension_number = ?, ledger_number = ?, benefit_pension = ?, benefit_pension_amount = ?, benefit_dcrg = ?, benefit_dcrg_amount = ?, benefit_commutation = ?, benefit_commutation_amount = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ?";
  70. int rowsUpdated2 = jdbcTemplate.update(updateQuery2, pension_number, ledger_number, benefit_pension, benefit_pension_amount, benefit_dcrg, benefit_dcrg_amount, benefit_commutation, benefit_commutation_amount, tempId);
  71. System.out.println("Rows updated in pb: " + rowsUpdated2);
  72. filestatus = CheckFieldsforPension(tempId) ? getFileStatus.getFileStatus11Id() : getFileStatus.getFileStatus10Id();
  73. System.out.println("filestatus inside service="+filestatus);
  74. if(filestatus==11)
  75. {
  76. file_entry_type="FILE_COMPLETED";
  77. }
  78. if(filestatus==10) {
  79. file_entry_type="PENSION_PARTIAL";
  80. }
  81. if (filestatus == 0) {
  82. System.out.println("File status not found. Aborting insertion.");
  83. return false;
  84. }
  85. if (rowsUpdated2 > 0) {
  86. String updateQuery = "UPDATE pensioner_details SET file_entry_type=?,file_status = ?, file_moved_date = ?, remarks = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1";
  87. int rowsUpdated = jdbcTemplate.update(updateQuery,file_entry_type, filestatus, dateToAudit, remarks, tempId);
  88. System.out.println("Rows updated in fpd: " + rowsUpdated);
  89. if (rowsUpdated > 0) {
  90. String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks, temp_id) VALUES (?, ?, ?, ?, ?, ?)";
  91. int rowsUpdated1 = jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks, tempId);
  92. System.out.println("Rows updated in fmh: " + rowsUpdated1);
  93. return true;
  94. }
  95. }
  96. return false;
  97. } catch (NumberFormatException e) {
  98. System.err.println("Error parsing department ID: " + e.getMessage());
  99. return false;
  100. } catch (DataAccessException e) {
  101. System.err.println("Database operation failed: " + e.getMessage());
  102. return false;
  103. } catch (Exception e) {
  104. System.err.println("Unexpected error: " + e.getMessage());
  105. return false;
  106. }
  107. }
  108. public boolean saveHistory(List<Map<String, Object>> empDetails, List<Map<String, Object>> zoneBenefits, List<Map<String, Object>> pension_details, String fileMovedBy) {
  109. try {
  110. int file_Cat=0;
  111. if (!empDetails.isEmpty()) {
  112. Map<String, Object> firstEmployeeDetails = empDetails.get(0);
  113. Object fileCatObj = firstEmployeeDetails.get("file_category");
  114. if (fileCatObj != null) {
  115. try {
  116. file_Cat = Integer.parseInt(fileCatObj.toString());
  117. System.out.println("Parsed file_category: " + file_Cat);
  118. } catch (NumberFormatException e) {
  119. System.err.println("Failed to parse file_category: " + fileCatObj);
  120. }
  121. } else {
  122. System.out.println("file_category is null in emp_details.");
  123. }
  124. } else {
  125. System.out.println("emp_details is empty.");
  126. }
  127. // Batch update for employee details
  128. if(file_Cat==1) {
  129. String empInsertQuery =
  130. "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement, " +
  131. "retirement_date, retirement_class, file_moved_date, remarks, file_category, file_status, " +
  132. "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id) " +
  133. "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
  134. jdbcTemplate.batchUpdate(empInsertQuery, empDetails, empDetails.size(), (ps, emp) -> {
  135. ps.setString(1, emp.get("emp_no").toString());
  136. ps.setString(2, emp.get("emp_name").toString());
  137. ps.setString(3, emp.get("dept_name").toString());
  138. ps.setString(4, emp.get("designation").toString());
  139. ps.setString(5, emp.get("type_of_retirement").toString());
  140. ps.setString(6, emp.get("retirement_date").toString());
  141. ps.setString(7, emp.get("retirement_class").toString());
  142. ps.setString(8, emp.get("file_moved_date").toString());
  143. ps.setString(9, emp.get("remarks").toString());
  144. ps.setInt(10, Integer.parseInt(emp.get("file_category").toString()));
  145. ps.setInt(11, Integer.parseInt(emp.get("file_status").toString()));
  146. ps.setString(12, emp.get("file_entry_type").toString());
  147. ps.setString(13, fileMovedBy);
  148. ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString()));
  149. ps.setString(15, emp.get("file_category_name").toString());
  150. ps.setString(16, emp.get("temp_id").toString());
  151. });
  152. }
  153. if(file_Cat==2)
  154. {
  155. String empInsertQuery1 =
  156. "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, service_death, " +
  157. "relationship_deceased, sanctioned_gis_amount, file_moved_date, remarks, file_category, file_status, " +
  158. "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending) " +
  159. "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)";
  160. jdbcTemplate.batchUpdate(empInsertQuery1, empDetails, empDetails.size(), (ps, emp) -> {
  161. ps.setString(1, emp.get("emp_no").toString());
  162. ps.setString(2, emp.get("emp_name").toString());
  163. ps.setString(3, emp.get("dept_name").toString());
  164. ps.setString(4, emp.get("designation").toString());
  165. ps.setString(5, emp.get("service_death").toString());
  166. ps.setString(6, emp.get("relationship_deceased").toString());
  167. ps.setString(7, emp.get("sanctioned_gis_amount").toString());
  168. ps.setString(8, emp.get("file_moved_date").toString());
  169. ps.setString(9, emp.get("remarks").toString());
  170. ps.setInt(10, Integer.parseInt(emp.get("file_category").toString()));
  171. ps.setInt(11, Integer.parseInt(emp.get("file_status").toString()));
  172. ps.setString(12, emp.get("file_entry_type").toString());
  173. ps.setString(13, fileMovedBy);
  174. ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString()));
  175. ps.setString(15, emp.get("file_category_name").toString());
  176. ps.setString(16, emp.get("temp_id").toString());
  177. ps.setString(17, emp.get("pending_duration").toString());
  178. ps.setString(18, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null);
  179. });
  180. System.out.println("rows inserted in pd history for family Pension");
  181. }
  182. if(file_Cat==3)
  183. {
  184. String empInsertQuery2 =
  185. "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,type_of_retirement, " +
  186. "file_moved_date, remarks, file_category, file_status, " +
  187. "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending,retirement_class,retirement_date) " +
  188. "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)";
  189. jdbcTemplate.batchUpdate(empInsertQuery2, empDetails, empDetails.size(), (ps, emp) -> {
  190. ps.setString(1, emp.get("emp_no").toString());
  191. ps.setString(2, emp.get("emp_name").toString());
  192. ps.setString(3, emp.get("dept_name").toString());
  193. ps.setString(4, emp.get("designation").toString());
  194. ps.setString(5, emp.get("type_of_retirement").toString());
  195. ps.setString(6, emp.get("file_moved_date").toString());
  196. ps.setString(7, emp.get("remarks").toString());
  197. ps.setInt(8, Integer.parseInt(emp.get("file_category").toString()));
  198. ps.setInt(9, Integer.parseInt(emp.get("file_status").toString()));
  199. ps.setString(10, emp.get("file_entry_type").toString());
  200. ps.setString(11, fileMovedBy);
  201. ps.setInt(12, Integer.parseInt(emp.get("dept_id").toString()));
  202. ps.setString(13, emp.get("file_category_name").toString());
  203. ps.setString(14, emp.get("temp_id").toString());
  204. ps.setString(15, emp.get("pending_duration").toString());
  205. ps.setString(16, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null);
  206. ps.setString(17, emp.get("retirement_class").toString());
  207. ps.setString(18, emp.get("retirement_date").toString());
  208. });
  209. System.out.println("rows inserted in pd history for pendency");
  210. }
  211. // Batch update for zone benefits
  212. // String zoneInsertQuery =
  213. // "INSERT INTO zone_benefits_history (emp_no, temp_id, gpf, gpf_amount, spfgs, spfgs_amount, dcrg, " +
  214. // "private_affairs, private_affairs_amount, recovery_emp, file_moved_by) " +
  215. // "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
  216. //
  217. // jdbcTemplate.batchUpdate(zoneInsertQuery, zoneBenefits, zoneBenefits.size(), (ps, zone) -> {
  218. // ps.setString(1, zone.get("emp_no").toString());
  219. // ps.setString(2, zone.get("temp_id").toString());
  220. // ps.setString(3, zone.get("gpf").toString());
  221. // ps.setString(4, zone.get("gpf_amount") != null ? zone.get("gpf_amount").toString() : null);
  222. // ps.setString(5, zone.get("spfgs").toString());
  223. // ps.setString(6, zone.get("spfgs_amount") != null ? zone.get("spfgs_amount").toString() : null);
  224. // ps.setString(7, zone.get("dcrg").toString());
  225. // ps.setString(8, zone.get("private_affairs").toString());
  226. // ps.setString(9, zone.get("private_affairs_amount") != null ? zone.get("private_affairs_amount").toString() : null);
  227. // ps.setString(10, zone.get("recovery_emp") != null ? zone.get("recovery_emp").toString() : null);
  228. // ps.setString(11, fileMovedBy);
  229. // });
  230. // Batch update for pension benefits
  231. String pensionInsertQuery =
  232. "INSERT INTO pension_benefits_history (emp_no,temp_id,file_pending,pension_number,ledger_number,benefit_pension,benefit_pension_amount,benefit_dcrg,benefit_dcrg_amount,benefit_commutation,benefit_commutation_amount,file_moved_by) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
  233. jdbcTemplate.batchUpdate(pensionInsertQuery, pension_details, pension_details.size(), (ps, pension) -> {
  234. ps.setString(1, pension.get("emp_no").toString());
  235. ps.setString(2, pension.get("temp_id").toString());
  236. ps.setString(3, pension.get("file_pending").toString());
  237. ps.setString(4, pension.get("pension_number").toString());
  238. ps.setString(5, pension.get("ledger_number").toString());
  239. ps.setString(6, pension.get("benefit_pension").toString());
  240. ps.setString(7, pension.get("benefit_pension_amount") != null ? pension.get("benefit_pension_amount").toString() : null);
  241. ps.setString(8, pension.get("benefit_dcrg").toString());
  242. ps.setString(9, pension.get("benefit_dcrg_amount") != null ? pension.get("benefit_dcrg_amount").toString() : null);
  243. ps.setString(10, pension.get("benefit_commutation").toString());
  244. ps.setString(11, pension.get("benefit_commutation_amount") != null ? pension.get("benefit_commutation_amount").toString() : null);
  245. ps.setString(12, fileMovedBy);
  246. });
  247. return true; // All insertions succeeded
  248. } catch (Exception e) {
  249. e.printStackTrace();
  250. return false; // Return false in case of any exception
  251. }
  252. }
  253. private boolean CheckFieldsforPension(String tempId) {
  254. // Define the SQL query
  255. String sql = "SELECT " +
  256. "CASE " +
  257. "WHEN pb.benefit_pension = 'yes' AND pb.benefit_dcrg = 'yes' " +
  258. "THEN 1 ELSE 0 " +
  259. "END AS allYes " +
  260. "FROM pension_benefits AS pb " +
  261. "WHERE pb.temp_id = ? ";
  262. try {
  263. // Use queryForObject to get a single boolean result
  264. Boolean result = jdbcTemplate.queryForObject(sql, Boolean.class, tempId);
  265. return result != null && result; // Return the result if not null
  266. } catch (Exception e) {
  267. e.printStackTrace(); // Log the exception if needed
  268. }
  269. return false; // Return false if an exception occurs
  270. }
  271. }