- perbaikan service get nilai batas terendah dan tertinggi di evaluasi jabatan

- perbaikan format lintang bujur saat pengecekan swafoto dan lokasi presensi
This commit is contained in:
salmanoe 2021-04-14 21:55:07 +07:00
parent edace95838
commit 050fdcc0e3
6 changed files with 134 additions and 19 deletions

View File

@ -147,6 +147,10 @@ public class Master {
public static final Integer NONKELAS = 6;
}
public static final class KelompokJabatan {
public static final Integer[] RANGE_REMUN = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
}
public static final class KelompokPasien {
public static final Integer BPJS = 2;
public static final Integer UMUM = 1;

View File

@ -72,9 +72,12 @@ public interface JabatanDao extends PagingAndSortingRepository<Jabatan, Integer>
String strJabatan = "select new Map(jb.id as id,jb.namaJabatan as namaJabatan,"
+ "jb.levelJabatan as levelJabatan,jb.subLevelJabatan as levelDireksi,"
+ "jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan," + "uk.id as unitKerjaId,uk.name as unitKerja,"
+ "el.id as eselonId,el.eselon as eselon) " + "from Jabatan jb " + "inner join jb.jenisJabatan jj "
+ "inner join jb.unitKerja uk " + "left join jb.eselon el with el.statusEnabled is true "
+ "where jb.statusEnabled is true " + "and jj.statusEnabled is true " + "and uk.statusEnabled is true";
+ "el.id as eselonId,el.eselon as eselon,"
+ "kj.id as kelompokJabatanId,kj.namaKelompokJabatan as kelompokJabatan) " + "from Jabatan jb "
+ "inner join jb.jenisJabatan jj " + "inner join jb.unitKerja uk "
+ "left join jb.eselon el with el.statusEnabled is true "
+ "left join jb.kelompokJabatan kj with kj.id between 1 and 10 " + "where jb.statusEnabled is true "
+ "and jj.statusEnabled is true " + "and uk.statusEnabled is true";
String namaJabatan = " and lower(jb.namaJabatan) like %:namaJabatan%";
@ -112,4 +115,17 @@ public interface JabatanDao extends PagingAndSortingRepository<Jabatan, Integer>
List<Map<String, Object>> findJabatanByNamaJenisUnit(@Param("namaJabatan") String namaJabatan,
@Param("jenisJabatanId") Integer idJenisJabatan, @Param("unitKerjaId") Integer idUnitKerja);
@Query("select new Map(jb.id as id,jb.namaJabatan as namaJabatan," + "jb.kelompokJabatanId as kelompokJabatanId) "
+ "from Jabatan jb " + "where jb.statusEnabled is true " + "and jb.unitKerjaId = :unitKerjaId "
+ "and jb.jenisJabatanId = :jenisJabatanId " + "group by jb.id, jb.namaJabatan "
+ "order by jb.namaJabatan")
List<Map<String, Object>> findJabatan(@Param("jenisJabatanId") Integer idJenisJabatan,
@Param("unitKerjaId") Integer idUnitKerja);
@Query("select new Map(nj.kelompokJabatanId as kelompokJabatanId," + "min(nj.nilaiTerendah) as nilaiTerendah,"
+ "max(nj.nilaiTertinggi) as nilaiTertinggi) " + "from NilaiKelompokJabatan nj "
+ "where nj.statusEnabled is true " + "and nj.kelompokJabatanId in (:listKelompokJabatanId) "
+ "group by nj.kelompokJabatanId " + "order by min(nj.nilaiTerendah)")
List<Map<String, Object>> findPeringkatJabatan(@Param("listKelompokJabatanId") List<Integer> listIdKelompokJabatan);
}

View File

@ -35,4 +35,7 @@ public interface JabatanService extends BaseVoService<Jabatan, JabatanVO, Intege
List<Map<String, Object>> findPegawaiByJabatan(Integer idJabatan) throws JpaSystemException;
List<Map<String, Object>> findJabatanDanBatasNilai(Integer idJenisJabatan, Integer idUnitKerja)
throws JpaSystemException;
}

View File

@ -6,6 +6,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
@ -127,11 +128,11 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse
model.setLoc_code(Master.PresensiPegawai.SMART_LOC_CODE);
model.setRemoteno(Master.PresensiPegawai.SMART_REMOTE_NO);
model.setAcc_code(Master.PresensiPegawai.DEFAULT_ACC_CODE);
// 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);
@ -207,6 +208,48 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse
}
private Double getDecimal(Double n) {
return n - Math.floor(n);
}
private String getCoordinateFormatted(Double latitude, Double longitude) {
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(0);
String latDegStr = nf.format(Math.floor(Math.abs(latitude)));
String latMinStr = nf.format(Math.floor(getDecimal(Math.abs(latitude)) * 60));
nf.setMaximumFractionDigits(2);
String latSecStr = nf.format(getDecimal(getDecimal(Math.abs(latitude)) * 60) * 60);
String latStr = "";
if (latitude < 0) {
latStr = latDegStr + "\u00B0" + latMinStr + "\u2032" + latSecStr + "\u2033 LS";
} else if (latitude > 0) {
latStr = latDegStr + "\u00B0" + latMinStr + "\u2032" + latSecStr + "\u2033 LU";
} else {
latStr = latDegStr + "\u00B0" + latMinStr + "\u2032" + latSecStr + "\u2033";
}
nf.setMaximumFractionDigits(0);
String longDegStr = nf.format(Math.floor(Math.abs(longitude)));
String longMinStr = nf.format(Math.floor(getDecimal(Math.abs(longitude)) * 60));
nf.setMaximumFractionDigits(2);
String longSecStr = nf.format(getDecimal(getDecimal(Math.abs(longitude)) * 60) * 60);
String longStr = "";
if (longitude < 0) {
longStr = longDegStr + "\u00B0" + longMinStr + "\u2032" + longSecStr + "\u2033 BB";
} else if (longitude > 0) {
longStr = longDegStr + "\u00B0" + longMinStr + "\u2032" + longSecStr + "\u2033 BT";
} else {
longStr = longDegStr + "\u00B0" + longMinStr + "\u2032" + longSecStr + "\u2033";
}
return latStr + ", " + longStr;
}
@Override
public List<Map<String, Object>> findDetailPresensi(List<Integer> listTrNo) {
List<Map<String, Object>> result = new ArrayList<>();
@ -224,12 +267,14 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse
if (CommonUtil.isNotNullOrEmpty(encodeRs) && CommonUtil.isNotNullOrEmpty(map.get("akurasi"))
&& 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("lintang").toString() + ", " + map.get("bujur").toString());
mapRs.put("location", getCoordinateFormatted(Double.valueOf(map.get("lintang").toString()),
Double.valueOf(map.get("bujur").toString())));
} else if (CommonUtil.isNullOrEmpty(encodeRs) && CommonUtil.isNotNullOrEmpty(map.get("akurasi"))
&& CommonUtil.isNotNullOrEmpty(map.get("lintang"))
&& CommonUtil.isNotNullOrEmpty(map.get("bujur"))) {
@ -238,7 +283,8 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse
mapRs.put("latitude", map.get("lintang"));
mapRs.put("longitude", map.get("bujur"));
mapRs.put("accuracy", map.get("akurasi").toString());
mapRs.put("location", map.get("lintang").toString() + ", " + map.get("bujur").toString());
mapRs.put("location", getCoordinateFormatted(Double.valueOf(map.get("lintang").toString()),
Double.valueOf(map.get("bujur").toString())));
} else if (CommonUtil.isNotNullOrEmpty(encodeRs) && CommonUtil.isNullOrEmpty(map.get("akurasi"))
&& CommonUtil.isNullOrEmpty(map.get("lintang")) && CommonUtil.isNullOrEmpty(map.get("bujur"))) {
mapRs.put("imageURLData", imageURLData);

View File

@ -1,6 +1,7 @@
package com.jasamedika.medifirst2000.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -10,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.jpa.JpaSystemException;
import org.springframework.stereotype.Service;
import com.jasamedika.medifirst2000.constants.Master;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.JabatanDao;
import com.jasamedika.medifirst2000.dao.KelompokJabatanDao;
@ -85,20 +87,18 @@ public class JabatanServiceImpl extends BaseVoServiceImpl implements JabatanServ
public JabatanVO add(JabatanVO vo) throws JpaSystemException, ServiceVOException {
Jabatan jabatan = jabatanConverter.transferVOToModel(vo, new Jabatan());
JenisJabatan jenisJabatan = jenisJabatanConverter.transferVOToModel(vo.getJenisJabatan(), new JenisJabatan());
UnitKerjaPegawai unitKerja = unitKerjaConverter.transferVOToModel(vo.getUnitKerja(), new UnitKerjaPegawai());
JenisJabatan jenisJabatan = jenisJabatanConverter.transferVOToModel(vo.getJenisJabatan(), new JenisJabatan());
KelompokJabatan kelompokJabatan = kelompokJabatanConverter.transferVOToModel(vo.getKelompokJabatan(),
new KelompokJabatan());
if (CommonUtil.isNotNullOrEmpty(vo.getKelompokJabatan())) {
KelompokJabatan kelompokJabatan = kelompokJabatanConverter.transferVOToModel(vo.getKelompokJabatan(),
new KelompokJabatan());
jabatan.setKelompokJabatan(kelompokJabatan);
}
if (CommonUtil.isNotNullOrEmpty(vo.getEselon())) {
Eselon eselon = eselonConverter.transferVOToModel(vo.getEselon(), new Eselon());
jabatan.setEselon(eselon);
}
jabatan.setUnitKerja(unitKerja);
jabatan.setJenisJabatan(jenisJabatan);
jabatan.setKelompokJabatan(kelompokJabatan);
Jabatan resultModel = jabatanDao.save(jabatan);
JabatanVO resultVO = new JabatanVO();
@ -112,14 +112,11 @@ public class JabatanServiceImpl extends BaseVoServiceImpl implements JabatanServ
Jabatan jabatanLama = jabatanDao.findOne(vo.getId());
Jabatan jabatanBaru = jabatanConverter.transferVOToModel(vo, jabatanLama);
JenisJabatan jenisJabatan = jenisJabatanConverter.transferVOToModel(vo.getJenisJabatan(), new JenisJabatan());
UnitKerjaPegawai unitKerja = unitKerjaConverter.transferVOToModel(vo.getUnitKerja(), new UnitKerjaPegawai());
JenisJabatan jenisJabatan = jenisJabatanConverter.transferVOToModel(vo.getJenisJabatan(), new JenisJabatan());
KelompokJabatan kelompokJabatan = kelompokJabatanConverter.transferVOToModel(vo.getKelompokJabatan(),
new KelompokJabatan());
if (CommonUtil.isNotNullOrEmpty(vo.getKelompokJabatan())) {
KelompokJabatan kelompokJabatan = kelompokJabatanConverter.transferVOToModel(vo.getKelompokJabatan(),
new KelompokJabatan());
jabatanBaru.setKelompokJabatan(kelompokJabatan);
}
if (CommonUtil.isNotNullOrEmpty(vo.getEselon())) {
Eselon eselon = eselonConverter.transferVOToModel(vo.getEselon(), new Eselon());
jabatanBaru.setEselon(eselon);
@ -129,6 +126,7 @@ public class JabatanServiceImpl extends BaseVoServiceImpl implements JabatanServ
}
jabatanBaru.setUnitKerja(unitKerja);
jabatanBaru.setJenisJabatan(jenisJabatan);
jabatanBaru.setKelompokJabatan(kelompokJabatan);
Jabatan resultModel = jabatanDao.save(jabatanBaru);
JabatanVO resultVO = new JabatanVO();
@ -351,4 +349,33 @@ public class JabatanServiceImpl extends BaseVoServiceImpl implements JabatanServ
return result;
}
@Override
public List<Map<String, Object>> findJabatanDanBatasNilai(Integer idJenisJabatan, Integer idUnitKerja)
throws JpaSystemException {
List<Map<String, Object>> result = new ArrayList<>();
List<Map<String, Object>> dataPeringkat = jabatanDao
.findPeringkatJabatan(Arrays.asList(Master.KelompokJabatan.RANGE_REMUN));
List<Map<String, Object>> dataJabatan = jabatanDao.findJabatan(idJenisJabatan, idUnitKerja);
for (Map<String, Object> jabatan : dataJabatan) {
Integer nilaiTerendah = null;
Integer nilaiTertinggi = null;
for (Map<String, Object> peringkat : dataPeringkat) {
if (CommonUtil.isNotNullOrEmpty(jabatan.get("kelompokJabatanId"))
&& jabatan.get("kelompokJabatanId").equals(peringkat.get("kelompokJabatanId"))) {
nilaiTerendah = Integer.valueOf(peringkat.get("nilaiTerendah").toString());
nilaiTertinggi = Integer.valueOf(peringkat.get("nilaiTertinggi").toString());
break;
}
}
jabatan.put("nilaiTerendah", nilaiTerendah);
jabatan.put("nilaiTertinggi", nilaiTertinggi);
result.add(jabatan);
}
return result;
}
}

View File

@ -252,4 +252,23 @@ public class JabatanController extends LocaleController<JabatanVO> {
}
}
@RequestMapping(value = "/get-jabatan-dan-batas-nilai", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Map<String, Object>>> getJabatanDanBatasNilai(HttpServletRequest request,
@RequestParam(value = "jenisJabatanId", required = true) Integer idJenisJabatan,
@RequestParam(value = "unitKerjaId", required = true) Integer idUnitKerja) {
try {
List<Map<String, Object>> result = jabatanService.findJabatanDanBatasNilai(idJenisJabatan, idUnitKerja);
return RestUtil.getJsonResponse(result, HttpStatus.OK);
} catch (ServiceVOException e) {
LOGGER.error("Got exception {} when get jabatan dan batas nilai 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 jabatan dan batas nilai jabatan", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
}