diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java index 9f082d8c..5e7dcf30 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java @@ -127,7 +127,7 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository :karcisId " + "order by su.name, pr.id") public List> getDataLayananJamKerja(@Param("tglAwal") Date tglAwal, - @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("tglAkhir") Date tglAkhir, + @Param("tglAkhir") Date tglAkhir, @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("listNonjadwalId") List listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai, @Param("listDepartemenId") List listIdDepartemen, @Param("listKategoriRemun") List listKategoriRemun, @Param("listKsmId") List listIdKsm, @@ -160,7 +160,7 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository :karcisId " + "order by pg.namaLengkap, pr.id") public List> getDataLayananLuarJamKerja(@Param("tglAwal") Date tglAwal, - @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("tglAkhir") Date tglAkhir, + @Param("tglAkhir") Date tglAkhir, @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("listNonjadwalId") List listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai, @Param("listDepartemenId") List listIdDepartemen, @Param("listKsmId") List listIdKsm, @Param("listNontindakanId") List listIdNontindakan, @Param("listBpjsId") List listIdBpjs, diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukNakesDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukNakesDao.java index e983c413..f32c92e3 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukNakesDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukNakesDao.java @@ -20,4 +20,65 @@ import com.jasamedika.medifirst2000.entities.ProdukNakes; @Repository("produkNakesDao") public interface ProdukNakesDao extends PagingAndSortingRepository { + String allProduk = "select new Map(prn.id as produkId,prn.namaProduk as namaProduk," + "prn.kdProduk as kdProduk," + + "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' " + + "when prn.kdProduk = 2 then 'Pelayanan Nonpasien' end) as kodeProduk," + + "prn.profesiId as profesiId,prf.namaProfesi as namaProfesi) " + "from ProdukNakes prn " + + "left join prn.profesi prf " + "with (prf.statusEnabled is true) " + "where prn.statusEnabled is true"; + + String namaProduk = " and lower(prn.namaProduk) like %:namaProduk%"; + + String kdProduk = " and prn.kdProduk = :kdProduk"; + + String idProfesi = " and prn.profesiId = :profesiId"; + + String sortAllProduk = " order by prf.namaProfesi, prn.namaProduk, prn.kdProduk asc"; + + String listIdProduk = " and prn.id in (:listProdukId)"; + + @Query(allProduk + sortAllProduk) + public List> findProdukNakes(); + + @Query(allProduk + namaProduk + sortAllProduk) + public List> findProdukNakesByProduk(@Param("namaProduk") String namaProduk); + + @Query(allProduk + kdProduk + sortAllProduk) + public List> findProdukNakesByKdProduk(@Param("kdProduk") Short kdProduk); + + @Query(allProduk + idProfesi + sortAllProduk) + public List> findProdukNakesByProfesi(@Param("profesiId") Integer idProfesi); + + @Query(allProduk + idProfesi + namaProduk + sortAllProduk) + public List> findProdukNakesByProfesi(@Param("profesiId") Integer idProfesi, + @Param("namaProduk") String namaProduk); + + @Query(allProduk + idProfesi + kdProduk + sortAllProduk) + public List> findProdukNakesByProfesi(@Param("profesiId") Integer idProfesi, + @Param("kdProduk") Short kdProduk); + + @Query(allProduk + namaProduk + kdProduk + sortAllProduk) + public List> findProdukNakesByProduk(@Param("namaProduk") String namaProduk, + @Param("kdProduk") Short kdProduk); + + @Query(allProduk + namaProduk + idProfesi + kdProduk + sortAllProduk) + public List> findProdukNakesByProfesi(@Param("namaProduk") String namaProduk, + @Param("profesiId") Integer idProfesi, @Param("kdProduk") Short kdProduk); + + @Query(allProduk + listIdProduk + sortAllProduk) + public List> findProdukNakes(@Param("listProdukId") List listIdProduk); + + String dupCheck = "select prn.id from ProdukNakes prn " + "where prn.statusEnabled is true " + + "and lower(regexp_replace(prn.namaProduk,:patternText,'','g')) = :namaProduk " + + "and prn.profesiId = :profesiId"; + + String notIdProduk = " and prn.id <> :produkId"; + + @Query(dupCheck) + public List findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk, + @Param("profesiId") Integer idProfesi); + + @Query(dupCheck + notIdProduk) + public List findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk, + @Param("profesiId") Integer idProfesi, @Param("produkId") Integer idProduk); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukPerawatDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukPerawatDao.java new file mode 100644 index 00000000..4c2816d7 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukPerawatDao.java @@ -0,0 +1,63 @@ +package com.jasamedika.medifirst2000.dao; + +import java.util.List; +import java.util.Map; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.jasamedika.medifirst2000.entities.ProdukPerawat; + +/** + * @author ITI-14 + * @since Oct 8, 2021 + */ +@Repository("produkPerawat") +public interface ProdukPerawatDao extends PagingAndSortingRepository { + + String allProduk = "select new Map(prp.id as id,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif," + + "(case when prp.klasifikasi = 1 then 'Asuhan' " + "when prp.klasifikasi = 2 then 'Tindakan' " + + "when prp.klasifikasi = 3 then 'Laporan' end) as klasifikasi) " + "from ProdukPerawat prp " + + "where prp.statusEnabled is true"; + + String namaProduk = " and lower(prp.namaProduk) like %:namaProduk%"; + + String kdKlasif = " and prp.klasifikasi = :kdKlasif"; + + String listIdProduk = " and prp.id in (:listProdukId)"; + + String sortAllProduk = " order by prp.klasifikasi, prp.namaProduk asc"; + + @Query(allProduk + sortAllProduk) + public List> findAllActive(); + + @Query(allProduk + namaProduk + sortAllProduk) + public List> findAllActive(@Param("namaProduk") String namaProduk); + + @Query(allProduk + kdKlasif + sortAllProduk) + public List> findAllActive(@Param("kdKlasif") Short kdKlasif); + + @Query(allProduk + namaProduk + kdKlasif + sortAllProduk) + public List> findAllActive(@Param("namaProduk") String namaProduk, + @Param("kdKlasif") Short kdKlasif); + + @Query(allProduk + listIdProduk + sortAllProduk) + public List> findProdukPerawat(@Param("listProdukId") List listIdProduk); + + String dupCheck = "select prp.id from ProdukPerawat prp " + "where prp.statusEnabled is true " + + "and lower(regexp_replace(prp.namaProduk,:patternText,'','g')) = :namaProduk " + + "and prp.klasifikasi = :kdKlasif"; + + String notIdProduk = " and prp.id <> :produkId"; + + @Query(dupCheck) + public List findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk, + @Param("kdKlasif") Short kdKlasif); + + @Query(dupCheck + notIdProduk) + public List findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk, + @Param("kdKlasif") Short kdKlasif, @Param("produkId") Integer idProduk); + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProfesiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProfesiDao.java new file mode 100644 index 00000000..5f93396f --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProfesiDao.java @@ -0,0 +1,21 @@ +package com.jasamedika.medifirst2000.dao; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.stereotype.Repository; + +import com.jasamedika.medifirst2000.entities.Profesi; + +/** + * @author ITI-14 + * @since Oct 8, 2021 + */ +@Repository("profesiDao") +public interface ProfesiDao extends PagingAndSortingRepository { + + @Query("select prf from Profesi prf where prf.statusEnabled is true") + public List findAllActive(); + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukNakesService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukNakesService.java index 0a132bcb..e6ee2032 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukNakesService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukNakesService.java @@ -3,6 +3,11 @@ */ package com.jasamedika.medifirst2000.service; +import java.util.List; +import java.util.Map; + +import org.springframework.orm.jpa.JpaSystemException; + import com.jasamedika.medifirst2000.entities.ProdukNakes; import com.jasamedika.medifirst2000.vo.ProdukNakesVO; @@ -12,4 +17,10 @@ import com.jasamedika.medifirst2000.vo.ProdukNakesVO; */ public interface ProdukNakesService extends BaseVoService { + public List> findProdukNakes(String namaProduk, Short kdProduk, Integer idProfesi) + throws JpaSystemException; + + public List> findDupProdukNakes(String namaProduk, Integer idProfesi, Integer idProduk) + throws JpaSystemException; + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukPerawatService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukPerawatService.java new file mode 100644 index 00000000..bfae86cc --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukPerawatService.java @@ -0,0 +1,22 @@ +package com.jasamedika.medifirst2000.service; + +import java.util.List; +import java.util.Map; + +import org.springframework.orm.jpa.JpaSystemException; + +import com.jasamedika.medifirst2000.entities.ProdukPerawat; +import com.jasamedika.medifirst2000.vo.ProdukPerawatVO; + +/** + * @author ITI-14 + * @since Oct 8, 2021 + */ +public interface ProdukPerawatService extends BaseVoService { + + public List> findAllActive(String namaProduk, Short kdKlasif) throws JpaSystemException; + + public List> findDupProdukPerawat(String namaProduk, Short kdKlasif, Integer idProduk) + throws JpaSystemException; + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProfesiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProfesiService.java new file mode 100644 index 00000000..740badd9 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProfesiService.java @@ -0,0 +1,18 @@ +package com.jasamedika.medifirst2000.service; + +import java.util.List; + +import org.springframework.orm.jpa.JpaSystemException; + +import com.jasamedika.medifirst2000.entities.Profesi; +import com.jasamedika.medifirst2000.vo.ProfesiVO; + +/** + * @author ITI-14 + * @since Oct 8, 2021 + */ +public interface ProfesiService extends BaseVoService { + + public List findAllActive() throws JpaSystemException; + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukNakesServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukNakesServiceImpl.java index acf69675..fe59b3d3 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukNakesServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukNakesServiceImpl.java @@ -1,6 +1,3 @@ -/** - * - */ package com.jasamedika.medifirst2000.service.impl; import java.util.ArrayList; @@ -13,6 +10,7 @@ import org.springframework.stereotype.Service; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.ProdukNakesDao; +import com.jasamedika.medifirst2000.dao.SettingDataFixedDao; import com.jasamedika.medifirst2000.entities.ProdukNakes; import com.jasamedika.medifirst2000.entities.Profesi; import com.jasamedika.medifirst2000.exception.ServiceVOException; @@ -37,6 +35,9 @@ public class ProdukNakesServiceImpl extends BaseVoServiceImpl implements ProdukN @Autowired private ProdukNakesDao produkNakesDao; + @Autowired + private SettingDataFixedDao settingDataFixedDao; + @Override public ProdukNakesVO add(ProdukNakesVO vo) throws JpaSystemException, ServiceVOException { ProdukNakes produkNakes = produkNakesConverter.transferVOToModel(vo, new ProdukNakes()); @@ -111,4 +112,58 @@ public class ProdukNakesServiceImpl extends BaseVoServiceImpl implements ProdukN return null; } + @Override + public List> findProdukNakes(String namaProduk, Short kdProduk, Integer idProfesi) + throws JpaSystemException { + List> result = new ArrayList<>(); + + if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNullOrEmpty(kdProduk) + && CommonUtil.isNullOrEmpty(idProfesi)) { + result = produkNakesDao.findProdukNakesByProduk(namaProduk.toLowerCase()); + } else if (CommonUtil.isNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(kdProduk) + && CommonUtil.isNullOrEmpty(idProfesi)) { + result = produkNakesDao.findProdukNakesByKdProduk(kdProduk); + } else if (CommonUtil.isNullOrEmpty(namaProduk) && CommonUtil.isNullOrEmpty(kdProduk) + && CommonUtil.isNotNullOrEmpty(idProfesi)) { + result = produkNakesDao.findProdukNakesByProfesi(idProfesi); + } else if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNullOrEmpty(kdProduk) + && CommonUtil.isNotNullOrEmpty(idProfesi)) { + result = produkNakesDao.findProdukNakesByProfesi(idProfesi, namaProduk.toLowerCase()); + } else if (CommonUtil.isNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(kdProduk) + && CommonUtil.isNotNullOrEmpty(idProfesi)) { + result = produkNakesDao.findProdukNakesByProfesi(idProfesi, kdProduk); + } else if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(kdProduk) + && CommonUtil.isNullOrEmpty(idProfesi)) { + result = produkNakesDao.findProdukNakesByProduk(namaProduk.toLowerCase(), kdProduk); + } else if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(kdProduk) + && CommonUtil.isNotNullOrEmpty(idProfesi)) { + result = produkNakesDao.findProdukNakesByProfesi(namaProduk.toLowerCase(), idProfesi, kdProduk); + } else { + result = produkNakesDao.findProdukNakes(); + } + + return result; + } + + @Override + public List> findDupProdukNakes(String namaProduk, Integer idProfesi, Integer idProduk) + throws JpaSystemException { + List> result = new ArrayList<>(); + List listId = new ArrayList<>(); + + String patternText = settingDataFixedDao.getSettingDataFixed("patternTextDuplicate"); + String replacedNamaProduk = namaProduk.replaceAll(patternText, "").toLowerCase(); + if (CommonUtil.isNotNullOrEmpty(idProduk)) { + listId = produkNakesDao.findDupProduk(patternText, replacedNamaProduk, idProfesi, idProduk); + } else { + listId = produkNakesDao.findDupProduk(patternText, replacedNamaProduk, idProfesi); + } + + if (CommonUtil.isNotNullOrEmpty(listId)) { + result = produkNakesDao.findProdukNakes(listId); + } + + return result; + } + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukPerawatServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukPerawatServiceImpl.java new file mode 100644 index 00000000..b5f87e2e --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukPerawatServiceImpl.java @@ -0,0 +1,142 @@ +package com.jasamedika.medifirst2000.service.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.orm.jpa.JpaSystemException; +import org.springframework.stereotype.Service; + +import com.jasamedika.medifirst2000.converter.BaseConverterImpl; +import com.jasamedika.medifirst2000.dao.ProdukPerawatDao; +import com.jasamedika.medifirst2000.dao.SettingDataFixedDao; +import com.jasamedika.medifirst2000.entities.ProdukPerawat; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.ProdukPerawatService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.ProdukPerawatVO; + +/** + * @author ITI-14 + * @since Oct 8, 2021 + */ +@Service("produkPerawatService") +public class ProdukPerawatServiceImpl extends BaseVoServiceImpl implements ProdukPerawatService { + + @Autowired + private BaseConverterImpl produkPerawatConverter; + + @Autowired + private ProdukPerawatDao produkPerawatDao; + + @Autowired + private SettingDataFixedDao settingDataFixedDao; + + @Override + public ProdukPerawatVO add(ProdukPerawatVO vo) throws JpaSystemException, ServiceVOException { + ProdukPerawat produkPerawat = produkPerawatConverter.transferVOToModel(vo, new ProdukPerawat()); + + ProdukPerawat resultModel = produkPerawatDao.save(produkPerawat); + + ProdukPerawatVO resultVO = new ProdukPerawatVO(); + resultVO = produkPerawatConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public ProdukPerawatVO update(ProdukPerawatVO vo) throws JpaSystemException, ServiceVOException { + ProdukPerawat produkPerawatLama = produkPerawatDao.findOne(vo.getId()); + + ProdukPerawat produkPerawatBaru = produkPerawatConverter.transferVOToModel(vo, produkPerawatLama); + + ProdukPerawat resultModel = produkPerawatDao.save(produkPerawatBaru); + + ProdukPerawatVO resultVO = new ProdukPerawatVO(); + resultVO = produkPerawatConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public Boolean delete(Integer key) throws JpaSystemException { + produkPerawatDao.delete(key); + + return true; + } + + @Override + public ProdukPerawatVO findById(Integer key) throws JpaSystemException { + ProdukPerawatVO result = new ProdukPerawatVO(); + + ProdukPerawat produkPerawat = produkPerawatDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(produkPerawat)) { + result = produkPerawatConverter.transferModelToVO(produkPerawat, result); + } + + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = produkPerawatDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (ProdukPerawat model : models) { + ProdukPerawatVO vo = new ProdukPerawatVO(); + vo = produkPerawatConverter.transferModelToVO(model, vo); + result.add(vo); + } + } + + return result; + } + + @Override + public Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, + String sort, String dir) { + + return null; + } + + @Override + public List> findAllActive(String namaProduk, Short kdKlasif) throws JpaSystemException { + List> result = new ArrayList<>(); + + if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNullOrEmpty(kdKlasif)) { + result = produkPerawatDao.findAllActive(namaProduk.toLowerCase()); + } else if (CommonUtil.isNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(kdKlasif)) { + result = produkPerawatDao.findAllActive(kdKlasif); + } else if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(kdKlasif)) { + result = produkPerawatDao.findAllActive(namaProduk.toLowerCase(), kdKlasif); + } else { + result = produkPerawatDao.findAllActive(); + } + + return result; + } + + @Override + public List> findDupProdukPerawat(String namaProduk, Short kdKlasif, Integer idProduk) + throws JpaSystemException { + List> result = new ArrayList<>(); + List listId = new ArrayList<>(); + + String patternText = settingDataFixedDao.getSettingDataFixed("patternTextDuplicate"); + String replacedNamaProduk = namaProduk.replaceAll(patternText, "").toLowerCase(); + if (CommonUtil.isNotNullOrEmpty(idProduk)) { + listId = produkPerawatDao.findDupProduk(patternText, replacedNamaProduk, kdKlasif, idProduk); + } else { + listId = produkPerawatDao.findDupProduk(patternText, replacedNamaProduk, kdKlasif); + } + + if (CommonUtil.isNotNullOrEmpty(listId)) { + result = produkPerawatDao.findProdukPerawat(listId); + } + + return result; + } + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProfesiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProfesiServiceImpl.java new file mode 100644 index 00000000..f9f12131 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProfesiServiceImpl.java @@ -0,0 +1,116 @@ +package com.jasamedika.medifirst2000.service.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.orm.jpa.JpaSystemException; +import org.springframework.stereotype.Service; + +import com.jasamedika.medifirst2000.converter.BaseConverterImpl; +import com.jasamedika.medifirst2000.dao.ProfesiDao; +import com.jasamedika.medifirst2000.entities.Profesi; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.ProfesiService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.ProfesiVO; + +/** + * @author ITI-14 + * @since Oct 8, 2021 + */ +@Service("profesiService") +public class ProfesiServiceImpl extends BaseVoServiceImpl implements ProfesiService { + + @Autowired + private BaseConverterImpl profesiConverter; + + @Autowired + private ProfesiDao profesiDao; + + @Override + public ProfesiVO add(ProfesiVO vo) throws JpaSystemException, ServiceVOException { + Profesi profesi = profesiConverter.transferVOToModel(vo, new Profesi()); + + Profesi resultModel = profesiDao.save(profesi); + + ProfesiVO resultVO = new ProfesiVO(); + resultVO = profesiConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public ProfesiVO update(ProfesiVO vo) throws JpaSystemException, ServiceVOException { + Profesi profesiLama = profesiDao.findOne(vo.getId()); + + Profesi profesiBaru = profesiConverter.transferVOToModel(vo, profesiLama); + + Profesi resultModel = profesiDao.save(profesiBaru); + + ProfesiVO resultVO = new ProfesiVO(); + resultVO = profesiConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public Boolean delete(Integer key) throws JpaSystemException { + profesiDao.delete(key); + + return true; + } + + @Override + public ProfesiVO findById(Integer key) throws JpaSystemException { + ProfesiVO result = new ProfesiVO(); + + Profesi profesi = profesiDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(profesi)) { + result = profesiConverter.transferModelToVO(profesi, result); + } + + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = profesiDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (Profesi model : models) { + ProfesiVO vo = new ProfesiVO(); + vo = profesiConverter.transferModelToVO(model, vo); + result.add(vo); + } + } + + return result; + } + + @Override + public Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, + String sort, String dir) { + + return null; + } + + @Override + public List findAllActive() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = profesiDao.findAllActive(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (Profesi model : models) { + ProfesiVO vo = new ProfesiVO(); + vo = profesiConverter.transferModelToVO(model, vo); + result.add(vo); + } + } + + return result; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukNakes.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukNakes.java index 9a306887..526d7a7c 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukNakes.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukNakes.java @@ -23,6 +23,11 @@ public class ProdukNakes extends BaseActive { @Caption(value = "Nama Produk") private String namaProduk; + @NotNull(message = "Kode Produk tidak boleh kosong") + @Column(name = "kdproduk", nullable = false) + @Caption(value = "Kode Produk") + private Short kdProduk; + @ManyToOne @NotNull(message = "Profesi tidak boleh kosong") @JoinColumn(name = "objectprofesifk") @@ -46,6 +51,14 @@ public class ProdukNakes extends BaseActive { this.namaProduk = namaProduk; } + public Short getKdProduk() { + return kdProduk; + } + + public void setKdProduk(Short kdProduk) { + this.kdProduk = kdProduk; + } + public Profesi getProfesi() { return profesi; } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProdukNakesVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProdukNakesVO.java index 9cdd50a6..54a41d38 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProdukNakesVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProdukNakesVO.java @@ -8,6 +8,9 @@ public class ProdukNakesVO extends BaseActiveVO { @Caption(value = "Nama Produk") private String namaProduk; + @Caption(value = "Kode Produk") + private Short kdProduk; + @Caption(value = "Profesi") private ProfesiVO profesi; @@ -23,6 +26,14 @@ public class ProdukNakesVO extends BaseActiveVO { this.namaProduk = namaProduk; } + public Short getKdProduk() { + return kdProduk; + } + + public void setKdProduk(Short kdProduk) { + this.kdProduk = kdProduk; + } + public ProfesiVO getProfesi() { return profesi; } 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 7dd32537..42fc4463 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 @@ -39,6 +39,8 @@ import com.jasamedika.medifirst2000.service.MapPegawaiJabatanToUnitKerjaService; import com.jasamedika.medifirst2000.service.PelayananPasienNakesService; import com.jasamedika.medifirst2000.service.PelayananPasienPerawatService; import com.jasamedika.medifirst2000.service.ProdukNakesService; +import com.jasamedika.medifirst2000.service.ProdukPerawatService; +import com.jasamedika.medifirst2000.service.ProfesiService; import com.jasamedika.medifirst2000.service.RemunerasiOperasionalService; import com.jasamedika.medifirst2000.service.SkoringTindakanMedisService; import com.jasamedika.medifirst2000.service.SkoringTindakanNakesService; @@ -56,6 +58,8 @@ import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO; import com.jasamedika.medifirst2000.vo.PelayananPasienNakesVO; import com.jasamedika.medifirst2000.vo.PelayananPasienPerawatVO; import com.jasamedika.medifirst2000.vo.ProdukNakesVO; +import com.jasamedika.medifirst2000.vo.ProdukPerawatVO; +import com.jasamedika.medifirst2000.vo.ProfesiVO; import com.jasamedika.medifirst2000.vo.RemunerasiOperasionalVO; import com.jasamedika.medifirst2000.vo.SettingPirSdmVO; import com.jasamedika.medifirst2000.vo.SkoringTindakanMedisVO; @@ -113,6 +117,12 @@ public class IkiDanRemunerasiController extends LocaleController saveProdukPerawat(HttpServletRequest request, + @Valid @RequestBody ProdukPerawatVO vo) { + try { + ProdukPerawatVO result = new ProdukPerawatVO(); + if (CommonUtil.isNotNullOrEmpty(vo.getId())) { + result = produkPerawatService.update(vo); + } else { + result = produkPerawatService.add(vo); + } + if (CommonUtil.isNotNullOrEmpty(result)) { + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.CREATED, mapHeaderMessage); + } else { + return RestUtil.getJsonHttptatus(HttpStatus.NOT_ACCEPTABLE); + } + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when add/update master produk perawat", 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 add/update master produk perawat", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-produk-perawat", method = RequestMethod.GET) + public ResponseEntity>> getProdukPerawat(HttpServletRequest request, + @RequestParam(value = "namaProduk", required = false) String namaProduk, + @RequestParam(value = "kdKlasif", required = false) Short kdKlasif) { + try { + List> result = produkPerawatService.findAllActive(namaProduk, kdKlasif); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when get master produk perawat", 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 master produk perawat", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-duplicate-produk-perawat", method = RequestMethod.GET) + public ResponseEntity>> getDuplikatProdukPerawat(HttpServletRequest request, + @RequestParam(value = "namaProduk", required = true) String namaProduk, + @RequestParam(value = "kdKlasif", required = true) Short kdKlasif, + @RequestParam(value = "produkId", required = false) Integer idProduk) { + try { + List> result = produkPerawatService.findDupProdukPerawat(namaProduk, kdKlasif, + idProduk); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when get duplikat produk perawat", 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 duplikat produk perawat", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/save-profesi-nakes", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity saveProfesiNakes(HttpServletRequest request, @Valid @RequestBody ProfesiVO vo) { + try { + ProfesiVO result = new ProfesiVO(); + if (CommonUtil.isNotNullOrEmpty(vo.getId())) { + result = profesiService.update(vo); + } else { + result = profesiService.add(vo); + } + if (CommonUtil.isNotNullOrEmpty(result)) { + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.CREATED, mapHeaderMessage); + } else { + return RestUtil.getJsonHttptatus(HttpStatus.NOT_ACCEPTABLE); + } + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when add/update master profesi nakes lain", 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 add/update master profesi nakes lain", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-profesi-nakes", method = RequestMethod.GET) + public ResponseEntity> getProfesiNakes(HttpServletRequest request) { + try { + List result = profesiService.findAllActive(); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when get master profesi nakes lain", 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 master profesi nakes lain", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + @RequestMapping(value = "/save-produk-nakes", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity saveProdukNakes(HttpServletRequest request, @Valid @RequestBody ProdukNakesVO vo) { @@ -1620,11 +1745,53 @@ public class IkiDanRemunerasiController extends LocaleController>> getProdukNakes(HttpServletRequest request, + @RequestParam(value = "namaProduk", required = false) String namaProduk, + @RequestParam(value = "kdProduk", required = false) Short kdProduk, + @RequestParam(value = "profesiId", required = false) Integer idProfesi) { + try { + List> result = produkNakesService.findProdukNakes(namaProduk, kdProduk, idProfesi); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when get master produk nakes lain", 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 master produk nakes lain", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-duplicate-produk-nakes", method = RequestMethod.GET) + public ResponseEntity>> getDuplikatProdukNakes(HttpServletRequest request, + @RequestParam(value = "namaProduk", required = true) String namaProduk, + @RequestParam(value = "profesiId", required = true) Integer idProfesi, + @RequestParam(value = "produkId", required = false) Integer idProduk) { + try { + List> result = produkNakesService.findDupProdukNakes(namaProduk, idProfesi, idProduk); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when get duplikat produk nakes lain", 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 duplikat produk nakes lain", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); }