From 77c8af98b93e4a94a473c8f68fedd44f2258b196 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Tue, 4 May 2021 17:28:55 +0700 Subject: [PATCH] - perbaikan fitur validasi duplikat nama jabatan berdasarkan jenis jabatan dan unit kerja --- .../jasamedika/medifirst2000/dao/JabatanDao.java | 14 ++++++++++++-- .../service/impl/JabatanServiceImpl.java | 8 ++++++-- .../jasamedika/medifirst2000/entities/Jabatan.java | 3 +-- .../controller/JabatanController.java | 2 +- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JabatanDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JabatanDao.java index 5781e34b..efe1b0fc 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JabatanDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JabatanDao.java @@ -57,15 +57,25 @@ public interface JabatanDao extends PagingAndSortingRepository String strDuplikatJabatan = "select new Map(jb.id as id, jb.namaJabatan as namaJabatan) " + "from Jabatan jb where jb.statusEnabled is true " + "and lower(regexp_replace(jb.namaJabatan,'[^0-9a-zA-Z]+', '', 'g')) = :namaJabatan " - + "and jb.jenisJabatanId = :jenisJabatanId " + "and jb.unitKerjaId = :unitKerjaId"; + + "and jb.jenisJabatanId = :jenisJabatanId"; + + String unitKerjaId = " and jb.unitKerjaId = :unitKerjaId"; String notJabatanId = " and jb.id <> :jabatanId"; @Query(strDuplikatJabatan) List> checkNamaJabatan(@Param("namaJabatan") String namaJabatan, - @Param("jenisJabatanId") Integer jenisJabatanId, @Param("unitKerjaId") Integer unitKerjaId); + @Param("jenisJabatanId") Integer jenisJabatanId); @Query(strDuplikatJabatan + notJabatanId) + List> checkNamaJabatan(@Param("jabatanId") Integer idJabatan, + @Param("namaJabatan") String namaJabatan, @Param("jenisJabatanId") Integer idJenisJabatan); + + @Query(strDuplikatJabatan + unitKerjaId) + List> checkNamaJabatan(@Param("namaJabatan") String namaJabatan, + @Param("jenisJabatanId") Integer idJenisJabatan, @Param("unitKerjaId") Integer idUnitKerja); + + @Query(strDuplikatJabatan + notJabatanId + unitKerjaId) List> checkNamaJabatan(@Param("jabatanId") Integer idJabatan, @Param("namaJabatan") String namaJabatan, @Param("jenisJabatanId") Integer idJenisJabatan, @Param("unitKerjaId") Integer idUnitKerja); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JabatanServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JabatanServiceImpl.java index 3dafe476..c7ebec43 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JabatanServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JabatanServiceImpl.java @@ -308,10 +308,14 @@ public class JabatanServiceImpl extends BaseVoServiceImpl implements JabatanServ String patternText = settingDataFixedDao.getSettingDataFixed("patternTextDuplicate"); String replacedNamaJabatan = namaJabatan.replaceAll(patternText, "").toLowerCase(); List> listNamaJabatan = new ArrayList<>(); - if (CommonUtil.isNotNullOrEmpty(idJabatan)) { + if (CommonUtil.isNotNullOrEmpty(idJabatan) && CommonUtil.isNotNullOrEmpty(idUnitKerja)) { listNamaJabatan = jabatanDao.checkNamaJabatan(idJabatan, replacedNamaJabatan, idJenisJabatan, idUnitKerja); - } else { + } else if (CommonUtil.isNotNullOrEmpty(idJabatan) && CommonUtil.isNullOrEmpty(idUnitKerja)) { + listNamaJabatan = jabatanDao.checkNamaJabatan(idJabatan, replacedNamaJabatan, idJenisJabatan); + } else if (CommonUtil.isNullOrEmpty(idJabatan) && CommonUtil.isNotNullOrEmpty(idUnitKerja)) { listNamaJabatan = jabatanDao.checkNamaJabatan(replacedNamaJabatan, idJenisJabatan, idUnitKerja); + } else if (CommonUtil.isNullOrEmpty(idJabatan) && CommonUtil.isNullOrEmpty(idUnitKerja)) { + listNamaJabatan = jabatanDao.checkNamaJabatan(replacedNamaJabatan, idJenisJabatan); } if (CommonUtil.isNotNullOrEmpty(listNamaJabatan)) { diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Jabatan.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Jabatan.java index edc26d4a..ac551f84 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Jabatan.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Jabatan.java @@ -92,8 +92,7 @@ public class Jabatan extends BaseMaster { private Integer qJabatan; @ManyToOne - @JoinColumn(name = "objectunitkerjafk", nullable = false) - @NotNull(message = "Unit kerja tidak boleh kosong") + @JoinColumn(name = "objectunitkerjafk", nullable = true) @Caption(value = "Unit Kerja") private UnitKerjaPegawai unitKerja; diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/JabatanController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/JabatanController.java index a644144a..e5cfe5eb 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/JabatanController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/JabatanController.java @@ -219,7 +219,7 @@ public class JabatanController extends LocaleController { @RequestParam(value = "idJabatan", required = false) Integer idJabatan, @RequestParam(value = "namaJabatan", required = true) String namaJabatan, @RequestParam(value = "idJenisJabatan", required = true) Integer idJenisJabatan, - @RequestParam(value = "idUnitKerja", required = true) Integer idUnitKerja) { + @RequestParam(value = "idUnitKerja", required = false) Integer idUnitKerja) { try { Map result = jabatanService.validateNamaJabatan(idJabatan, namaJabatan, idJenisJabatan, idUnitKerja);