- persiapan optimalisasi service update data cuti

- perbaikan tata letak cetakan cuti dan surat izin sementara
This commit is contained in:
salmanoe 2021-01-08 17:19:28 +07:00
parent cc3ea1ff80
commit 15be0c79bf
6 changed files with 88 additions and 607 deletions

View File

@ -173,6 +173,7 @@ public class Master {
}
public static final class KomponenIndex {
public static final Integer CUTI_BERSAMA = 21;
public static final Integer CUTI_NONSHIFT = 5;
public static final Integer CUTI_SHIFT = 6;
}

View File

@ -12,6 +12,7 @@ import com.jasamedika.medifirst2000.vo.ListTanggalCutiVO;
import com.jasamedika.medifirst2000.vo.PlanningPegawaiStatusVO;
public interface PermohonanStatusPegawaiService {
public Map<String, Object> getUserLogin(Integer idPegawai);
public Map<String, Object> noUsulan();
@ -24,11 +25,9 @@ public interface PermohonanStatusPegawaiService {
public Map<String, Object> getDataCuti(Integer pegawaiId, String year, Integer statusPegawaiId);
public Map<String, Object> getDataCuti(String norec, Integer pegawaiId, String year, Integer statusPegawaiId);
public Map<String, Object> savePlanningPegawaiStatus(PlanningPegawaiStatusVO vo);
public Map<String, Object> updateDataCuti(String penandaTangan, String noRec);
public Map<String, Object> perbaruiDataCuti(Integer idPegawai, Integer idStatusPegawai);
public Map<String, Object> savePlanningPegawaiStatusRev(PlanningPegawaiStatusVO vo);
@ -115,4 +114,5 @@ public interface PermohonanStatusPegawaiService {
String noPlanning);
public Map<String, Object> checkPermohonanStatusPegawai(String norec);
}

View File

@ -255,567 +255,6 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi
return difCutiTerpakai;
}
@Override
public Map<String, Object> getDataCuti(String norec, Integer pegawaiId, String year, Integer statusPegawaiId) {
Map<String, Object> result = new HashMap<>();
List<Integer> listKomponenIndex = new ArrayList<>();
Integer sisaCuti = 0;
Integer sisaCutiB2 = 0;
Integer sisaCutiB1 = 0;
Integer sisaCutiB = 0;
Integer sisaCutiN2 = 0;
Integer sisaCutiN1 = 0;
Integer sisaCutiN = 0;
Integer jatahCuti = 0;
Integer sisaJatahRawatJalan = 0;
Integer sisaJatahRawatInap = 0;
Integer sisaIzin = 0;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
if (CommonUtil.isNullOrEmpty(year)) {
year = formatter.format(DateUtil.now());
}
Integer yearn1 = Integer.parseInt(year) - 1;
Integer yearn2 = Integer.parseInt(year) - 2;
Integer yearn3 = Integer.parseInt(year) + 1;
String yearN1 = yearn1.toString();
String yearN2 = yearn2.toString();
String yearN3 = yearn3.toString();
if (statusPegawaiId == 5 || statusPegawaiId == 1 || statusPegawaiId == 21) {
// ------------------------------------------SETTING_DATA_FIX------------------------------------------
String komponen = settingDataFixedDao.getSettingDataFixed("komponenIndeksCuti");// 5
String komponenIndeksCutiShift = settingDataFixedDao.getSettingDataFixed("komponenIndeksCutiShift");// 6
String komponenIndeksCutiBersama = settingDataFixedDao.getSettingDataFixed("komponenIndeksCutiBersama");// 21
listKomponenIndex.add(Integer.valueOf(komponen));
listKomponenIndex.add(Integer.valueOf(komponenIndeksCutiShift));
// Initiate cuti bersama
Integer cutiTerpakaiB2 = 0;
Integer cutiTerpakaiB1 = 0;
Integer cutiTerpakaiB = 0;
// Menghitung cuti terpakai tahun n-2
Integer cutiTerpakaiN2 = pegawaiHistoriRekapIndexDao.getCutiTerpakai(yearN2, pegawaiId, listKomponenIndex);
if (CommonUtil.isNullOrEmpty(cutiTerpakaiN2)) {
cutiTerpakaiN2 = 0;
}
// Menghitung cuti terpakai tahun n-1
Integer cutiTerpakaiN1 = pegawaiHistoriRekapIndexDao.getCutiTerpakai(yearN1, pegawaiId, listKomponenIndex);
if (CommonUtil.isNullOrEmpty(cutiTerpakaiN1)) {
cutiTerpakaiN1 = 0;
}
// Menghitung cuti terpakai tahun n
Integer cutiTerpakaiN = pegawaiHistoriRekapIndexDao.getCutiTerpakai(year, pegawaiId, listKomponenIndex);
if (CommonUtil.isNullOrEmpty(cutiTerpakaiN)) {
cutiTerpakaiN = 0;
}
Integer rekapHistoriCutiTerpakai = pegawaiHistoriRekapIndexDao.getHistoriCutiTerpakai(yearN2, pegawaiId,
listKomponenIndex);
if (CommonUtil.isNullOrEmpty(rekapHistoriCutiTerpakai)) {
rekapHistoriCutiTerpakai = 0;
}
Integer dataHistoriCutiTerpakai = jatahCutiDanIzinDao.getHistoriCutiTerpakai(pegawaiId, yearN2);
if (CommonUtil.isNullOrEmpty(dataHistoriCutiTerpakai)) {
dataHistoriCutiTerpakai = 0;
}
Integer diffHistori = dataHistoriCutiTerpakai - rekapHistoriCutiTerpakai;
if (rekapHistoriCutiTerpakai < dataHistoriCutiTerpakai) {
if (cutiTerpakaiN2 > diffHistori) {
cutiTerpakaiN2 -= diffHistori;
} else {
diffHistori -= cutiTerpakaiN2;
cutiTerpakaiN2 = 0;
if (cutiTerpakaiN1 > diffHistori) {
cutiTerpakaiN1 -= diffHistori;
} else {
diffHistori -= cutiTerpakaiN1;
cutiTerpakaiN1 = 0;
if (cutiTerpakaiN > diffHistori) {
cutiTerpakaiN -= diffHistori;
} else {
cutiTerpakaiN = 0;
}
}
}
} else {
// impossible scenario
}
// Mendapatkan seluruh data jatah cuti untuk pegawai tertentu
Integer dataCutiB2 = jatahCutiDanIzinDao.getDataCuti(yearN2, pegawaiId,
Integer.valueOf(komponenIndeksCutiBersama)); // dataCutiBersama_di_n-2
Integer dataCutiB1 = jatahCutiDanIzinDao.getDataCuti(yearN1, pegawaiId,
Integer.valueOf(komponenIndeksCutiBersama)); // dataCutiBersama_di_n-1
Integer dataCutiB = jatahCutiDanIzinDao.getDataCuti(year, pegawaiId,
Integer.valueOf(komponenIndeksCutiBersama)); // dataCutiBersama_di_n
Integer dataCutiN2 = jatahCutiDanIzinDao.getDataCuti(yearN2, pegawaiId, Integer.valueOf(komponen)); // dataCutiTahunan_tahun_n-2
Integer dataCutiN1 = jatahCutiDanIzinDao.getDataCuti(yearN1, pegawaiId, Integer.valueOf(komponen)); // dataCutiTahunan_tahun_n-1
Integer dataCutiN = jatahCutiDanIzinDao.getDataCuti(year, pegawaiId, Integer.valueOf(komponen)); // dataCutiTahunan_tahun_n
Integer dataCutiN3 = jatahCutiDanIzinDao.getDataCuti(yearN3, pegawaiId, Integer.valueOf(komponen)); // dataCutiTahunan_tahun_n+1
// Validasi existing data
if (CommonUtil.isNullOrEmpty(dataCutiB2)) {
dataCutiB2 = 0;
}
if (CommonUtil.isNullOrEmpty(dataCutiB1)) {
dataCutiB1 = 0;
}
if (CommonUtil.isNullOrEmpty(dataCutiB)) {
dataCutiB = 0;
}
if (CommonUtil.isNullOrEmpty(dataCutiN2)) {
dataCutiN2 = 0;
}
if (CommonUtil.isNullOrEmpty(dataCutiN1)) {
dataCutiN1 = 0;
}
if (CommonUtil.isNullOrEmpty(dataCutiN)) {
dataCutiN = 0;
}
if (CommonUtil.isNullOrEmpty(dataCutiN3)) {
dataCutiN3 = 12;
}
// mapping jatah cuti
result.put("dataCutiB2", dataCutiB2);
result.put("dataCutiB1", dataCutiB1);
result.put("dataCutiB", dataCutiB);
result.put("dataCutiN2", dataCutiN2);
result.put("dataCutiN1", dataCutiN1);
result.put("dataCutiN", dataCutiN);
result.put("dataCutiN3", dataCutiN3);
// Hitung Absen di tanggal cuti bersama
List<String> listTglCutiBersama = mapKalenderToHariLiburDao.getTglCutiBersama(year);
int countDataHabsen = 0;
for (String tglStr : listTglCutiBersama) {
List<Date> dataHabsen = new ArrayList<>();
// cek shift malam
String tglPrev = sdf.format(java.sql.Date.valueOf(LocalDate.parse(tglStr).minusDays(1)));
List<Map<String, Object>> listMap = pegawaiJadwalKerjaDao.getNamaShiftKerjaPegawaiByTanggal(tglPrev,
tglStr, pegawaiId);
if (listMap.size() == 2) {
if (!listMap.get(0).get("namaShift").toString().toLowerCase().contains("malam")
&& listMap.get(1).get("namaShift").toString().toLowerCase().contains("malam")) {
dataHabsen = habsenDao.countAbsenTglCutiBersama(tglStr, pegawaiDao.getidFinger(pegawaiId));
} else if (listMap.get(0).get("namaShift").toString().toLowerCase().contains("malam")
&& listMap.get(1).get("namaShift").toString().toLowerCase().contains("malam")) {
dataHabsen = habsenDao.countAbsenTglCutiBersama(tglStr, pegawaiDao.getidFinger(pegawaiId));
} else if (!listMap.get(0).get("namaShift").toString().toLowerCase().contains("malam")
&& !listMap.get(1).get("namaShift").toString().toLowerCase().contains("malam")) {
dataHabsen = habsenDao.countAbsenTglCutiBersama(tglStr, pegawaiDao.getidFinger(pegawaiId));
}
}
if (CommonUtil.isNotNullOrEmpty(dataHabsen)) {
if (Arrays.asList(Master.ShiftKerja.TUJUH_BELAS_JAM_SHIFT)
.contains(Integer.parseInt(listMap.get(1).get("idShift").toString()))) {
countDataHabsen += 2;
} else {
countDataHabsen += 1;
}
} else {
// cuti tahunan di tanggal cuti bersama
List<Date> tglCutiTahunanDiTglCutiBersama = jatahCutiDanIzinDao
.getCutiTahunanDiTglCutiBersama(Master.StatusPegawai.CUTI_TAHUNAN, pegawaiId, tglStr);
if (CommonUtil.isNotNullOrEmpty(tglCutiTahunanDiTglCutiBersama)) {
if (Arrays.asList(Master.ShiftKerja.TUJUH_BELAS_JAM_SHIFT)
.contains(Integer.parseInt(listMap.get(1).get("idShift").toString()))) {
countDataHabsen += 2;
} else {
countDataHabsen += 1;
}
}
}
}
dataCutiB = countDataHabsen;
result.put("dataCutiB", dataCutiB);
// kondisikan cuti bersama yg sudah berlalu
if (cutiTerpakaiN2 > dataCutiB2) {
cutiTerpakaiB2 = dataCutiB2;
} else {
cutiTerpakaiB2 = cutiTerpakaiN2;
}
if (cutiTerpakaiN1 > dataCutiB1) {
cutiTerpakaiB1 = dataCutiB1;
} else {
cutiTerpakaiB1 = cutiTerpakaiN1;
}
// Mendapatkan kondisi penangguhan saat ini
result.put("isTangguhkanB2", false);
result.put("isTangguhkanB1", false);
result.put("isTangguhkanB", false);
Boolean jCutiN2 = jatahCutiDanIzinDao.getPenangguhanSisaCuti(yearN2, pegawaiId, Integer.valueOf(komponen));
if (CommonUtil.isNotNullOrEmpty(jCutiN2)) {
result.put("isTangguhkanN2", jCutiN2);
} else {
jCutiN2 = false;
result.put("isTangguhkanN2", false);
}
Boolean jCutiN1 = jatahCutiDanIzinDao.getPenangguhanSisaCuti(yearN1, pegawaiId, Integer.valueOf(komponen));
if (CommonUtil.isNotNullOrEmpty(jCutiN1)) {
result.put("isTangguhkanN1", jCutiN1);
} else {
jCutiN1 = false;
result.put("isTangguhkanN1", false);
}
Boolean jCutiN = jatahCutiDanIzinDao.getPenangguhanSisaCuti(year, pegawaiId, Integer.valueOf(komponen));
if (CommonUtil.isNotNullOrEmpty(jCutiN)) {
result.put("isTangguhkanN", jCutiN);
} else {
jCutiN = false;
result.put("isTangguhkanN", false);
}
// formula menghitung sisa cuti bersama dan mapping
if (dataCutiB >= cutiTerpakaiN) {
sisaCutiB = dataCutiB - cutiTerpakaiN;
cutiTerpakaiB = cutiTerpakaiN;
result.put("sisaCutiB2", sisaCutiB2);
result.put("sisaCutiB1", sisaCutiB1);
result.put("sisaCutiB", sisaCutiB);
result.put("cutiTerpakaiB2", cutiTerpakaiB2);
result.put("cutiTerpakaiB1", cutiTerpakaiB1);
result.put("cutiTerpakaiB", cutiTerpakaiB);
} else {
// jika cuti terpakai tahun berjalan lebih besar dari jatahcuti
// bersama
sisaCutiB = 0;
cutiTerpakaiB = dataCutiB;
result.put("sisaCutiB2", sisaCutiB2);
result.put("sisaCutiB1", sisaCutiB1);
result.put("sisaCutiB", sisaCutiB);
result.put("cutiTerpakaiB2", cutiTerpakaiB2);
result.put("cutiTerpakaiB1", cutiTerpakaiB1);
result.put("cutiTerpakaiB", cutiTerpakaiB);
}
// menghitung jatah cuti yang terpakai
Integer jatahCutiTerpakaiN2 = 0, jatahCutiTerpakaiN1 = 0, jatahCutiTerpakaiN = 0;
Integer allCutiTerpakai = difCutiTerpakai(cutiTerpakaiN2, dataCutiB2)
+ difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) + difCutiTerpakai(cutiTerpakaiN, dataCutiB);
if (dataCutiN2 > 0) {
if (allCutiTerpakai >= dataCutiN2) {
if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2)
+ difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 12) {
jatahCutiTerpakaiN2 = difCutiTerpakai(cutiTerpakaiN2, dataCutiB2)
+ difCutiTerpakai(cutiTerpakaiN1, dataCutiB1);
} else {
jatahCutiTerpakaiN2 = dataCutiN2;
}
// menghitung sisa cuti terlebih dahulu
if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2)
+ difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 12) {
if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) >= 0 && !jCutiN2) {
sisaCutiN2 = 0; // hangus
} else {
if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2)
+ difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 6 && dataCutiN2 > 0) {
sisaCutiN2 = 6 - jatahCutiTerpakaiN2;
} else if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2)
+ difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 6 && dataCutiN2 <= 0) {
sisaCutiN2 = 0;
} else {
sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2;
}
}
} else {
if (dataCutiN2 - jatahCutiTerpakaiN2 >= 6 && !jCutiN2) {
sisaCutiN2 = 6 - jatahCutiTerpakaiN2;
} else {
sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2;
}
}
// hitung ulang jatah cuti terpakai karena pengajuan cuti
// tahun n menggunakan sisa n-2
if (sisaCutiN2 > 0 && difCutiTerpakai(cutiTerpakaiN, dataCutiB) > 0) {
if (sisaCutiN2 > difCutiTerpakai(cutiTerpakaiN, dataCutiB)) {
jatahCutiTerpakaiN2 += difCutiTerpakai(cutiTerpakaiN, dataCutiB);
} else {
jatahCutiTerpakaiN2 += sisaCutiN2;
}
}
allCutiTerpakai = allCutiTerpakai - jatahCutiTerpakaiN2;
if (allCutiTerpakai > 0) {
if (allCutiTerpakai >= dataCutiN1) {
jatahCutiTerpakaiN1 = dataCutiN1;
allCutiTerpakai = allCutiTerpakai - jatahCutiTerpakaiN1;
if ((allCutiTerpakai > 0) && (allCutiTerpakai <= dataCutiN)) {
jatahCutiTerpakaiN = allCutiTerpakai;
} else {
jatahCutiTerpakaiN = 0;
}
} else {
jatahCutiTerpakaiN1 = allCutiTerpakai;
}
}
} else {
if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2)
+ difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 12) {
jatahCutiTerpakaiN2 = difCutiTerpakai(cutiTerpakaiN2, dataCutiB2)
+ difCutiTerpakai(cutiTerpakaiN1, dataCutiB1);
} else {
jatahCutiTerpakaiN2 = allCutiTerpakai;
}
// menghitung sisa cuti terlebih dahulu
if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2)
+ difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 12) {
if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) >= 0 && !jCutiN2) {
sisaCutiN2 = 0; // hangus
} else {
if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2)
+ difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 6 && dataCutiN2 > 0) {
sisaCutiN2 = 6 - jatahCutiTerpakaiN2;
} else if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2)
+ difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 6 && dataCutiN2 <= 0) {
sisaCutiN2 = 0;
} else {
sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2;
}
}
} else {
if (dataCutiN2 - jatahCutiTerpakaiN2 >= 6 && !jCutiN2) {
sisaCutiN2 = 6 - jatahCutiTerpakaiN2;
} else {
sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2;
}
}
// hitung ulang jatah cuti terpakai karena pengajuan cuti
// tahun n menggunakan sisa n-2
if (sisaCutiN2 > 0 && difCutiTerpakai(cutiTerpakaiN, dataCutiB) > 0) {
if (sisaCutiN2 > difCutiTerpakai(cutiTerpakaiN, dataCutiB)) {
jatahCutiTerpakaiN2 += difCutiTerpakai(cutiTerpakaiN, dataCutiB);
} else {
jatahCutiTerpakaiN2 += sisaCutiN2;
}
}
allCutiTerpakai = allCutiTerpakai - jatahCutiTerpakaiN2;
if (allCutiTerpakai > 0) {
if (allCutiTerpakai >= dataCutiN1) {
jatahCutiTerpakaiN1 = dataCutiN1;
allCutiTerpakai = allCutiTerpakai - jatahCutiTerpakaiN1;
if ((allCutiTerpakai > 0) && (allCutiTerpakai <= dataCutiN)) {
jatahCutiTerpakaiN = allCutiTerpakai;
} else {
jatahCutiTerpakaiN = 0;
}
} else {
jatahCutiTerpakaiN1 = allCutiTerpakai;
}
}
}
} else if (dataCutiN1 > 0) {
if (allCutiTerpakai >= dataCutiN1) {
jatahCutiTerpakaiN1 = dataCutiN1;
allCutiTerpakai = allCutiTerpakai - jatahCutiTerpakaiN1;
if ((allCutiTerpakai > 0) && (allCutiTerpakai <= dataCutiN)) {
jatahCutiTerpakaiN = allCutiTerpakai;
} else {
jatahCutiTerpakaiN = 0;
}
} else {
jatahCutiTerpakaiN1 = allCutiTerpakai;
}
} else if (dataCutiN > 0) {
if (allCutiTerpakai <= dataCutiN) {
jatahCutiTerpakaiN = allCutiTerpakai;
} else {
jatahCutiTerpakaiN = 0;
}
}
// Menghitung cuti terpakai tahun n+1
Integer cutiTerpakaiN3 = pegawaiHistoriRekapIndexDao.getCutiTerpakai(yearN3, pegawaiId, listKomponenIndex);
if (CommonUtil.isNullOrEmpty(cutiTerpakaiN3)) {
cutiTerpakaiN3 = 0;
}
if (cutiTerpakaiN3 > 0) {
// menghitung sisa cuti n-1 terlebih dahulu
if (dataCutiN1 - jatahCutiTerpakaiN1 >= 6 && !jCutiN1) {
sisaCutiN1 = 6 - jatahCutiTerpakaiN1;
} else {
sisaCutiN1 = dataCutiN1 - jatahCutiTerpakaiN1;
}
// juga menghitung sisa cuti n terlebih dahulu
sisaCutiN = dataCutiN - jatahCutiTerpakaiN;
// menghitung jatah cuti terpakai karena pengajuan lintas tahun
if (difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) == 0 && !jCutiN1) {
if (sisaCutiN1 > 0) {
if (cutiTerpakaiN3 > sisaCutiN1) {
jatahCutiTerpakaiN1 += sisaCutiN1;
cutiTerpakaiN3 -= sisaCutiN1;
if (cutiTerpakaiN3 > 0 && sisaCutiN > 0) {
if (cutiTerpakaiN3 > sisaCutiN) {
jatahCutiTerpakaiN += sisaCutiN;
} else {
jatahCutiTerpakaiN += cutiTerpakaiN3;
}
}
} else {
jatahCutiTerpakaiN1 += cutiTerpakaiN3;
}
} else if (sisaCutiN > 0) {
if (cutiTerpakaiN3 > sisaCutiN) {
jatahCutiTerpakaiN += sisaCutiN;
} else {
jatahCutiTerpakaiN += cutiTerpakaiN3;
}
}
} else {
if (sisaCutiN > 0) {
if (cutiTerpakaiN3 > sisaCutiN) {
jatahCutiTerpakaiN += sisaCutiN;
} else {
jatahCutiTerpakaiN += cutiTerpakaiN3;
}
}
}
}
// put all data jatah cuti terpakai
result.put("cutiTerpakaiN2", jatahCutiTerpakaiN2);
result.put("cutiTerpakaiN1", jatahCutiTerpakaiN1);
result.put("cutiTerpakaiN", jatahCutiTerpakaiN);
// menghitung sisa cuti
if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 12) {
if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) >= 0 && !jCutiN2) {
sisaCutiN2 = 0; // hangus
} else {
if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 6) {
sisaCutiN2 = 6 - jatahCutiTerpakaiN2;
} else {
sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2;
}
}
} else {
if (dataCutiN2 - jatahCutiTerpakaiN2 >= 6 && !jCutiN2) {
sisaCutiN2 = 6 - jatahCutiTerpakaiN2;
} else {
sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2;
}
}
if (dataCutiN1 - jatahCutiTerpakaiN1 >= 6 && !jCutiN1) {
sisaCutiN1 = 6 - jatahCutiTerpakaiN1;
} else {
sisaCutiN1 = dataCutiN1 - jatahCutiTerpakaiN1;
}
sisaCutiN = dataCutiN - jatahCutiTerpakaiN;
// put all data sisa cuti
result.put("sisaCutiN2", sisaCutiN2);
result.put("sisaCutiN1", sisaCutiN1);
result.put("sisaCutiN", sisaCutiN);
}
if (statusPegawaiId == 24) {
// ------------------------------------------SETTING_DATA_FIX------------------------------------------
if (CommonUtil.isNotNullOrEmpty(jatahCuti)) {
result.put("jatahCuti", "-");
}
result.put("sisaCuti", "-");
}
if (statusPegawaiId == 25) {
// ------------------------------------------SETTING_DATA_FIX------------------------------------------
Map<String, Object> data = planningPegawaiStatusDao.getJatahCutiMelahirkan(statusPegawaiId);
if (CommonUtil.isNotNullOrEmpty(jatahCuti)) {
result.put("jatahCuti", data.get("kuotaTotalHari"));
}
result.put("sisaCuti", "-");
}
if (statusPegawaiId == 26) {
// ------------------------------------------SETTING_DATA_FIX------------------------------------------
if (CommonUtil.isNotNullOrEmpty(jatahCuti)) {
result.put("jatahCuti", "-");
}
result.put("sisaCuti", "-");
}
// Izin
if (statusPegawaiId == 27) {
Integer komponenIzin = 17; // komponenIndex untuk izin
Integer jatahIzin = 2; // sesuai kesepakatan
Integer jumlahIzinTerpakai = pegawaiHistoriRekapIndexDao.getIzinTerpakai(norec, pegawaiId, komponenIzin);
if (CommonUtil.isNotNullOrEmpty(jumlahIzinTerpakai)) {
sisaIzin = jatahIzin - jumlahIzinTerpakai;
} else {
sisaIzin = jatahIzin;
}
result.put("jatahIzin", jatahIzin);
result.put("sisaIzin", sisaIzin);
}
if (statusPegawaiId == 28) {
// ------------------------------------------SETTING_DATA_FIX------------------------------------------
if (CommonUtil.isNotNullOrEmpty(jatahCuti)) {
result.put("jatahCuti", "-");
}
result.put("sisaCuti", "-");
}
if (statusPegawaiId == 17) {
// ------------------------------------------SETTING_DATA_FIX------------------------------------------
Integer cutiTerpakai = pegawaiHistoriRekapIndexDao.getNilaiIndexPegawaiHistoriRekapIndex(pegawaiId, 17);
Integer dataCuti = jatahCutiDanIzinDao.getDataCuti(year, pegawaiId, 17);
if (CommonUtil.isNotNullOrEmpty(dataCuti)) {
if (CommonUtil.isNullOrEmpty(cutiTerpakai)) {
cutiTerpakai = 0;
}
sisaCuti = dataCuti - cutiTerpakai;
if (sisaCuti < 0) {
sisaCuti = 0;
}
} else {
sisaCuti = 0;
dataCuti = 0;
}
result.put("sisaCuti", sisaCuti);
result.put("jatahCuti", dataCuti);
}
// sakit
if (statusPegawaiId == 29 || statusPegawaiId == 6) {
// ------------------------------------------SETTING_DATA_FIX------------------------------------------
Integer komponenSakit = 7;
Integer komponenSakitShift = 8;
Integer jumlahRawatJalan = pegawaiHistoriRekapIndexDao.getSakitTerpakai(pegawaiId, komponenSakit, 1);
if (CommonUtil.isNullOrEmpty(jumlahRawatJalan)) {
jumlahRawatJalan = pegawaiHistoriRekapIndexDao.getSakitTerpakai(pegawaiId, komponenSakitShift, 1);
}
Integer jumlahRawatInap = pegawaiHistoriRekapIndexDao.getSakitTerpakai(pegawaiId, komponenSakit, 2);
if (CommonUtil.isNullOrEmpty(jumlahRawatInap)) {
jumlahRawatInap = pegawaiHistoriRekapIndexDao.getSakitTerpakai(pegawaiId, komponenSakitShift, 2);
}
if ((CommonUtil.isNotNullOrEmpty(jumlahRawatJalan)) || (CommonUtil.isNotNullOrEmpty(jumlahRawatInap))) {
sisaJatahRawatJalan = 3 - jumlahRawatJalan;
sisaJatahRawatInap = 5 - jumlahRawatInap;
}
result.put("sisaJatahRawatJalan", sisaJatahRawatJalan);
result.put("sisaJatahRawatInap", sisaJatahRawatInap);
}
return result;
}
@Override
public Map<String, Object> getDataCuti(Integer pegawaiId, String year, Integer statusPegawaiId) {
Map<String, Object> result = new HashMap<>();
@ -850,9 +289,9 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi
if (statusPegawaiId == 5 || statusPegawaiId == 1 || statusPegawaiId == 21) {
// ------------------------------------------SETTING_DATA_FIX------------------------------------------
String komponen = settingDataFixedDao.getSettingDataFixed("komponenIndeksCuti");// 5
String komponenIndeksCutiShift = settingDataFixedDao.getSettingDataFixed("komponenIndeksCutiShift");// 6
String komponenIndeksCutiBersama = settingDataFixedDao.getSettingDataFixed("komponenIndeksCutiBersama");// 21
String komponen = Master.KomponenIndex.CUTI_NONSHIFT.toString();
String komponenIndeksCutiShift = Master.KomponenIndex.CUTI_SHIFT.toString();
String komponenIndeksCutiBersama = Master.KomponenIndex.CUTI_BERSAMA.toString();
listKomponenIndex.add(Integer.valueOf(komponen));
listKomponenIndex.add(Integer.valueOf(komponenIndeksCutiShift));
@ -3221,14 +2660,56 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi
}
@Override
public Map<String, Object> updateDataCuti(String penandaTangan, String noRec) {
Map<String, Object> result = new HashMap<String, Object>();
PlanningPegawaiStatus planningPegawaiStatus = planningPegawaiStatusDao.findOne(noRec);
planningPegawaiStatus.setKeterangan(penandaTangan);
if (CommonUtil.isNotNullOrEmpty(planningPegawaiStatus)) {
PlanningPegawaiStatus model = planningPegawaiStatusDao.save(planningPegawaiStatus);
result.put("noRec", model.getNoRec());
}
public Map<String, Object> perbaruiDataCuti(Integer idPegawai, Integer idStatusPegawai) {
PegawaiVO pegawaiVo = new PegawaiVO();
pegawaiVo.setId(idPegawai);
KomponenIndexVO komponenIndexVo = new KomponenIndexVO();
komponenIndexVo.setId(Master.KomponenIndex.CUTI_BERSAMA);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
String year = formatter.format(DateUtil.now());
Integer yearn1 = Integer.parseInt(year) - 1;
String yearN1 = yearn1.toString();
Integer yearn2 = Integer.parseInt(year) - 2;
String yearN2 = yearn2.toString();
Map<String, Object> dataCuti = this.getDataCuti(idPegawai, year, idStatusPegawai);
JatahCutiDanIzinVO voTahunIni = new JatahCutiDanIzinVO();
voTahunIni.setStatusEnabled(Master.STATUS_ENABLE_TRUE);
voTahunIni.setTahun(year);
voTahunIni.setKdProfile(Master.KODE_PROFILE);
voTahunIni.setPegawai(pegawaiVo);
voTahunIni.setValue(Integer.valueOf(dataCuti.get("dataCutiB").toString()));
voTahunIni.setKomponenIndex(komponenIndexVo);
voTahunIni.setIsTangguhkan(false);
this.setJatahCutiPegawaiRecursive(voTahunIni);
JatahCutiDanIzinVO voTahunLalu = new JatahCutiDanIzinVO();
voTahunLalu.setStatusEnabled(Master.STATUS_ENABLE_TRUE);
voTahunLalu.setTahun(yearN1);
voTahunLalu.setKdProfile(Master.KODE_PROFILE);
voTahunLalu.setPegawai(pegawaiVo);
voTahunLalu.setValue(Integer.valueOf(dataCuti.get("dataCutiB1").toString()));
voTahunLalu.setKomponenIndex(komponenIndexVo);
voTahunLalu.setIsTangguhkan(false);
this.setJatahCutiPegawaiRecursive(voTahunLalu);
JatahCutiDanIzinVO voDuaTahunLalu = new JatahCutiDanIzinVO();
voDuaTahunLalu.setStatusEnabled(Master.STATUS_ENABLE_TRUE);
voDuaTahunLalu.setTahun(yearN2);
voDuaTahunLalu.setKdProfile(Master.KODE_PROFILE);
voDuaTahunLalu.setPegawai(pegawaiVo);
voDuaTahunLalu.setValue(Integer.valueOf(dataCuti.get("dataCutiB2").toString()));
voDuaTahunLalu.setKomponenIndex(komponenIndexVo);
voDuaTahunLalu.setIsTangguhkan(false);
this.setJatahCutiPegawaiRecursive(voDuaTahunLalu);
Map<String, Object> result = new HashMap<>();
result.putAll(dataCuti);
return result;
}

View File

@ -314,7 +314,7 @@
<text><![CDATA[ 5. Cuti Karena Alasan Penting]]></text>
</staticText>
<staticText>
<reportElement x="281" y="195" width="169" height="15" uuid="c07ee8f9-afc3-4b34-aaf9-d7900660f60d"/>
<reportElement x="281" y="195" width="189" height="15" uuid="c07ee8f9-afc3-4b34-aaf9-d7900660f60d"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
@ -326,7 +326,7 @@
<text><![CDATA[ 6. Cuti di Luar Tanggungan Negara]]></text>
</staticText>
<staticText>
<reportElement x="281" y="180" width="169" height="15" uuid="c857ca91-37f2-4cbc-8371-3cd0365068cc"/>
<reportElement x="281" y="180" width="189" height="15" uuid="c857ca91-37f2-4cbc-8371-3cd0365068cc"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
@ -337,7 +337,7 @@
<text><![CDATA[ 4. Cuti Melahirkan]]></text>
</staticText>
<staticText>
<reportElement x="281" y="165" width="169" height="15" uuid="9bc9092d-4b95-44e7-b655-3a3f0b791f91">
<reportElement x="281" y="165" width="189" height="15" uuid="9bc9092d-4b95-44e7-b655-3a3f0b791f91">
<property name="com.jaspersoft.studio.unit.y" value="pixel"/>
</reportElement>
<box>
@ -350,7 +350,7 @@
<text><![CDATA[ 2. Cuti Besar]]></text>
</staticText>
<textField>
<reportElement x="450" y="195" width="110" height="15" uuid="3f9ccec0-7653-4e5b-89bb-59c87c3a3cb0"/>
<reportElement x="470" y="195" width="90" height="15" uuid="3f9ccec0-7653-4e5b-89bb-59c87c3a3cb0"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
@ -369,7 +369,7 @@
<imageExpression><![CDATA["../images/checkList.png"]]></imageExpression>
</image>
<image scaleImage="RetainShape">
<reportElement mode="Transparent" x="457" y="159" width="20" height="20" uuid="86c8012c-5db4-4b5e-8741-9d9976b344d9">
<reportElement mode="Transparent" x="477" y="159" width="20" height="20" uuid="86c8012c-5db4-4b5e-8741-9d9976b344d9">
<printWhenExpression><![CDATA[$F{statusPegawaiPlanId}.equals("24")]]></printWhenExpression>
</reportElement>
<graphicElement fill="Solid"/>
@ -382,7 +382,7 @@
<imageExpression><![CDATA["../images/checkList.png"]]></imageExpression>
</image>
<image>
<reportElement isPrintRepeatedValues="false" x="457" y="174" width="20" height="20" uuid="18414a1f-66ce-4934-8cf6-8ab29cf57112">
<reportElement isPrintRepeatedValues="false" x="477" y="174" width="20" height="20" uuid="18414a1f-66ce-4934-8cf6-8ab29cf57112">
<printWhenExpression><![CDATA[$F{statusPegawaiPlanId}.equals("25")]]></printWhenExpression>
</reportElement>
<imageExpression><![CDATA["../images/checkList.png"]]></imageExpression>
@ -434,7 +434,7 @@
<textFieldExpression><![CDATA[""]]></textFieldExpression>
</textField>
<textField>
<reportElement x="450" y="165" width="110" height="15" uuid="b69bc360-6e24-490d-b9c2-c9254858ad27"/>
<reportElement x="470" y="165" width="90" height="15" uuid="b69bc360-6e24-490d-b9c2-c9254858ad27"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
@ -446,7 +446,7 @@
<textFieldExpression><![CDATA[""]]></textFieldExpression>
</textField>
<textField>
<reportElement x="450" y="180" width="110" height="15" uuid="0bd9cfe3-6fbb-4a46-bc8e-8a7ecc88f679">
<reportElement x="470" y="180" width="90" height="15" uuid="0bd9cfe3-6fbb-4a46-bc8e-8a7ecc88f679">
<property name="com.jaspersoft.studio.unit.x" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
</reportElement>
@ -627,7 +627,7 @@
<textFieldExpression><![CDATA[$F{sisaCutiN2}!=null?$F{sisaCutiN2}:"0"]]></textFieldExpression>
</textField>
<staticText>
<reportElement positionType="Float" x="281" y="370" width="169" height="15" uuid="6c6c6421-e994-4dc9-9964-8cb1df9d4ec5"/>
<reportElement positionType="Float" x="281" y="370" width="189" height="15" uuid="6c6c6421-e994-4dc9-9964-8cb1df9d4ec5"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
@ -639,7 +639,7 @@
<text><![CDATA[ 6. Cuti di Luar Tanggungan Negara]]></text>
</staticText>
<staticText>
<reportElement positionType="Float" x="281" y="355" width="169" height="15" uuid="ae9c558e-cc58-467a-921f-94fbc2805e40">
<reportElement positionType="Float" x="281" y="355" width="189" height="15" uuid="ae9c558e-cc58-467a-921f-94fbc2805e40">
<property name="com.jaspersoft.studio.unit.width" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
<property name="com.jaspersoft.studio.unit.y" value="pixel"/>
@ -655,7 +655,7 @@
<text><![CDATA[ 5. Cuti Karena Alasan Penting]]></text>
</staticText>
<staticText>
<reportElement positionType="Float" x="281" y="340" width="169" height="15" uuid="54365567-e2b3-4e37-8b41-0d8a836ef1ba"/>
<reportElement positionType="Float" x="281" y="340" width="189" height="15" uuid="54365567-e2b3-4e37-8b41-0d8a836ef1ba"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
@ -666,7 +666,7 @@
<text><![CDATA[ 4. Cuti Melahirkan]]></text>
</staticText>
<staticText>
<reportElement positionType="Float" x="281" y="325" width="169" height="15" uuid="9011365b-bd73-4308-994b-edeb9232008d">
<reportElement positionType="Float" x="281" y="325" width="189" height="15" uuid="9011365b-bd73-4308-994b-edeb9232008d">
<property name="com.jaspersoft.studio.unit.y" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
</reportElement>
@ -680,7 +680,7 @@
<text><![CDATA[ 3. Cuti Sakit]]></text>
</staticText>
<staticText>
<reportElement positionType="Float" x="281" y="309" width="169" height="16" uuid="fa5c56a9-1b2e-45d7-b4df-c785eab1034f">
<reportElement positionType="Float" x="281" y="309" width="189" height="16" uuid="fa5c56a9-1b2e-45d7-b4df-c785eab1034f">
<property name="com.jaspersoft.studio.unit.y" value="pixel"/>
</reportElement>
<box>
@ -693,7 +693,7 @@
<text><![CDATA[ 2. Cuti Besar]]></text>
</staticText>
<textField>
<reportElement positionType="Float" x="450" y="309" width="110" height="16" uuid="d9a24c8b-35a3-4191-b365-22bc2f22bb0d"/>
<reportElement positionType="Float" x="470" y="309" width="90" height="16" uuid="d9a24c8b-35a3-4191-b365-22bc2f22bb0d"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
@ -705,7 +705,7 @@
<textFieldExpression><![CDATA[" : "+($F{cutiBesar}!=null?$F{cutiBesar}:"")]]></textFieldExpression>
</textField>
<textField>
<reportElement positionType="Float" x="450" y="325" width="110" height="15" uuid="5e3ebc31-966c-4633-93ee-fccb3a4297bc">
<reportElement positionType="Float" x="470" y="325" width="90" height="15" uuid="5e3ebc31-966c-4633-93ee-fccb3a4297bc">
<property name="com.jaspersoft.studio.unit.x" value="pixel"/>
<property name="com.jaspersoft.studio.unit.width" value="pixel"/>
</reportElement>
@ -720,7 +720,7 @@
<textFieldExpression><![CDATA[" : "+($F{cutiSakit}!=null?$F{cutiSakit}:"")]]></textFieldExpression>
</textField>
<textField>
<reportElement positionType="Float" x="450" y="340" width="110" height="15" uuid="01972092-2739-414a-9127-7b9e4cf032d4">
<reportElement positionType="Float" x="470" y="340" width="90" height="15" uuid="01972092-2739-414a-9127-7b9e4cf032d4">
<property name="com.jaspersoft.studio.unit.x" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
</reportElement>
@ -735,7 +735,7 @@
<textFieldExpression><![CDATA[" : "+($F{cutiMelahirkan}!=null?$F{cutiMelahirkan}:"")]]></textFieldExpression>
</textField>
<textField>
<reportElement positionType="Float" x="450" y="355" width="110" height="15" uuid="8a205c29-f6c0-47fc-aa70-f68cb669703e"/>
<reportElement positionType="Float" x="470" y="355" width="90" height="15" uuid="8a205c29-f6c0-47fc-aa70-f68cb669703e"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
@ -748,7 +748,7 @@
<textFieldExpression><![CDATA[" : "+($F{cutiAlasanPenting}!=null?$F{cutiAlasanPenting}:"")]]></textFieldExpression>
</textField>
<textField>
<reportElement positionType="Float" x="450" y="370" width="110" height="15" uuid="844a6493-3cf5-4fd0-a1d0-8daa8a8e339b"/>
<reportElement positionType="Float" x="470" y="370" width="90" height="15" uuid="844a6493-3cf5-4fd0-a1d0-8daa8a8e339b"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>

View File

@ -88,12 +88,13 @@
<text><![CDATA[Demikian izin sementara melaksanakan cuti karena alasan penting ini dibuat untuk dapat digunakan sebagaimana mestinya.]]></text>
</staticText>
<textField>
<reportElement x="360" y="360" width="190" height="20" uuid="46994830-9074-4618-82fb-834c1dba68af"/>
<textElement textAlignment="Left" verticalAlignment="Top"/>
<reportElement x="0" y="360" width="550" height="20" uuid="46994830-9074-4618-82fb-834c1dba68af"/>
<textElement textAlignment="Right" verticalAlignment="Top"/>
<textFieldExpression><![CDATA["( "+$F{namaAtasan}+" )"]]></textFieldExpression>
</textField>
<textField>
<reportElement x="360" y="380" width="190" height="20" uuid="0362b07d-7e2a-427f-932c-07d9aa974965"/>
<reportElement x="0" y="380" width="550" height="20" uuid="0362b07d-7e2a-427f-932c-07d9aa974965"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA["NIP. "+$F{nipAtasan}]]></textFieldExpression>
</textField>
</band>

View File

@ -3296,28 +3296,26 @@ public class SdmController extends LocaleController<AkunVO> {
}
}
@RequestMapping(value = "/get-data-cuti-edit", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> getDataCuti(@RequestParam(value = "norec", required = true) String norec,
@RequestParam(value = "pegawaiId", required = true) Integer pegawaiId,
@RequestMapping(value = "/perbarui-data-cuti", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> perbaruiDataCuti(HttpServletRequest request,
@RequestParam(value = "pegawaiId", required = true) Integer idPegawai,
@RequestParam(value = "year", required = false) String year,
@RequestParam(value = "statusPegawaiId", required = true) Integer statusPegawaiId,
@RequestParam(value = "kategoriPegawaiId", required = false) Integer kategoriPegawaiId,
HttpServletRequest request) {
@RequestParam(value = "statusPegawaiId", required = true) Integer idStatusPegawai) {
try {
Map<String, Object> result = servicePermohonanStatus.getDataCuti(norec, pegawaiId, year, statusPegawaiId);
Map<String, Object> result = servicePermohonanStatus.perbaruiDataCuti(idPegawai, idStatusPegawai);
if (null != result) {
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS_OK,
getMessage(MessageResource.LABEL_SUCCESS_OK, request));
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_UPDATE_DATA_CUTI, request));
return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);
} else {
return RestUtil.getJsonResponse(result, HttpStatus.NOT_FOUND, mapHeaderMessage);
}
} catch (ServiceVOException e) {
LOGGER.error("Got exception {} when getDataCuti", e.getMessage());
LOGGER.error("Got exception {} when perbaruiDataCuti", e.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, e.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage);
} catch (JpaSystemException jse) {
LOGGER.error("Got exception {} when getDataCuti", jse.getMessage());
LOGGER.error("Got exception {} when perbaruiDataCuti", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}