- penyesuaian monitoring presensi karena reverse geocoding too many request
- penambahan informasi unit kerja di menu mapping indikator kinerja ke jabatan - pembuatan validasi hapus master jabatan jika data sudah digunakan di data pegawai - pembuatan fungsi reverse geocoding manual trigger - perbaikan validasi duplikat data master jabatan jika edit
This commit is contained in:
parent
2c7eeb7bed
commit
edace95838
@ -72,8 +72,9 @@ public interface HabsenDao extends PagingAndSortingRepository<Habsen, Integer> {
|
||||
|
||||
@Query("select new Map(concat(absen.empl_code,'_',to_char(absen.tr_date,'yyyy-MM-dd'),'_',to_char(absen.tr_time,'HH24.MI.ss'),'#',absen.tr_no,'.jpg') as filePath,"
|
||||
+ "concat(to_char(absen.tr_date,'dd/MM/yyyy'),' ',to_char(absen.tr_time,'HH24:MI:ss')) as tanggal,"
|
||||
+ "absen.akurasi as akurasi,absen.lokasi as lokasi) " + "from Habsen absen "
|
||||
+ "where absen.tr_no in (:listTrNo) " + "and absen.loc_code = '99999' " + "and absen.remoteno = 99")
|
||||
+ "absen.latitude as lintang,absen.longitude as bujur,absen.akurasi as akurasi,"
|
||||
+ "absen.lokasi as lokasi) " + "from Habsen absen " + "where absen.tr_no in (:listTrNo) "
|
||||
+ "and absen.loc_code = '99999' " + "and absen.remoteno = 99")
|
||||
List<Map<String, Object>> getDetailPresensi(@Param("listTrNo") List<Integer> listTrNo);
|
||||
|
||||
String strQryHabsen = "select new Map(pg.id as id,pg.namaLengkap as namaLengkap,"
|
||||
|
||||
@ -27,9 +27,12 @@ public interface IndikatorKinerjaJabatanDao extends PagingAndSortingRepository<I
|
||||
+ "ikt.tanggalMulaiBerlaku desc,ikt.tanggalPembaharuanData desc")
|
||||
List<Map<String, Object>> findAllByJabatan(@Param("jabatanId") Integer idJabatan);
|
||||
|
||||
@Query("select new Map(jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan,"
|
||||
@Query("select new Map(uk.id as unitKerjaId,uk.name as unitKerja,"
|
||||
+ "jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan,"
|
||||
+ "jb.id as jabatanId,jb.namaJabatan as namaJabatan) " + "from Jabatan jb "
|
||||
+ "inner join jb.jenisJabatan jj " + "where jb.statusEnabled is true " + "order by jb.namaJabatan, jb.id")
|
||||
+ "inner join jb.jenisJabatan jj " + "inner join jb.unitKerja uk " + "where jb.statusEnabled is true "
|
||||
+ "and jj.statusEnabled is true " + "and uk.statusEnabled is true "
|
||||
+ "order by uk.name, jj.jenisJabatan, jb.namaJabatan")
|
||||
List<Map<String, Object>> findAllJabatan();
|
||||
|
||||
@Query("select new Map(jb.id as jabatanId," + "ikt.noRec as noRec," + "ikt.tanggalMulaiBerlaku as tglBerlaku,"
|
||||
|
||||
@ -439,4 +439,9 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository<MapPegaw
|
||||
@Query(strAksesPegawaiPenilai + sortUnitKerja)
|
||||
List<Map<String, Object>> findAksesPegawaiPenilai(@Param("pegawaiId") Integer idPegawai);
|
||||
|
||||
@Query("select new Map(mj.id as id," + "pg.id as pegawaiId,pg.namaLengkap as namaPegawai) "
|
||||
+ "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "where mj.statusEnabled is true "
|
||||
+ "and pg.statusEnabled is true " + "and mj.jabatanId = :jabatanId")
|
||||
List<Map<String, Object>> findPegawaiByJabatan(@Param("jabatanId") Integer idJabatan);
|
||||
|
||||
}
|
||||
|
||||
@ -20,4 +20,6 @@ public interface AbsensiPegawaiService {
|
||||
|
||||
List<Map<String, Object>> findDetailPresensi(List<Integer> listTrNo);
|
||||
|
||||
String findReverseGeocoding(Double latitude, Double longitude);
|
||||
|
||||
}
|
||||
|
||||
@ -3,6 +3,8 @@ package com.jasamedika.medifirst2000.service;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.orm.jpa.JpaSystemException;
|
||||
|
||||
import com.jasamedika.medifirst2000.entities.Jabatan;
|
||||
import com.jasamedika.medifirst2000.vo.JabatanVO;
|
||||
import com.jasamedika.medifirst2000.vo.KelompokJabatanVO;
|
||||
@ -31,4 +33,6 @@ public interface JabatanService extends BaseVoService<Jabatan, JabatanVO, Intege
|
||||
|
||||
List<Map<String, Object>> findJabatan(String namaJabatan, Integer idJenisJabatan, Integer idUnitKerja);
|
||||
|
||||
List<Map<String, Object>> findPegawaiByJabatan(Integer idJabatan) throws JpaSystemException;
|
||||
|
||||
}
|
||||
|
||||
@ -103,26 +103,35 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String findReverseGeocoding(Double latitude, Double longitude) {
|
||||
NominatimReverseGeocodingJAPI nominatim = new NominatimReverseGeocodingJAPI(18);
|
||||
|
||||
String result = "";
|
||||
if (CommonUtil.isNotNullOrEmpty(latitude) && CommonUtil.isNotNullOrEmpty(longitude)) {
|
||||
result = nominatim.getAdress(latitude, longitude).toString();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> saveHabsensiPegawai(HabsenVO vo) {
|
||||
Map<String, Object> result = new HashMap<String, Object>();
|
||||
NominatimReverseGeocodingJAPI nominatim = new NominatimReverseGeocodingJAPI(18);
|
||||
Habsen model = new Habsen();
|
||||
Date newDate = new Date();
|
||||
|
||||
String idFinger = pegawaiDao.getidFinger(vo.getPegawai().getId());
|
||||
|
||||
String displayName = "";
|
||||
if (CommonUtil.isNotNullOrEmpty(vo.getLatitude()) && CommonUtil.isNotNullOrEmpty(vo.getLongitude())) {
|
||||
displayName = nominatim.getAdress(vo.getLatitude(), vo.getLongitude()).toString();
|
||||
}
|
||||
|
||||
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);
|
||||
model.setLokasi(displayName);
|
||||
|
||||
// automatic reverse geocoding was disabled
|
||||
// due to too many request to nominatim.openstreetmap.org
|
||||
model.setLokasi(null);
|
||||
|
||||
model.setTr_date(newDate);
|
||||
model.setTr_time(newDate);
|
||||
|
||||
@ -202,6 +211,7 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse
|
||||
public List<Map<String, Object>> findDetailPresensi(List<Integer> listTrNo) {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
List<Map<String, Object>> data = habsensiDao.getDetailPresensi(listTrNo);
|
||||
|
||||
for (Map<String, Object> map : data) {
|
||||
Map<String, Object> mapRs = new HashMap<>();
|
||||
String imageURLData = "";
|
||||
@ -212,26 +222,36 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse
|
||||
}
|
||||
|
||||
if (CommonUtil.isNotNullOrEmpty(encodeRs) && CommonUtil.isNotNullOrEmpty(map.get("akurasi"))
|
||||
&& CommonUtil.isNotNullOrEmpty(map.get("lokasi"))) {
|
||||
&& CommonUtil.isNotNullOrEmpty(map.get("lintang"))
|
||||
&& CommonUtil.isNotNullOrEmpty(map.get("bujur"))) {
|
||||
mapRs.put("imageURLData", imageURLData);
|
||||
mapRs.put("date", map.get("tanggal"));
|
||||
mapRs.put("latitude", map.get("lintang"));
|
||||
mapRs.put("longitude", map.get("bujur"));
|
||||
mapRs.put("accuracy", map.get("akurasi").toString());
|
||||
mapRs.put("location", map.get("lokasi"));
|
||||
mapRs.put("location", map.get("lintang").toString() + ", " + map.get("bujur").toString());
|
||||
} else if (CommonUtil.isNullOrEmpty(encodeRs) && CommonUtil.isNotNullOrEmpty(map.get("akurasi"))
|
||||
&& CommonUtil.isNotNullOrEmpty(map.get("lokasi"))) {
|
||||
&& CommonUtil.isNotNullOrEmpty(map.get("lintang"))
|
||||
&& CommonUtil.isNotNullOrEmpty(map.get("bujur"))) {
|
||||
mapRs.put("imageURLData", "");
|
||||
mapRs.put("date", map.get("tanggal"));
|
||||
mapRs.put("latitude", map.get("lintang"));
|
||||
mapRs.put("longitude", map.get("bujur"));
|
||||
mapRs.put("accuracy", map.get("akurasi").toString());
|
||||
mapRs.put("location", map.get("lokasi"));
|
||||
mapRs.put("location", map.get("lintang").toString() + ", " + map.get("bujur").toString());
|
||||
} else if (CommonUtil.isNotNullOrEmpty(encodeRs) && CommonUtil.isNullOrEmpty(map.get("akurasi"))
|
||||
&& CommonUtil.isNullOrEmpty(map.get("lokasi"))) {
|
||||
&& CommonUtil.isNullOrEmpty(map.get("lintang")) && CommonUtil.isNullOrEmpty(map.get("bujur"))) {
|
||||
mapRs.put("imageURLData", imageURLData);
|
||||
mapRs.put("date", map.get("tanggal"));
|
||||
mapRs.put("latitude", "");
|
||||
mapRs.put("longitude", "");
|
||||
mapRs.put("accuracy", "");
|
||||
mapRs.put("location", "");
|
||||
} else {
|
||||
mapRs.put("imageURLData", "");
|
||||
mapRs.put("date", "");
|
||||
mapRs.put("latitude", "");
|
||||
mapRs.put("longitude", "");
|
||||
mapRs.put("accuracy", "");
|
||||
mapRs.put("location", "");
|
||||
}
|
||||
|
||||
@ -13,6 +13,8 @@ import org.springframework.stereotype.Service;
|
||||
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
|
||||
import com.jasamedika.medifirst2000.dao.JabatanDao;
|
||||
import com.jasamedika.medifirst2000.dao.KelompokJabatanDao;
|
||||
import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao;
|
||||
import com.jasamedika.medifirst2000.dao.SettingDataFixedDao;
|
||||
import com.jasamedika.medifirst2000.entities.Eselon;
|
||||
import com.jasamedika.medifirst2000.entities.Jabatan;
|
||||
import com.jasamedika.medifirst2000.entities.JenisJabatan;
|
||||
@ -56,6 +58,12 @@ public class JabatanServiceImpl extends BaseVoServiceImpl implements JabatanServ
|
||||
@Autowired
|
||||
private KelompokJabatanDao kelompokJabatanDao;
|
||||
|
||||
@Autowired
|
||||
private MapPegawaiJabatanToUnitKerjaDao mapPegawaiJabatanToUnitKerjaDao;
|
||||
|
||||
@Autowired
|
||||
private SettingDataFixedDao settingDataFixedDao;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> saveJabatanInternal(JabatanVO vo) {
|
||||
Map<String, Object> result = new HashMap<String, Object>();
|
||||
@ -287,7 +295,8 @@ public class JabatanServiceImpl extends BaseVoServiceImpl implements JabatanServ
|
||||
public Map<String, Object> validateNamaJabatan(Integer idJabatan, String namaJabatan, Integer idJenisJabatan) {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
String replacedNamaJabatan = namaJabatan.replaceAll("[^0-9a-zA-Z]", "").toLowerCase();
|
||||
String patternText = settingDataFixedDao.getSettingDataFixed("patternTextDuplicate");
|
||||
String replacedNamaJabatan = namaJabatan.replaceAll(patternText, "").toLowerCase();
|
||||
List<Map<String, Object>> listNamaJabatan = new ArrayList<>();
|
||||
if (CommonUtil.isNotNullOrEmpty(idJabatan)) {
|
||||
listNamaJabatan = jabatanDao.checkNamaJabatan(idJabatan, replacedNamaJabatan, idJenisJabatan);
|
||||
@ -335,4 +344,11 @@ public class JabatanServiceImpl extends BaseVoServiceImpl implements JabatanServ
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findPegawaiByJabatan(Integer idJabatan) throws JpaSystemException {
|
||||
List<Map<String, Object>> result = mapPegawaiJabatanToUnitKerjaDao.findPegawaiByJabatan(idJabatan);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@ -3,7 +3,6 @@ package com.jasamedika.medifirst2000.controller;
|
||||
import java.text.ParseException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -235,4 +234,22 @@ public class JabatanController extends LocaleController<JabatanVO> {
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/get-pegawai-jabatan", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<List<Map<String, Object>>> getPegawaiByJabatan(HttpServletRequest request,
|
||||
@RequestParam(value = "jabatanId", required = true) Integer idJabatan) {
|
||||
try {
|
||||
List<Map<String, Object>> result = jabatanService.findPegawaiByJabatan(idJabatan);
|
||||
|
||||
return RestUtil.getJsonResponse(result, HttpStatus.OK);
|
||||
} catch (ServiceVOException e) {
|
||||
LOGGER.error("Got exception {} when get pegawai jabatan", e.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, e.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage);
|
||||
} catch (JpaSystemException jse) {
|
||||
LOGGER.error("Got exception {} when get pegawai jabatan", jse.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2667,6 +2667,27 @@ public class SdmController extends LocaleController<AkunVO> {
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/get-reverse-geocoding", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<String> getReverseGeocoding(HttpServletRequest request,
|
||||
@RequestParam(value = "latitude", required = true) Double latitude,
|
||||
@RequestParam(value = "longitude", required = true) Double longitude) {
|
||||
try {
|
||||
String result = absensiPegawaiService.findReverseGeocoding(latitude, longitude);
|
||||
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 get reverse geocoding", e.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, e.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage);
|
||||
} catch (JpaSystemException jse) {
|
||||
LOGGER.error("Got exception {} when get reverse geocoding", jse.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/get-kehadiran/{idPegawai}/{startDate}/{endDate}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<Map<String, Object>> findKehadiran(@PathVariable("idPegawai") Integer idPegawai,
|
||||
@PathVariable("startDate") String startDate, @PathVariable("endDate") String endDate,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user