From 82986ec743bb132a7cb16dd67b1c865d9b635260 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Mon, 12 Apr 2021 21:28:54 +0700 Subject: [PATCH] - perbaikan fungsi cek duplikat data master jabatan - perbaikan fungsi simpan master jabatan jika hapus data eselon jabatan --- .../medifirst2000/dao/JabatanDao.java | 42 ++++++++++++------- .../medifirst2000/service/JabatanService.java | 2 +- .../service/impl/JabatanServiceImpl.java | 13 +++++- .../controller/JabatanController.java | 3 +- 4 files changed, 40 insertions(+), 20 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 850ebe1c..a5acd973 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 @@ -35,12 +35,12 @@ public interface JabatanDao extends PagingAndSortingRepository @Query("SELECT model from Jabatan model where model.jenisJabatanId = :jenisJabatanId ") List getJabatanStruktural(@Param("jenisJabatanId") Integer jenisJabatanId); - String strJabatanByJenis = "SELECT new Map(model.id as idJabatan, model.namaJabatan as namaJabatan) from Jabatan model " - + "where model.statusEnabled is true " + "and model.jenisJabatanId = :jenisJabatanId"; + String strJabatanByJenis = "SELECT new Map(jb.id as idJabatan, jb.namaJabatan as namaJabatan) from Jabatan jb " + + "where jb.statusEnabled is true " + "and jb.jenisJabatanId = :jenisJabatanId"; - String byUnitKerja = " and model.unitKerjaId = :unitKerjaId"; + String byUnitKerja = " and jb.unitKerjaId = :unitKerjaId"; - String sortNamaJabatan = " order by model.namaJabatan"; + String sortNamaJabatan = " order by jb.namaJabatan"; @Query(strJabatanByJenis + sortNamaJabatan) List> getJabatanByJenisJabatan(@Param("jenisJabatanId") Integer jenisJabatanId); @@ -54,13 +54,21 @@ public interface JabatanDao extends PagingAndSortingRepository + "and lower(jab.namaJabatan) not like ('plh%')") List> getListJabatanFungsionalStruktural(); - @Query("select new Map(jab.id as id, jab.namaJabatan as namaJabatan) " - + "from Jabatan jab where jab.statusEnabled is true " - + "and lower(regexp_replace(jab.namaJabatan,'[^0-9a-zA-Z]+', '', 'g')) = :namaJabatan " - + "and jab.jenisJabatanId = :jenisJabatanId") + 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"; + + String notJabatanId = " and jb.id <> :jabatanId"; + + @Query(strDuplikatJabatan) List> checkNamaJabatan(@Param("namaJabatan") String namaJabatan, @Param("jenisJabatanId") Integer jenisJabatanId); + @Query(strDuplikatJabatan + notJabatanId) + List> checkNamaJabatan(@Param("jabatanId") Integer idJabatan, + @Param("namaJabatan") String namaJabatan, @Param("jenisJabatanId") Integer idJenisJabatan); + String strJabatan = "select new Map(jb.id as id,jb.namaJabatan as namaJabatan," + "jb.levelJabatan as levelJabatan,jb.subLevelJabatan as levelDireksi," + "jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan," + "uk.id as unitKerjaId,uk.name as unitKerja," @@ -74,31 +82,33 @@ public interface JabatanDao extends PagingAndSortingRepository String unitKerja = " and uk.id = :unitKerjaId"; - @Query(strJabatan) + String sortMasterJabatan = " order by jb.namaJabatan, uk.name, jj.jenisJabatan"; + + @Query(strJabatan + sortMasterJabatan) List> findJabatan(); - @Query(strJabatan + namaJabatan) + @Query(strJabatan + namaJabatan + sortMasterJabatan) List> findJabatanByNama(@Param("namaJabatan") String namaJabatan); - @Query(strJabatan + jenisJabatan) + @Query(strJabatan + jenisJabatan + sortMasterJabatan) List> findJabatanByJenis(@Param("jenisJabatanId") Integer idJenisJabatan); - @Query(strJabatan + unitKerja) + @Query(strJabatan + unitKerja + sortMasterJabatan) List> findJabatanByUnit(@Param("unitKerjaId") Integer idUnitKerja); - @Query(strJabatan + namaJabatan + jenisJabatan) + @Query(strJabatan + namaJabatan + jenisJabatan + sortMasterJabatan) List> findJabatanByNamaJenis(@Param("namaJabatan") String namaJabatan, @Param("jenisJabatanId") Integer idJenisJabatan); - @Query(strJabatan + namaJabatan + unitKerja) + @Query(strJabatan + namaJabatan + unitKerja + sortMasterJabatan) List> findJabatanByNamaUnit(@Param("namaJabatan") String namaJabatan, @Param("unitKerjaId") Integer idUnitKerja); - @Query(strJabatan + jenisJabatan + unitKerja) + @Query(strJabatan + jenisJabatan + unitKerja + sortMasterJabatan) List> findJabatanByJenisUnit(@Param("jenisJabatanId") Integer idJenisJabatan, @Param("unitKerjaId") Integer idUnitKerja); - @Query(strJabatan + namaJabatan + jenisJabatan + unitKerja) + @Query(strJabatan + namaJabatan + jenisJabatan + unitKerja + sortMasterJabatan) List> findJabatanByNamaJenisUnit(@Param("namaJabatan") String namaJabatan, @Param("jenisJabatanId") Integer idJenisJabatan, @Param("unitKerjaId") Integer idUnitKerja); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/JabatanService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/JabatanService.java index bfe33c1e..49e3c752 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/JabatanService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/JabatanService.java @@ -27,7 +27,7 @@ public interface JabatanService extends BaseVoService validateNamaJabatan(String namaJabatan, Integer idJenisJabatan); + Map validateNamaJabatan(Integer idJabatan, String namaJabatan, Integer idJenisJabatan); List> findJabatan(String namaJabatan, Integer idJenisJabatan, 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 39b954ca..c45a0790 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 @@ -115,6 +115,9 @@ public class JabatanServiceImpl extends BaseVoServiceImpl implements JabatanServ if (CommonUtil.isNotNullOrEmpty(vo.getEselon())) { Eselon eselon = eselonConverter.transferVOToModel(vo.getEselon(), new Eselon()); jabatanBaru.setEselon(eselon); + } else if (CommonUtil.isNullOrEmpty(vo.getEselon()) && CommonUtil.isNotNullOrEmpty(jabatanBaru.getEselon())) { + // hapus eselon + jabatanBaru.setEselon(null); } jabatanBaru.setUnitKerja(unitKerja); jabatanBaru.setJenisJabatan(jenisJabatan); @@ -281,11 +284,17 @@ public class JabatanServiceImpl extends BaseVoServiceImpl implements JabatanServ } @Override - public Map validateNamaJabatan(String namaJabatan, Integer idJenisJabatan) { + public Map validateNamaJabatan(Integer idJabatan, String namaJabatan, Integer idJenisJabatan) { Map result = new HashMap<>(); String replacedNamaJabatan = namaJabatan.replaceAll("[^0-9a-zA-Z]", "").toLowerCase(); - List> listNamaJabatan = jabatanDao.checkNamaJabatan(replacedNamaJabatan, idJenisJabatan); + List> listNamaJabatan = new ArrayList<>(); + if (CommonUtil.isNotNullOrEmpty(idJabatan)) { + listNamaJabatan = jabatanDao.checkNamaJabatan(idJabatan, replacedNamaJabatan, idJenisJabatan); + } else { + listNamaJabatan = jabatanDao.checkNamaJabatan(replacedNamaJabatan, idJenisJabatan); + } + if (CommonUtil.isNotNullOrEmpty(listNamaJabatan)) { result.put("msg", "Jabatan " + namaJabatan + " sudah tersedia!"); } 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 534f4ebf..ed96832d 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 @@ -217,10 +217,11 @@ public class JabatanController extends LocaleController { @RequestMapping(value = "/validate-nama-jabatan/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity> validateNamaJabatan(HttpServletRequest request, + @RequestParam(value = "idJabatan", required = false) Integer idJabatan, @RequestParam(value = "namaJabatan", required = true) String namaJabatan, @RequestParam(value = "idJenisJabatan", required = true) Integer idJenisJabatan) { try { - Map result = jabatanService.validateNamaJabatan(namaJabatan, idJenisJabatan); + Map result = jabatanService.validateNamaJabatan(idJabatan, namaJabatan, idJenisJabatan); return RestUtil.getJsonResponse(result, HttpStatus.OK); } catch (ServiceVOException e) {