- perbaikan akses monitoring presensi karena rangkap jabatan di unit kerja yang sama

- refractoring service load data monitoring presensi untuk verifikasi indikator-indikator terkair kehadiran
- perbaikan informasi tanggal di detail presensi pegawai
- penambahan kolom status foto, lokasi, dan verifikasi monitoring presensi pegawai
This commit is contained in:
Salman Manoe 2021-10-04 20:25:24 +07:00
parent 9dfae7af0b
commit 77f12d97ad
8 changed files with 803 additions and 672 deletions

View File

@ -267,7 +267,9 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository<MapPegaw
Integer getIdJabatanByPegawaiUnitKerja(@Param("idPegawai") Integer idPegawai,
@Param("idUnitKerja") Integer idUnitKerja);
@Query("select mapp.jabatanId from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.pegawaiId=:idPegawai and mapp.unitKerjaPegawaiId=:idUnitKerja")
@Query("select mapp.jabatanId from MapPegawaiJabatanToUnitKerja mapp " + "left join mapp.jabatan jb "
+ "where mapp.statusEnabled is true " + "and mapp.pegawaiId=:idPegawai "
+ "and mapp.unitKerjaPegawaiId=:idUnitKerja " + "order by jb.levelJabatan desc")
List<Integer> getListIdJabatanByPegawaiUnitKerja(@Param("idPegawai") Integer idPegawai,
@Param("idUnitKerja") Integer idUnitKerja);

View File

@ -17,11 +17,6 @@ public interface MonitoringAbsenService {
List<Map<String, Object>> findKehadiran(Integer idPegawai, String startDate, String endDate);
Map<String, Object> findKehadiranByRuangan(Integer ruanganId, String startDate, String endDate);
Map<String, Object> findKehadiranByRuangan(Integer unitKerjaId, Integer subUnitKerjaId, String startDate,
String endDate);
Map<String, Object> saveMonitoring(MonitoringAbsenCustomVO vo);
Map<String, Object> saveMonitoringVerifikasiSDM(MonitoringAbsenCustomVO vo);
@ -32,10 +27,11 @@ public interface MonitoringAbsenService {
Map<String, Object> findKehadiranPerPegawai(Integer idPegawai, String startDate, String endDate);
Map<String, Object> jumlahKehadiran(Integer idPegawai, String startDate, String endDate);
Map<String, Object> jumlahKehadiranRev(Integer idPegawai, String startDate, String endDate);
Map<String, Object> jumlahKehadiran(Integer unitKerjaId, Integer subUnitKerjaId, Integer idPegawai,
String startDate, String endDate);
Map<String, Object> rekapitulasiKehadiranByPegawai(Integer idPegawai, String startDate, String endDate);
Map<String, Object> rekapitulasiKehadiranByPegawai(Map<String, Object> dataPegawai, String startDate,

View File

@ -305,7 +305,7 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse
mapRs.put("location", "");
} else {
mapRs.put("imageURLData", "");
mapRs.put("date", "");
mapRs.put("date", map.get("tanggal"));
mapRs.put("latitude", "");
mapRs.put("longitude", "");
mapRs.put("accuracy", "");

View File

@ -390,7 +390,7 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic
Map<String, Object> pirDanIku = ikiDanRemunerasiDao.getPirDanIku();
Double indeksKehadiran = ikiDanRemunerasiDao.getIndeksKehadiran(date, idPegawai);
Map<String, Object> monitoring = monitoringAbsenService.jumlahKehadiran(idPegawai, date,
Map<String, Object> monitoring = monitoringAbsenService.jumlahKehadiran(null, null, idPegawai, date,
periode + "-" + enDate);
Map<String, Object> result = pegawaiService.findPegawaiByIdCustom(idPegawai);
Map<String, Object> evaluasi = ikiDanRemunerasiDao.getEvaluasiJabatan(idPegawai);

View File

@ -13,87 +13,103 @@ import com.jasamedika.medifirst2000.helper.Caption;
@Entity
@Table(name = "sdm_MonitoringAbsen_T")
public class MonitoringAbsen extends BaseTransaction {
@ManyToOne
@JoinColumn(name = "PegawaiFk")
@NotNull(message = "Pegawai Harus Diisi")
@Caption(value = "Pegawai")
private Pegawai pegawai;
@Column(name = "PegawaiFk", insertable = false, updatable = false)
private Integer pegawaiId;
@ManyToOne
@JoinColumn(name = "ShiftKerjaFk")
@NotNull(message = "Shift Kerja Harus Diisi")
@Caption(value = "ShiftKerja")
private ShiftKerja shiftKerja;
@Column(name = "ShiftKerjaFk", insertable = false, updatable = false)
private Integer shiftKerjaId;
@Caption(value = "alasan")
@Column(name = "alasan", nullable = true)
private String alasan;
@Caption(value = "jadwalPulang")
@Column(name = "jadwalPulang", nullable = true)
private String jadwalPulang;
@Caption(value = "jadwalmasuk")
@Column(name = "jadwalmasuk", nullable = true)
private String jadwalmasuk;
@Caption(value = "absensiMasuk")
@Column(name = "absensiMasuk", nullable = true)
private String absensiMasuk;
@Caption(value = "absensiPulang")
@Column(name = "absensiPulang", nullable = true)
private String absensiPulang;
@Caption(value = "terlambat")
@Column(name = "terlambat", nullable = true)
private Long terlambat;
@Caption(value = "pulangAwal")
@Column(name = "pulangAwal", nullable = true)
private Long pulangAwal;
@Caption(value = "jamEfektif")
@Column(name = "jamEfektif", nullable = true)
private String jamEfektif;
@Caption(value = "tanggal")
@Column(name = "tanggal", nullable = false)
private String tanggal;
//Untuk Absensi verifikasi
// Untuk Absensi verifikasi
@ManyToOne
@JoinColumn(name = "verifikasiUnitKerjaFK")
@NotNull(message = "verifikasiUnitKerjaFK")
@Caption(value = "verifikasiUnitKerjaFK")
private StrukVerifikasi strukVerifikasi;
@Column(name = "verifikasiUnitKerjaFK", columnDefinition = "CHAR(32)", insertable = false, updatable = false)
private String verifikasiUnitKerjaFK;
@ManyToOne
@JoinColumn(name = "verifikasiSdmFK")
@NotNull(message = "verifikasiSdmFK")
@Caption(value = "verifikasiSdmFK")
private StrukVerifikasi strukVerifikasiSdm;
@Column(name = "verifikasiSdmFK", columnDefinition = "CHAR(32)", insertable = false, updatable = false)
private String verifikasiSdmFK;
@Column(name = "verifiedLembur")
private Integer verifiedLembur;
@Caption(value = "kelebihanJamKerja")
@Column(name = "kelebihanJamKerja", nullable = true)
private Long kelebihanJamKerja;
@Caption(value = "Status Foto Sesuai")
@Column(name = "isfotosesuai", nullable = true)
private Boolean isFotoSesuai;
@Caption(value = "Status Lokasi Sesuai")
@Column(name = "islokasisesuai", nullable = true)
private Boolean isLokasiSesuai;
@Caption(value = "Status Atribut Lengkap")
@Column(name = "isatributlengkap", nullable = true)
private Boolean isAtributLengkap;
@Caption(value = "Status Verifikasi")
@Column(name = "isverifikasi", nullable = true)
private Boolean isVerifikasi;
public Pegawai getPegawai() {
return pegawai;
}
@ -206,8 +222,6 @@ public class MonitoringAbsen extends BaseTransaction {
this.strukVerifikasi = strukVerifikasi;
}
public StrukVerifikasi getStrukVerifikasiSdm() {
return strukVerifikasiSdm;
}
@ -215,7 +229,6 @@ public class MonitoringAbsen extends BaseTransaction {
public void setStrukVerifikasiSdm(StrukVerifikasi strukVerifikasiSdm) {
this.strukVerifikasiSdm = strukVerifikasiSdm;
}
public Long getKelebihanJamKerja() {
return kelebihanJamKerja;
@ -248,5 +261,37 @@ public class MonitoringAbsen extends BaseTransaction {
public void setVerifiedLembur(Integer verifiedLembur) {
this.verifiedLembur = verifiedLembur;
}
public Boolean getIsFotoSesuai() {
return isFotoSesuai;
}
public void setIsFotoSesuai(Boolean isFotoSesuai) {
this.isFotoSesuai = isFotoSesuai;
}
public Boolean getIsLokasiSesuai() {
return isLokasiSesuai;
}
public void setIsLokasiSesuai(Boolean isLokasiSesuai) {
this.isLokasiSesuai = isLokasiSesuai;
}
public Boolean getIsAtributLengkap() {
return isAtributLengkap;
}
public void setIsAtributLengkap(Boolean isAtributLengkap) {
this.isAtributLengkap = isAtributLengkap;
}
public Boolean getIsVerifikasi() {
return isVerifikasi;
}
public void setIsVerifikasi(Boolean isVerifikasi) {
this.isVerifikasi = isVerifikasi;
}
}

View File

@ -61,6 +61,18 @@ public class MonitoringAbsenVO extends BaseTransactionVO {
@Caption(value = "Verifikasi Lembur")
private Integer verifiedLembur;
@Caption(value = "Status Foto Sesuai")
private Boolean isFotoSesuai;
@Caption(value = "Status Lokasi Sesuai")
private Boolean isLokasiSesuai;
@Caption(value = "Status Atribut Lengkap")
private Boolean isAtributLengkap;
@Caption(value = "Status Verifikasi")
private Boolean isVerifikasi;
public PegawaiVO getPegawai() {
return pegawai;
}
@ -221,4 +233,36 @@ public class MonitoringAbsenVO extends BaseTransactionVO {
this.verifiedLembur = verifiedLembur;
}
public Boolean getIsFotoSesuai() {
return isFotoSesuai;
}
public void setIsFotoSesuai(Boolean isFotoSesuai) {
this.isFotoSesuai = isFotoSesuai;
}
public Boolean getIsLokasiSesuai() {
return isLokasiSesuai;
}
public void setIsLokasiSesuai(Boolean isLokasiSesuai) {
this.isLokasiSesuai = isLokasiSesuai;
}
public Boolean getIsAtributLengkap() {
return isAtributLengkap;
}
public void setIsAtributLengkap(Boolean isAtributLengkap) {
this.isAtributLengkap = isAtributLengkap;
}
public Boolean getIsVerifikasi() {
return isVerifikasi;
}
public void setIsVerifikasi(Boolean isVerifikasi) {
this.isVerifikasi = isVerifikasi;
}
}

View File

@ -2688,21 +2688,6 @@ public class SdmController extends LocaleController<AkunVO> {
}
}
@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,
HttpServletRequest request) {
Map<String, Object> result = null;
try {
result = monitoringAbsenService.jumlahKehadiran(idPegawai, startDate, endDate);
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
} catch (Exception e) {
e.printStackTrace();
}
return RestUtil.getJsonResponse(result, HttpStatus.OK);
}
@RequestMapping(value = "/get-kehadiran-rev/{idPegawai}/{startDate}/{endDate}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> findKehadiranRev(@PathVariable("idPegawai") Integer idPegawai,
@PathVariable("startDate") String startDate, @PathVariable("endDate") String endDate,
@ -2753,13 +2738,28 @@ public class SdmController extends LocaleController<AkunVO> {
return RestUtil.getJsonResponse(result, HttpStatus.OK);
}
@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,
HttpServletRequest request) {
Map<String, Object> result = null;
try {
result = monitoringAbsenService.jumlahKehadiran(null, null, idPegawai, startDate, endDate);
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
} catch (Exception e) {
e.printStackTrace();
}
return RestUtil.getJsonResponse(result, HttpStatus.OK);
}
@RequestMapping(value = "/get-kehadiran-by-ruangan/{idUnitKerja}/{startDate}/{endDate}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> findKehadiranByRuangan(@PathVariable("idUnitKerja") Integer idUnitKerja,
@PathVariable("startDate") String startDate, @PathVariable("endDate") String endDate,
HttpServletRequest request) {
Map<String, Object> result = null;
try {
result = monitoringAbsenService.findKehadiranByRuangan(idUnitKerja, startDate, endDate);
result = monitoringAbsenService.jumlahKehadiran(idUnitKerja, null, null, startDate, endDate);
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
} catch (Exception e) {
@ -2774,7 +2774,7 @@ public class SdmController extends LocaleController<AkunVO> {
@PathVariable("endDate") String endDate, HttpServletRequest request) {
Map<String, Object> result = null;
try {
result = monitoringAbsenService.findKehadiranByRuangan(idUnitKerja, idSubUnitKerja, startDate, endDate);
result = monitoringAbsenService.jumlahKehadiran(idUnitKerja, idSubUnitKerja, null, startDate, endDate);
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
} catch (Exception e) {