From 174e53b3d5b8b713dfe43bf727e0be3523b087be Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 12 Nov 2024 13:09:51 +0700 Subject: [PATCH 1/5] Update configurasi hibernate Perbaikan error the markup declarations contained or pointed to by the document type declaration must be well-formed --- jasamedika-bridging/src/main/resources/hibernate.cfg.xml | 2 +- jasamedika-domain/src/main/resources/hibernate.cfg.xml | 2 +- jasamedika-web/src/main/resources/hibernate.cfg.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jasamedika-bridging/src/main/resources/hibernate.cfg.xml b/jasamedika-bridging/src/main/resources/hibernate.cfg.xml index dda65cba..3ef2c10c 100644 --- a/jasamedika-bridging/src/main/resources/hibernate.cfg.xml +++ b/jasamedika-bridging/src/main/resources/hibernate.cfg.xml @@ -1,5 +1,5 @@ - + diff --git a/jasamedika-domain/src/main/resources/hibernate.cfg.xml b/jasamedika-domain/src/main/resources/hibernate.cfg.xml index 2da0e4f7..458f3d27 100644 --- a/jasamedika-domain/src/main/resources/hibernate.cfg.xml +++ b/jasamedika-domain/src/main/resources/hibernate.cfg.xml @@ -1,6 +1,6 @@ + "https://hibernate.org/dtd/hibernate-configuration-3.0.dtd"> diff --git a/jasamedika-web/src/main/resources/hibernate.cfg.xml b/jasamedika-web/src/main/resources/hibernate.cfg.xml index c2b2c716..f44bad09 100644 --- a/jasamedika-web/src/main/resources/hibernate.cfg.xml +++ b/jasamedika-web/src/main/resources/hibernate.cfg.xml @@ -1,5 +1,5 @@ - + From a8047605bc650fe78e7702846e118f2e5c6d2c01 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 12 Nov 2024 16:56:37 +0700 Subject: [PATCH 2/5] Update service log verif catatan kinerja Pembuatan fitur pencarian log catatan kinerja --- .../dao/LogbookKinerjaDetailLogDao.java | 124 ++++++++++++++++-- .../LogbookKinerjaDetailLogService.java | 3 +- .../LogbookKinerjaDetailLogServiceImpl.java | 61 ++++++++- .../service/impl/PegawaiServiceImpl.java | 14 +- .../IkiDanRemunerasiController.java | 16 ++- 5 files changed, 193 insertions(+), 25 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDetailLogDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDetailLogDao.java index 254c35e0..fcd2ecd0 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDetailLogDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDetailLogDao.java @@ -7,6 +7,8 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import java.util.Date; + /** * @author salmanoe * @version 1.0.0 @@ -15,17 +17,115 @@ import org.springframework.data.repository.query.Param; public interface LogbookKinerjaDetailLogDao extends JpaRepository { @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " - + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " - + "inner join lk.pegawai pg " + "inner join log.pegawai ats " - + "where lower(ikm.namaIndikator) like %:querySearch% " + "or lower(lkd.namaKegiatan) like %:querySearch% " - + "or to_char(lkd.tanggalKegiatan, 'yyyy') like %:querySearch% " - + "or to_char(lkd.tanggalKegiatan, 'MM/yyyy') like %:querySearch% " - + "or to_char(lkd.tanggalKegiatan, 'dd/MM/yyyy') like %:querySearch% " - + "or lower(pg.namaLengkap) like %:querySearch% " + "or lower(log.jenisLog) like %:querySearch% " - + "or to_char(log.tanggalDibuat, 'yyyy') like %:querySearch% " - + "or to_char(log.tanggalDibuat, 'MM/yyyy') like %:querySearch% " - + "or to_char(log.tanggalDibuat, 'dd/MM/yyyy') like %:querySearch% " - + "or lower(ats.nipPns) like %:querySearch% " + "or lower(ats.namaLengkap) like %:querySearch%") - Page findBySearchQuery(@Param("querySearch") String querySearch, Pageable pageable); + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% " + + "order by log.tanggalDibuat asc") + Page findBySearchIndikator(@Param("indikator") String indikator, Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(lkd.namaKegiatan) like %:kegiatan% " + + "order by log.tanggalDibuat asc") + Page findBySearchKegiatan(@Param("kegiatan") String kegiatan, Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lkd.tanggalKegiatan between :startDate and :endDate " + + "order by log.tanggalDibuat asc") + Page findBySearchTanggal(@Param("startDate") Date startDate, + @Param("endDate") Date endDate, Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(pg.namaLengkap) like %:pegawai% " + + "order by log.tanggalDibuat asc") + Page findBySearchPegawai(@Param("pegawai") String pegawai, Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% " + + "and lower(lkd.namaKegiatan) like %:kegiatan% " + "order by log.tanggalDibuat asc") + Page findBySearchIndikatorKegiatan(@Param("indikator") String indikator, + @Param("kegiatan") String kegiatan, Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% " + + "and lkd.tanggalKegiatan between :startDate and :endDate " + "order by log.tanggalDibuat asc") + Page findBySearchIndikatorTanggal(@Param("indikator") String indikator, + @Param("startDate") Date startDate, @Param("endDate") Date endDate, Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% " + + "and lower(pg.namaLengkap) like %:pegawai% " + "order by log.tanggalDibuat asc") + Page findBySearchIndikatorPegawai(@Param("indikator") String indikator, + @Param("pegawai") String pegawai, Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(lkd.namaKegiatan) like %:kegiatan% " + + "and lkd.tanggalKegiatan between :startDate and :endDate " + "order by log.tanggalDibuat asc") + Page findBySearchKegiatanTanggal(@Param("kegiatan") String kegiatan, + @Param("startDate") Date startDate, @Param("endDate") Date endDate, Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(lkd.namaKegiatan) like %:kegiatan% " + + "and lower(pg.namaLengkap) like %:pegawai% " + "order by log.tanggalDibuat asc") + Page findBySearchKegiatanPegawai(@Param("kegiatan") String kegiatan, + @Param("pegawai") String pegawai, Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lkd.tanggalKegiatan between :startDate and :endDate " + + "and lower(pg.namaLengkap) like %:pegawai% " + "order by log.tanggalDibuat asc") + Page findBySearchTanggalPegawai(@Param("startDate") Date startDate, + @Param("endDate") Date endDate, @Param("pegawai") String pegawai, Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% " + + "and lower(lkd.namaKegiatan) like %:kegiatan% " + + "and lkd.tanggalKegiatan between :startDate and :endDate " + "order by log.tanggalDibuat asc") + Page findBySearchIndikatorKegiatanTanggal(@Param("indikator") String indikator, + @Param("kegiatan") String kegiatan, @Param("startDate") Date startDate, @Param("endDate") Date endDate, + Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% " + + "and lkd.tanggalKegiatan between :startDate and :endDate " + "and lower(pg.namaLengkap) like %:pegawai% " + + "order by log.tanggalDibuat asc") + Page findBySearchIndikatorTanggalPegawai(@Param("indikator") String indikator, + @Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("pegawai") String pegawai, + Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% " + + "and lower(lkd.namaKegiatan) like %:kegiatan% " + "and lower(pg.namaLengkap) like %:pegawai% " + + "order by log.tanggalDibuat asc") + Page findBySearchIndikatorKegiatanPegawai(@Param("indikator") String indikator, + @Param("kegiatan") String kegiatan, @Param("pegawai") String pegawai, Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(lkd.namaKegiatan) like %:kegiatan% " + + "and lkd.tanggalKegiatan between :startDate and :endDate " + "and lower(pg.namaLengkap) like %:pegawai% " + + "order by log.tanggalDibuat asc") + Page findBySearchKegiatanTanggalPegawai(@Param("kegiatan") String kegiatan, + @Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("pegawai") String pegawai, + Pageable pageable); + + @Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd " + + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg " + + "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% " + + "and lower(lkd.namaKegiatan) like %:kegiatan% " + + "and lkd.tanggalKegiatan between :startDate and :endDate " + "and lower(pg.namaLengkap) like %:pegawai% " + + "order by log.tanggalDibuat asc") + Page findBySearchIndikatorKegiatanTanggalPegawai(@Param("indikator") String indikator, + @Param("kegiatan") String kegiatan, @Param("startDate") Date startDate, @Param("endDate") Date endDate, + @Param("pegawai") String pegawai, Pageable pageable); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaDetailLogService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaDetailLogService.java index 4c6be046..a2f80cbb 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaDetailLogService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaDetailLogService.java @@ -14,6 +14,7 @@ public interface LogbookKinerjaDetailLogService { void save(LogbookKinerjaDetailLogReqDto dto); - Page list(Pageable pageable); + Page search(String indikator, String kegiatan, Long tglAwalKegiatan, + Long tglAkhirKegiatan, String pegawai, Pageable pageable); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailLogServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailLogServiceImpl.java index 6b6fc14c..df05b468 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailLogServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailLogServiceImpl.java @@ -10,6 +10,7 @@ import com.jasamedika.medifirst2000.entities.LogbookKinerjaDetailLog; import com.jasamedika.medifirst2000.entities.Pegawai; import com.jasamedika.medifirst2000.service.LogbookKinerjaDetailLogService; import com.jasamedika.medifirst2000.service.LoginUserService; +import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO; import com.jasamedika.medifirst2000.vo.PegawaiVO; import org.springframework.beans.factory.annotation.Autowired; @@ -67,8 +68,64 @@ public class LogbookKinerjaDetailLogServiceImpl implements LogbookKinerjaDetailL } @Override - public Page list(Pageable pageable) { - Page logPage = logbookKinerjaDetailLogDao.findAll(pageable); + public Page search(String indikator, String kegiatan, Long tglAwalKegiatan, + Long tglAkhirKegiatan, String pegawai, Pageable pageable) { + Page logPage; + if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(kegiatan) + && CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan) + && CommonUtil.isNotNullOrEmpty(pegawai)) { + logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorKegiatanTanggalPegawai(indikator.toLowerCase(), + kegiatan.toLowerCase(), new Date(tglAwalKegiatan), new Date(tglAkhirKegiatan), + pegawai.toLowerCase(), pageable); + } else if (CommonUtil.isNotNullOrEmpty(kegiatan) && CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) + && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan) && CommonUtil.isNotNullOrEmpty(pegawai)) { + logPage = logbookKinerjaDetailLogDao.findBySearchKegiatanTanggalPegawai(kegiatan.toLowerCase(), + new Date(tglAwalKegiatan), new Date(tglAkhirKegiatan), pegawai.toLowerCase(), pageable); + } else if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(kegiatan) + && CommonUtil.isNotNullOrEmpty(pegawai)) { + logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorKegiatanPegawai(indikator.toLowerCase(), + kegiatan.toLowerCase(), pegawai.toLowerCase(), pageable); + } else if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) + && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan) && CommonUtil.isNotNullOrEmpty(pegawai)) { + logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorTanggalPegawai(indikator.toLowerCase(), + new Date(tglAwalKegiatan), new Date(tglAkhirKegiatan), pegawai.toLowerCase(), pageable); + } else if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(kegiatan) + && CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan)) { + logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorKegiatanTanggal(indikator.toLowerCase(), + kegiatan.toLowerCase(), new Date(tglAwalKegiatan), new Date(tglAkhirKegiatan), pageable); + } else if (CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan) + && CommonUtil.isNotNullOrEmpty(pegawai)) { + logPage = logbookKinerjaDetailLogDao.findBySearchTanggalPegawai(new Date(tglAwalKegiatan), + new Date(tglAkhirKegiatan), pegawai.toLowerCase(), pageable); + } else if (CommonUtil.isNotNullOrEmpty(kegiatan) && CommonUtil.isNotNullOrEmpty(pegawai)) { + logPage = logbookKinerjaDetailLogDao.findBySearchKegiatanPegawai(kegiatan.toLowerCase(), + pegawai.toLowerCase(), pageable); + } else if (CommonUtil.isNotNullOrEmpty(kegiatan) && CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) + && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan)) { + logPage = logbookKinerjaDetailLogDao.findBySearchKegiatanTanggal(kegiatan.toLowerCase(), + new Date(tglAwalKegiatan), new Date(tglAkhirKegiatan), pageable); + } else if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(pegawai)) { + logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorPegawai(indikator.toLowerCase(), + pegawai.toLowerCase(), pageable); + } else if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) + && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan)) { + logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorTanggal(indikator.toLowerCase(), + new Date(tglAwalKegiatan), new Date(tglAkhirKegiatan), pageable); + } else if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(kegiatan)) { + logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorKegiatan(indikator.toLowerCase(), + kegiatan.toLowerCase(), pageable); + } else if (CommonUtil.isNotNullOrEmpty(pegawai)) { + logPage = logbookKinerjaDetailLogDao.findBySearchPegawai(pegawai.toLowerCase(), pageable); + } else if (CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan)) { + logPage = logbookKinerjaDetailLogDao.findBySearchTanggal(new Date(tglAwalKegiatan), + new Date(tglAkhirKegiatan), pageable); + } else if (CommonUtil.isNotNullOrEmpty(kegiatan)) { + logPage = logbookKinerjaDetailLogDao.findBySearchKegiatan(kegiatan.toLowerCase(), pageable); + } else if (CommonUtil.isNotNullOrEmpty(indikator)) { + logPage = logbookKinerjaDetailLogDao.findBySearchIndikator(indikator.toLowerCase(), pageable); + } else { + logPage = logbookKinerjaDetailLogDao.findAll(pageable); + } List dtoList = new ArrayList<>(); logPage.getContent().forEach(log -> { LogbookKinerjaDetailLogDto.LogbookKinerjaDetailLogDtoBuilder dtoBuilder = LogbookKinerjaDetailLogDto diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PegawaiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PegawaiServiceImpl.java index ac40fd94..c01b72b8 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PegawaiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PegawaiServiceImpl.java @@ -6,8 +6,8 @@ import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.converter.PegawaiConverter; import com.jasamedika.medifirst2000.dao.*; import com.jasamedika.medifirst2000.dao.custom.PegawaiDaoCustom; -import com.jasamedika.medifirst2000.dto.compreface.request.FaceSubjectReq; import com.jasamedika.medifirst2000.dto.PegawaiDto; +import com.jasamedika.medifirst2000.dto.compreface.request.FaceSubjectReq; import com.jasamedika.medifirst2000.dto.compreface.response.FaceSubjectRes; import com.jasamedika.medifirst2000.entities.*; import com.jasamedika.medifirst2000.exception.ServiceVOException; @@ -36,7 +36,9 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; -import org.springframework.http.*; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.ResponseEntity; import org.springframework.orm.jpa.JpaSystemException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -51,7 +53,6 @@ import java.util.*; import static org.springframework.http.HttpMethod.GET; import static org.springframework.http.HttpMethod.POST; -import static org.springframework.http.HttpStatus.CREATED; import static org.springframework.http.HttpStatus.OK; import static org.springframework.http.MediaType.APPLICATION_JSON; @@ -65,9 +66,6 @@ public class PegawaiServiceImpl extends BaseVoServiceImpl implements PegawaiServ private static final Logger log = LoggerFactory.getLogger(PegawaiServiceImpl.class); - @Autowired - private ObjectMapper objectMapper; - @Value("${systemDirectory}") String systemDirectory; @@ -2398,7 +2396,7 @@ public class PegawaiServiceImpl extends BaseVoServiceImpl implements PegawaiServ listLabelDokter.forEach(s -> { try { FaceSubjectReq dto = FaceSubjectReq.builder().subject(s).build(); - JSONObject jsonObject = new JSONObject(objectMapper.writeValueAsString(dto)); + JSONObject jsonObject = new JSONObject(new ObjectMapper().writeValueAsString(dto)); HttpEntity httpEntity = new HttpEntity<>(jsonObject.toString(), headers); ResponseEntity exchange = template.exchange(uri, POST, httpEntity, FaceSubjectReq.class); @@ -2427,7 +2425,7 @@ public class PegawaiServiceImpl extends BaseVoServiceImpl implements PegawaiServ ResponseEntity response = template.exchange(uri, GET, httpEntity, Object.class); if (CommonUtil.isNotNullOrEmpty(response.getBody())) { if (OK.equals(response.getStatusCode())) { - return objectMapper.convertValue(response.getBody(), FaceSubjectRes.class); + return new ObjectMapper().convertValue(response.getBody(), FaceSubjectRes.class); } else { log.error(response.getBody().toString()); return null; diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java index d21cd852..5830ef9e 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java @@ -2858,10 +2858,22 @@ public class IkiDanRemunerasiController extends LocaleController> logsKinerja(HttpServletRequest request, - @RequestParam(value = "page") int page, @RequestParam(value = "size") int size) { + @RequestParam(value = "indikator", required = false) String indikator, + @RequestParam(value = "kegiatan", required = false) String kegiatan, + @RequestParam(value = "tgl_awal_kegiatan", required = false) String tglAwalKegiatan, + @RequestParam(value = "tgl_akhir_kegiatan", required = false) String tglAkhirKegiatan, + @RequestParam(value = "pegawai", required = false) String pegawai, @RequestParam(value = "page") int page, + @RequestParam(value = "size") int size) { try { Pageable pageable = new PageRequest(page, size); - Page dtoPage = logbookLogService.list(pageable); + Long startDate = null; + Long endDate = null; + if (CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan)) { + startDate = Long.parseLong(tglAwalKegiatan); + endDate = Long.parseLong(tglAkhirKegiatan); + } + Page dtoPage = logbookLogService.search(indikator, kegiatan, startDate, + endDate, pegawai, pageable); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(dtoPage, HttpStatus.OK, mapHeaderMessage); From c8dac51bec3d18f391bc8ae4e6b0a8b3c249aaf6 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 13 Nov 2024 10:05:54 +0700 Subject: [PATCH 3/5] Update entity mapping paket Penerapan jenis paket untuk validasi paket persalinan --- .../entities/MapProdukPaket.java | 8 ++++ .../entities/constant/JenisPaket.java | 42 +++++++++++++++++++ .../medifirst2000/vo/MapProdukPaketVO.java | 4 ++ 3 files changed, 54 insertions(+) create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/constant/JenisPaket.java diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapProdukPaket.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapProdukPaket.java index d6b3f48e..6390a497 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapProdukPaket.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapProdukPaket.java @@ -1,6 +1,7 @@ package com.jasamedika.medifirst2000.entities; import com.jasamedika.medifirst2000.base.BaseTransaction; +import com.jasamedika.medifirst2000.entities.constant.JenisPaket; import com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket; import com.jasamedika.medifirst2000.helper.Caption; import lombok.Getter; @@ -8,6 +9,7 @@ import lombok.Setter; import javax.persistence.*; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import static javax.persistence.EnumType.STRING; import static javax.persistence.FetchType.LAZY; @@ -51,4 +53,10 @@ public class MapProdukPaket extends BaseTransaction { @NotNull(message = "Status aktif tidak boleh kosong") @Caption(value = "Status Aktif") private Boolean isAktif; + + @Column(length = 30) + @Enumerated(STRING) + @Size(max = 30, message = "Jenis paket maksimal {max} karakter") + @Caption(value = "Jenis paket") + private JenisPaket jenisPaket; } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/constant/JenisPaket.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/constant/JenisPaket.java new file mode 100644 index 00000000..0da2a330 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/constant/JenisPaket.java @@ -0,0 +1,42 @@ +package com.jasamedika.medifirst2000.entities.constant; + +import lombok.Getter; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 13/11/2024 + */ +public enum JenisPaket { + + PERSALINAN(1, "Persalinan"); + + private final long id; + + @Getter + private final String name; + + JenisPaket(long id, String name) { + this.id = id; + this.name = name; + } + + public long id() { + return this.id; + } + + @Override + public String toString() { + return Long.toString(id); + } + + public static JenisPaket valueOf(long id) { + for (JenisPaket jenisPaket : values()) { + if (jenisPaket.id == id) { + return jenisPaket; + } + } + throw new IllegalArgumentException("No matching constant for [" + id + "]"); + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapProdukPaketVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapProdukPaketVO.java index 733840cd..200bea4f 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapProdukPaketVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapProdukPaketVO.java @@ -3,6 +3,7 @@ package com.jasamedika.medifirst2000.vo; import com.fasterxml.jackson.annotation.JsonInclude; import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; import com.jasamedika.medifirst2000.entities.ProdukDto; +import com.jasamedika.medifirst2000.entities.constant.JenisPaket; import com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket; import com.jasamedika.medifirst2000.helper.Caption; import lombok.Getter; @@ -40,4 +41,7 @@ public class MapProdukPaketVO extends BaseTransactionVO { @Caption(value = "Status Aktif") private Boolean isAktif; + + @Caption(value = "Jenis paket") + private JenisPaket jenisPaket; } From 1c1ae2d23e333f237e5f4586a9011b5c49a27afa Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 18 Nov 2024 13:31:35 +0700 Subject: [PATCH 4/5] Add service master produk paket Pembuatan fungsi simpan master produk sebagai kepala paket --- .../medifirst2000/dao/ProdukPaketDao.java | 17 +++++ .../service/ProdukPaketService.java | 14 +++++ .../service/impl/ProdukPaketServiceImpl.java | 37 +++++++++++ .../medifirst2000/dto/ProdukPaketDto.java | 30 +++++++++ .../medifirst2000/entities/ProdukPaket.java | 46 ++++++++++++++ .../{JenisPaket.java => TipePaket.java} | 12 ++-- .../controller/ProdukController.java | 63 +++++++++++++++++++ 7 files changed, 213 insertions(+), 6 deletions(-) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukPaketDao.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukPaketService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukPaketServiceImpl.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/ProdukPaketDto.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukPaket.java rename jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/constant/{JenisPaket.java => TipePaket.java} (70%) create mode 100644 jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/controller/ProdukController.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukPaketDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukPaketDao.java new file mode 100644 index 00000000..c1e1b55e --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukPaketDao.java @@ -0,0 +1,17 @@ +package com.jasamedika.medifirst2000.dao; + +import com.jasamedika.medifirst2000.entities.ProdukPaket; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 14/11/2024 + */ +public interface ProdukPaketDao extends JpaRepository { + + Optional findById(Integer id); + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukPaketService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukPaketService.java new file mode 100644 index 00000000..cf9243dc --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukPaketService.java @@ -0,0 +1,14 @@ +package com.jasamedika.medifirst2000.service; + +import com.jasamedika.medifirst2000.dto.ProdukPaketDto; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 14/11/2024 + */ +public interface ProdukPaketService { + + void save(ProdukPaketDto dto); + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukPaketServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukPaketServiceImpl.java new file mode 100644 index 00000000..2392d75b --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukPaketServiceImpl.java @@ -0,0 +1,37 @@ +package com.jasamedika.medifirst2000.service.impl; + +import com.jasamedika.medifirst2000.dao.ProdukDao; +import com.jasamedika.medifirst2000.dao.ProdukPaketDao; +import com.jasamedika.medifirst2000.dto.ProdukPaketDto; +import com.jasamedika.medifirst2000.entities.Produk; +import com.jasamedika.medifirst2000.entities.ProdukPaket; +import com.jasamedika.medifirst2000.service.ProdukPaketService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 14/11/2024 + */ +@Service +@Transactional +public class ProdukPaketServiceImpl implements ProdukPaketService { + + @Autowired + private ProdukPaketDao produkPaketDao; + + @Autowired + private ProdukDao produkDao; + + @Override + public void save(ProdukPaketDto dto) { + Produk paket = produkDao.findByIdProduk(dto.getProduk().getId()); + ProdukPaket produkPaket = ProdukPaket.builder().produk(paket).tipePaket(dto.getTipePaket()).build(); + produkPaket.setStatusEnabled(true); + produkPaket.setKdProfile((short) 0); + produkPaketDao.save(produkPaket); + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/ProdukPaketDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/ProdukPaketDto.java new file mode 100644 index 00000000..23a5328c --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/ProdukPaketDto.java @@ -0,0 +1,30 @@ +package com.jasamedika.medifirst2000.dto; + +import com.jasamedika.medifirst2000.entities.ProdukDto; +import com.jasamedika.medifirst2000.entities.constant.TipePaket; +import com.jasamedika.medifirst2000.helper.Caption; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 14/11/2024 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ProdukPaketDto { + + private Integer id; + + @Caption(value = "Produk") + private ProdukDto produk; + + @Caption("Tipe paket") + private TipePaket tipePaket; + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukPaket.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukPaket.java new file mode 100644 index 00000000..47b3f10e --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukPaket.java @@ -0,0 +1,46 @@ +package com.jasamedika.medifirst2000.entities; + +import com.jasamedika.medifirst2000.base.BaseActive; +import com.jasamedika.medifirst2000.entities.constant.TipePaket; +import com.jasamedika.medifirst2000.helper.Caption; +import lombok.*; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +import static javax.persistence.EnumType.STRING; +import static javax.persistence.GenerationType.SEQUENCE; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 13/11/2024 + */ +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Entity +@Table(name = "produkpaket_m") +public class ProdukPaket extends BaseActive implements Serializable { + + @Id + @GeneratedValue(strategy = SEQUENCE) + @Column(name = "id") + private Integer id; + + @OneToOne + @MapsId + @JoinColumn(name = "id") + @NotNull(message = "Produk tidak boleh kosong") + @Caption(value = "Produk") + private Produk produk; + + @Column(length = 30) + @Enumerated(STRING) + @Caption("Tipe paket") + private TipePaket tipePaket; + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/constant/JenisPaket.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/constant/TipePaket.java similarity index 70% rename from jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/constant/JenisPaket.java rename to jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/constant/TipePaket.java index 0da2a330..3ba20251 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/constant/JenisPaket.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/constant/TipePaket.java @@ -7,7 +7,7 @@ import lombok.Getter; * @version 1.0.0 * @since 13/11/2024 */ -public enum JenisPaket { +public enum TipePaket { PERSALINAN(1, "Persalinan"); @@ -16,7 +16,7 @@ public enum JenisPaket { @Getter private final String name; - JenisPaket(long id, String name) { + TipePaket(long id, String name) { this.id = id; this.name = name; } @@ -30,10 +30,10 @@ public enum JenisPaket { return Long.toString(id); } - public static JenisPaket valueOf(long id) { - for (JenisPaket jenisPaket : values()) { - if (jenisPaket.id == id) { - return jenisPaket; + public static TipePaket valueOf(long id) { + for (TipePaket tipePaket : values()) { + if (tipePaket.id == id) { + return tipePaket; } } throw new IllegalArgumentException("No matching constant for [" + id + "]"); diff --git a/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/controller/ProdukController.java b/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/controller/ProdukController.java new file mode 100644 index 00000000..c7d6d9f6 --- /dev/null +++ b/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/controller/ProdukController.java @@ -0,0 +1,63 @@ +package com.jasamedika.medifirst2000.controller; + +import com.jasamedika.medifirst2000.constants.Constants; +import com.jasamedika.medifirst2000.constants.MessageResource; +import com.jasamedika.medifirst2000.controller.base.LocaleController; +import com.jasamedika.medifirst2000.dto.ProdukPaketDto; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.ProdukPaketService; +import com.jasamedika.medifirst2000.vo.ProdukVO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.orm.jpa.JpaSystemException; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; + +import static com.jasamedika.medifirst2000.core.web.WebConstants.HttpHeaderInfo.LABEL_SUCCESS; +import static com.jasamedika.medifirst2000.util.rest.RestUtil.getJsonHttptatus; +import static com.jasamedika.medifirst2000.util.rest.RestUtil.getJsonResponse; +import static org.springframework.http.HttpStatus.CREATED; +import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; +import static org.springframework.web.bind.annotation.RequestMethod.POST; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 14/11/2024 + */ +@RestController +@RequestMapping("/produk") +public class ProdukController extends LocaleController { + + private static final Logger LOGGER = LoggerFactory.getLogger(ProdukController.class); + + @Autowired + private ProdukPaketService produkPaketService; + + @RequestMapping(value = "/paket", method = POST, produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_JSON_VALUE) + public ResponseEntity simpanDiskonTagihan(HttpServletRequest request, @RequestBody ProdukPaketDto dto) { + try { + produkPaketService.save(dto); + mapHeaderMessage.put(LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); + return getJsonResponse(dto, CREATED, mapHeaderMessage); + } catch (ServiceVOException e) { + LOGGER.error("Got ServiceVOException {} when simpan produk paket", e.getMessage()); + Map error = new HashMap<>(); + error.put("bad_request", e.getMessage()); + return getJsonResponse(null, HttpStatus.BAD_REQUEST, error); + } catch (JpaSystemException jse) { + LOGGER.error("Got JpaSystemException {} when simpan produk paket", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + +} From 79930775719e40217ef8d24a05ae3d343a9c59cd Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 18 Nov 2024 13:33:01 +0700 Subject: [PATCH 5/5] Update service pelayanan pasien Penyesuaian validasi produk paket persalinan saja yang menggunankan kode voucher ibu --- .../medifirst2000/dao/MapProdukPaketDao.java | 2 + .../impl/PelayananPasienServiceImpl.java | 30 +++++++--- .../entities/MapProdukPaket.java | 8 +-- .../medifirst2000/vo/MapProdukPaketVO.java | 3 - .../controller/PelayananController.java | 57 ++++++++++--------- 5 files changed, 53 insertions(+), 47 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapProdukPaketDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapProdukPaketDao.java index b5a5b914..bece140e 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapProdukPaketDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapProdukPaketDao.java @@ -13,9 +13,11 @@ import java.util.Set; * @since 21 Sep 2023 */ public interface MapProdukPaketDao extends JpaRepository { + @Query("select mpaket.paketId from MapProdukPaket mpaket") Set findPaketId(); @Query("select mpaket.produkEntriId from MapProdukPaket mpaket") List findProdukEntriId(); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java index f249b7ba..60d172e5 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java @@ -46,6 +46,7 @@ import static com.jasamedika.medifirst2000.constants.Master.Ruangan.*; import static com.jasamedika.medifirst2000.constants.Master.SubUnitKerja.*; import static com.jasamedika.medifirst2000.constants.Master.TipePegawai.PURNA_WAKTU; import static com.jasamedika.medifirst2000.constants.Master.UnitKerja.KSM_OBGYN; +import static com.jasamedika.medifirst2000.entities.constant.TipePaket.PERSALINAN; import static com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket.PERAWAT; import static com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket.TINDAKAN_UTAMA; @@ -151,6 +152,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel @Autowired private MapJabatanProfesiDao mapJabatanProfesiDao; + @Autowired + private ProdukPaketDao produkPaketDao; + @Override public Map savePelayananPasien(PelayananPasienVO vo) { Map result = new HashMap<>(); @@ -3663,6 +3667,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel private void diskonPaket(String kodeVoucher, List dtoList) { VoucherPaket voucher = getVoucher(kodeVoucher, false); + Optional produkPaket = produkPaketDao.findById(voucher.getPaketId()); List norecPelayanan = dtoList.stream().map(TagihanPendaftaranDto::getNoRec) .collect(Collectors.toList()); List byNorecPelayanan = pelayananPasienDao.findAll(norecPelayanan); @@ -3675,11 +3680,14 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel Integer ibuId = null; if (CommonUtil.isNotNullOrEmpty(ibuNoCm)) ibuId = pasienDao.findIdByNoCm(ibuNoCm); - if ((CommonUtil.isNotNullOrEmpty(ibuId) && !voucher.getPasienId().equals(ibuId)) - || (CommonUtil.isNullOrEmpty(ibuId) && !voucher.getPasienId().equals(pasienId))) - throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); - p.setVoucherPaket(voucher); - pasienDaftarDao.save(p); + if (CommonUtil.isNotNullOrEmpty(produkPaket) && produkPaket.isPresent() + && PERSALINAN.equals(produkPaket.get().getTipePaket())) { + if ((CommonUtil.isNotNullOrEmpty(ibuId) && !voucher.getPasienId().equals(ibuId)) + || (CommonUtil.isNullOrEmpty(ibuId) && !voucher.getPasienId().equals(pasienId))) + throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); + p.setVoucherPaket(voucher); + pasienDaftarDao.save(p); + } }); } { @@ -3945,15 +3953,19 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel if (noRegistrasi.isEmpty()) throw new ServiceVOException("Nomor registrasi harus diisi"); VoucherPaket voucher = getVoucher(kodeVoucher, basicValidation); + Optional produkPaket = produkPaketDao.findById(voucher.getPaketId()); PasienDaftar pendaftaran = pasienDaftarDao.findByNoRegistrasi(noRegistrasi); String ibuNoCm = pendaftaran.getPasien().getReportDisplay(); Integer ibuId = null; if (CommonUtil.isNotNullOrEmpty(ibuNoCm)) ibuId = pasienDao.findIdByNoCm(ibuNoCm); - if ((CommonUtil.isNotNullOrEmpty(ibuId) && !voucher.getPasienId().equals(ibuId)) - || (CommonUtil.isNullOrEmpty(ibuId) && CommonUtil.isNotNullOrEmpty(pendaftaran) - && !pendaftaran.getPasien().getId().equals(voucher.getPasienId()))) - throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); + if (CommonUtil.isNotNullOrEmpty(produkPaket) && produkPaket.isPresent() + && PERSALINAN.equals(produkPaket.get().getTipePaket())) { + if ((CommonUtil.isNotNullOrEmpty(ibuId) && !voucher.getPasienId().equals(ibuId)) + || (CommonUtil.isNullOrEmpty(ibuId) && CommonUtil.isNotNullOrEmpty(pendaftaran) + && !pendaftaran.getPasien().getId().equals(voucher.getPasienId()))) + throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); + } return voucher; } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapProdukPaket.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapProdukPaket.java index 6390a497..11afbe4e 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapProdukPaket.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapProdukPaket.java @@ -1,7 +1,6 @@ package com.jasamedika.medifirst2000.entities; import com.jasamedika.medifirst2000.base.BaseTransaction; -import com.jasamedika.medifirst2000.entities.constant.JenisPaket; import com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket; import com.jasamedika.medifirst2000.helper.Caption; import lombok.Getter; @@ -9,7 +8,6 @@ import lombok.Setter; import javax.persistence.*; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import static javax.persistence.EnumType.STRING; import static javax.persistence.FetchType.LAZY; @@ -25,6 +23,7 @@ import static javax.persistence.FetchType.LAZY; @Table(name = "mapprodukpaket_m", uniqueConstraints = { @UniqueConstraint(columnNames = { "paketfk", "produkPaketfk" }), }) public class MapProdukPaket extends BaseTransaction { + @ManyToOne(fetch = LAZY) @JoinColumn(name = "paketfk") @NotNull(message = "Paket tidak boleh kosong") @@ -54,9 +53,4 @@ public class MapProdukPaket extends BaseTransaction { @Caption(value = "Status Aktif") private Boolean isAktif; - @Column(length = 30) - @Enumerated(STRING) - @Size(max = 30, message = "Jenis paket maksimal {max} karakter") - @Caption(value = "Jenis paket") - private JenisPaket jenisPaket; } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapProdukPaketVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapProdukPaketVO.java index 200bea4f..c1c56efd 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapProdukPaketVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapProdukPaketVO.java @@ -3,7 +3,6 @@ package com.jasamedika.medifirst2000.vo; import com.fasterxml.jackson.annotation.JsonInclude; import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; import com.jasamedika.medifirst2000.entities.ProdukDto; -import com.jasamedika.medifirst2000.entities.constant.JenisPaket; import com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket; import com.jasamedika.medifirst2000.helper.Caption; import lombok.Getter; @@ -42,6 +41,4 @@ public class MapProdukPaketVO extends BaseTransactionVO { @Caption(value = "Status Aktif") private Boolean isAktif; - @Caption(value = "Jenis paket") - private JenisPaket jenisPaket; } diff --git a/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/controller/PelayananController.java b/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/controller/PelayananController.java index fbf152db..f26fe82c 100644 --- a/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/controller/PelayananController.java +++ b/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/controller/PelayananController.java @@ -59,11 +59,11 @@ public class PelayananController extends LocaleController { getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException sve) { - LOGGER.error("Got exception {} when calculate indikator pelayanan", sve.getMessage()); + LOGGER.error("Got ServiceVOException {} when calculate indikator pelayanan", sve.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); } catch (JpaSystemException jse) { - LOGGER.error("Got exception {} when calculate indikator pelayanan", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when calculate indikator pelayanan", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -78,11 +78,11 @@ public class PelayananController extends LocaleController { return RestUtil.getJsonResponse(result, HttpStatus.OK); } catch (ServiceVOException e) { - LOGGER.error("Got exception {} when validate nama produk", e.getMessage()); + LOGGER.error("Got ServiceVOException {} when validate nama produk", 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 validate nama produk", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when validate nama produk", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -95,11 +95,11 @@ public class PelayananController extends LocaleController { Map result = produkService.getMappingPaketToProduk(idMapping); return RestUtil.getJsonResponse(result, HttpStatus.OK); } catch (ServiceVOException e) { - LOGGER.error("Got exception {} when get mapping paket to produk", e.getMessage()); + LOGGER.error("Got ServiceVOException {} when get mapping paket to produk", 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 get mapping paket to produk", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when get mapping paket to produk", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -113,11 +113,11 @@ public class PelayananController extends LocaleController { getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException sve) { - LOGGER.error("Got exception {} when get all data paket to produk", sve.getMessage()); + LOGGER.error("Got ServiceVOException {} when get all data paket to produk", sve.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); } catch (JpaSystemException jse) { - LOGGER.error("Got exception {} when get all data paket to produk", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when get all data paket to produk", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -131,11 +131,11 @@ public class PelayananController extends LocaleController { getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException sve) { - LOGGER.error("Got exception {} when get all master satuan standar distinct on", sve.getMessage()); + LOGGER.error("Got ServiceVOException {} when get all master satuan standar distinct on", sve.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); } catch (JpaSystemException jse) { - LOGGER.error("Got exception {} when get all master satuan standar distinct on", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when get all master satuan standar distinct on", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -152,11 +152,11 @@ public class PelayananController extends LocaleController { getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException e) { - LOGGER.error("Got exception {} when klaim diskon karyawan", e.getMessage()); + LOGGER.error("Got ServiceVOException {} when klaim diskon karyawan", 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 klaim diskon karyawan", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when klaim diskon karyawan", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -172,11 +172,11 @@ public class PelayananController extends LocaleController { getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException e) { - LOGGER.error("Got exception {} when klaim diskon karyawan", e.getMessage()); + LOGGER.error("Got ServiceVOException {} when reset klaim diskon karyawan", 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 klaim diskon karyawan", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when reset klaim diskon karyawan", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -193,11 +193,11 @@ public class PelayananController extends LocaleController { getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException e) { - LOGGER.error("Got exception {} when check existing harga produk kelas", e.getMessage()); + LOGGER.error("Got ServiceVOException {} when check existing harga produk kelas", 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 check existing harga produk kelas", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when check existing harga produk kelas", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -212,11 +212,11 @@ public class PelayananController extends LocaleController { getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException e) { - LOGGER.error("Got exception {} when get daftar tagihan {}", e.getMessage(), noRegistrasi); + LOGGER.error("Got ServiceVOException {} when get daftar tagihan {}", e.getMessage(), noRegistrasi); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, e.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); } catch (JpaSystemException jse) { - LOGGER.error("Got exception {} when get daftar tagihan {}", jse.getMessage(), noRegistrasi); + LOGGER.error("Got JpaSystemException {} when get daftar tagihan {}", jse.getMessage(), noRegistrasi); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -232,12 +232,12 @@ public class PelayananController extends LocaleController { getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(dtoList, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException e) { - LOGGER.error("Got exception {} when simpan diskon tagihan", e.getMessage()); + LOGGER.error("Got ServiceVOException {} when simpan diskon tagihan", e.getMessage()); Map error = new HashMap<>(); error.put("bad_request", e.getMessage()); return RestUtil.getJsonResponse(null, HttpStatus.BAD_REQUEST, error); } catch (JpaSystemException jse) { - LOGGER.error("Got exception {} when simpan diskon tagihan", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when simpan diskon tagihan", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -251,12 +251,12 @@ public class PelayananController extends LocaleController { getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(dto, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException e) { - LOGGER.error("Got exception {} when batal diskon paket", e.getMessage()); + LOGGER.error("Got ServiceVOException {} when batal diskon paket", e.getMessage()); Map error = new HashMap<>(); error.put("bad_request", e.getMessage()); return RestUtil.getJsonResponse(null, HttpStatus.BAD_REQUEST, error); } catch (JpaSystemException jse) { - LOGGER.error("Got exception {} when batal diskon paket", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when batal diskon paket", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -271,12 +271,12 @@ public class PelayananController extends LocaleController { getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(validVoucher, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException e) { - LOGGER.error("Got exception {} when check voucher validity", e.getMessage()); + LOGGER.error("Got ServiceVOException {} when check voucher validity", e.getMessage()); Map error = new HashMap<>(); error.put("bad_request", e.getMessage()); return RestUtil.getJsonResponse(false, HttpStatus.BAD_REQUEST, error); } catch (JpaSystemException jse) { - LOGGER.error("Got exception {} when check voucher validity", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when check voucher validity", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -291,12 +291,12 @@ public class PelayananController extends LocaleController { getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(vos, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException e) { - LOGGER.error("Got exception {} when simpan mapping list produk paket", e.getMessage()); + LOGGER.error("Got ServiceVOException {} when simpan mapping list produk paket", e.getMessage()); Map error = new HashMap<>(); error.put("bad_request", e.getMessage()); return RestUtil.getJsonResponse(null, HttpStatus.BAD_REQUEST, error); } catch (JpaSystemException jse) { - LOGGER.error("Got exception {} when simpan mapping list produk paket", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when simpan mapping list produk paket", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } @@ -311,14 +311,15 @@ public class PelayananController extends LocaleController { getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(vos, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException e) { - LOGGER.error("Got exception {} when simpan mapping entri produk paket", e.getMessage()); + LOGGER.error("Got ServiceVOException {} when simpan mapping entri produk paket", e.getMessage()); Map error = new HashMap<>(); error.put("bad_request", e.getMessage()); return RestUtil.getJsonResponse(null, HttpStatus.BAD_REQUEST, error); } catch (JpaSystemException jse) { - LOGGER.error("Got exception {} when simpan mapping entri produk paket", jse.getMessage()); + LOGGER.error("Got JpaSystemException {} when simpan mapping entri produk paket", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } } + }