Update IndekKinerjaService

Perbaikan rumus menghitung perkiraan kontribusi menjadi berdasarkan komponen harga tarif
This commit is contained in:
salmanoersabhk 2022-07-15 17:55:33 +07:00
parent ec1294e84b
commit 393398a171
6 changed files with 81 additions and 30 deletions

View File

@ -127,10 +127,10 @@ public class Master {
}
public static final class JenisPetugasPelaksana {
public static final int ASISTEN_SPESIALIS = 13;
public static final int DOKTER_PEMERIKSA = 4;
public static final int DOKTER_ANASTESI = 6;
public static final int PETUGAS_PELAKSANA = 2;
public static final Integer ASISTEN_SPESIALIS = 13;
public static final Integer DOKTER_PEMERIKSA = 4;
public static final Integer DOKTER_ANASTESI = 6;
public static final Integer PETUGAS_PELAKSANA = 2;
public static final Integer[] MEDIS_UTAMA = { 4, 6, 13 };
public static final Integer[] DOKTER_ANASTESI_OR_ASISTEN_SPESIALIS = { 6, 13 };

View File

@ -1,6 +1,7 @@
package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
@ -16,12 +17,16 @@ public interface HargaNettoProdukByKelasDDao extends PagingAndSortingRepository<
public List<HargaNettoProdukByKelasD> findProdByKelas(@Param("produkId") Integer produkId,
@Param("kelasId") Integer kelasId, @Param("asalProdukId") Integer asalProdukId,
@Param("jenisTarifId") Integer jenisTarifId);
@Query("select a from HargaNettoProdukByKelasD a "
+ "left join a.kelas b "
+ "left join a.produk d "
@Query("select a from HargaNettoProdukByKelasD a " + "left join a.kelas b " + "left join a.produk d "
+ "where b.id=:kelasId and d.id=:produkId")
public List<HargaNettoProdukByKelasD> findByKelasNProduk(
@Param("kelasId") Integer kelasId,
public List<HargaNettoProdukByKelasD> findByKelasNProduk(@Param("kelasId") Integer kelasId,
@Param("produkId") Integer produkId);
@Query("select hnd.hargaNetto1 " + "from HargaNettoProdukByKelasD hnd " + "inner join hnd.produk prd "
+ "inner join hnd.kelas kls " + "where hnd.statusEnabled is true " + "and prd.statusEnabled is true "
+ "and kls.statusEnabled is true " + "and hnd.komponenHargaId = :komponenHargaId "
+ "and hnd.produkId = :produkId " + "and hnd.kelasId = :kelasId")
public Optional<Double> findHargetNetto1Komponen(@Param("komponenHargaId") Integer idKomponenHarga,
@Param("produkId") Integer idProduk, @Param("kelasId") Integer idKelas);
}

View File

@ -18,6 +18,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.joda.time.Chronology;
import org.joda.time.chrono.ISOChronology;
@ -30,6 +31,7 @@ import com.jasamedika.medifirst2000.constants.Master;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.CustomIndexKerjaDao;
import com.jasamedika.medifirst2000.dao.DetailLogbookDokterDao;
import com.jasamedika.medifirst2000.dao.HargaNettoProdukByKelasDDao;
import com.jasamedika.medifirst2000.dao.IkiDanRemunerasiDao;
import com.jasamedika.medifirst2000.dao.IndekKinerjaDao;
import com.jasamedika.medifirst2000.dao.IndeksKinerjaIndividuDao;
@ -166,6 +168,9 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
@Autowired
private DetailLogbookDokterDao detailLogbookDokterDao;
@Autowired
private HargaNettoProdukByKelasDDao detailHargaNettoDao;
@Autowired
private IndeksKinerjaDaoCustom indeksKinerjaDaoCustom;
@ -3153,7 +3158,29 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
isDiskonJasamedis1);
pointQty = point * totalProduk1.doubleValue();
formatPointQty = Double.parseDouble(df.format(pointQty));
formatRpKontribusi = totalProduk1 * harga;
if (Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA
.equals(mapResult1.get("idJenisPelaksana"))) {
Optional<Double> nettoKomponen = detailHargaNettoDao.findHargetNetto1Komponen(
Master.KomponenHarga.JASA_DOKTER,
Integer.parseInt(mapResult1.get("idProduk").toString()),
Integer.parseInt(mapResult1.get("idKelas").toString()));
formatRpKontribusi = totalProduk1 * nettoKomponen.orElse(0.0);
} else if (Master.JenisPetugasPelaksana.DOKTER_ANASTESI
.equals(mapResult1.get("idJenisPelaksana"))) {
Optional<Double> nettoKomponen = detailHargaNettoDao.findHargetNetto1Komponen(
Master.KomponenHarga.JASA_DOKTER_ANASTESI,
Integer.parseInt(mapResult1.get("idProduk").toString()),
Integer.parseInt(mapResult1.get("idKelas").toString()));
formatRpKontribusi = totalProduk1 * nettoKomponen.orElse(0.0);
} else if (Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS
.equals(mapResult1.get("idJenisPelaksana"))) {
Optional<Double> nettoKomponen = detailHargaNettoDao.findHargetNetto1Komponen(
Master.KomponenHarga.JASA_ASISTEN_SPESIALIS,
Integer.parseInt(mapResult1.get("idProduk").toString()),
Integer.parseInt(mapResult1.get("idKelas").toString()));
formatRpKontribusi = totalProduk1 * nettoKomponen.orElse(0.0);
}
mapResult1.put("totalKonsul", totalKonsul1.longValue());
mapResult1.put("totalVisit", totalVisit1.longValue());
@ -3211,7 +3238,29 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
isDiskonJasamedis2);
pointQty = point * totalProduk2.doubleValue();
formatPointQty = Double.parseDouble(df.format(pointQty));
formatRpKontribusi = totalProduk2 * harga;
if (Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA
.equals(mapResult2.get("idJenisPelaksana"))) {
Optional<Double> nettoKomponen = detailHargaNettoDao.findHargetNetto1Komponen(
Master.KomponenHarga.JASA_DOKTER,
Integer.parseInt(mapResult2.get("idProduk").toString()),
Integer.parseInt(mapResult2.get("idKelas").toString()));
formatRpKontribusi = totalProduk2 * nettoKomponen.orElse(0.0);
} else if (Master.JenisPetugasPelaksana.DOKTER_ANASTESI
.equals(mapResult2.get("idJenisPelaksana"))) {
Optional<Double> nettoKomponen = detailHargaNettoDao.findHargetNetto1Komponen(
Master.KomponenHarga.JASA_DOKTER_ANASTESI,
Integer.parseInt(mapResult2.get("idProduk").toString()),
Integer.parseInt(mapResult2.get("idKelas").toString()));
formatRpKontribusi = totalProduk2 * nettoKomponen.orElse(0.0);
} else if (Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS
.equals(mapResult2.get("idJenisPelaksana"))) {
Optional<Double> nettoKomponen = detailHargaNettoDao.findHargetNetto1Komponen(
Master.KomponenHarga.JASA_ASISTEN_SPESIALIS,
Integer.parseInt(mapResult2.get("idProduk").toString()),
Integer.parseInt(mapResult2.get("idKelas").toString()));
formatRpKontribusi = totalProduk2 * nettoKomponen.orElse(0.0);
}
mapResult2.put("totalKonsul", totalKonsul2.longValue());
mapResult2.put("totalVisit", totalVisit2.longValue());

View File

@ -24,6 +24,8 @@ import javax.persistence.Id;
@Table(name = "HargaNettoProdukByKelas_M")
public class HargaNettoProdukByKelas extends BaseMaster {
private static final long serialVersionUID = 9094957646615611317L;
public HargaNettoProdukByKelas(Double hargaSatuan, Integer id) {
super();
this.hargaSatuan = hargaSatuan;

View File

@ -24,6 +24,8 @@ import com.jasamedika.medifirst2000.helper.Caption;
@Table(name = "HargaNettoProdukByKelasD_M")
public class HargaNettoProdukByKelasD extends BaseMaster {
private static final long serialVersionUID = -2040691507588284089L;
@NotNull(message = "Factor Rate tidak boleh kosong")
@Column(name = "FactorRate", nullable = false)
@Caption(value = "Factor Rate")

View File

@ -1,26 +1,17 @@
package com.jasamedika.medifirst2000.entities;
import java.io.Serializable;
import org.hibernate.envers.Audited;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
import org.hibernate.validator.constraints.NotEmpty;
import com.jasamedika.medifirst2000.base.BaseMaster;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.internal.util.logging.Messages;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.jasamedika.medifirst2000.base.BaseMaster;
import com.jasamedika.medifirst2000.helper.Caption;
import org.hibernate.envers.Audited;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
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;
/**
* class KomponenHarga
@ -30,6 +21,8 @@ import javax.persistence.Id;
@Entity // @Audited
@Table(name = "KomponenHarga_M")
public class KomponenHarga extends BaseMaster {
private static final long serialVersionUID = 2283865782290922330L;
@ManyToOne
@JoinColumn(name = "ObjectDepartemenFk")