- pembuatan service simpan, update, dan delete master indikator kinerja

- pembuatan service simpan, update, dan delete logbook kinerja dan detail
- perbaikan service update klaim diskon karyawan karena jumlah dan diskon awal jasa farmasi
This commit is contained in:
salmanoe 2021-02-21 20:13:38 +07:00
parent 9576117729
commit 21fdcf2b2f
19 changed files with 602 additions and 136 deletions

View File

@ -153,39 +153,27 @@ public interface PelayananPasienDao extends PagingAndSortingRepository<Pelayanan
+ "and djp.jenisProdukId not in (:listNontindakanId) " + "order by dp.id, ru.id")
List<Map<String, Object>> findDataLayananAllRuangan(@Param("tglAwal") Date tglAwal,
@Param("tglAkhir") Date tglAkhir, @Param("listNontindakanId") List<Integer> listNontindakanId);
@Query("select new Map("
+ "pg.id as idPegawai, "
+ "pg.namaLengkap as namaPegawai, "
+ "pg.typePegawaiId as tipePegawai, "
+ "kp.id as idKelPasien, "
+ "pr.id as idLayanan, "
+ "pr.namaProduk as namaLayanan, "
+ "ru.departemenId as idDepartemen, "
+ "djp.jenisProdukId as idJenisProduk, "
+ "ppd.hargaJual as hargaJual, "
+ "coalesce(ppd.hargaDiscount,0) as hargaDiskon, "
+ "pp.jumlah as jumlahLayanan"
+ ") from PelayananPasienPetugas ppp, PelayananPasienDetail ppd "
+ "left join ppp.pelayananPasien pp "
+ "left join ppp.kdpegawai pg "
+ "left join ppd.produk pr "
+ "left join pp.pasienDaftar apd "
+ "left join apd.pasienDaftar pd "
+ "left join apd.ruangan ru "
+ "left join apd.kelas kls "
+ "left join pd.pasien ps "
+ "left join pd.kelompokPasien kp "
+ "left join pr.detailJenisProduk djp "
+ "where ppd.pelayananPasienId = pp.noRec "
+ "and ppp.pelayananPasienId = ppd.pelayananPasienId "
@Query("select new Map(" + "pg.id as idPegawai, " + "pg.namaLengkap as namaPegawai, "
+ "pg.typePegawaiId as tipePegawai, " + "kp.id as idKelPasien, " + "pr.id as idLayanan, "
+ "pr.namaProduk as namaLayanan, " + "ru.departemenId as idDepartemen, "
+ "djp.jenisProdukId as idJenisProduk, " + "ppd.hargaJual as hargaJual, "
+ "coalesce(ppd.hargaDiscount,0) as hargaDiskon, " + "pp.jumlah as jumlahLayanan"
+ ") from PelayananPasienPetugas ppp, PelayananPasienDetail ppd " + "left join ppp.pelayananPasien pp "
+ "left join ppp.kdpegawai pg " + "left join ppd.produk pr " + "left join pp.pasienDaftar apd "
+ "left join apd.pasienDaftar pd " + "left join apd.ruangan ru " + "left join apd.kelas kls "
+ "left join pd.pasien ps " + "left join pd.kelompokPasien kp " + "left join pr.detailJenisProduk djp "
+ "where ppd.pelayananPasienId = pp.noRec " + "and ppp.pelayananPasienId = ppd.pelayananPasienId "
+ "and ((ppp.ObjectJenisPetugasPeId = 4 and ppd.komponenHargaId = 35) "
+ "or (ppp.ObjectJenisPetugasPeId = 6 and ppd.komponenHargaId = 21) "
+ "or (ppp.ObjectJenisPetugasPeId = 13 and ppd.komponenHargaId = 22)) "
+ "and pg.jenisPegawaiId = :idJenisPegawai "
+ "and pg.typePegawaiId is not null "
+ "and pp.tglPelayanan between :tglAwal and :tglAkhir "
+ "order by pg.namaLengkap")
List<Map<String, Object>> getDataPendapatan(@Param("idJenisPegawai") int idJenisPegawai, @Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir);
+ "and pg.jenisPegawaiId = :idJenisPegawai " + "and pg.typePegawaiId is not null "
+ "and pp.tglPelayanan between :tglAwal and :tglAkhir " + "order by pg.namaLengkap")
List<Map<String, Object>> getDataPendapatan(@Param("idJenisPegawai") int idJenisPegawai,
@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir);
@Query("select pp from PelayananPasien pp " + "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd "
+ "where pp.strukFk is null " + "and pd.noRegistrasi = :noRegistrasi " + "order by pp.produkId")
Iterable<PelayananPasien> findLayananTagihan(@Param("noRegistrasi") String noRegistrasi);
}

View File

@ -1,7 +1,6 @@
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;
@ -21,13 +20,4 @@ public interface PelayananPasienDetailDao extends PagingAndSortingRepository<Pel
@Query("select model from PelayananPasienDetail model left join model.pelayananPasien a where a.noRec=:noRec")
List<PelayananPasienDetail> getPelayananPasienDetail(@Param("noRec") String noRec);
@Query("select new Map(" + "coalesce(ppd.hargaDiscount,0) as hargaDiscount,"
+ "coalesce(ppd.hargaJual,0) as hargaJual," + "coalesce(ppd.hargaNetto,0) as hargaNetto,"
+ "coalesce(ppd.hargaSatuan,0) as hargaSatuan," + "coalesce(ppd.jasa,0) as jasa,"
+ "coalesce(ppd.jumlah,0) as jumlah," + "ppd.komponenHargaId as idKomponenHarga,"
+ "pd.dokterPenanggungJawabId as dpjpUtama," + "apd.pegawaiId as dpjp," + "pp.produkId as idLayanan"
+ ") from PelayananPasienDetail ppd " + "inner join ppd.pelayananPasien pp "
+ "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + "where pp.strukFk is null "
+ "and pd.noRegistrasi = :noRegistrasi " + "order by ppd.komponenHargaId")
List<Map<String, Object>> findDetailTagihan(@Param("noRegistrasi") String noRegistrasi);
}

View File

@ -0,0 +1,8 @@
package com.jasamedika.medifirst2000.service;
import com.jasamedika.medifirst2000.entities.IndikatorKinerja;
import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO;
public interface IndikatorKinerjaService extends BaseVoService<IndikatorKinerja, IndikatorKinerjaVO, Integer> {
}

View File

@ -0,0 +1,8 @@
package com.jasamedika.medifirst2000.service;
import com.jasamedika.medifirst2000.entities.LogbookKinerjaDetail;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO;
public interface LogbookKinerjaDetailService extends BaseVoService<LogbookKinerjaDetail, LogbookKinerjaDetailVO, String> {
}

View File

@ -0,0 +1,8 @@
package com.jasamedika.medifirst2000.service;
import com.jasamedika.medifirst2000.entities.LogbookKinerja;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO;
public interface LogbookKinerjaService extends BaseVoService<LogbookKinerja, LogbookKinerjaVO, String> {
}

View File

@ -18,6 +18,6 @@ public interface PelayananPasienService {
List<Map<String, Object>> hitungRemunerasiDokterDenganFfs(String tglAwal, String tglAkhir);
void updateKlaimDiskonRSAB(String noRegistrasi, Double totalKlaim);
List<String> updateKlaimDiskonKaryawan(String noRegistrasi, Double totalKlaim);
}

View File

@ -16,7 +16,6 @@ import org.springframework.stereotype.Service;
import com.jasamedika.medifirst2000.constants.Master;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.AntrianPasienDiPeriksaDao;
import com.jasamedika.medifirst2000.dao.BridgingDao;
import com.jasamedika.medifirst2000.dao.IndikatorBIOSDao;
import com.jasamedika.medifirst2000.dao.IndikatorBIOSTransaksiDao;
@ -37,9 +36,6 @@ public class IndikatorBIOSServiceImpl extends BaseVoServiceImpl implements Indik
@Autowired
private BaseConverterImpl<IndikatorBIOSVO, IndikatorBIOS> indikatorConverter;
@Autowired
private AntrianPasienDiPeriksaDao antrianPasienDiPeriksaDao;
@Autowired
private BridgingDao bridgingDao;

View File

@ -0,0 +1,102 @@
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.IndikatorKinerjaDao;
import com.jasamedika.medifirst2000.entities.IndikatorKinerja;
import com.jasamedika.medifirst2000.entities.SatuanIndikator;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.IndikatorKinerjaService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO;
import com.jasamedika.medifirst2000.vo.SatuanIndikatorVO;
@Service("IndikatorKinerjaService")
public class IndikatorKinerjaServiceImpl extends BaseVoServiceImpl implements IndikatorKinerjaService {
@Autowired
private BaseConverterImpl<IndikatorKinerjaVO, IndikatorKinerja> indikatorKinerjaConverter;
@Autowired
private BaseConverterImpl<SatuanIndikatorVO, SatuanIndikator> satuanIndikatorConverter;
@Autowired
private IndikatorKinerjaDao indikatorKinerjaDao;
@Override
public IndikatorKinerjaVO add(IndikatorKinerjaVO vo) throws JpaSystemException, ServiceVOException {
SatuanIndikator satuanIndikator = satuanIndikatorConverter.transferVOToModel(vo.getSatuanIndikator(), new SatuanIndikator());
IndikatorKinerja indikatorKinerja = indikatorKinerjaConverter.transferVOToModel(vo, new IndikatorKinerja());
indikatorKinerja.setSatuanIndikator(satuanIndikator);
IndikatorKinerja resultModel = indikatorKinerjaDao.save(indikatorKinerja);
IndikatorKinerjaVO resultVO = new IndikatorKinerjaVO();
resultVO = indikatorKinerjaConverter.transferModelToVO(resultModel, resultVO);
return resultVO;
}
@Override
public IndikatorKinerjaVO update(IndikatorKinerjaVO vo) throws JpaSystemException, ServiceVOException {
IndikatorKinerja indikatorKinerjaLama = indikatorKinerjaDao.findOne(vo.getId());
SatuanIndikator satuanIndikator = satuanIndikatorConverter.transferVOToModel(vo.getSatuanIndikator(), new SatuanIndikator());
IndikatorKinerja indikatorKinerjaBaru = indikatorKinerjaConverter.transferVOToModel(vo, indikatorKinerjaLama);
indikatorKinerjaBaru.setSatuanIndikator(satuanIndikator);
IndikatorKinerja resultModel = indikatorKinerjaDao.save(indikatorKinerjaBaru);
IndikatorKinerjaVO resultVO = new IndikatorKinerjaVO();
resultVO = indikatorKinerjaConverter.transferModelToVO(resultModel, resultVO);
return resultVO;
}
@Override
public Boolean delete(Integer key) throws JpaSystemException {
indikatorKinerjaDao.delete(key);
return true;
}
@Override
public IndikatorKinerjaVO findById(Integer key) throws JpaSystemException {
IndikatorKinerjaVO result = new IndikatorKinerjaVO();
IndikatorKinerja indikatorKinerja = indikatorKinerjaDao.findOne(key);
if (CommonUtil.isNotNullOrEmpty(indikatorKinerja)) {
result = indikatorKinerjaConverter.transferModelToVO(indikatorKinerja, result);
}
return result;
}
@Override
public List<IndikatorKinerjaVO> findAll() throws JpaSystemException {
List<IndikatorKinerjaVO> result = new ArrayList<IndikatorKinerjaVO>();
Iterable<IndikatorKinerja> models = indikatorKinerjaDao.findAll();
if (CommonUtil.isNotNullOrEmpty(models)) {
for (IndikatorKinerja model : models) {
IndikatorKinerjaVO vo = new IndikatorKinerjaVO();
vo = indikatorKinerjaConverter.transferModelToVO(model, vo);
result.add(vo);
}
}
return result;
}
@Override
public Map<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit,
String sort, String dir) {
return null;
}
}

View File

@ -0,0 +1,120 @@
package com.jasamedika.medifirst2000.service.impl;
import java.util.ArrayList;
import java.util.Date;
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.LogbookKinerjaDao;
import com.jasamedika.medifirst2000.dao.LogbookKinerjaDetailDao;
import com.jasamedika.medifirst2000.entities.LogbookKinerja;
import com.jasamedika.medifirst2000.entities.LogbookKinerjaDetail;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.LogbookKinerjaDetailService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO;
@Service("LogbookKinerjaDetailService")
public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implements LogbookKinerjaDetailService {
@Autowired
private BaseConverterImpl<LogbookKinerjaDetailVO, LogbookKinerjaDetail> logbookKinerjaDetailConverter;
@Autowired
private LogbookKinerjaDao logbookKinerjaDao;
@Autowired
private LogbookKinerjaDetailDao logbookKinerjaDetailDao;
@Override
public LogbookKinerjaDetailVO add(LogbookKinerjaDetailVO vo) throws JpaSystemException, ServiceVOException {
LogbookKinerja logbookKinerja = logbookKinerjaDao.findOne(vo.getLogbookKinerja().getNoRec());
LogbookKinerjaDetail logbookKinerjaDetail = logbookKinerjaDetailConverter.transferVOToModel(vo,
new LogbookKinerjaDetail());
logbookKinerja.setCapaian(logbookKinerja.getCapaian() + vo.getCapaian());
logbookKinerjaDetail.setLogbookKinerja(logbookKinerja);
logbookKinerjaDetail.setTanggalKegiatan(new Date());
logbookKinerjaDao.save(logbookKinerja);
LogbookKinerjaDetail resultModel = logbookKinerjaDetailDao.save(logbookKinerjaDetail);
LogbookKinerjaDetailVO resultVO = new LogbookKinerjaDetailVO();
resultVO = logbookKinerjaDetailConverter.transferModelToVO(resultModel, resultVO);
return resultVO;
}
@Override
public LogbookKinerjaDetailVO update(LogbookKinerjaDetailVO vo) throws JpaSystemException, ServiceVOException {
LogbookKinerja logbookKinerja = logbookKinerjaDao.findOne(vo.getLogbookKinerja().getNoRec());
LogbookKinerjaDetail logbookKinerjaDetailLama = logbookKinerjaDetailDao.findOne(vo.getNoRec());
if (!vo.getStatusEnabled() && logbookKinerjaDetailLama.getStatusEnabled()) {
logbookKinerja.setCapaian(logbookKinerja.getCapaian() - vo.getCapaian());
} else if (vo.getStatusEnabled() && !logbookKinerjaDetailLama.getStatusEnabled()) {
logbookKinerja.setCapaian(logbookKinerja.getCapaian() + vo.getCapaian());
}
LogbookKinerjaDetail logbookKinerjaDetailBaru = logbookKinerjaDetailConverter.transferVOToModel(vo,
logbookKinerjaDetailLama);
logbookKinerjaDetailBaru.setLogbookKinerja(logbookKinerja);
logbookKinerjaDao.save(logbookKinerja);
LogbookKinerjaDetail resutlModel = logbookKinerjaDetailDao.save(logbookKinerjaDetailBaru);
LogbookKinerjaDetailVO resultVO = new LogbookKinerjaDetailVO();
resultVO = logbookKinerjaDetailConverter.transferModelToVO(resutlModel, resultVO);
return resultVO;
}
@Override
public Boolean delete(String key) throws JpaSystemException {
logbookKinerjaDetailDao.delete(key);
return true;
}
@Override
public LogbookKinerjaDetailVO findById(String key) throws JpaSystemException {
LogbookKinerjaDetailVO result = new LogbookKinerjaDetailVO();
LogbookKinerjaDetail logbookKinerjaDetail = logbookKinerjaDetailDao.findOne(key);
if (CommonUtil.isNotNullOrEmpty(logbookKinerjaDetail)) {
result = logbookKinerjaDetailConverter.transferModelToVO(logbookKinerjaDetail, result);
}
return result;
}
@Override
public List<LogbookKinerjaDetailVO> findAll() throws JpaSystemException {
List<LogbookKinerjaDetailVO> result = new ArrayList<LogbookKinerjaDetailVO>();
Iterable<LogbookKinerjaDetail> models = logbookKinerjaDetailDao.findAll();
if (CommonUtil.isNotNullOrEmpty(models)) {
for (LogbookKinerjaDetail model : models) {
LogbookKinerjaDetailVO vo = new LogbookKinerjaDetailVO();
vo = logbookKinerjaDetailConverter.transferModelToVO(model, vo);
result.add(vo);
}
}
return result;
}
@Override
public Map<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit,
String sort, String dir) {
return null;
}
}

View File

@ -0,0 +1,124 @@
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.LogbookKinerjaDao;
import com.jasamedika.medifirst2000.entities.IndikatorKinerja;
import com.jasamedika.medifirst2000.entities.Jabatan;
import com.jasamedika.medifirst2000.entities.LogbookKinerja;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.LogbookKinerjaService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO;
import com.jasamedika.medifirst2000.vo.JabatanVO;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO;
import com.jasamedika.medifirst2000.vo.PegawaiVO;
@Service("LogbookKinerjaService")
public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements LogbookKinerjaService {
@Autowired
private BaseConverterImpl<LogbookKinerjaVO, LogbookKinerja> logbookKinerjaConverter;
@Autowired
private BaseConverterImpl<PegawaiVO, Pegawai> pegawaiConverter;
@Autowired
private BaseConverterImpl<JabatanVO, Jabatan> jabatanConverter;
@Autowired
private BaseConverterImpl<IndikatorKinerjaVO, IndikatorKinerja> indikatorKinerjaConverter;
@Autowired
private LogbookKinerjaDao logbookKinerjaDao;
@Override
public LogbookKinerjaVO add(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException {
Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai());
Jabatan jabatan = jabatanConverter.transferVOToModel(vo.getJabatan(), new Jabatan());
IndikatorKinerja indikatorKinerja = indikatorKinerjaConverter.transferVOToModel(vo.getIndikatorKinerja(),
new IndikatorKinerja());
LogbookKinerja logbookKinerja = logbookKinerjaConverter.transferVOToModel(vo, new LogbookKinerja());
logbookKinerja.setPegawai(pegawai);
logbookKinerja.setJabatan(jabatan);
logbookKinerja.setIndikatorKinerja(indikatorKinerja);
logbookKinerja.setCapaian(0.0);
LogbookKinerja resultModel = logbookKinerjaDao.save(logbookKinerja);
LogbookKinerjaVO resultVO = new LogbookKinerjaVO();
resultVO = logbookKinerjaConverter.transferModelToVO(resultModel, resultVO);
return resultVO;
}
@Override
public LogbookKinerjaVO update(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException {
LogbookKinerja logbookKinerjaLama = logbookKinerjaDao.findOne(vo.getNoRec());
Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai());
Jabatan jabatan = jabatanConverter.transferVOToModel(vo.getJabatan(), new Jabatan());
IndikatorKinerja indikatorKinerja = indikatorKinerjaConverter.transferVOToModel(vo.getIndikatorKinerja(),
new IndikatorKinerja());
LogbookKinerja logbookKinerjaBaru = logbookKinerjaConverter.transferVOToModel(vo, logbookKinerjaLama);
logbookKinerjaBaru.setPegawai(pegawai);
logbookKinerjaBaru.setJabatan(jabatan);
logbookKinerjaBaru.setIndikatorKinerja(indikatorKinerja);
LogbookKinerja resultModel = logbookKinerjaDao.save(logbookKinerjaBaru);
LogbookKinerjaVO resultVO = new LogbookKinerjaVO();
resultVO = logbookKinerjaConverter.transferModelToVO(resultModel, resultVO);
return resultVO;
}
@Override
public Boolean delete(String key) throws JpaSystemException {
logbookKinerjaDao.delete(key);
return true;
}
@Override
public LogbookKinerjaVO findById(String key) throws JpaSystemException {
LogbookKinerjaVO result = new LogbookKinerjaVO();
LogbookKinerja logbookKinerja = logbookKinerjaDao.findOne(key);
if (CommonUtil.isNotNullOrEmpty(logbookKinerja)) {
result = logbookKinerjaConverter.transferModelToVO(logbookKinerja, result);
}
return result;
}
@Override
public List<LogbookKinerjaVO> findAll() throws JpaSystemException {
List<LogbookKinerjaVO> result = new ArrayList<LogbookKinerjaVO>();
Iterable<LogbookKinerja> models = logbookKinerjaDao.findAll();
if (CommonUtil.isNotNullOrEmpty(models)) {
for (LogbookKinerja model : models) {
LogbookKinerjaVO vo = new LogbookKinerjaVO();
vo = logbookKinerjaConverter.transferModelToVO(model, vo);
result.add(vo);
}
}
return result;
}
@Override
public Map<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit,
String sort, String dir) {
return null;
}
}

View File

@ -22,7 +22,6 @@ import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.AntrianPasienDiPeriksaDao;
import com.jasamedika.medifirst2000.dao.LogAccDao;
import com.jasamedika.medifirst2000.dao.PelayananPasienDao;
import com.jasamedika.medifirst2000.dao.PelayananPasienDetailDao;
import com.jasamedika.medifirst2000.dao.StrukPelayananDao;
import com.jasamedika.medifirst2000.entities.JenisObat;
import com.jasamedika.medifirst2000.entities.LogAcc;
@ -55,9 +54,6 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
@Autowired
private PelayananPasienDao pelayananPasienDao;
@Autowired
private PelayananPasienDetailDao pelayananPasienDetailDao;
@Autowired
private LogAccDao logAccDao;
@ -354,85 +350,42 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
}
@Override
public void updateKlaimDiskonRSAB(String noRegistrasi, Double totalKlaim) {
List<Map<String, Object>> detailSarana = new ArrayList<>();
List<Map<String, Object>> detailUmum = new ArrayList<>();
List<Map<String, Object>> detailParamedis = new ArrayList<>();
List<Map<String, Object>> detailMedis = new ArrayList<>();
List<Map<String, Object>> detailLainlain = new ArrayList<>();
public List<String> updateKlaimDiskonKaryawan(String noRegistrasi, Double totalKlaim) {
List<String> result = new ArrayList<>();
double totalTagihan = 0.0;
double totalDetailSarana = 0.0;
double totalDetailUmum = 0.0;
double totalDetailParamedis = 0.0;
double totalDetailMedis = 0.0;
double totalDetailFarmasi = 0.0;
double sisaTotalKlaim = totalKlaim;
double fracTotalKlaim = 0.0;
Iterable<PelayananPasien> data = pelayananPasienDao.findLayananTagihan(noRegistrasi);
List<Map<String, Object>> detail = pelayananPasienDetailDao.findDetailTagihan(noRegistrasi);
for (Map<String, Object> map : detail) {
if (Arrays.asList(Master.KomponenHarga.JASA_SARANA).contains(map.get("idKomponenHarga"))) {
detailSarana.add(map);
totalDetailSarana += ((double) map.get("hargaJual") - (double) map.get("hargaDiscount"))
* (double) map.get("jumlah");
totalDetailFarmasi += (double) map.get("jasa");
} else if (map.get("idKomponenHarga").equals(Master.KomponenHarga.JASA_UMUM)) {
detailUmum.add(map);
totalDetailUmum += ((double) map.get("hargaJual") - (double) map.get("hargaDiscount"))
* (double) map.get("jumlah");
totalDetailFarmasi += (double) map.get("jasa");
} else if (Arrays.asList(Master.KomponenHarga.JASA_PARAMEDIS).contains(map.get("idKomponenHarga"))) {
detailParamedis.add(map);
totalDetailParamedis += ((double) map.get("hargaJual") - (double) map.get("hargaDiscount"))
* (double) map.get("jumlah");
totalDetailFarmasi += (double) map.get("jasa");
} else if (Arrays.asList(Master.KomponenHarga.JASA_MEDIS).contains(map.get("idKomponenHarga"))) {
detailMedis.add(map);
totalDetailMedis += ((double) map.get("hargaJual") - (double) map.get("hargaDiscount"))
* (double) map.get("jumlah");
totalDetailFarmasi += (double) map.get("jasa");
} else {
detailLainlain.add(map);
}
for (PelayananPasien pp : data) {
totalTagihan += hitungKomponenTagihan(pp);
}
if (sisaTotalKlaim <= totalDetailSarana) {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:50:43 AM] : diskonkan detail sarana!
sisaTotalKlaim = 0.0;
if (totalKlaim >= totalTagihan) {
for (PelayananPasien pp : data) {
pp.setHargaDiscount(pp.getHargaJual());
}
} else {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:51:36 AM] : nolkan detail sarana!
sisaTotalKlaim -= totalDetailSarana;
if (sisaTotalKlaim <= totalDetailUmum) {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:52:10 AM] : diskonkan detail umum!
sisaTotalKlaim = 0.0;
} else {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:52:39 AM] : nolkan detail umum!
sisaTotalKlaim -= totalDetailUmum;
if (sisaTotalKlaim <= totalDetailParamedis) {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:53:20 AM] : diskonkan detail paramedis!
sisaTotalKlaim = 0.0;
} else {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:54:40 AM] : nolkan detail paramedis!
sisaTotalKlaim -= totalDetailParamedis;
if (sisaTotalKlaim <= totalDetailMedis) {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:55:18 AM] : diskonkan detail medis!
sisaTotalKlaim = 0.0;
} else {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:55:49 AM] : nolkan detail medis!
sisaTotalKlaim -= totalDetailMedis;
if (sisaTotalKlaim <= totalDetailFarmasi) {
// TODO inserted by ITI-14 [Feb 15, 2021, 1:08:16 PM] : diskonkan detail jasa!
sisaTotalKlaim = 0.0;
} else {
// TODO inserted by ITI-14 [Feb 15, 2021, 1:08:38 PM] : nolkan detail jasa!
sisaTotalKlaim -= totalDetailFarmasi;
if (sisaTotalKlaim > 0.0) {
// TODO inserted by ITI-14 [Feb 15, 2021, 1:09:42 PM] : error!
}
}
}
for (PelayananPasien pp : data) {
pp.setHargaDiscount(pp.getHargaDiscount() + (totalKlaim / totalTagihan * hitungKomponenTagihan(pp)) / pp.getJumlah());
if (pp.getHargaDiscount() > pp.getHargaJual()) {
pp.setHargaDiscount(pp.getHargaJual());
}
}
}
Iterable<PelayananPasien> resultModels = pelayananPasienDao.save(data);
if (CommonUtil.isNotNullOrEmpty(resultModels)) {
for (PelayananPasien pp : resultModels) {
result.add(pp.getNoRec());
}
}
return result;
}
public Double hitungKomponenTagihan(PelayananPasien pp) {
return ((pp.getHargaJual() == null ? 0.0 : pp.getHargaJual())
- (pp.getHargaDiscount() == null ? 0.0 : pp.getHargaDiscount()))
* (pp.getJumlah() == null ? 0.0 : pp.getJumlah()) + (pp.getJasa() == null ? 0.0 : pp.getJasa());
}
}

View File

@ -8,6 +8,7 @@ import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import com.jasamedika.medifirst2000.base.BaseMaster;
import com.jasamedika.medifirst2000.helper.Caption;
@ -21,17 +22,21 @@ public class IndikatorKinerja extends BaseMaster {
private String namaIndikator;
@ManyToOne
@NotNull(message = "Satuan indikator tidak boleh kosong")
@JoinColumn(name = "objectsatuanindikatorfk")
@Caption(value = "Satuan Indikator")
private SatuanIndikator satuanIndikator;
@Column(name = "objectsatuanindikatorfk", insertable = false, updatable = false, nullable = false)
@Column(name = "objectsatuanindikatorfk", insertable = false, updatable = false, nullable = true)
private Integer satuanIndikatorId;
@Column(name = "statusverifikasi", nullable = false)
@Caption(value = "Status Verifikasi")
private Boolean statusVerifikasi;
/**
* jenisIndikator = 1: Kuantitas, 2: Kualitas, 3: Perilaku
*/
@Column(name = "jenisIndikator", nullable = false)
@Caption(value = "Jenis Indikator")
private Integer jenisIndikator;

View File

@ -9,6 +9,7 @@ import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.helper.Caption;
@ -31,35 +32,38 @@ public class LogbookKinerja extends BaseTransaction {
private Double bobot;
@Caption(value = "Capaian")
@Column(name = "capaian", nullable = true)
@Column(name = "capaian", nullable = true, columnDefinition = "float8 default 0")
private Double capaian;
@Column(name = "statusverifikasi", nullable = false)
@Caption(value = "Status Verifikasi")
private Boolean statusVerifikasi;
@ManyToOne
@NotNull(message = "Pegawai tidak boleh kosong")
@JoinColumn(name = "objectpegawaifk")
@Caption(value = "Pegawai")
private Pegawai pegawai;
@Column(name = "objectpegawaifk", insertable = false, updatable = false, nullable = false)
@Column(name = "objectpegawaifk", insertable = false, updatable = false, nullable = true)
private Integer pegawaiId;
@ManyToOne
@NotNull(message = "Jabatan tidak boleh kosong")
@JoinColumn(name = "objectjabatanfk")
@Caption(value = "Jabatan")
private Jabatan jabatan;
@Column(name = "objectjabatanfk", insertable = false, updatable = false, nullable = false)
@Column(name = "objectjabatanfk", insertable = false, updatable = false, nullable = true)
private Integer jabatanId;
@ManyToOne
@NotNull(message = "Indikator kinerja tidak boleh kosong")
@JoinColumn(name = "objectindikatorkinerjafk")
@Caption(value = "Indikator Kinerja")
private IndikatorKinerja indikatorKinerja;
@Column(name = "objectindikatorkinerjafk", insertable = false, updatable = false, nullable = false)
@Column(name = "objectindikatorkinerjafk", insertable = false, updatable = false, nullable = true)
private Integer indikatorKinerjaId;
public Date getBulan() {

View File

@ -9,6 +9,7 @@ import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.helper.Caption;
@ -21,6 +22,10 @@ public class LogbookKinerjaDetail extends BaseTransaction {
@Caption(value = "Nama Kegiatan")
private String namaKegiatan;
@Column(name = "capaian", nullable = false)
@Caption(value = "Capaian")
private Double capaian;
@Column(name = "catatan", nullable = true)
@Caption(value = "Catatan")
private String catatan;
@ -35,11 +40,12 @@ public class LogbookKinerjaDetail extends BaseTransaction {
private Boolean statusVerifikasi;
@ManyToOne
@NotNull(message = "Indikator kinerja tidak boleh kosong")
@JoinColumn(name = "objectlogbookkinerjafk")
@Caption(value = "Logbook Kinerja")
private LogbookKinerja logbookKinerja;
@Column(name = "objectlogbookkinerjafk", insertable = false, updatable = false, nullable = false)
@Column(name = "objectlogbookkinerjafk", insertable = false, updatable = false, nullable = true)
private String logbookIndikatorId;
public String getNamaKegiatan() {
@ -50,6 +56,14 @@ public class LogbookKinerjaDetail extends BaseTransaction {
this.namaKegiatan = namaKegiatan;
}
public Double getCapaian() {
return capaian;
}
public void setCapaian(Double capaian) {
this.capaian = capaian;
}
public String getCatatan() {
return catatan;
}

View File

@ -280,6 +280,14 @@ public class PelayananPasien extends MedicalRecordTransaction {
this.statusOrder = statusOrder;
}
public Double getJasa() {
return jasa;
}
public void setJasa(Double jasa) {
this.jasa = jasa;
}
public Kelas getKelas() {
return kelas;
}

View File

@ -10,6 +10,9 @@ public class LogbookKinerjaDetailVO extends BaseTransactionVO {
@Caption(value = "Nama Kegiatan")
private String namaKegiatan;
@Caption(value = "Capaian")
private Double capaian;
@Caption(value = "Catatan")
private String catatan;
@ -32,6 +35,14 @@ public class LogbookKinerjaDetailVO extends BaseTransactionVO {
this.namaKegiatan = namaKegiatan;
}
public Double getCapaian() {
return capaian;
}
public void setCapaian(Double capaian) {
this.capaian = capaian;
}
public String getCatatan() {
return catatan;
}

View File

@ -1,6 +1,7 @@
package com.jasamedika.medifirst2000.controller;
import java.text.ParseException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -27,9 +28,15 @@ import com.jasamedika.medifirst2000.controller.base.LocaleController;
import com.jasamedika.medifirst2000.core.web.WebConstants;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.IkiDanRemunerasiService;
import com.jasamedika.medifirst2000.service.IndikatorKinerjaService;
import com.jasamedika.medifirst2000.service.LogbookKinerjaDetailService;
import com.jasamedika.medifirst2000.service.LogbookKinerjaService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.rest.RestUtil;
import com.jasamedika.medifirst2000.vo.IkiDanRemunerasiVO;
import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO;
import com.jasamedika.medifirst2000.vo.SettingPirSdmVO;
import com.jasamedika.medifirst2000.vo.StrukHistoriVO;
@ -37,10 +44,19 @@ import com.jasamedika.medifirst2000.vo.StrukHistoriVO;
@RequestMapping("/iki-remunerasi")
public class IkiDanRemunerasiController extends LocaleController<IkiDanRemunerasiVO> {
private static final Logger LOGGER = LoggerFactory.getLogger(IkiDanRemunerasiController.class);
@Autowired
private IkiDanRemunerasiService service;
private static final Logger LOGGER = LoggerFactory.getLogger(IkiDanRemunerasiController.class);
@Autowired
private IndikatorKinerjaService indikatorKinerjaService;
@Autowired
private LogbookKinerjaService logbookKinerjaService;
@Autowired
private LogbookKinerjaDetailService logbookKinerjaDetailService;
@RequestMapping(value = "/get-load-data", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> getLoadData(HttpServletRequest request) {
@ -239,4 +255,94 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
}
}
@RequestMapping(value = "/save-master-indikator-kinerja", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> saveMasterIndikatorKinerja(HttpServletRequest request,
@Valid @RequestBody IndikatorKinerjaVO vo) {
Map<String, Object> result = new HashMap<String, Object>();
try {
IndikatorKinerjaVO resultVo = new IndikatorKinerjaVO();
if (CommonUtil.isNotNullOrEmpty(vo.getId())) {
resultVo = indikatorKinerjaService.update(vo);
} else {
resultVo = indikatorKinerjaService.add(vo);
}
result.put("data", resultVo);
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 indikator kinerja", 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 indikator kinerja", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/save-logbook-kinerja", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> saveLogbookKinerja(HttpServletRequest request,
@Valid @RequestBody LogbookKinerjaVO vo) {
Map<String, Object> result = new HashMap<String, Object>();
try {
LogbookKinerjaVO resultVo = new LogbookKinerjaVO();
if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) {
resultVo = logbookKinerjaService.update(vo);
} else {
resultVo = logbookKinerjaService.add(vo);
}
result.put("data", resultVo);
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 logbook kinerja", 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 logbook kinerja", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/save-working-record", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> saveWorkingRecord(HttpServletRequest request,
@Valid @RequestBody LogbookKinerjaDetailVO vo) {
Map<String, Object> result = new HashMap<String, Object>();
try {
LogbookKinerjaDetailVO resultVo = new LogbookKinerjaDetailVO();
if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) {
resultVo = logbookKinerjaDetailService.update(vo);
} else {
resultVo = logbookKinerjaDetailService.add(vo);
}
result.put("data", resultVo);
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 working record", 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 working record", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
}

View File

@ -59,7 +59,7 @@ public class PelayananController extends LocaleController<PelayananPasienVO> {
@Autowired
private ProdukService produkService;
@Autowired
private SatuanStandarService satuanStandarService;
@ -339,7 +339,7 @@ public class PelayananController extends LocaleController<PelayananPasienVO> {
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/all-paket-produk", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getAllPaketToProduk(HttpServletRequest request) {
try {
@ -357,7 +357,7 @@ public class PelayananController extends LocaleController<PelayananPasienVO> {
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/master-satuan-standar", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getAllMasterSatuanStandar(HttpServletRequest request) {
List<Map<String, Object>> result = new ArrayList<>();
@ -377,4 +377,25 @@ public class PelayananController extends LocaleController<PelayananPasienVO> {
}
}
@RequestMapping(value = "/klaim-diskon-karyawan", method = RequestMethod.GET)
public ResponseEntity<List<String>> updateKlaimDiskonKaryawan(HttpServletRequest request,
@RequestParam(value = "noRegistrasi", required = true) String noRegistrasi,
@RequestParam(value = "totalKlaim", required = true) Double totalKlaim) {
try {
List<String> result = pelayananPasienService.updateKlaimDiskonKaryawan(noRegistrasi, totalKlaim);
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
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());
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());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
}

View File

@ -15,7 +15,7 @@
</context-param>
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>production</param-value>
<param-value>sdm</param-value>
</context-param>
<listener>