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

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;
@Service
public 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;
}
}
}