Update LogbookKinerjaService
Pembuatan service logbook skor nakes lain dan detail logbook skor harian
This commit is contained in:
parent
ed9bdb5d60
commit
d77f960932
@ -1,6 +1,7 @@
|
||||
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;
|
||||
@ -20,4 +21,25 @@ public interface PelayananNakesDao extends PagingAndSortingRepository<PelayananN
|
||||
+ "and to_char(pn.tglPelayanan,'yyyy-MM') = :bulan " + "and pn.pegawaiId = :pegawaiId")
|
||||
List<PelayananNakes> findAllByKontrak(@Param("bulan") String bulan, @Param("pegawaiId") Integer idPegawai);
|
||||
|
||||
@Query("select new Map(pnt.noRec as noRec," + "pnt.tglPelayanan as tglPelayanan,"
|
||||
+ "pnt.skor as skor,pnt.jumlah as jumlah," + "pnt.skor*pnt.jumlah as totalSkor," + "pnt.catatan as detail,"
|
||||
+ "pn.id as produkId,pn.namaProduk as namaProduk," + "pn.kdProduk as kdProduk,"
|
||||
+ "(case when pn.kdProduk = 1 then 'Pelayanan Pasien' "
|
||||
+ "when pn.kdProduk = 2 then 'Pelayanan Non-Pasien' end) as kodeProduk,"
|
||||
+ "pg.id as pegawaiId,pg.namaLengkap as namaLengkap) " + "from PelayananNakes pnt "
|
||||
+ "inner join pnt.produk pn " + "inner join pnt.pegawai pg " + "where pnt.statusEnabled is true "
|
||||
+ "and pn.statusEnabled is true " + "and pg.statusEnabled is true "
|
||||
+ "and to_char(pnt.tglPelayanan,'yyyy-MM') = :bulan " + "and pnt.pegawaiId = :pegawaiId "
|
||||
+ "order by pn.namaProduk, pnt.tglPelayanan")
|
||||
List<Map<String, Object>> findPelayananNakes(@Param("bulan") String bulan, @Param("pegawaiId") Integer idPegawai);
|
||||
|
||||
@Query("select new Map(pnt.tglPelayanan as tglPelayanan,"
|
||||
+ "to_char(pnt.tglPelayanan,'yyyy-MM-dd HH24:MI:ss') as tglPelayananFormatted," + "pnt.jumlah as jumlah,"
|
||||
+ "pnt.catatan as catatan) " + "from PelayananNakes pnt " + "inner join pnt.pegawai pg "
|
||||
+ "inner join pnt.produk pn " + "where pnt.statusEnabled is true " + "and pn.statusEnabled is true "
|
||||
+ "and pg.statusEnabled is true " + "and pg.id = :pegawaiId " + "and pn.id = :produkId "
|
||||
+ "and to_char(pnt.tglPelayanan,'yyyy-MM-dd') = :tglPelayanan")
|
||||
List<Map<String, Object>> findPelayananNakesDetail(@Param("pegawaiId") Integer idPegawai,
|
||||
@Param("produkId") Integer idProduk, @Param("tglPelayanan") String tglPelayanan);
|
||||
|
||||
}
|
||||
|
||||
@ -30,4 +30,28 @@ public interface PelayananPasienNakesDao extends PagingAndSortingRepository<Pela
|
||||
List<PelayananPasienNakes> findAllPelayananByKontrak(@Param("bulan") String bulan,
|
||||
@Param("pegawaiId") Integer idPegawai);
|
||||
|
||||
@Query("select new Map(ppn.noRec as noRec," + "ppn.tglPelayanan as tglPelayanan,"
|
||||
+ "ppn.skor as skor,ppn.jumlah as jumlah," + "ppn.skor*ppn.jumlah as totalSkor,"
|
||||
+ "ppn.antrianPasienDiperiksaId as detail," + "pn.id as produkId,pn.namaProduk as namaProduk,"
|
||||
+ "pn.kdProduk as kdProduk," + "(case when pn.kdProduk = 1 then 'Pelayanan Pasien' "
|
||||
+ "when pn.kdProduk = 2 then 'Pelayanan Non-Pasien' end) as kodeProduk,"
|
||||
+ "pg.id as pegawaiId,pg.namaLengkap as namaLengkap) " + "from PelayananPasienNakes ppn "
|
||||
+ "inner join ppn.produk pn " + "inner join ppn.pegawai pg " + "where ppn.statusEnabled is true "
|
||||
+ "and pn.statusEnabled is true " + "and pg.statusEnabled is true "
|
||||
+ "and to_char(ppn.tglPelayanan,'yyyy-MM') = :bulan " + "and ppn.pegawaiId = :pegawaiId "
|
||||
+ "order by pn.namaProduk, ppn.tglPelayanan")
|
||||
List<Map<String, Object>> findPelayananNakes(@Param("bulan") String bulan, @Param("pegawaiId") Integer idPegawai);
|
||||
|
||||
@Query("select new Map(ppn.tglPelayanan as tglPelayanan,"
|
||||
+ "to_char(ppn.tglPelayanan,'yyyy-MM-dd HH24:MI:ss') as tglPelayananFormatted," + "ppn.jumlah as jumlah,"
|
||||
+ "pd.noRegistrasi as noRegistrasi," + "ps.noCm as noCm," + "ps.namaPasien as namaPasien,"
|
||||
+ "pn.id as produkId,pn.namaProduk as namaProduk," + "ru.namaRuangan as namaRuangan) "
|
||||
+ "from PelayananPasienNakes ppn " + "inner join ppn.antrianPasienDiperiksa apd "
|
||||
+ "inner join ppn.pegawai pg " + "inner join ppn.produk pn " + "inner join apd.pasienDaftar pd "
|
||||
+ "inner join apd.ruangan ru " + "inner join pd.pasien ps " + "where ppn.statusEnabled is true "
|
||||
+ "and pg.statusEnabled is true " + "and pd.statusEnabled is true " + "and pg.id = :pegawaiId "
|
||||
+ "and pn.id = :produkId " + "and to_char(ppn.tglPelayanan,'yyyy-MM-dd') = :tglPelayanan")
|
||||
List<Map<String, Object>> findPelayananNakesDetail(@Param("pegawaiId") Integer idPegawai,
|
||||
@Param("produkId") Integer idProduk, @Param("tglPelayanan") String tglPelayanan);
|
||||
|
||||
}
|
||||
|
||||
@ -60,6 +60,10 @@ public interface LogbookKinerjaService extends BaseVoService<LogbookKinerja, Log
|
||||
|
||||
public List<Double> findBobotJenisJabatan(Long periode, Integer idJabatan);
|
||||
|
||||
List<Map<String, Object>> findJabatanKontrakVerifKinerja(Integer idPegawai, Integer idPegawaiLogin);
|
||||
public List<Map<String, Object>> findJabatanKontrakVerifKinerja(Integer idPegawai, Integer idPegawaiLogin);
|
||||
|
||||
public List<Map<String, Object>> findLogbookNakes(Integer idPegawai, Long bulan);
|
||||
|
||||
public List<Map<String, Object>> findDetailLogbookNakes(Integer idPegawai, Integer idProduk, String tglPelayanan);
|
||||
|
||||
}
|
||||
|
||||
@ -2785,4 +2785,111 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findLogbookNakes(Integer idPegawai, Long bulan) {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
||||
DateFormat mf = new SimpleDateFormat("yyyy-MM");
|
||||
|
||||
DecimalFormat decf = new DecimalFormat("###.###");
|
||||
decf.setRoundingMode(RoundingMode.HALF_UP);
|
||||
|
||||
List<Map<String, Object>> pelayananNakes = new ArrayList<>();
|
||||
pelayananNakes.addAll(pelayananPasienNakesDao.findPelayananNakes(mf.format(new Date(bulan)), idPegawai));
|
||||
pelayananNakes.addAll(pelayananNakesDao.findPelayananNakes(mf.format(new Date(bulan)), idPegawai));
|
||||
|
||||
pelayananNakes = pelayananNakes.stream().sorted(Comparator.comparing(o1 -> (Date) o1.get("tglPelayanan")))
|
||||
.sorted(Comparator.comparing(o2 -> o2.get("namaProduk").toString())).collect(Collectors.toList());
|
||||
|
||||
List<Integer> listIdProduk = new ArrayList<>();
|
||||
List<Double> listSkor = new ArrayList<>();
|
||||
List<String> listTglPelayanan = new ArrayList<>();
|
||||
for (Map<String, Object> map : pelayananNakes) {
|
||||
if (!listIdProduk.contains(map.get("produkId"))) {
|
||||
listIdProduk.add(Integer.parseInt(map.get("produkId").toString()));
|
||||
}
|
||||
if (!listSkor.contains(map.get("skor"))) {
|
||||
listSkor.add(Double.parseDouble(map.get("skor").toString()));
|
||||
}
|
||||
if (!listTglPelayanan.contains(df.format((Date) map.get("tglPelayanan")))) {
|
||||
listTglPelayanan.add(df.format((Date) map.get("tglPelayanan")));
|
||||
}
|
||||
}
|
||||
listTglPelayanan = listTglPelayanan.stream().sorted().collect(Collectors.toList());
|
||||
|
||||
// GROUPING_TANGGAL_PELAYANAN
|
||||
List<Map<String, Object>> dataTglPelayanan = new ArrayList<>();
|
||||
for (Integer idProduk : listIdProduk) {
|
||||
for (Double skor : listSkor) {
|
||||
for (String tglPelayanan : listTglPelayanan) {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
double jumlahTindakan = 0.0;
|
||||
double jumlahSkor = 0.0;
|
||||
for (Map<String, Object> mapLayanan : pelayananNakes) {
|
||||
if (idProduk.equals(mapLayanan.get("produkId")) && skor.equals(mapLayanan.get("skor"))
|
||||
&& tglPelayanan.equals(df.format((Date) mapLayanan.get("tglPelayanan")))) {
|
||||
jumlahTindakan += Double.valueOf(mapLayanan.get("jumlah").toString());
|
||||
jumlahSkor += Double.valueOf(mapLayanan.get("totalSkor").toString());
|
||||
data.putAll(mapLayanan);
|
||||
data.put("tglPelayanan", df.format(((Date) mapLayanan.get("tglPelayanan"))));
|
||||
}
|
||||
}
|
||||
if (CommonUtil.isNotNullOrEmpty(data)) {
|
||||
data.put("jumlah", jumlahTindakan);
|
||||
data.put("totalSkor", jumlahSkor);
|
||||
|
||||
dataTglPelayanan.add(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GROUPING_HEADER
|
||||
for (Integer idProduk : listIdProduk) {
|
||||
for (Double skor : listSkor) {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
List<Map<String, Object>> detail = new ArrayList<>();
|
||||
double jumlahTindakan = 0.0;
|
||||
double jumlahSkor = 0.0;
|
||||
for (Map<String, Object> mapLayanan : dataTglPelayanan) {
|
||||
if (idProduk.equals(mapLayanan.get("produkId")) && skor.equals(mapLayanan.get("skor"))) {
|
||||
jumlahTindakan += Double.valueOf(mapLayanan.get("jumlah").toString());
|
||||
jumlahSkor += Double.valueOf(mapLayanan.get("totalSkor").toString());
|
||||
|
||||
Map<String, Object> mapDetail = new HashMap<>();
|
||||
mapDetail.put("jumlah", mapLayanan.get("jumlah"));
|
||||
mapDetail.put("tglPelayanan", mapLayanan.get("tglPelayanan"));
|
||||
detail.add(mapDetail);
|
||||
|
||||
mapLayanan.remove("noRec");
|
||||
mapLayanan.remove("tglPelayanan");
|
||||
data.putAll(mapLayanan);
|
||||
}
|
||||
}
|
||||
if (CommonUtil.isNotNullOrEmpty(data)) {
|
||||
data.put("detail", detail);
|
||||
data.put("jumlah", jumlahTindakan);
|
||||
data.put("totalSkor", Double.parseDouble(decf.format(jumlahSkor)));
|
||||
|
||||
result.add(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findDetailLogbookNakes(Integer idPegawai, Integer idProduk, String tglPelayanan) {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
|
||||
result = pelayananPasienNakesDao.findPelayananNakesDetail(idPegawai, idProduk, tglPelayanan);
|
||||
if (CommonUtil.isNullOrEmpty(result)) {
|
||||
result = pelayananNakesDao.findPelayananNakesDetail(idPegawai, idProduk, tglPelayanan);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@ -2174,4 +2174,46 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/get-logbook-skoring-nakes", method = RequestMethod.GET)
|
||||
public ResponseEntity<List<Map<String, Object>>> getLogbookSkoringNakes(HttpServletRequest request,
|
||||
@RequestParam(value = "bulan", required = true) Long bulan,
|
||||
@RequestParam(value = "pegawaiId", required = true) Integer idPegawai) {
|
||||
try {
|
||||
List<Map<String, Object>> result = logbookKinerjaService.findLogbookNakes(idPegawai, bulan);
|
||||
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 logbook skoring 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 logbook skoring nakes lain", jse.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/get-detail-logbook-skoring-nakes", method = RequestMethod.GET)
|
||||
public ResponseEntity<List<Map<String, Object>>> getDetailLogbookSkoringNakes(HttpServletRequest request,
|
||||
@RequestParam(value = "pegawaiId", required = true) Integer idPegawai,
|
||||
@RequestParam(value = "produkId", required = true) Integer idProduk,
|
||||
@RequestParam(value = "tglPelayanan", required = true) String tglPelayanan) {
|
||||
try {
|
||||
List<Map<String, Object>> result = logbookKinerjaService.findDetailLogbookNakes(idPegawai, idProduk,
|
||||
tglPelayanan);
|
||||
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 detail logbook skoring 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 detail logbook skoring nakes lain", jse.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user