diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java index 1ae67823..93c8f7f1 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java @@ -244,6 +244,7 @@ public final class Master { public static final Integer[] JASA_MEDIS = { 21, 22, 35 }; public static final Integer[] JASA_PARAMEDIS = { 25, 26, 27 }; public static final Integer[] JASA_SARANA = { 6, 38 }; + public static final Integer JASA_TERAPIS = 25; public static final Integer SPOG_ASISTEN = 206; public static final Integer SPOG_OPERATOR = 201; public static final Integer TOTAL_TARIF = 210; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java index 6f3b6497..19bbc315 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java @@ -262,11 +262,11 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends JpaRepository> getMapSubunitKerjaMonitoringByKelompokJabatan(@Param("idUnitKerja") Integer idUnitKerja, - @Param("kelompokJabatanId") Integer IdKelompokJabatan); + @Param("kelompokJabatanId") Integer IdKelompokJabatan); @Query("select distinct mapp.pegawaiId from MapPegawaiJabatanToUnitKerja mapp " + "where mapp.statusEnabled is true and mapp.pegawaiId is not null and mapp.unitKerjaPegawaiId = :idUnitKerja") @@ -517,13 +517,14 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends JpaRepository findPegawaiIdByUnitKerjaIdAndJabatanId(@Param("unitKerjaId") List unitKerjaId, @Param("jabatanId") List jabatanId); - @Query("select mj.pegawaiId from MapPegawaiJabatanToUnitKerja mj " + "where mj.statusEnabled is true " - + "and mj.subUnitKerjaPegawaiId in (:subUnitKerjaIdIn)") - Set findPegawaiIdBySubUnitKerjaIn(@Param("subUnitKerjaIdIn") List subUnitKerjaIdIn); - @Query(value = "select exists(select 1 from mappegawaijabatantounitkerja_m mj " + "where mj.statusenabled is true and mj.objectpegawaifk = :pegawaiId " + "and mj.objectjabatanfk in (:listJabatanId))", nativeQuery = true) boolean existsByPegawaiIdAndJabatanIdIn(@Param("pegawaiId") Integer idPegawai, @Param("listJabatanId") List idJabatanList); + + @Query("select mj.pegawaiId from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + + "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + + "and mj.unitKerjaPegawaiId in (:listUnitKerjaId) " + "and pg.jenisPegawaiId = 1") + Set findDokterByUnitKerja(@Param("listUnitKerjaId") List listIdUnitKerja); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/BaseVoService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/BaseVoService.java index ef25bef0..a3da7e05 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/BaseVoService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/BaseVoService.java @@ -1,12 +1,11 @@ package com.jasamedika.medifirst2000.service; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import org.springframework.orm.jpa.JpaSystemException; + import java.util.List; import java.util.Map; -import org.springframework.orm.jpa.JpaSystemException; - -import com.jasamedika.medifirst2000.exception.ServiceVOException; - /** * View Object service * @@ -19,53 +18,39 @@ import com.jasamedika.medifirst2000.exception.ServiceVOException; * @author Roberto */ public interface BaseVoService { - + /** * Add model from VO - * - * @param vo - * @return */ - public V add(V vo) throws JpaSystemException, ServiceVOException; + V add(V vo) throws JpaSystemException, ServiceVOException; /** * Update model from vo - * - * @param vo - * @return */ - public V update(V vo) throws JpaSystemException, ServiceVOException; + V update(V vo) throws JpaSystemException, ServiceVOException; /** * Delete model by primary key - * - * @param key - * @return */ - public Boolean delete(K key) throws JpaSystemException; + Boolean delete(K key) throws JpaSystemException; /** - * Find by Id - * + * Find by ID + * * @param key * primary key - * @return */ - public V findById(K key) throws JpaSystemException; + V findById(K key) throws JpaSystemException; /** * Find all model to vo - * - * @return */ - public List findAll() throws JpaSystemException; + List findAll() throws JpaSystemException; /** * Find all model to vo by page and limit and sort and dir parameter - * - * @return */ - public Map findAllWithPageAndLimitAndSortByAndDirectionParameter( - Integer page, Integer limit, String sort, String dir); + Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, + String sort, String dir); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java index aa4ffa70..50825d60 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java @@ -36,7 +36,7 @@ import static com.jasamedika.medifirst2000.constants.Master.Profesi.TERAPI; */ @Service @Transactional -public class LogbookRemunServiceImpl implements LogbookRemunService { +public class LogbookRemunServiceImpl extends BaseVoServiceImpl implements LogbookRemunService { private static final Logger LOGGER = LoggerFactory.getLogger(LogbookRemunServiceImpl.class); @@ -58,9 +58,6 @@ public class LogbookRemunServiceImpl implements LogbookRemunService { @Autowired private MapPegawaiJabatanToUnitKerjaDao mapPegawaiJabatanToUnitKerjaDao; - @Autowired - private SubUnitKerjaDao subUnitKerjaDao; - @Autowired private MapJabatanProfesiDao mapJabatanProfesiDao; @@ -72,16 +69,15 @@ public class LogbookRemunServiceImpl implements LogbookRemunService { Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); Date tglAwal = DateUtil.startMonth(date); Date tglAkhir = DateUtil.endMonth(date); - List subUnitKerjaIn = subUnitKerjaDao.findAllKelompokKerjaMedisId(); - Set idPegawaiKelompokKerja = mapPegawaiJabatanToUnitKerjaDao - .findPegawaiIdBySubUnitKerjaIn(subUnitKerjaIn); - List terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); - idPegawaiKelompokKerja.addAll(terapisRehabMedik); - if (!idPegawaiKelompokKerja.isEmpty()) { + Set listIdDokter = mapPegawaiJabatanToUnitKerjaDao + .findDokterByUnitKerja(splitDataSettingDatafixed("listIdUnitKerjaKsm")); + List listTerapis = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); + listIdDokter.addAll(listTerapis); + if (!listIdDokter.isEmpty()) { // Delete untuk pembaharuan data - deleteByPeriod(idPegawaiKelompokKerja, tglAwal, tglAkhir); + deleteByPeriod(listIdDokter, tglAwal, tglAkhir); } - saveRekapDetailLogbookDokter(idPegawaiKelompokKerja, date); + saveRekapDetailLogbookDokter(listIdDokter, date); } public void deleteByPeriod(Set idPegawai, Date tglAwal, Date tglAkhir) { @@ -198,7 +194,7 @@ public class LogbookRemunServiceImpl implements LogbookRemunService { LogbookDokter logbookDokter = new LogbookDokter(); logbookDokter.setKdProfile((short) 0); logbookDokter.setStatusEnabled(true); - logbookDokter.setJenisLogbook("NON_JKN_DALAM_JAM_KERJA"); + logbookDokter.setJenisLogbook("DALAM_JAM_KERJA"); logbookDokter.setJenisRuangan(fee.get("jenisRuangan").toString().toUpperCase()); logbookDokter.setKelompokPasien( getKelompokPasien(Integer.parseInt(fee.get("idKelompokPasien").toString()))); @@ -262,7 +258,7 @@ public class LogbookRemunServiceImpl implements LogbookRemunService { LogbookDokter logbookDokter = new LogbookDokter(); logbookDokter.setKdProfile((short) 0); logbookDokter.setStatusEnabled(true); - logbookDokter.setJenisLogbook("NON_JKN_LUAR_JAM_KERJA"); + logbookDokter.setJenisLogbook("LUAR_JAM_KERJA"); logbookDokter.setJenisRuangan(fee.get("jenisRuangan").toString().toUpperCase()); logbookDokter.setKelompokPasien( getKelompokPasien(Integer.parseInt(fee.get("idKelompokPasien").toString()))); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java index 72de145f..7a162ad8 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java @@ -1604,6 +1604,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera private List> transformPelayananPaket(Integer idPegawai, List> listData) { List drKsmObgyn = pegawaiDao.getDokterByKsm(KSM_OBGYN); + List terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); SimpleDateFormat month = new SimpleDateFormat("MMM-yyyy", new Locale("in", "ID")); List paketList = mapProdukPaketDao.findAll(); List allProdukEntriId = paketList.stream().map(MapProdukPaket::getProdukEntriId) @@ -1774,6 +1775,17 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera : byDetailTarifNonKelas.get().getHargaSatuan())); } } + } else if (terapisRehabMedik.contains(idPegawai) + && !Arrays.asList(GRUP_RAWAT_INAP).contains(Integer.parseInt(d.get("idDepartemen").toString())) + && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + Optional byDetailTarifNonKelas = tarifDetailNonKelas.stream() + .filter(dt -> dt.getProdukId().equals(d.get("idProduk"))) + .filter(dt -> dt.getKelasId().equals(d.get("idKelas"))) + .filter(dt -> dt.getKomponenHargaId().equals(JASA_TERAPIS)).findFirst(); + byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa", + CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1()) + ? byDetailTarifNonKelas.get().getHargaNetto1() + : byDetailTarifNonKelas.get().getHargaSatuan())); } else if (!Arrays.asList(GRUP_RAWAT_INAP).contains(Integer.parseInt(d.get("idDepartemen").toString())) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { Optional byDetailTarifNonKelas = tarifDetailNonKelas.stream()