From 3e9d684dc3f3c86c0a307c9aa5a9d42cfa91a825 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Wed, 13 Jul 2022 07:19:11 +0700 Subject: [PATCH] Update AbsensiPegawaiService Perbaikan format dan storing data untuk log elasticsearch --- .../medifirst2000/constants/Master.java | 4 + .../converter/PresensiConverter.java | 73 +++++++++++++++++++ .../impl/AbsensiPegawaiServiceImpl.java | 24 ++++-- .../service/impl/LogAccServiceImpl.java | 16 +++- .../medifirst2000/entities/Habsen.java | 14 ++++ .../jasamedika/medifirst2000/vo/HabsenVO.java | 38 +++++----- .../controller/SdmController.java | 9 +-- 7 files changed, 142 insertions(+), 36 deletions(-) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/converter/PresensiConverter.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java index 026d95b0..ec6683de 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java @@ -234,6 +234,10 @@ public class Master { public static final Double PERSENTASE_TINDAKAN_PENUNJANG_BUKAN_ANASTESI = 30.0; public static final Double TARIF_REMUNERASI = 45000.0; } + + public static final class Logging { + public static final String PRESENSI_PEGAWAI = "logging-presensi-pegawai"; + } public static final class LoginUser { public static final int GENERATED_NEW_LOGIN = 1; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/converter/PresensiConverter.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/converter/PresensiConverter.java new file mode 100644 index 00000000..2ad23d3e --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/converter/PresensiConverter.java @@ -0,0 +1,73 @@ +package com.jasamedika.medifirst2000.converter; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.springframework.stereotype.Component; + +import com.google.gson.Gson; +import com.jasamedika.medifirst2000.converter.base.BaseVoConverter; +import com.jasamedika.medifirst2000.entities.Habsen; +import com.jasamedika.medifirst2000.vo.HabsenVO; + +/** + * @author salmanoe + * @since Jul 12, 2022 + * + */ +@Component +public class PresensiConverter implements BaseVoConverter { + + @Override + public Habsen transferVOToModel(HabsenVO vo, Habsen model) { + if (null == model) + model = new Habsen(); + try { + String[] fieldsToInclude = null; + Map serialized = vo.serialize(fieldsToInclude,vo.getClass().getName()); + Gson gson = new Gson(); + String json = gson.toJson(serialized); + model = gson.fromJson(json, Habsen.class); + } catch (Exception e) { + e.printStackTrace(); + } + return model; + } + + @Override + public List transferListOfModelToListOfVO(List models, List vos) { + if (null == vos) + vos = new ArrayList(); + + if (null == models) + return vos; + + for (Habsen habsen : models) { + HabsenVO vo = new HabsenVO(); + vo = transferModelToVO(habsen, vo); + vos.add(vo); + } + + return vos; + } + + @Override + public HabsenVO transferModelToVO(Habsen model, HabsenVO vo) { + if (null == vo) + vo = new HabsenVO(); + try { + String[] fieldsToInclude = null; + Map serialized = model.serialize(fieldsToInclude,model.getClass().getSimpleName()); + Gson gson = new Gson(); + String json = gson.toJson(serialized); + vo = gson.fromJson(json, HabsenVO.class); + } catch (Exception e) { + e.printStackTrace(); + } + + return vo; + } + + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/AbsensiPegawaiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/AbsensiPegawaiServiceImpl.java index 87ff6ebf..e1e53adc 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/AbsensiPegawaiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/AbsensiPegawaiServiceImpl.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Service; import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; +import com.jasamedika.medifirst2000.converter.PresensiConverter; import com.jasamedika.medifirst2000.dao.AbsensiPegawaiDao; import com.jasamedika.medifirst2000.dao.HabsenDao; import com.jasamedika.medifirst2000.dao.JadwalDokterDao; @@ -31,6 +32,7 @@ import com.jasamedika.medifirst2000.entities.Habsen; import com.jasamedika.medifirst2000.entities.JadwalDokter; import com.jasamedika.medifirst2000.entities.ShiftKerja; import com.jasamedika.medifirst2000.service.AbsensiPegawaiService; +import com.jasamedika.medifirst2000.service.LogAccService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.ImageUtil; import com.jasamedika.medifirst2000.vo.AbsensiPegawaiVO; @@ -52,7 +54,7 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse private BaseConverterImpl absensiPegawaiConverter; @Autowired - private BaseConverterImpl habsenConverter; + private PresensiConverter presensiConverter; @Autowired private AbsensiPegawaiDao absensiPegawaiDao; @@ -66,6 +68,9 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse @Autowired private JadwalDokterDao jadwalDokterDao; + @Autowired + private LogAccService logAccService; + @Override public Map saveAbsensiPegawai(AbsensiPegawaiVO vo) { Map result = new HashMap(); @@ -118,13 +123,12 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse @Override public Map saveHabsensiPegawai(HabsenVO vo) { Map result = new HashMap(); - Habsen model = new Habsen(); - Date newDate = new Date(); + + Habsen model = presensiConverter.transferVOToModel(vo, new Habsen()); String idFinger = pegawaiDao.getidFinger(vo.getPegawai().getId()); - - model = habsenConverter.transferVOToModel(vo, model); model.setEmpl_code(idFinger); + model.setLoc_code(Master.PresensiPegawai.SMART_LOC_CODE); model.setRemoteno(Master.PresensiPegawai.SMART_REMOTE_NO); model.setAcc_code(Master.PresensiPegawai.DEFAULT_ACC_CODE); @@ -135,8 +139,9 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse */ model.setLokasi(null); - model.setTr_date(newDate); - model.setTr_time(newDate); + Date now = new Date(); + model.setTr_date(now); + model.setTr_time(now); if (CommonUtil.isNotNullOrEmpty(vo.getIp_addr())) { model.setIp_addr(vo.getIp_addr()); @@ -155,6 +160,11 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse } } + HabsenVO resultVO = new HabsenVO(); + resultVO = presensiConverter.transferModelToVO(resultDomain, resultVO); + resultVO.setPegawai(vo.getPegawai()); + logAccService.putToLog(resultVO); + return result; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogAccServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogAccServiceImpl.java index 6de7f9c7..116181b0 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogAccServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogAccServiceImpl.java @@ -15,15 +15,21 @@ import java.util.Map; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import com.jasamedika.medifirst2000.constants.Master; +import com.jasamedika.medifirst2000.dao.SettingDataFixedDao; import com.jasamedika.medifirst2000.service.LogAccService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.vo.HabsenVO; @Service("logAccService") public class LogAccServiceImpl extends BaseVoServiceImpl implements LogAccService { - + + @Autowired + private static SettingDataFixedDao settingDataFixedDao; + public static Map jsonToMap(JSONObject json) throws JSONException { Map retMap = new HashMap(); @@ -69,7 +75,8 @@ public class LogAccServiceImpl extends BaseVoServiceImpl implements LogAccServic @Override public void putToLog(HabsenVO vo) { try { - URL url = new URL("http://172.16.55.22:38080/logs/absensi"); + String urlToString = settingDataFixedDao.getSettingDataFixed(Master.Logging.PRESENSI_PEGAWAI); + URL url = new URL(urlToString); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("PUT"); con.setRequestProperty("Content-Type", "application/json; utf-8"); @@ -77,8 +84,9 @@ public class LogAccServiceImpl extends BaseVoServiceImpl implements LogAccServic con.setDoOutput(true); OutputStream os = con.getOutputStream(); - String jsonOutputString = "{\"tr_no\":\"" + vo.getTr_no() + "\",\"empl_code\":" + vo.getEmpl_code() - + ",\"ip_addr\":" + vo.getIp_addr() + ",\"client_ip_addr\":" + vo.getClientIPAddress() + "\"}"; + String jsonOutputString = "{tr_no:" + vo.getTr_no() + ",empl_code:\"" + vo.getEmpl_code() + "\",ip_addr:\"" + + vo.getIp_addr() + "\",client_ip_addr:\"" + vo.getClientIPAddress() + "\"}"; + byte[] requestBody = jsonOutputString.getBytes("UTF-8"); os.write(requestBody, 0, requestBody.length); diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Habsen.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Habsen.java index c3caca17..828116fc 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Habsen.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Habsen.java @@ -18,6 +18,8 @@ import com.jasamedika.medifirst2000.helper.Caption; @Table(name = "Habsen") public class Habsen extends BaseModel { + private static final long serialVersionUID = 6197131414965211726L; + @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "native") @GenericGenerator(name = "native", strategy = "native") @@ -76,6 +78,10 @@ public class Habsen extends BaseModel { @Column(name = "lokasi", nullable = true, length = 1000) @Caption(value = "lokasi") private String lokasi; + + @Column(name = "image_url", nullable = true) + @Caption(value = "Image URL") + private byte[] imageUrl; @Column(name = "jenispresensi", nullable = true) @Caption(value = "Jenis Presensi") @@ -201,6 +207,14 @@ public class Habsen extends BaseModel { this.lokasi = lokasi; } + public byte[] getImageUrl() { + return imageUrl; + } + + public void setImageUrl(byte[] imageUrl) { + this.imageUrl = imageUrl; + } + public Integer getJenisPresensi() { return jenisPresensi; } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/HabsenVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/HabsenVO.java index 08b813c2..8d24f963 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/HabsenVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/HabsenVO.java @@ -2,10 +2,10 @@ package com.jasamedika.medifirst2000.vo; import java.util.Date; -import com.jasamedika.medifirst2000.base.vo.BaseMasterVO; +import com.jasamedika.medifirst2000.base.vo.BaseModelVO; import com.jasamedika.medifirst2000.helper.Caption; -public class HabsenVO extends BaseMasterVO { +public class HabsenVO extends BaseModelVO { @Caption(value = "tr_no") private Integer tr_no; @@ -21,8 +21,8 @@ public class HabsenVO extends BaseMasterVO { @Caption(value = "tr_time") private Date tr_time; - - @Caption(value = "pegawai") + + @Caption(value = "Pegawai") private PegawaiVO pegawai; @Caption(value = "empl_code") @@ -37,7 +37,7 @@ public class HabsenVO extends BaseMasterVO { @Caption(value = "ip_addr") private String ip_addr; - @Caption(value = "clientIPAddress") + @Caption(value = "client_ip_addr") private String clientIPAddress; @Caption(value = "latitude") @@ -52,13 +52,17 @@ public class HabsenVO extends BaseMasterVO { @Caption(value = "lokasi") private String lokasi; - @Caption(value = "jenispresensi") + @Caption(value = "Jenis Presensi") private Integer jenisPresensi; - - @Caption(value = "imageURLData") + + @Caption(value = "Image URL Data") private String imageURLData; - @Caption(value = "tag") + /** + * 0. Presensi keluar/pulang
+ * 1. Presensi masuk + */ + @Caption(value = "Tag") private Short tag; public Integer getTr_no() { @@ -101,14 +105,6 @@ public class HabsenVO extends BaseMasterVO { this.tr_time = tr_time; } - public String getEmpl_code() { - return empl_code; - } - - public void setEmpl_code(String empl_code) { - this.empl_code = empl_code; - } - public PegawaiVO getPegawai() { return pegawai; } @@ -117,6 +113,14 @@ public class HabsenVO extends BaseMasterVO { this.pegawai = pegawai; } + public String getEmpl_code() { + return empl_code; + } + + public void setEmpl_code(String empl_code) { + this.empl_code = empl_code; + } + public String getAcc_code() { return acc_code; } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java index 66957bc7..b4f9fb1d 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java @@ -78,7 +78,6 @@ import com.jasamedika.medifirst2000.service.KategoryTugasService; import com.jasamedika.medifirst2000.service.KedudukanService; import com.jasamedika.medifirst2000.service.KelompokKompetensiService; import com.jasamedika.medifirst2000.service.KompetensiService; -import com.jasamedika.medifirst2000.service.LogAccService; import com.jasamedika.medifirst2000.service.MapJabatanProfesiService; import com.jasamedika.medifirst2000.service.MappingPegawaiToAtasanService; import com.jasamedika.medifirst2000.service.MasterEvaluasiJabatanService; @@ -428,9 +427,6 @@ public class SdmController extends LocaleController { @Autowired private ProfesiService profesiService; - @Autowired - private LogAccService logService; - @RequestMapping(value = "/save-custom-uraian-kerja", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity> saveBerkasLamaran(@Valid @RequestBody CustomIndexKerjaVO vo, HttpServletRequest request) throws ParseException { @@ -5616,12 +5612,9 @@ public class SdmController extends LocaleController { vo.setClientIPAddress(getClientIpAddress(request)); Map result = absensiPegawaiService.saveHabsensiPegawai(vo); - if (null != result) { - logService.putToLog(vo); - + if (null != result) mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); - } return RestUtil.getJsonResponse(result, HttpStatus.CREATED, mapHeaderMessage); } catch (ServiceVOException e) { LOGGER.error("Got exception {} when save presensi pegawai", e.getMessage());