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
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;
|
|
}
|
|
}
|
|
}
|