Update service log verif catatan kinerja

Pembuatan fitur pencarian log catatan kinerja
This commit is contained in:
Salman Manoe 2024-11-12 16:56:37 +07:00
parent 174e53b3d5
commit a8047605bc
5 changed files with 193 additions and 25 deletions

View File

@ -7,6 +7,8 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.Date;
/**
* @author salmanoe
* @version 1.0.0
@ -15,17 +17,115 @@ import org.springframework.data.repository.query.Param;
public interface LogbookKinerjaDetailLogDao extends JpaRepository<LogbookKinerjaDetailLog, String> {
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm "
+ "inner join lk.pegawai pg " + "inner join log.pegawai ats "
+ "where lower(ikm.namaIndikator) like %:querySearch% " + "or lower(lkd.namaKegiatan) like %:querySearch% "
+ "or to_char(lkd.tanggalKegiatan, 'yyyy') like %:querySearch% "
+ "or to_char(lkd.tanggalKegiatan, 'MM/yyyy') like %:querySearch% "
+ "or to_char(lkd.tanggalKegiatan, 'dd/MM/yyyy') like %:querySearch% "
+ "or lower(pg.namaLengkap) like %:querySearch% " + "or lower(log.jenisLog) like %:querySearch% "
+ "or to_char(log.tanggalDibuat, 'yyyy') like %:querySearch% "
+ "or to_char(log.tanggalDibuat, 'MM/yyyy') like %:querySearch% "
+ "or to_char(log.tanggalDibuat, 'dd/MM/yyyy') like %:querySearch% "
+ "or lower(ats.nipPns) like %:querySearch% " + "or lower(ats.namaLengkap) like %:querySearch%")
Page<LogbookKinerjaDetailLog> findBySearchQuery(@Param("querySearch") String querySearch, Pageable pageable);
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% "
+ "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchIndikator(@Param("indikator") String indikator, Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(lkd.namaKegiatan) like %:kegiatan% "
+ "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchKegiatan(@Param("kegiatan") String kegiatan, Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lkd.tanggalKegiatan between :startDate and :endDate "
+ "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchTanggal(@Param("startDate") Date startDate,
@Param("endDate") Date endDate, Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(pg.namaLengkap) like %:pegawai% "
+ "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchPegawai(@Param("pegawai") String pegawai, Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% "
+ "and lower(lkd.namaKegiatan) like %:kegiatan% " + "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchIndikatorKegiatan(@Param("indikator") String indikator,
@Param("kegiatan") String kegiatan, Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% "
+ "and lkd.tanggalKegiatan between :startDate and :endDate " + "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchIndikatorTanggal(@Param("indikator") String indikator,
@Param("startDate") Date startDate, @Param("endDate") Date endDate, Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% "
+ "and lower(pg.namaLengkap) like %:pegawai% " + "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchIndikatorPegawai(@Param("indikator") String indikator,
@Param("pegawai") String pegawai, Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(lkd.namaKegiatan) like %:kegiatan% "
+ "and lkd.tanggalKegiatan between :startDate and :endDate " + "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchKegiatanTanggal(@Param("kegiatan") String kegiatan,
@Param("startDate") Date startDate, @Param("endDate") Date endDate, Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(lkd.namaKegiatan) like %:kegiatan% "
+ "and lower(pg.namaLengkap) like %:pegawai% " + "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchKegiatanPegawai(@Param("kegiatan") String kegiatan,
@Param("pegawai") String pegawai, Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lkd.tanggalKegiatan between :startDate and :endDate "
+ "and lower(pg.namaLengkap) like %:pegawai% " + "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchTanggalPegawai(@Param("startDate") Date startDate,
@Param("endDate") Date endDate, @Param("pegawai") String pegawai, Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% "
+ "and lower(lkd.namaKegiatan) like %:kegiatan% "
+ "and lkd.tanggalKegiatan between :startDate and :endDate " + "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchIndikatorKegiatanTanggal(@Param("indikator") String indikator,
@Param("kegiatan") String kegiatan, @Param("startDate") Date startDate, @Param("endDate") Date endDate,
Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% "
+ "and lkd.tanggalKegiatan between :startDate and :endDate " + "and lower(pg.namaLengkap) like %:pegawai% "
+ "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchIndikatorTanggalPegawai(@Param("indikator") String indikator,
@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("pegawai") String pegawai,
Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% "
+ "and lower(lkd.namaKegiatan) like %:kegiatan% " + "and lower(pg.namaLengkap) like %:pegawai% "
+ "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchIndikatorKegiatanPegawai(@Param("indikator") String indikator,
@Param("kegiatan") String kegiatan, @Param("pegawai") String pegawai, Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(lkd.namaKegiatan) like %:kegiatan% "
+ "and lkd.tanggalKegiatan between :startDate and :endDate " + "and lower(pg.namaLengkap) like %:pegawai% "
+ "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchKegiatanTanggalPegawai(@Param("kegiatan") String kegiatan,
@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("pegawai") String pegawai,
Pageable pageable);
@Query("select log from LogbookKinerjaDetailLog log " + "inner join log.catatanKinerja lkd "
+ "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "inner join lk.pegawai pg "
+ "inner join log.pegawai ats " + "where lower(ikm.namaIndikator) like %:indikator% "
+ "and lower(lkd.namaKegiatan) like %:kegiatan% "
+ "and lkd.tanggalKegiatan between :startDate and :endDate " + "and lower(pg.namaLengkap) like %:pegawai% "
+ "order by log.tanggalDibuat asc")
Page<LogbookKinerjaDetailLog> findBySearchIndikatorKegiatanTanggalPegawai(@Param("indikator") String indikator,
@Param("kegiatan") String kegiatan, @Param("startDate") Date startDate, @Param("endDate") Date endDate,
@Param("pegawai") String pegawai, Pageable pageable);
}

View File

@ -14,6 +14,7 @@ public interface LogbookKinerjaDetailLogService {
void save(LogbookKinerjaDetailLogReqDto dto);
Page<LogbookKinerjaDetailLogDto> list(Pageable pageable);
Page<LogbookKinerjaDetailLogDto> search(String indikator, String kegiatan, Long tglAwalKegiatan,
Long tglAkhirKegiatan, String pegawai, Pageable pageable);
}

View File

@ -10,6 +10,7 @@ import com.jasamedika.medifirst2000.entities.LogbookKinerjaDetailLog;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.service.LogbookKinerjaDetailLogService;
import com.jasamedika.medifirst2000.service.LoginUserService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO;
import com.jasamedika.medifirst2000.vo.PegawaiVO;
import org.springframework.beans.factory.annotation.Autowired;
@ -67,8 +68,64 @@ public class LogbookKinerjaDetailLogServiceImpl implements LogbookKinerjaDetailL
}
@Override
public Page<LogbookKinerjaDetailLogDto> list(Pageable pageable) {
Page<LogbookKinerjaDetailLog> logPage = logbookKinerjaDetailLogDao.findAll(pageable);
public Page<LogbookKinerjaDetailLogDto> search(String indikator, String kegiatan, Long tglAwalKegiatan,
Long tglAkhirKegiatan, String pegawai, Pageable pageable) {
Page<LogbookKinerjaDetailLog> logPage;
if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(kegiatan)
&& CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan)
&& CommonUtil.isNotNullOrEmpty(pegawai)) {
logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorKegiatanTanggalPegawai(indikator.toLowerCase(),
kegiatan.toLowerCase(), new Date(tglAwalKegiatan), new Date(tglAkhirKegiatan),
pegawai.toLowerCase(), pageable);
} else if (CommonUtil.isNotNullOrEmpty(kegiatan) && CommonUtil.isNotNullOrEmpty(tglAwalKegiatan)
&& CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan) && CommonUtil.isNotNullOrEmpty(pegawai)) {
logPage = logbookKinerjaDetailLogDao.findBySearchKegiatanTanggalPegawai(kegiatan.toLowerCase(),
new Date(tglAwalKegiatan), new Date(tglAkhirKegiatan), pegawai.toLowerCase(), pageable);
} else if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(kegiatan)
&& CommonUtil.isNotNullOrEmpty(pegawai)) {
logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorKegiatanPegawai(indikator.toLowerCase(),
kegiatan.toLowerCase(), pegawai.toLowerCase(), pageable);
} else if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(tglAwalKegiatan)
&& CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan) && CommonUtil.isNotNullOrEmpty(pegawai)) {
logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorTanggalPegawai(indikator.toLowerCase(),
new Date(tglAwalKegiatan), new Date(tglAkhirKegiatan), pegawai.toLowerCase(), pageable);
} else if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(kegiatan)
&& CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan)) {
logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorKegiatanTanggal(indikator.toLowerCase(),
kegiatan.toLowerCase(), new Date(tglAwalKegiatan), new Date(tglAkhirKegiatan), pageable);
} else if (CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan)
&& CommonUtil.isNotNullOrEmpty(pegawai)) {
logPage = logbookKinerjaDetailLogDao.findBySearchTanggalPegawai(new Date(tglAwalKegiatan),
new Date(tglAkhirKegiatan), pegawai.toLowerCase(), pageable);
} else if (CommonUtil.isNotNullOrEmpty(kegiatan) && CommonUtil.isNotNullOrEmpty(pegawai)) {
logPage = logbookKinerjaDetailLogDao.findBySearchKegiatanPegawai(kegiatan.toLowerCase(),
pegawai.toLowerCase(), pageable);
} else if (CommonUtil.isNotNullOrEmpty(kegiatan) && CommonUtil.isNotNullOrEmpty(tglAwalKegiatan)
&& CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan)) {
logPage = logbookKinerjaDetailLogDao.findBySearchKegiatanTanggal(kegiatan.toLowerCase(),
new Date(tglAwalKegiatan), new Date(tglAkhirKegiatan), pageable);
} else if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(pegawai)) {
logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorPegawai(indikator.toLowerCase(),
pegawai.toLowerCase(), pageable);
} else if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(tglAwalKegiatan)
&& CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan)) {
logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorTanggal(indikator.toLowerCase(),
new Date(tglAwalKegiatan), new Date(tglAkhirKegiatan), pageable);
} else if (CommonUtil.isNotNullOrEmpty(indikator) && CommonUtil.isNotNullOrEmpty(kegiatan)) {
logPage = logbookKinerjaDetailLogDao.findBySearchIndikatorKegiatan(indikator.toLowerCase(),
kegiatan.toLowerCase(), pageable);
} else if (CommonUtil.isNotNullOrEmpty(pegawai)) {
logPage = logbookKinerjaDetailLogDao.findBySearchPegawai(pegawai.toLowerCase(), pageable);
} else if (CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan)) {
logPage = logbookKinerjaDetailLogDao.findBySearchTanggal(new Date(tglAwalKegiatan),
new Date(tglAkhirKegiatan), pageable);
} else if (CommonUtil.isNotNullOrEmpty(kegiatan)) {
logPage = logbookKinerjaDetailLogDao.findBySearchKegiatan(kegiatan.toLowerCase(), pageable);
} else if (CommonUtil.isNotNullOrEmpty(indikator)) {
logPage = logbookKinerjaDetailLogDao.findBySearchIndikator(indikator.toLowerCase(), pageable);
} else {
logPage = logbookKinerjaDetailLogDao.findAll(pageable);
}
List<LogbookKinerjaDetailLogDto> dtoList = new ArrayList<>();
logPage.getContent().forEach(log -> {
LogbookKinerjaDetailLogDto.LogbookKinerjaDetailLogDtoBuilder dtoBuilder = LogbookKinerjaDetailLogDto

View File

@ -6,8 +6,8 @@ import com.jasamedika.medifirst2000.constants.Master;
import com.jasamedika.medifirst2000.converter.PegawaiConverter;
import com.jasamedika.medifirst2000.dao.*;
import com.jasamedika.medifirst2000.dao.custom.PegawaiDaoCustom;
import com.jasamedika.medifirst2000.dto.compreface.request.FaceSubjectReq;
import com.jasamedika.medifirst2000.dto.PegawaiDto;
import com.jasamedika.medifirst2000.dto.compreface.request.FaceSubjectReq;
import com.jasamedika.medifirst2000.dto.compreface.response.FaceSubjectRes;
import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
@ -36,7 +36,9 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.http.*;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.orm.jpa.JpaSystemException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@ -51,7 +53,6 @@ import java.util.*;
import static org.springframework.http.HttpMethod.GET;
import static org.springframework.http.HttpMethod.POST;
import static org.springframework.http.HttpStatus.CREATED;
import static org.springframework.http.HttpStatus.OK;
import static org.springframework.http.MediaType.APPLICATION_JSON;
@ -65,9 +66,6 @@ public class PegawaiServiceImpl extends BaseVoServiceImpl implements PegawaiServ
private static final Logger log = LoggerFactory.getLogger(PegawaiServiceImpl.class);
@Autowired
private ObjectMapper objectMapper;
@Value("${systemDirectory}")
String systemDirectory;
@ -2398,7 +2396,7 @@ public class PegawaiServiceImpl extends BaseVoServiceImpl implements PegawaiServ
listLabelDokter.forEach(s -> {
try {
FaceSubjectReq dto = FaceSubjectReq.builder().subject(s).build();
JSONObject jsonObject = new JSONObject(objectMapper.writeValueAsString(dto));
JSONObject jsonObject = new JSONObject(new ObjectMapper().writeValueAsString(dto));
HttpEntity<Object> httpEntity = new HttpEntity<>(jsonObject.toString(), headers);
ResponseEntity<FaceSubjectReq> exchange = template.exchange(uri, POST, httpEntity,
FaceSubjectReq.class);
@ -2427,7 +2425,7 @@ public class PegawaiServiceImpl extends BaseVoServiceImpl implements PegawaiServ
ResponseEntity<Object> response = template.exchange(uri, GET, httpEntity, Object.class);
if (CommonUtil.isNotNullOrEmpty(response.getBody())) {
if (OK.equals(response.getStatusCode())) {
return objectMapper.convertValue(response.getBody(), FaceSubjectRes.class);
return new ObjectMapper().convertValue(response.getBody(), FaceSubjectRes.class);
} else {
log.error(response.getBody().toString());
return null;

View File

@ -2858,10 +2858,22 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
@RequestMapping(value = "/catatan-kinerja/logs", method = GET)
public ResponseEntity<Page<LogbookKinerjaDetailLogDto>> logsKinerja(HttpServletRequest request,
@RequestParam(value = "page") int page, @RequestParam(value = "size") int size) {
@RequestParam(value = "indikator", required = false) String indikator,
@RequestParam(value = "kegiatan", required = false) String kegiatan,
@RequestParam(value = "tgl_awal_kegiatan", required = false) String tglAwalKegiatan,
@RequestParam(value = "tgl_akhir_kegiatan", required = false) String tglAkhirKegiatan,
@RequestParam(value = "pegawai", required = false) String pegawai, @RequestParam(value = "page") int page,
@RequestParam(value = "size") int size) {
try {
Pageable pageable = new PageRequest(page, size);
Page<LogbookKinerjaDetailLogDto> dtoPage = logbookLogService.list(pageable);
Long startDate = null;
Long endDate = null;
if (CommonUtil.isNotNullOrEmpty(tglAwalKegiatan) && CommonUtil.isNotNullOrEmpty(tglAkhirKegiatan)) {
startDate = Long.parseLong(tglAwalKegiatan);
endDate = Long.parseLong(tglAkhirKegiatan);
}
Page<LogbookKinerjaDetailLogDto> dtoPage = logbookLogService.search(indikator, kegiatan, startDate,
endDate, pegawai, pageable);
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
return RestUtil.getJsonResponse(dtoPage, HttpStatus.OK, mapHeaderMessage);