Compare commits

..

129 Commits

Author SHA1 Message Date
adesyawal
7d654f57aa Merge branch 'ade/bug-fixing/hapus-logbook' into prod/no-cron 2026-02-02 13:53:39 +07:00
adesyawal
fc5f8bdb45 Merge branch 'ade/monitoring-absensi/bug-fixing-absen-tunggal' into prod/no-cron 2026-01-18 09:49:00 +07:00
adesyawal
b775493a0c Merge branch 'ade/bug-remun/perbaikan-recursive-fixed-pay' into prod/no-cron 2026-01-08 09:59:40 +07:00
adesyawal
61b2daafb3 Merge branch 'ade/monitoring-absen/shift-pm3' into prod/no-cron 2026-01-06 13:24:28 +07:00
adesyawal
f4a55fa2cc Merge branch 'ade/monitor-absen/shift-pm2' into prod/no-cron 2026-01-06 09:36:22 +07:00
adesyawal
6066c6a5a3 Merge branch 'ade/monitor-absen/shift-pm' into prod/no-cron 2026-01-06 08:31:26 +07:00
adesyawal
4ff3045b21 Merge branch 'ade/monitoring/check-health4' into prod/no-cron 2025-12-31 13:43:04 +07:00
adesyawal
02a03bbc6c Merge branch 'ade/monitoring/check-health3' into prod/no-cron 2025-12-31 11:47:03 +07:00
adesyawal
00f6f37d3e Merge branch 'ade/monitoring/check-health2' into prod/no-cron 2025-12-31 11:39:21 +07:00
adesyawal
66afd01420 Merge branch 'ade/sdm-absensi/realisasi-absensi' into prod/no-cron 2025-12-29 10:00:25 +07:00
adesyawal
85bd2c95e7 Merge branch 'ade/logbook-tarif/penyesuainruangan70persen' into prod/no-cron 2025-12-02 13:08:50 +07:00
adesyawal
8a5b76f0ed Merge branch 'ade/logbook-tarif/ekslusi-dentalicious' into prod/no-cron 2025-11-28 15:26:35 +07:00
adesyawal
a7fb1e9a6e Merge branch 'ade/bug-fixing/master-shift-on-cuti' into prod/no-cron 2025-11-06 15:03:46 +07:00
adesyawal
d5aebe2d66 Merge branch 'ade/bug-fixing/level-unitkerja-direktur' into prod/no-cron 2025-10-27 14:32:17 +07:00
adesyawal
6aa395d55c Merge branch 'ade/mastershift-holidayservice-monitoringabsensi' into prod/no-cron 2025-10-22 08:32:47 +07:00
adesyawal
99b0f5df54 Merge branch 'ade/logbook/rekap-logbook-tarif' of https://git.rsabhk.co.id/salmanoe/SC-be-java into prod/no-cron 2025-10-03 22:03:23 +07:00
adesyawal
9b99394bfd Merge branch 'ade/bug-fixing/cuti-pegawai-baru' into prod/no-cron 2025-09-30 19:42:23 +07:00
adesyawal
53424dfb4b Merge branch 'ade/bug-fixing/intervensi-cuti' into prod/no-cron 2025-09-30 10:51:31 +07:00
adesyawal
461e592715 Merge branch 'dev-ade/sdm/intervensi-cuti' into prod/no-cron 2025-09-16 14:59:38 +07:00
adesyawal
cac102ddc6 Merge branch 'ade/bug-fixing/hak-akses-diskon-total' into prod/no-cron 2025-08-13 07:51:39 +07:00
adesyawal
eca2a08098 Merge branch 'dev/billing/diskonpegawai' into prod/no-cron 2025-06-18 08:53:18 +07:00
adesyawal
981fcd317a Merge branch 'sdm/remunerasi/bug-fixing-pelayan-findPelayananBedah' into prod/no-cron 2025-06-08 15:45:37 +07:00
adesyawal
9348eb7f61 Merge branch 'dev/sdm/remunerasi' into prod/no-cron 2025-06-07 04:10:02 +07:00
adesyawal
d36009567b Merge branch 'dev/remunerasi/bugfixingakumulasipersen' into prod/no-cron 2025-05-19 13:48:05 +07:00
adesyawal
90786f576d Merge branch 'dev/remunerasi/vinchia' into prod/no-cron 2025-04-09 11:24:46 +07:00
adesyawal
08d58716af Merge branch 'dev/pegawai/ws-example-ade-v2' into prod/no-cron 2025-03-21 12:46:20 +07:00
Salman Manoe
f7821dc975 Merge branch 'dev/reporting/kehadiran-bpk' into prod/no-cron 2025-03-19 11:00:15 +07:00
Salman Manoe
67b83c5f53 Merge branch 'dev/remun/persalinan-total-tarif' into prod/no-cron 2025-03-19 11:00:10 +07:00
Salman Manoe
2515501667 Merge branch 'dev/remun/persalinan-total-tarif' into prod/no-cron 2025-03-18 16:29:34 +07:00
Salman Manoe
217d95a3d0 Merge branch 'dev/kepegawaian/monitoring-presensi' into prod/no-cron 2025-03-17 13:57:57 +07:00
Salman Manoe
66a727d0bb Merge branch 'dev/remun/logbook-paruh-waktu' into prod/no-cron 2025-03-14 13:40:04 +07:00
Salman Manoe
e0c8841f23 Merge branch 'dev/remun/logbook-paruh-waktu' into prod/no-cron 2025-03-12 11:22:56 +07:00
Salman Manoe
6124533929 Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2025-03-11 13:51:08 +07:00
Salman Manoe
ed19402fc4 Merge branch 'dev/remun/fixed-pay-anestesi' into prod/no-cron 2025-03-06 08:47:13 +07:00
Salman Manoe
9a1eb9950d Merge branch 'dev/technical-debt/lombok-domain' into prod/no-cron 2025-03-04 11:23:35 +07:00
Salman Manoe
8e2a42826f Merge branch 'dev/kepegawaian/no-penugasan-klinis' into prod/no-cron 2025-03-04 09:27:32 +07:00
Salman Manoe
6e7c6a844e Merge branch 'dev/kepegawaian/kategori-pppk' into prod/no-cron 2025-03-04 07:18:28 +07:00
Salman Manoe
f1de3ae3e7 Merge branch 'dev/kepegawaian/nim-ppds' into prod/no-cron 2025-03-04 07:18:22 +07:00
Salman Manoe
aab95d203c Merge branch 'dev/technical-debt/lombok-domain' into prod/no-cron 2025-03-04 07:18:15 +07:00
Salman Manoe
b872d18aee Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2025-02-27 13:23:19 +07:00
Salman Manoe
adc645dcd6 Merge branch 'dev/kepegawaian/golongan-pppk' into prod/no-cron 2025-02-26 15:04:09 +07:00
Salman Manoe
893dd186f0 Merge branch 'dev/technical-debt/lombok-domain' into prod/no-cron 2025-02-26 10:31:31 +07:00
Salman Manoe
1f0f46f4f0 Merge branch 'dev/kepegawaian/golongan-pppk' into prod/no-cron 2025-02-26 10:31:24 +07:00
Salman Manoe
229a1ab207 Merge branch 'dev/kepegawaian/golongan-pppk' into prod/no-cron 2025-02-22 14:19:22 +07:00
Salman Manoe
eb9ee4bf15 Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2025-02-17 14:21:28 +07:00
Salman Manoe
7b55611a77 Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2025-02-14 16:31:36 +07:00
Salman Manoe
728f866219 Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2025-02-14 14:40:59 +07:00
Salman Manoe
916392cc2e Merge branch 'dev/master/data-fix' into prod/no-cron 2025-02-13 13:44:55 +07:00
Salman Manoe
edbda895aa Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2025-02-13 13:43:30 +07:00
Salman Manoe
77cea5e73e Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2025-02-05 14:16:31 +07:00
Salman Manoe
06725931ef Merge branch 'dev/pegawai/dokter-mitra' into prod/no-cron 2025-02-03 11:59:32 +07:00
Salman Manoe
b26eca13c3 Merge remote-tracking branch 'origin/dev/pegawai/dokter-mitra' into prod/no-cron 2025-02-03 09:48:37 +07:00
Salman Manoe
cc9cea7097 Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2025-02-03 09:47:40 +07:00
Salman Manoe
e0c801bb81 Merge branch 'dev/pegawai/presensi' into prod/no-cron 2025-02-03 09:47:27 +07:00
Salman Manoe
69d43f67e7 Merge branch 'dev/pegawai/cuti' into prod/no-cron 2025-02-03 09:47:13 +07:00
Salman Manoe
9d17418de7 Merge branch 'dev/pegawai/peserta-didik' into prod/no-cron 2025-02-03 09:47:06 +07:00
Salman Manoe
7b1764ac68 Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2025-01-17 17:11:52 +07:00
Salman Manoe
05cd99cd84 Merge branch 'dev/pegawai/presensi' into prod/no-cron 2025-01-03 14:12:51 +07:00
Salman Manoe
3e1186e568 Merge branch 'dev/pegawai/presensi' into prod/no-cron 2025-01-03 10:27:29 +07:00
Salman Manoe
f3132971e4 Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2025-01-02 11:12:11 +07:00
Salman Manoe
0ebb89756b Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2024-12-31 22:44:21 +07:00
Salman Manoe
8e99f3913c Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2024-12-31 11:33:02 +07:00
Salman Manoe
439f365f1b Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2024-12-19 08:11:15 +07:00
Salman Manoe
7af3521e59 Merge branch 'dev/verif-remun/log' into prod/no-cron 2024-12-02 14:20:56 +07:00
Salman Manoe
d2d7b44463 Merge branch 'dev/remun/exclude-dokter-luar' into prod/no-cron 2024-12-02 14:20:48 +07:00
Salman Manoe
0454a03546 Merge branch 'dev/pegawai/jadwal-kerja' into prod/no-cron 2024-11-20 14:49:40 +07:00
Salman Manoe
8fbd28fbd9 Merge branch 'dev/paket/validasi-voucher' into prod/no-cron 2024-11-18 13:34:38 +07:00
Salman Manoe
c425dd6a6d Merge branch 'dev/pegawai/presensi/compreface' into prod/no-cron 2024-11-11 18:41:52 +07:00
Salman Manoe
da3aebc9e0 Merge branch 'dev/remun/kinerja/hapus' into prod/no-cron 2024-11-11 11:38:55 +07:00
Salman Manoe
557b43ab26 Merge branch 'dev/report/konsultasi-kosong' into prod/no-cron 2024-11-01 10:51:57 +07:00
Salman Manoe
85447f5a88 Merge branch 'dev/pelayanan/operasi-elektif' into prod/no-cron 2024-10-30 14:39:26 +07:00
Salman Manoe
00c3da63ed Merge branch 'dev/remun/kontrak' into prod/no-cron 2024-10-30 10:18:23 +07:00
Salman Manoe
183376472c Merge branch 'dev/logbook/terapis' into prod/no-cron 2024-10-30 10:18:11 +07:00
Salman Manoe
2feacd8459 Merge branch 'dev/remun/logbook/rekap' into prod/no-cron 2024-10-21 08:59:28 +07:00
Salman Manoe
db45c927bb Merge branch 'dev/logbook/diskon' into prod/no-cron 2024-10-07 14:42:59 +07:00
Salman Manoe
9ac1983f2b Merge branch 'dev/integrasi/superapp' into prod/no-cron 2024-09-02 10:27:05 +07:00
Salman Manoe
34d47239d9 Merge branch 'dev/auth/ketua-komite' into prod/no-cron 2024-08-23 14:43:52 +07:00
Salman Manoe
21713798b6 Merge branch 'dev/auth/ketua-komite' into prod/no-cron 2024-08-22 14:40:25 +07:00
Salman Manoe
f600bd510e Merge branch 'dev/security/login' into prod/no-cron 2024-08-22 10:55:47 +07:00
Salman Manoe
2b7b244959 Merge branch 'dev/etl/pasien' into prod/no-cron 2024-08-20 10:08:52 +07:00
Salman Manoe
6846183176 Clean branch
Remove konfigurasi scheduler untuk round robin rilis tanpa cron job
2024-08-07 10:27:29 +07:00
Salman Manoe
a69dfbd67d Merge branch 'dev/etl/pasien' into prod/no-cron 2024-08-07 10:05:00 +07:00
Salman Manoe
5138607ca6 Merge branch 'dev/remun/logbook' into prod/no-cron 2024-08-05 10:44:08 +07:00
Salman Manoe
1ebb192353 Merge branch 'dev/remun/logbook' into prod/no-cron 2024-08-01 14:07:05 +07:00
Salman Manoe
29a9c5df6e Merge branch 'dev/remun/logbook-dokter' into prod/no-cron 2024-07-16 08:21:08 +07:00
Salman Manoe
fdcfbcea02 Merge branch 'dev/integrasi/superapp' into prod/no-cron 2024-07-03 13:20:43 +07:00
Salman Manoe
c2410a19b4 Merge branch 'dev/integrasi/superapp' into prod/no-cron 2024-07-03 11:38:44 +07:00
Salman Manoe
db074662ed Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2024-06-27 11:47:51 +07:00
Salman Manoe
443a6c46d5 Merge branch 'dev/remun/logbook-tarif' into prod/no-cron 2024-06-25 08:44:09 +07:00
Salman Manoe
5e0da8a200 Merge branch 'dev/remun/android-logbook' into prod/no-cron 2024-06-07 13:57:58 +07:00
Salman Manoe
c1078a11e3 Merge branch 'dev/remun/logbook-dg-jam-kerja' into prod/no-cron 2024-05-31 16:11:35 +07:00
Salman Manoe
6ab631d4f0 Merge branch 'dev/remun/rekap-logbook' into prod/no-cron 2024-05-31 08:57:26 +07:00
Salman Manoe
45b64c32bb Merge branch 'dev/remun/logbook-nonjkn-dg-jam' into prod/no-cron 2024-05-28 09:05:12 +07:00
Salman Manoe
c0cf1e3f22 Merge branch 'dev/remun/logbook-nonjkn-dg-jam' into prod/no-cron 2024-05-27 13:46:17 +07:00
Salman Manoe
0ee57d072b Merge branch 'dev/kepegawaian/cetak-cuti' into prod/no-cron 2024-05-14 13:24:29 +07:00
Salman Manoe
8ee1745ce2 Merge branch 'dev/remun/amarilys' into prod/no-cron 2024-05-13 14:28:24 +07:00
Salman Manoe
6054dbbd1f Merge branch 'dev/remun/detail-logbook' into prod/no-cron 2024-04-24 12:54:21 +07:00
Salman Manoe
154b83d670 Merge branch 'dev/remun/konkin-magang' into prod/no-cron 2024-04-23 14:59:37 +07:00
Salman Manoe
d166e76d1e Merge branch 'dev/remun/paket/nonjkn' into prod/no-cron 2024-04-23 10:24:21 +07:00
Salman Manoe
de2558da88 Merge branch 'dev/ddl' into prod/no-cron 2024-04-23 10:22:49 +07:00
Salman Manoe
6259818c54 Merge branch 'dev/remun/kontrak' into prod/no-cron 2024-03-28 08:21:41 +07:00
Salman Manoe
4aa2aa8be7 Merge branch 'dev/remun/diskon-dokter' into prod/no-cron 2024-03-26 13:59:02 +07:00
Salman Manoe
8665455fcd Merge branch 'dev/cetakan/cuti' into prod/no-cron 2024-03-26 08:34:18 +07:00
Salman Manoe
e461e4d3f9 Merge branch 'dev/ddl' into prod/no-cron 2024-03-25 14:23:21 +07:00
Salman Manoe
37ab15387f Merge branch 'dev/cetak/pelimpahan-tugas' into prod/no-cron 2024-03-22 10:11:36 +07:00
Salman Manoe
ab19c4f8aa Merge branch 'dev/remun/proporsi-dokter' into prod/no-cron 2024-03-19 11:55:59 +07:00
Salman Manoe
8c11648f73 Merge branch 'dev/master/unit-kerja' into prod/no-cron 2024-03-19 11:53:48 +07:00
Salman Manoe
8a96897e43 Merge branch 'dev/ddl' into prod/no-cron 2024-03-19 07:33:17 +07:00
Salman Manoe
1c70e23b9e Merge branch 'dev/remun/mapping-produk-fixed-pay' into prod/no-cron 2024-03-13 11:08:55 +07:00
Salman Manoe
394b4c9491 Merge branch 'dev/ddl' into prod/no-cron 2024-03-13 11:06:59 +07:00
Salman Manoe
94bf7ce91d Merge branch 'dev/pegawai/tmt-str' into prod/no-cron 2024-02-26 10:49:19 +07:00
Salman Manoe
f675b5ef5c Update web.xml 2024-02-21 12:51:19 +07:00
Salman Manoe
59e11a4281 Merge branch 'dev/pegawai/slip-gaji' into prod/no-cron 2024-02-21 10:00:19 +07:00
Salman Manoe
b8e02cf455 Merge branch 'dev/pegawai/tmt-str' into prod/no-cron 2024-02-20 13:15:42 +07:00
Salman Manoe
cddd3ce8aa Merge branch 'dev/pegawai/slip-gaji' into prod/no-cron 2024-02-20 08:27:44 +07:00
Salman Manoe
fdc64e1a64 Merge remote-tracking branch 'origin/dev/pegawai/tmt-str' into prod/no-cron 2024-02-20 08:27:13 +07:00
Salman Manoe
6b52bcaa8d Merge branch 'dev/pegawai/slip-gaji' into prod/no-cron 2024-02-19 17:40:34 +07:00
Salman Manoe
e1b4d1d2fc Merge branch 'dev/ddl' into prod/no-cron 2024-02-19 17:40:14 +07:00
Salman Manoe
b26fc737f8 Merge branch 'master' into prod-deploy 2024-02-13 14:36:13 +07:00
Salman Manoe
a5664ae550 Merge branch 'master' into prod-deploy 2024-02-01 20:30:32 +07:00
Salman Manoe
cc5ebc507f Merge branch 'master' into prod-deploy 2024-01-30 14:35:24 +07:00
Salman Manoe
542b30edc4 Merge branch 'master' into prod-deploy 2024-01-26 09:17:56 +07:00
Salman Manoe
3b57982de3 Merge branch 'master' into prod-deploy 2024-01-15 09:42:32 +07:00
Salman Manoe
502cc894af Merge branch 'master' into prod-deploy 2024-01-09 14:54:07 +07:00
Salman Manoe
efbd607ab5 Merge branch 'master' into prod-deploy 2023-12-26 03:10:19 +07:00
Salman Manoe
093f27df32 Merge branch 'master' into prod-deploy 2023-12-21 22:05:11 +07:00
Salman Manoe
dacddf98ec Merge branch 'master' into prod-deploy 2023-12-07 11:19:05 +07:00
Salman Manoe
9483ad3e54 Merge branch 'master' into prod-deploy 2023-12-01 10:24:00 +07:00
Salman Manoe
b61706ee5e Remove cron tasks 2023-11-29 14:45:05 +07:00
8 changed files with 0 additions and 601 deletions

View File

@ -1,69 +0,0 @@
package com.jasamedika.medifirst2000.task.schedule;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jasamedika.medifirst2000.service.MigrasiPasienService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.net.URI;
import java.net.URISyntaxException;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.jasamedika.medifirst2000.task.schedule.config.HeaderHandler.getHttpHeaders;
import static org.springframework.http.HttpMethod.GET;
/**
* @author salmanoe
* @version 1.0.0
* @since 11/10/2023
*/
@Component
public class MigrasiPasienTask {
private static final Logger LOGGER = LoggerFactory.getLogger(MigrasiPasienTask.class);
@Autowired
private RestTemplate restTemplate;
@Autowired
private ObjectMapper objectMapper;
@Autowired
private MigrasiPasienService migrasiPasienService;
@Value("${app.etl.migrasi.pasien}")
String baseUrl;
@Scheduled(cron = "0 0 18 * * ?")
public void newMigrate() {
LOGGER.info("Task MigrasiPasienTask.newMigrate {}", LocalDateTime.now());
migrasiPasienService.newMigrate();
}
@Scheduled(cron = "0 0 0 * * ?")
public void setStatusTerkirim() throws URISyntaxException {
LOGGER.info("Task MigrasiPasienTask.setStatusTerkirim {}", LocalDateTime.now());
URI uri = new URI(baseUrl + "/no-rekam-medis");
HttpEntity<Object> entity = new HttpEntity<>(null, getHttpHeaders());
ResponseEntity<Object> exchange = restTemplate.exchange(uri, GET, entity, Object.class);
if (CommonUtil.isNotNullOrEmpty(exchange.getBody())) {
Map<String, Object> dto = objectMapper.convertValue(exchange.getBody(), HashMap.class);
if (CommonUtil.isNotNullOrEmpty(dto) && CommonUtil.isNotNullOrEmpty(dto.get("response"))) {
List<String> noRekamMedisList = objectMapper.convertValue(dto.get("response"), List.class);
migrasiPasienService.setStatus(noRekamMedisList);
}
}
}
}

View File

@ -1,24 +0,0 @@
package com.jasamedika.medifirst2000.task.schedule.config;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import java.util.Collections;
import static org.springframework.http.MediaType.APPLICATION_JSON;
/**
* @author Salman
* @version 1.0.0
* @since 29/07/2024
*/
@Component
public class HeaderHandler {
public static HttpHeaders getHttpHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(APPLICATION_JSON));
headers.setContentType(APPLICATION_JSON);
return headers;
}
}

View File

@ -1,38 +0,0 @@
package com.jasamedika.medifirst2000.task.schedule.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.web.client.RestTemplate;
/**
* @author Salman
* @since 12 Jul 2023
*/
@Configuration
@EnableScheduling
@ComponentScan("com.jasamedika.medifirst2000.task")
public class ScheduleTaskConfig {
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(50);
threadPoolTaskScheduler.setThreadNamePrefix("BridgingThreadPoolTaskScheduler");
return threadPoolTaskScheduler;
}
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

View File

@ -1,214 +0,0 @@
package com.jasamedika.medifirst2000.task.schedule;
import com.jasamedika.medifirst2000.dao.*;
import com.jasamedika.medifirst2000.entities.KelompokPasien;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.RekapLogbookDokter;
import com.jasamedika.medifirst2000.service.LogbookRemunService;
import com.jasamedika.medifirst2000.service.PelayananPasienService;
import com.jasamedika.medifirst2000.service.RekapLogbookDokterService;
import com.jasamedika.medifirst2000.service.RemunerasiService;
import com.jasamedika.medifirst2000.util.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.YearMonth;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* @author salmanoe
* @version 1.0.0
* @since 07/11/2023
*/
@Component
public class LogbookTask {
private static final Logger LOGGER = LoggerFactory.getLogger(LogbookTask.class);
@Autowired
private PelayananPasienPetugasDao pelayananPasienPetugasDao;
@Autowired
private RekapLogbookDokterDao rekapLogbookDokterDao;
@Autowired
private PelayananPasienService pelayananPasienService;
@Autowired
private RemunerasiService remunerasiService;
@Autowired
private RekapLogbookDokterService rekapLogbookDokterService;
@Autowired
private LogbookRemunService logbookRemunService;
@Scheduled(cron = "0 0 0 1-6 * ?")
public void saveRekapLogbookDokter() {
LOGGER.info("Start simpan rekapitulasi logbook dokter");
LocalDate localDate = LocalDate.now().minusMonths(1);
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
Date tglAwal = DateUtil.startMonth(date);
Date tglAkhir = DateUtil.endMonth(date);
{
// Delete untuk pembaharuan data
rekapLogbookDokterService.deleteByPeriod(tglAwal, tglAkhir);
}
Set<Integer> idPegawaiByTglPelayanan = pelayananPasienPetugasDao.findPegawaiByTglPelayanan(tglAwal, tglAkhir);
DateFormat df = new SimpleDateFormat("yyyy-MM");
String bulan = df.format(date);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
YearMonth oct24 = YearMonth.parse("2024-10", formatter);
YearMonth month = YearMonth.parse(bulan, formatter);
List<RekapLogbookDokter> models = new ArrayList<>();
idPegawaiByTglPelayanan.forEach(idPegawai -> {
{
Map<String, Object> kinerjaDokter;
if (month.isBefore(oct24)) {
kinerjaDokter = pelayananPasienService.logbookRemunTarifDokter(idPegawai, bulan, null);
} else {
kinerjaDokter = remunerasiService.logbookRemunTarifDokter(idPegawai, bulan, null);
}
List<Map<String, Object>> remun = (List<Map<String, Object>>) kinerjaDokter.get("data");
List<Integer> listIdKelompokPasien = new ArrayList<>();
remun.forEach(r -> {
if (!listIdKelompokPasien.contains(Integer.parseInt(r.get("idKelompokPasien").toString())))
listIdKelompokPasien.add(Integer.parseInt(r.get("idKelompokPasien").toString()));
});
listIdKelompokPasien.forEach(idKelompokPasien -> {
double jumlah = remun.stream().filter(r -> idKelompokPasien.equals(r.get("idKelompokPasien")))
.mapToDouble(r -> Double.parseDouble(r.get("jumlah").toString())).sum();
double hargaJasa = remun.stream().filter(r -> idKelompokPasien.equals(r.get("idKelompokPasien")))
.mapToDouble(r -> Double.parseDouble(r.get("jumlahHargaJasa").toString())).sum();
RekapLogbookDokter rekapLogbookDokter = new RekapLogbookDokter();
rekapLogbookDokter.setKdProfile((short) 0);
rekapLogbookDokter.setStatusEnabled(true);
Pegawai pegawai = new Pegawai();
pegawai.setId(idPegawai);
rekapLogbookDokter.setPegawai(pegawai);
rekapLogbookDokter.setJenisLogbook("JKN");
KelompokPasien kelompokPasien = new KelompokPasien();
kelompokPasien.setId(idKelompokPasien);
rekapLogbookDokter.setKelompokPasien(kelompokPasien);
rekapLogbookDokter.setBulan(date);
rekapLogbookDokter.setJumlah(jumlah);
rekapLogbookDokter.setCapaian(hargaJasa);
models.add(rekapLogbookDokter);
});
}
{
List<Map<String, Object>> ffs;
if (month.isBefore(oct24)) {
ffs = pelayananPasienService.logbookFfsTarifDokter(idPegawai, bulan, null);
} else {
ffs = remunerasiService.logbookFfsTarifDokter(idPegawai, bulan, null);
}
List<String> listJenisRuangan = new ArrayList<>();
List<Integer> listIdKelompokPasien = new ArrayList<>();
ffs.forEach(r -> {
if (!listJenisRuangan.contains(r.get("jenisRuangan").toString()))
listJenisRuangan.add(r.get("jenisRuangan").toString());
if (!listIdKelompokPasien.contains(Integer.parseInt(r.get("idKelompokPasien").toString())))
listIdKelompokPasien.add(Integer.parseInt(r.get("idKelompokPasien").toString()));
});
listJenisRuangan.forEach(jenisRuangan -> listIdKelompokPasien.forEach(idKelompokPasien -> {
double jumlah = ffs.stream()
.filter(r -> jenisRuangan.equals(r.get("jenisRuangan"))
&& idKelompokPasien.equals(r.get("idKelompokPasien")))
.mapToDouble(r -> Double.parseDouble(r.get("jumlah").toString())).sum();
double hargaJasa = ffs.stream()
.filter(r -> jenisRuangan.equals(r.get("jenisRuangan"))
&& idKelompokPasien.equals(r.get("idKelompokPasien")))
.mapToDouble(r -> Double.parseDouble(r.get("jumlahHargaJasa").toString())).sum();
RekapLogbookDokter rekapLogbookDokter = new RekapLogbookDokter();
rekapLogbookDokter.setKdProfile((short) 0);
rekapLogbookDokter.setStatusEnabled(true);
Pegawai pegawai = new Pegawai();
pegawai.setId(idPegawai);
rekapLogbookDokter.setPegawai(pegawai);
rekapLogbookDokter.setJenisLogbook("NON_JKN");
rekapLogbookDokter.setJenisRuangan(jenisRuangan);
KelompokPasien kelompokPasien = new KelompokPasien();
kelompokPasien.setId(idKelompokPasien);
rekapLogbookDokter.setKelompokPasien(kelompokPasien);
rekapLogbookDokter.setBulan(date);
rekapLogbookDokter.setJumlah(jumlah);
rekapLogbookDokter.setCapaian(hargaJasa);
models.add(rekapLogbookDokter);
}));
}
{
List<Map<String, Object>> fixedPay;
if (month.isBefore(oct24)) {
fixedPay = pelayananPasienService.logbookFixedPayDokter(idPegawai, bulan, null);
} else {
fixedPay = remunerasiService.logbookFixedPayDokter(idPegawai, bulan, null);
}
List<String> listJenisRuangan = new ArrayList<>();
List<Integer> listIdKelompokPasien = new ArrayList<>();
List<String> listBulanIbuPulangRanap = new ArrayList<>();
fixedPay.forEach(r -> {
if (!listJenisRuangan.contains(r.get("jenisRuangan").toString()))
listJenisRuangan.add(r.get("jenisRuangan").toString());
if (!listIdKelompokPasien.contains(Integer.parseInt(r.get("idKelompokPasien").toString())))
listIdKelompokPasien.add(Integer.parseInt(r.get("idKelompokPasien").toString()));
if (!listBulanIbuPulangRanap.contains(r.get("bulanPulangIbu").toString()))
listBulanIbuPulangRanap.add(r.get("bulanPulangIbu").toString());
});
listJenisRuangan.forEach(jenisRuangan -> listIdKelompokPasien
.forEach(idKelompokPasien -> listBulanIbuPulangRanap.forEach(bulanIbuPulangRanap -> {
double jumlah = fixedPay.stream()
.filter(r -> jenisRuangan.equals(r.get("jenisRuangan"))
&& idKelompokPasien.equals(r.get("idKelompokPasien"))
&& bulanIbuPulangRanap.equals(r.get("bulanPulangIbu")))
.mapToDouble(r -> Double.parseDouble(r.get("jumlah").toString())).sum();
double hargaJasa = fixedPay.stream()
.filter(r -> jenisRuangan.equals(r.get("jenisRuangan"))
&& idKelompokPasien.equals(r.get("idKelompokPasien"))
&& bulanIbuPulangRanap.equals(r.get("bulanPulangIbu")))
.mapToDouble(r -> Double.parseDouble(r.get("jumlahHargaJasa").toString())).sum();
RekapLogbookDokter rekapLogbookDokter = new RekapLogbookDokter();
rekapLogbookDokter.setKdProfile((short) 0);
rekapLogbookDokter.setStatusEnabled(true);
Pegawai pegawai = new Pegawai();
pegawai.setId(idPegawai);
rekapLogbookDokter.setPegawai(pegawai);
rekapLogbookDokter.setJenisLogbook("FIXED_PAY");
rekapLogbookDokter.setJenisRuangan(jenisRuangan);
KelompokPasien kelompokPasien = new KelompokPasien();
kelompokPasien.setId(idKelompokPasien);
rekapLogbookDokter.setKelompokPasien(kelompokPasien);
rekapLogbookDokter.setBulanPulangIbu(bulanIbuPulangRanap);
rekapLogbookDokter.setBulan(date);
rekapLogbookDokter.setJumlah(jumlah);
rekapLogbookDokter.setCapaian(hargaJasa);
models.add(rekapLogbookDokter);
})));
}
});
rekapLogbookDokterDao.save(models);
LOGGER.info("Simpan rekapitulasi logbook dokter berhasil...!");
}
/*
@Scheduled(cron = "0 0 0 1-6 * ?")
public void saveRekapDetailLogbookDokter() {
logbookRemunService.generateRecap();
}
*/
@Scheduled(cron = "0 15 0 4-5 * ?")
public void saveRekapDetailLogbookDokter() {
logbookRemunService.generateRecap(null);
}
}

View File

@ -1,135 +0,0 @@
package com.jasamedika.medifirst2000.task.schedule;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.dto.PesertaBpjsDto;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.util.CommonUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import java.net.URI;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import static org.springframework.http.HttpMethod.GET;
import static org.springframework.http.HttpStatus.CREATED;
import static org.springframework.http.HttpStatus.OK;
/**
* @author salmanoe
* @version 1.0.0
* @since 11/10/2023
*/
@Component
public class PasienTask {
private static final Logger LOGGER = LoggerFactory.getLogger(PasienTask.class);
@Autowired
private ObjectMapper objectMapper;
@Autowired
private RestTemplate restTemplate;
@Autowired
private PasienDao pasienDao;
@Scheduled(cron = "0 0 0 * * *")
public void nikPesertaBpjs() {
LOGGER.info("Task PasienTask.nikPesertaBpjs {}", LocalDateTime.now());
adjustNikPesertaBpjs();
}
@Transactional
private void adjustNikPesertaBpjs() {
LOGGER.info("Adjusting NIK Peserta BPJS {}", LocalDateTime.now());
List<PesertaBpjsDto> listDtoUpdate = new ArrayList<>();
List<PesertaBpjsDto> listDtoNotUpdate = new ArrayList<>();
List<Pasien> pasienValidBpjs = pasienDao.findByValidBpjs();
for (Pasien pasien : pasienValidBpjs) {
try {
PesertaBpjsDto pesertaBpjsDto = cekKepesertaan(pasien.getNoBpjs());
if (pesertaBpjsDto.getKdProfile() == 0)
listDtoUpdate.add(pesertaBpjsDto);
if (pesertaBpjsDto.getKdProfile() == 1)
listDtoNotUpdate.add(pesertaBpjsDto);
Thread.sleep((long) (Math.random() * 1000 * 8));
} catch (Exception e) {
LOGGER.error("Error adjusting NIK Peserta BPJS {} -> {}", pasien.getNoBpjs(), e.getMessage());
}
}
{
List<String> listNoKartu = listDtoUpdate.stream().map(PesertaBpjsDto::getNoKartu)
.collect(Collectors.toList());
List<Pasien> availableValid = pasienValidBpjs.stream()
.filter(pasien -> listNoKartu.contains(pasien.getNoBpjs())).collect(Collectors.toList());
availableValid.forEach(pasien -> {
Optional<PesertaBpjsDto> first = listDtoUpdate.stream()
.filter(dto -> pasien.getNoBpjs().equals(dto.getNoKartu())).findFirst();
first.ifPresent(dto -> {
pasien.setKdProfile(dto.getKdProfile());
pasien.setNoIdentitas(dto.getNik());
});
});
if (CommonUtil.isNotNullOrEmpty(availableValid)) {
LOGGER.info("Save available valid data");
pasienDao.save(availableValid);
}
}
{
List<String> listNoKartu = listDtoNotUpdate.stream().map(PesertaBpjsDto::getNoKartu)
.collect(Collectors.toList());
List<Pasien> availableValid = pasienValidBpjs.stream()
.filter(pasien -> listNoKartu.contains(pasien.getNoBpjs())).collect(Collectors.toList());
availableValid.forEach(pasien -> {
Optional<PesertaBpjsDto> first = listDtoNotUpdate.stream()
.filter(dto -> pasien.getNoBpjs().equals(dto.getNoKartu())).findFirst();
first.ifPresent(dto -> pasien.setKdProfile(dto.getKdProfile()));
});
if (CommonUtil.isNotNullOrEmpty(availableValid)) {
LOGGER.info("Flag kdProfile can not update");
pasienDao.save(availableValid);
}
}
}
private PesertaBpjsDto cekKepesertaan(String noKartu) {
try {
LOGGER.info("Cek kepesertaan BPJS {} {}", noKartu, LocalDateTime.now());
URI uri = new URI("https://daftar.rsabhk.co.id/api/data/pasien/jaminan/bpjs/cek-kepesertaan/" + noKartu);
HttpEntity<Object> request = new HttpEntity<>(null);
ResponseEntity<Object> response = restTemplate.exchange(uri, GET, request, Object.class);
if (OK.equals(response.getStatusCode()) || CREATED.equals(response.getStatusCode())) {
Map<String, Object> responseBody = objectMapper.convertValue(response.getBody(), Map.class);
Map<String, Object> responseMap = objectMapper.convertValue(responseBody.get("response"),
HashMap.class);
Map<String, Object> responsePeserta = objectMapper.convertValue(responseMap.get("peserta"),
HashMap.class);
return PesertaBpjsDto.builder().noKartu(responsePeserta.get("noKartu").toString())
.nik(responsePeserta.get("nik").toString()).kdProfile((short) 0).build();
} else {
LOGGER.error("Error handshake cek kepesertaan BPJS {}", response.getStatusCode().getReasonPhrase());
return PesertaBpjsDto.builder().noKartu(noKartu).kdProfile((short) 1).build();
}
} catch (Exception e) {
LOGGER.error("Error cek kepesertaan BPJS {}", e.getMessage());
return PesertaBpjsDto.builder().noKartu(noKartu).kdProfile((short) 1).build();
}
}
}

View File

@ -1,39 +0,0 @@
package com.jasamedika.medifirst2000.task.schedule.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.web.client.RestTemplate;
/**
* @author Salman
* @since 12 Jul 2023
*/
@Configuration
@EnableScheduling
@ComponentScan("com.jasamedika.medifirst2000.task")
public class ScheduleTaskConfig {
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(75);
threadPoolTaskScheduler.setThreadNamePrefix("PelayananThreadPoolTaskScheduler");
return threadPoolTaskScheduler;
}
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

View File

@ -1,55 +0,0 @@
package com.jasamedika.medifirst2000.task.schedule;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.jasamedika.medifirst2000.service.KalenderService;
import com.jasamedika.medifirst2000.service.PegawaiJadwalKerjaService;
import com.jasamedika.medifirst2000.service.SlipGajiService;
/**
* @author Salman
* @since 12 Jul 2023
*/
@Component
public class ScheduleTask {
private static final Logger LOGGER = LoggerFactory.getLogger(ScheduleTask.class);
@Autowired
private KalenderService kalenderService;
@Autowired
private PegawaiJadwalKerjaService pegawaiJadwalKerjaService;
@Autowired
private SlipGajiService slipGajiService;
@Scheduled(cron = "0 0 23 30 6 ?")
public void generateKalender() {
LOGGER.info("Generate kalender tahun {}",
LocalDate.now().plusYears(1).format(DateTimeFormatter.ofPattern("yyyy")));
kalenderService.generateAndSaveKalender();
}
@Scheduled(cron = "0 0 0 1 * ?")
public void genarateJadwalPegawaiNonShift() {
LOGGER.info("Generate jadwal pegawai bulan {}", LocalDate.now().format(DateTimeFormatter.ofPattern("MM-yyyy")));
pegawaiJadwalKerjaService.autoSaveJadwalKerjaNonShift();
}
@Scheduled(cron = "0 0 0 1 * ?")
public void templateSlipGajiTask() {
LOGGER.info("Initiate template slip gaji bulan {}",
LocalDate.now().format(DateTimeFormatter.ofPattern("MM-yyyy")));
slipGajiService.init();
}
}

View File

@ -1,27 +0,0 @@
package com.jasamedika.medifirst2000.task.schedule.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
/**
* @author Salman
* @since 12 Jul 2023
*/
@Configuration
@EnableScheduling
@ComponentScan("com.jasamedika.medifirst2000.task")
public class ScheduleTaskConfig {
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(5);
threadPoolTaskScheduler.setThreadNamePrefix("SdmThreadPoolTaskScheduler");
return threadPoolTaskScheduler;
}
}