// Tambahkan method baru untuk generate nomor rujukan dengan format yang diinginkan
private void generateNoRujukan() {
try {
// Ambil tanggal saat ini
Calendar cal = Calendar.getInstance();
int tahun = cal.get(Calendar.YEAR);
int bulan = cal.get(Calendar.MONTH) + 1; // Calendar.MONTH dimulai dari 0
// Konversi bulan ke angka romawi
String bulanRomawi = convertToRoman(bulan);
// Query untuk mencari nomor urut terakhir dalam bulan dan tahun yang sama
String sql = “SELECT MAX(CAST(SUBSTRING_INDEX(no_rujuk, ‘/’, 1) AS UNSIGNED)) as max_no ” +
“FROM rujuk ” +
“WHERE YEAR(tgl_rujuk) = ? AND MONTH(tgl_rujuk) = ?”;
PreparedStatement ps = koneksi.prepareStatement(sql);
ps.setInt(1, tahun);
ps.setInt(2, bulan);
ResultSet rs = ps.executeQuery();
int nomorUrut = 1; // Default nomor urut
if (rs.next()) {
Integer maxNo = rs.getInt(“max_no”);
if (!rs.wasNull()) {
nomorUrut = maxNo + 1;
}
}
// Format nomor urut dengan leading zero (3 digit)
String nomorUrutFormatted = String.format(“%03d”, nomorUrut);
// Buat nomor rujukan dengan format: 001/SR/VIII/2025
String noRujukan = nomorUrutFormatted + “/SR/” + bulanRomawi + “/” + tahun;
TNoRj.setText(noRujukan);
rs.close();
ps.close();
} catch (Exception e) {
System.out.println(“Error generating nomor rujukan: ” + e);
// Fallback ke nomor default jika ada error
TNoRj.setText(“001/SR/I/” + Calendar.getInstance().get(Calendar.YEAR));
}
}
// Method untuk konversi bulan ke angka romawi
private String convertToRoman(int bulan) {
String[] bulanRomawi = {
“I”, “II”, “III”, “IV”, “V”, “VI”,
“VII”, “VIII”, “IX”, “X”, “XI”, “XII”
};
if (bulan >= 1 && bulan <= 12) {
return bulanRomawi[bulan – 1];
}
return “I”; // Default ke Januari jika ada error
}
// Modifikasi method emptTeks() untuk menggunakan format baru
public void emptTeks() {
TNoRj.setText(“”);
TTmpRujuk.setText(“”);
TNoRw.setText(“”);
TNoRM.setText(“”);
TPasien.setText(“”);
KdDok.setText(“”);
TDokter.setText(“”);
TDiagnosa.setText(“”);
DTPRujuk.setDate(new Date());
// Ganti baris ini:
// Valid.autoNomer(“rujuk”,”R”,9,TNoRj);
// Dengan:
generateNoRujukan();
TNoRj.requestFocus();
ktrujuk.setSelectedIndex(0);
ambulance.setSelectedIndex(0);
ket.setText(“”);
}
// Jika Anda ingin nomor rujukan juga ter-generate saat tanggal rujukan berubah,
// tambahkan modifikasi pada DTPRujukKeyPressed atau buat listener untuk DTPRujuk:
private void DTPRujukKeyPressed(java.awt.event.KeyEvent evt) {
Valid.pindah(evt,TNoRj,CmbJam);
// Regenerate nomor rujukan jika tanggal berubah
if (evt.getKeyCode() == KeyEvent.VK_ENTER || evt.getKeyCode() == KeyEvent.VK_TAB) {
generateNoRujukan();
}
}
// Atau bisa tambahkan ActionListener untuk DTPRujuk di constructor:
// Tambahkan ini di constructor DlgRujuk setelah inisialisasi komponen:
/*
DTPRujuk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
generateNoRujukan();
}
});
*/