|
|
package com.gcc_manpower.gccadjustmentmanagement.service;
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Service;
@Servicepublic class AdjustmentService {
private JdbcTemplate jdbcTemplate;
@Autowired public void setDataSource(@Qualifier("mysqladjustmentDataSource") DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); }
public List<Map<String, Object>> getAdvanceTypes() { 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"; try { return jdbcTemplate.queryForList(sql); } catch (Exception e) { System.err.println("Error fetching advance types: " + e.getMessage()); return new ArrayList<>(); } }
public List<Map<String, Object>> getFundTypes() { 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"; try { return jdbcTemplate.queryForList(sql); } catch (Exception e) { System.err.println("Error fetching fund types: " + e.getMessage()); return new ArrayList<>(); } }
public List<Map<String, Object>> getAllFiles() { String sql = "SELECT a.*, " + "adv.adv_type AS resolved_adv_type, " + "f.fund_type AS resolved_fund_type " + "FROM adjustment_file_details a " + "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) " + "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) " + "WHERE a.is_active = 1 AND a.is_delete = 0 " + "ORDER BY a.updated_date DESC, a.id DESC"; try { return jdbcTemplate.queryForList(sql); } catch (Exception e) { System.err.println("Error fetching adjustment files: " + e.getMessage()); return new ArrayList<>(); } }
public Map<String, Object> getAdjustmentFileById(int id) { String sql = "SELECT * FROM adjustment_file_details WHERE id = ? AND is_active = 1 AND is_delete = 0"; try { return jdbcTemplate.queryForMap(sql, id); } catch (Exception e) { return null; } }
public boolean saveAdjustmentFile(Map<String, Object> data, String username) { java.sql.Timestamp now = new java.sql.Timestamp(System.currentTimeMillis()); Object idVal = data.get("id");
if (idVal != null && !String.valueOf(idVal).trim().isEmpty()) { // Update
int id = Integer.parseInt(String.valueOf(idVal).trim()); String sql = "UPDATE adjustment_file_details SET " + "as_file_gen_date = ?, as_file_path = ?, as_final_file_gen_date = ?, as_final_file_path = ?, " + "bal_amt = ?, dc_file_path = ?, ejv_num = ?, ejv_num_file_gen_date = ?, ejv_num_file_path = ?, " + "fi_amt = ?, fi_file_gen_date = ?, fi_file_path = ?, file_data_num = ?, file_path = ?, " + "file_remark = ?, fin_year = ?, ir_file_path = ?, pi_amt = ?, pi_file_gen_date = ?, " + "pi_file_path = ?, po_file_path = ?, rtgs_file_path = ?, sr_filepath = ?, tc_file_gen_date = ?, " + "tc_file_path = ?, vend_name = ?, adv_type_id = ?, fund_type_id = ?, updated_date = ?, " + "updated_by = ? WHERE id = ?"; try { int rows = jdbcTemplate.update(sql, parseDate(data.get("as_file_gen_date")), data.get("as_file_path"), data.get("as_final_file_gen_date"), data.get("as_final_file_path"), parseDouble(data.get("bal_amt")), data.get("dc_file_path"), data.get("ejv_num"), parseDate(data.get("ejv_num_file_gen_date")), data.get("ejv_num_file_path"), data.get("fi_amt"), parseDate(data.get("fi_file_gen_date")), data.get("fi_file_path"), data.get("file_data_num"), data.get("file_path"), data.get("file_remark"), data.get("fin_year"), data.get("ir_file_path"), parseDouble(data.get("pi_amt")), parseDate(data.get("pi_file_gen_date")), data.get("pi_file_path"), data.get("po_file_path"), data.get("rtgs_file_path"), data.get("sr_filepath"), parseDate(data.get("tc_file_gen_date")), data.get("tc_file_path"), data.get("vend_name"), data.get("adv_type_id"), data.get("fund_type_id"), now, username, id ); return rows > 0; } catch (Exception e) { System.err.println("Error updating adjustment file: " + e.getMessage()); e.printStackTrace(); return false; } } else { // Insert
String sql = "INSERT INTO adjustment_file_details (" + "as_file_gen_date, as_file_path, as_final_file_gen_date, as_final_file_path, " + "bal_amt, dc_file_path, ejv_num, ejv_num_file_gen_date, ejv_num_file_path, " + "fi_amt, fi_file_gen_date, fi_file_path, file_data_num, file_path, " + "file_remark, fin_year, ir_file_path, pi_amt, pi_file_gen_date, " + "pi_file_path, po_file_path, rtgs_file_path, sr_filepath, tc_file_gen_date, " + "tc_file_path, vend_name, adv_type_id, fund_type_id, cdate, updated_date, " + "updated_by, is_active, is_delete) VALUES " + "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, 0)"; try { int rows = jdbcTemplate.update(sql, parseDate(data.get("as_file_gen_date")), data.get("as_file_path"), data.get("as_final_file_gen_date"), data.get("as_final_file_path"), parseDouble(data.get("bal_amt")), data.get("dc_file_path"), data.get("ejv_num"), parseDate(data.get("ejv_num_file_gen_date")), data.get("ejv_num_file_path"), data.get("fi_amt"), parseDate(data.get("fi_file_gen_date")), data.get("fi_file_path"), data.get("file_data_num"), data.get("file_path"), data.get("file_remark"), data.get("fin_year"), data.get("ir_file_path"), parseDouble(data.get("pi_amt")), parseDate(data.get("pi_file_gen_date")), data.get("pi_file_path"), data.get("po_file_path"), data.get("rtgs_file_path"), data.get("sr_filepath"), parseDate(data.get("tc_file_gen_date")), data.get("tc_file_path"), data.get("vend_name"), data.get("adv_type_id"), data.get("fund_type_id"), now, now, username ); return rows > 0; } catch (Exception e) { System.err.println("Error saving adjustment file: " + e.getMessage()); e.printStackTrace(); return false; } } }
public boolean deleteAdjustmentFile(int id, String remarks, String username) { java.sql.Timestamp now = new java.sql.Timestamp(System.currentTimeMillis()); 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 = ?"; try { int rows = jdbcTemplate.update(sql, remarks, username, now, id); return rows > 0; } catch (Exception e) { System.err.println("Error deleting adjustment file: " + e.getMessage()); e.printStackTrace(); return false; } }
private java.sql.Date parseDate(Object val) { if (val == null || String.valueOf(val).trim().isEmpty()) { return null; } try { return java.sql.Date.valueOf(String.valueOf(val).trim()); } catch (Exception e) { return null; } }
private Double parseDouble(Object val) { if (val == null || String.valueOf(val).trim().isEmpty()) { return null; } try { return Double.parseDouble(String.valueOf(val).trim()); } catch (Exception e) { return null; } }}
|