All GCC vendors and employee details for IT department management
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.

214 lines
9.7 KiB

​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
  1. package com.gcc_manpower.gccadjustmentmanagement.service;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import javax.sql.DataSource;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.beans.factory.annotation.Qualifier;
  9. import org.springframework.jdbc.core.JdbcTemplate;
  10. import org.springframework.stereotype.Service;
  11. @Service
  12. public class AdjustmentService {
  13. private JdbcTemplate jdbcTemplate;
  14. @Autowired
  15. public void setDataSource(@Qualifier("mysqladjustmentDataSource") DataSource dataSource) {
  16. this.jdbcTemplate = new JdbcTemplate(dataSource);
  17. }
  18. public List<Map<String, Object>> getAdvanceTypes() {
  19. String sql = "SELECT id, adv_type FROM advance_type_list WHERE is_active = 1 AND is_delete = 0 ORDER BY CAST(order_by AS UNSIGNED) ASC, id ASC";
  20. try {
  21. return jdbcTemplate.queryForList(sql);
  22. } catch (Exception e) {
  23. System.err.println("Error fetching advance types: " + e.getMessage());
  24. return new ArrayList<>();
  25. }
  26. }
  27. public List<Map<String, Object>> getFundTypes() {
  28. String sql = "SELECT id, fund_type FROM fund_type_list WHERE is_active = 1 AND is_delete = 0 ORDER BY CAST(order_by AS UNSIGNED) ASC, id ASC";
  29. try {
  30. return jdbcTemplate.queryForList(sql);
  31. } catch (Exception e) {
  32. System.err.println("Error fetching fund types: " + e.getMessage());
  33. return new ArrayList<>();
  34. }
  35. }
  36. public List<Map<String, Object>> getAllFiles() {
  37. String sql = "SELECT a.*, " +
  38. "adv.adv_type AS resolved_adv_type, " +
  39. "f.fund_type AS resolved_fund_type " +
  40. "FROM adjustment_file_details a " +
  41. "LEFT JOIN advance_type_list adv ON TRIM(a.adv_type_id) REGEXP '^[0-9]+$' AND adv.id = CAST(TRIM(a.adv_type_id) AS UNSIGNED) " +
  42. "LEFT JOIN fund_type_list f ON TRIM(a.fund_type_id) REGEXP '^[0-9]+$' AND f.id = CAST(TRIM(a.fund_type_id) AS UNSIGNED) " +
  43. "WHERE a.is_active = 1 AND a.is_delete = 0 " +
  44. "ORDER BY a.updated_date DESC, a.id DESC";
  45. try {
  46. return jdbcTemplate.queryForList(sql);
  47. } catch (Exception e) {
  48. System.err.println("Error fetching adjustment files: " + e.getMessage());
  49. return new ArrayList<>();
  50. }
  51. }
  52. public Map<String, Object> getAdjustmentFileById(int id) {
  53. String sql = "SELECT * FROM adjustment_file_details WHERE id = ? AND is_active = 1 AND is_delete = 0";
  54. try {
  55. return jdbcTemplate.queryForMap(sql, id);
  56. } catch (Exception e) {
  57. return null;
  58. }
  59. }
  60. public boolean saveAdjustmentFile(Map<String, Object> data, String username) {
  61. java.sql.Timestamp now = new java.sql.Timestamp(System.currentTimeMillis());
  62. Object idVal = data.get("id");
  63. if (idVal != null && !String.valueOf(idVal).trim().isEmpty()) {
  64. // Update
  65. int id = Integer.parseInt(String.valueOf(idVal).trim());
  66. String sql = "UPDATE adjustment_file_details SET " +
  67. "as_file_gen_date = ?, as_file_path = ?, as_final_file_gen_date = ?, as_final_file_path = ?, " +
  68. "bal_amt = ?, dc_file_path = ?, ejv_num = ?, ejv_num_file_gen_date = ?, ejv_num_file_path = ?, " +
  69. "fi_amt = ?, fi_file_gen_date = ?, fi_file_path = ?, file_data_num = ?, file_path = ?, " +
  70. "file_remark = ?, fin_year = ?, ir_file_path = ?, pi_amt = ?, pi_file_gen_date = ?, " +
  71. "pi_file_path = ?, po_file_path = ?, rtgs_file_path = ?, sr_filepath = ?, tc_file_gen_date = ?, " +
  72. "tc_file_path = ?, vend_name = ?, adv_type_id = ?, fund_type_id = ?, updated_date = ?, " +
  73. "updated_by = ? WHERE id = ?";
  74. try {
  75. int rows = jdbcTemplate.update(sql,
  76. parseDate(data.get("as_file_gen_date")),
  77. data.get("as_file_path"),
  78. data.get("as_final_file_gen_date"),
  79. data.get("as_final_file_path"),
  80. parseDouble(data.get("bal_amt")),
  81. data.get("dc_file_path"),
  82. data.get("ejv_num"),
  83. parseDate(data.get("ejv_num_file_gen_date")),
  84. data.get("ejv_num_file_path"),
  85. data.get("fi_amt"),
  86. parseDate(data.get("fi_file_gen_date")),
  87. data.get("fi_file_path"),
  88. data.get("file_data_num"),
  89. data.get("file_path"),
  90. data.get("file_remark"),
  91. data.get("fin_year"),
  92. data.get("ir_file_path"),
  93. parseDouble(data.get("pi_amt")),
  94. parseDate(data.get("pi_file_gen_date")),
  95. data.get("pi_file_path"),
  96. data.get("po_file_path"),
  97. data.get("rtgs_file_path"),
  98. data.get("sr_filepath"),
  99. parseDate(data.get("tc_file_gen_date")),
  100. data.get("tc_file_path"),
  101. data.get("vend_name"),
  102. data.get("adv_type_id"),
  103. data.get("fund_type_id"),
  104. now,
  105. username,
  106. id
  107. );
  108. return rows > 0;
  109. } catch (Exception e) {
  110. System.err.println("Error updating adjustment file: " + e.getMessage());
  111. e.printStackTrace();
  112. return false;
  113. }
  114. } else {
  115. // Insert
  116. String sql = "INSERT INTO adjustment_file_details (" +
  117. "as_file_gen_date, as_file_path, as_final_file_gen_date, as_final_file_path, " +
  118. "bal_amt, dc_file_path, ejv_num, ejv_num_file_gen_date, ejv_num_file_path, " +
  119. "fi_amt, fi_file_gen_date, fi_file_path, file_data_num, file_path, " +
  120. "file_remark, fin_year, ir_file_path, pi_amt, pi_file_gen_date, " +
  121. "pi_file_path, po_file_path, rtgs_file_path, sr_filepath, tc_file_gen_date, " +
  122. "tc_file_path, vend_name, adv_type_id, fund_type_id, cdate, updated_date, " +
  123. "updated_by, is_active, is_delete) VALUES " +
  124. "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, 0)";
  125. try {
  126. int rows = jdbcTemplate.update(sql,
  127. parseDate(data.get("as_file_gen_date")),
  128. data.get("as_file_path"),
  129. data.get("as_final_file_gen_date"),
  130. data.get("as_final_file_path"),
  131. parseDouble(data.get("bal_amt")),
  132. data.get("dc_file_path"),
  133. data.get("ejv_num"),
  134. parseDate(data.get("ejv_num_file_gen_date")),
  135. data.get("ejv_num_file_path"),
  136. data.get("fi_amt"),
  137. parseDate(data.get("fi_file_gen_date")),
  138. data.get("fi_file_path"),
  139. data.get("file_data_num"),
  140. data.get("file_path"),
  141. data.get("file_remark"),
  142. data.get("fin_year"),
  143. data.get("ir_file_path"),
  144. parseDouble(data.get("pi_amt")),
  145. parseDate(data.get("pi_file_gen_date")),
  146. data.get("pi_file_path"),
  147. data.get("po_file_path"),
  148. data.get("rtgs_file_path"),
  149. data.get("sr_filepath"),
  150. parseDate(data.get("tc_file_gen_date")),
  151. data.get("tc_file_path"),
  152. data.get("vend_name"),
  153. data.get("adv_type_id"),
  154. data.get("fund_type_id"),
  155. now,
  156. now,
  157. username
  158. );
  159. return rows > 0;
  160. } catch (Exception e) {
  161. System.err.println("Error saving adjustment file: " + e.getMessage());
  162. e.printStackTrace();
  163. return false;
  164. }
  165. }
  166. }
  167. public boolean deleteAdjustmentFile(int id, String remarks, String username) {
  168. java.sql.Timestamp now = new java.sql.Timestamp(System.currentTimeMillis());
  169. String sql = "UPDATE adjustment_file_details SET is_active = 0, is_delete = 1, file_remark = CONCAT(COALESCE(file_remark, ''), '\nDeleted: ', ?), updated_by = ?, updated_date = ? WHERE id = ?";
  170. try {
  171. int rows = jdbcTemplate.update(sql, remarks, username, now, id);
  172. return rows > 0;
  173. } catch (Exception e) {
  174. System.err.println("Error deleting adjustment file: " + e.getMessage());
  175. e.printStackTrace();
  176. return false;
  177. }
  178. }
  179. private java.sql.Date parseDate(Object val) {
  180. if (val == null || String.valueOf(val).trim().isEmpty()) {
  181. return null;
  182. }
  183. try {
  184. return java.sql.Date.valueOf(String.valueOf(val).trim());
  185. } catch (Exception e) {
  186. return null;
  187. }
  188. }
  189. private Double parseDouble(Object val) {
  190. if (val == null || String.valueOf(val).trim().isEmpty()) {
  191. return null;
  192. }
  193. try {
  194. return Double.parseDouble(String.valueOf(val).trim());
  195. } catch (Exception e) {
  196. return null;
  197. }
  198. }
  199. }