Update AbsensiPegawaiService

Perbaikan format dan storing data untuk log elasticsearch
This commit is contained in:
salmanoe 2022-07-13 07:19:11 +07:00
parent 8a3b285e17
commit 3e9d684dc3
7 changed files with 142 additions and 36 deletions

View File

@ -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;

View File

@ -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<HabsenVO, Habsen> {
@Override
public Habsen transferVOToModel(HabsenVO vo, Habsen model) {
if (null == model)
model = new Habsen();
try {
String[] fieldsToInclude = null;
Map<String, Object> 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<HabsenVO> transferListOfModelToListOfVO(List<Habsen> models, List<HabsenVO> vos) {
if (null == vos)
vos = new ArrayList<HabsenVO>();
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<String, Object> 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;
}
}

View File

@ -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<AbsensiPegawaiVO, AbsensiPegawai> absensiPegawaiConverter;
@Autowired
private BaseConverterImpl<HabsenVO, Habsen> 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<String, Object> saveAbsensiPegawai(AbsensiPegawaiVO vo) {
Map<String, Object> result = new HashMap<String, Object>();
@ -118,13 +123,12 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse
@Override
public Map<String, Object> saveHabsensiPegawai(HabsenVO vo) {
Map<String, Object> result = new HashMap<String, Object>();
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;
}

View File

@ -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<String, Object> jsonToMap(JSONObject json) throws JSONException {
Map<String, Object> retMap = new HashMap<String, Object>();
@ -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);

View File

@ -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;
}

View File

@ -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<br/>
* 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;
}

View File

@ -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<AkunVO> {
@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<Map<String, Object>> saveBerkasLamaran(@Valid @RequestBody CustomIndexKerjaVO vo,
HttpServletRequest request) throws ParseException {
@ -5616,12 +5612,9 @@ public class SdmController extends LocaleController<AkunVO> {
vo.setClientIPAddress(getClientIpAddress(request));
Map<String, Object> 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());