From 7d0767e1d752c77f0a6f82737a56e0a8561e1a11 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 8 Sep 2021 08:24:27 +0700 Subject: [PATCH] - perbaikan akses monitoring absensi dengan menghilangkan kondisi status jabatan utama - penyesuaian query pengecekan duplikat id finger jika edit rekam data pegawai - perbaikan service pengecekan duplikat id finger jika edit rekam data pegawai - penerapan data login dan pegawai login saat verifikasi di monitoring absensi - perbaikan cetakan laporan monitoring absensi bisa tanpa memilih subunit kerja --- .../medifirst2000/dao/MonitoringAbsenDao.java | 27 +++----- .../medifirst2000/dao/PegawaiDao.java | 6 ++ .../medifirst2000/service/PegawaiService.java | 2 +- .../impl/MonitoringAbsenServiceImpl.java | 69 ++++++++++--------- .../service/impl/PegawaiServiceImpl.java | 10 ++- .../vo/MonitoringAbsenCustomVO.java | 44 ++++++++++++ .../controller/ReportingController.java | 11 ++- .../controller/PegawaiController.java | 9 +-- 8 files changed, 123 insertions(+), 55 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MonitoringAbsenDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MonitoringAbsenDao.java index 3b871a13..0908bc4a 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MonitoringAbsenDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MonitoringAbsenDao.java @@ -152,19 +152,17 @@ public interface MonitoringAbsenDao extends PagingAndSortingRepository findPegawaiaAktifDanKaryawanByUnitKerja(@Param("idUnitKerja") Integer idUnitKerja); @Query("select pegawai.id " + "from MapPegawaiJabatanToUnitKerja mapPegawai " + "left join mapPegawai.pegawai pegawai " + "left join pegawai.shiftKerja shiftKerja " + "left join mapPegawai.subUnitKerjaPegawai subUnitKerja " + "left join mapPegawai.unitKerjaPegawai unitKerja " + "where unitKerja.id = :idUnitKerja " - + "and subUnitKerja.id = :idSubUnitKerja " + "and mapPegawai.isPrimary is true " - + "and mapPegawai.statusEnabled is true " + "and pegawai.idFinger is not null " - + "and pegawai.statusEnabled is true " + "order by pegawai.nama asc") + + "and subUnitKerja.id = :idSubUnitKerja " + "and mapPegawai.statusEnabled is true " + + "and pegawai.idFinger is not null " + "and pegawai.statusEnabled is true " + "order by pegawai.nama asc") public List findPegawaiaAktifDanKaryawanByUnitKerjaAndSubUnitKerja( @Param("idUnitKerja") Integer idUnitKerja, @Param("idSubUnitKerja") Integer idSubUnitKerja); @@ -349,18 +347,15 @@ public interface MonitoringAbsenDao extends PagingAndSortingRepository> getDataPegawaiRev(@Param("idUnitKerja") Integer idUnitKerja, @Param("listException") List listException); - + @Query("select distinct new Map(pg.id as id,pg.namaLengkap as namaLengkap) " - + "from MapPegawaiJabatanToUnitKerja mp " - + "left join mp.pegawai pg " + + "from MapPegawaiJabatanToUnitKerja mp " + "left join mp.pegawai pg " + "left join mp.jabatan jb with jb.statusEnabled is true " + "where mp.statusEnabled is true and pg.statusEnabled is true " - + "and pg.kedudukanId not in (:listException) " - + "and mp.unitKerjaPegawaiId = :idUnitKerja " - + "and jb.levelJabatan = :levelJabatan+1 " //satu_level_dibawah_pegawai_login + + "and pg.kedudukanId not in (:listException) " + "and mp.unitKerjaPegawaiId = :idUnitKerja " + + "and jb.levelJabatan = :levelJabatan+1 " // satu_level_dibawah_pegawai_login + "and jb.subLevelJabatan = :sublevelJabatan") - public List> getDataPegawaiDirektur(@Param("idUnitKerja") Integer idUnitKerja, - @Param("levelJabatan") Integer levelJabatan, - @Param("sublevelJabatan") Integer sublevelJabatan, + public List> getDataPegawaiDirektur(@Param("idUnitKerja") Integer idUnitKerja, + @Param("levelJabatan") Integer levelJabatan, @Param("sublevelJabatan") Integer sublevelJabatan, @Param("listException") List listException); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java index 093631fb..49d023f2 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java @@ -1077,4 +1077,10 @@ public interface PegawaiDao extends PagingAndSortingRepository + "where pg.statusEnabled is true " + "and pg.idFinger = :fingerId " + "and pg.idFinger <> ''") public List> checkExistingFingerId(@Param("fingerId") String idFinger); + @Query("select new Map(pg.id as id,pg.namaLengkap as namaLengkap) " + "from Pegawai pg " + + "where pg.statusEnabled is true " + "and pg.idFinger = :fingerId " + "and pg.idFinger <> '' " + + "and pg.id <> :pegawaiId") + public List> checkExistingFingerId(@Param("fingerId") String idFinger, + @Param("pegawaiId") Integer idPegawai); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PegawaiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PegawaiService.java index 29249a9f..35eab279 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PegawaiService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PegawaiService.java @@ -170,6 +170,6 @@ public interface PegawaiService extends BaseVoService getEvaluasiJabatanByPegawai(Integer idPegawai); - List> findExistingFingerId(String idFinger); + List> findExistingFingerId(String idFinger, Integer idPegawai); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MonitoringAbsenServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MonitoringAbsenServiceImpl.java index 6d65fa14..37db0b3b 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MonitoringAbsenServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MonitoringAbsenServiceImpl.java @@ -81,6 +81,7 @@ import com.jasamedika.medifirst2000.vo.KelompokShiftKerjaCustomVO; import com.jasamedika.medifirst2000.vo.KelompokShiftVO; import com.jasamedika.medifirst2000.vo.KelompokTransaksiVO; import com.jasamedika.medifirst2000.vo.KomponenIndexVO; +import com.jasamedika.medifirst2000.vo.LoginUserVO; import com.jasamedika.medifirst2000.vo.MonitoringAbsenCustomVO; import com.jasamedika.medifirst2000.vo.MonitoringAbsenVO; import com.jasamedika.medifirst2000.vo.PegawaiHistoriRekapIndexVO; @@ -95,18 +96,6 @@ import com.jasamedika.medifirst2000.vo.UangLemburVO; @Service("monitoringAbsenService") public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements MonitoringAbsenService { - @Autowired - private IndekKinerjaDao indekKinerjaDao; - - @Autowired - private HabsenDao habsenDao; - - @Autowired - private JabatanDao jabatanDao; - - @Autowired - private PegawaiHistoriRekapDao pegawaiHistoriRekapDao; - @Autowired private BaseConverterImpl strukHistoriConverter; @@ -116,9 +105,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon @Autowired private BaseConverterImpl komponenIndexConverter; - @Autowired - private SettingDataFixedDao settingDataFixedDao; - @Autowired private BaseConverterImpl ruanganConverter; @@ -131,18 +117,9 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon @Autowired private BaseConverterImpl pegawaiHistoriRekapConverter; - @Autowired - private StrukHistoriDao strukHistoriDao; - @Autowired private BaseConverterImpl kelompokTransaksiConverter; - @Autowired - private FactorRateKelompokShiftDao factorRateKelompokShiftDao; - - @Autowired - private MonitoringAbsenDao monitoringAbsenDao; - @Autowired private BaseConverterImpl monitoringAbsenConverter; @@ -152,6 +129,39 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon @Autowired private BaseConverterImpl shiftKerjaConverter; + @Autowired + private BaseConverterImpl strukVerifikasiConverter; + + @Autowired + private BaseConverterImpl jenisGajiConverter; + + @Autowired + private BaseConverterImpl loginUserConverter; + + @Autowired + private IndekKinerjaDao indekKinerjaDao; + + @Autowired + private HabsenDao habsenDao; + + @Autowired + private JabatanDao jabatanDao; + + @Autowired + private PegawaiHistoriRekapDao pegawaiHistoriRekapDao; + + @Autowired + private SettingDataFixedDao settingDataFixedDao; + + @Autowired + private StrukHistoriDao strukHistoriDao; + + @Autowired + private FactorRateKelompokShiftDao factorRateKelompokShiftDao; + + @Autowired + private MonitoringAbsenDao monitoringAbsenDao; + @Autowired private PegawaiDao pegawaiDao; @@ -170,9 +180,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon @Autowired private StrukVerifikasiDao strukVerifikasiDao; - @Autowired - private BaseConverterImpl strukVerifikasiConverter; - @Autowired private KelompokTransaksiDao kelompokTransaksiDao; @@ -200,9 +207,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon @Autowired private PegawaiSKPajakDao pegawaiSKPajakDao; - @Autowired - private BaseConverterImpl jenisGajiConverter; - @Autowired private PegawaiJadwalKerjaDao pegawaiJadwalKerjaDao; @@ -632,10 +636,13 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon @Transactional(readOnly = false) public Map saveMonitoring(MonitoringAbsenCustomVO vo) { Map result = new HashMap(); - LoginUser loginuser = new LoginUser(); + + LoginUser loginuser = loginUserConverter.transferVOToModel(vo.getLoginUser(), new LoginUser()); + Pegawai pegawaiLogin = pegawaiConverter.transferVOToModel(vo.getPegawaiLogin(), new Pegawai()); KelompokTransaksi kelompokTransaksi = kelompokTransaksiDao .findById(Integer.parseInt(GetSettingDataFixed("kelompokTransasiLemburAbsensi"))); + if (CommonUtil.isNotNullOrEmpty(vo)) { for (MonitoringAbsenVO temp : vo.getMonitoringAbsen()) { Pegawai pegawai = pegawaiConverter.transferVOToModel(temp.getPegawai(), new Pegawai()); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PegawaiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PegawaiServiceImpl.java index 035de2e9..f9739a00 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PegawaiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PegawaiServiceImpl.java @@ -2404,8 +2404,14 @@ public class PegawaiServiceImpl extends BaseVoServiceImpl implements PegawaiServ } @Override - public List> findExistingFingerId(String idFinger) { - List> result = pegawaiDao.checkExistingFingerId(idFinger); + public List> findExistingFingerId(String idFinger, Integer idPegawai) { + List> result = new ArrayList<>(); + + if (CommonUtil.isNotNullOrEmpty(idPegawai)) { + result = pegawaiDao.checkExistingFingerId(idFinger, idPegawai); + } else { + result = pegawaiDao.checkExistingFingerId(idFinger); + } return result; } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MonitoringAbsenCustomVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MonitoringAbsenCustomVO.java index a73d43f7..bb7097af 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MonitoringAbsenCustomVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MonitoringAbsenCustomVO.java @@ -4,11 +4,23 @@ import java.util.HashSet; import java.util.Set; import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import com.jasamedika.medifirst2000.helper.Caption; public class MonitoringAbsenCustomVO extends BaseTransactionVO { + @Caption(value = "Monitoring Absen") private Set monitoringAbsen = new HashSet(); + @Caption(value = "Login User") + private LoginUserVO loginUser; + + private Integer loginUserId; + + @Caption(value = "Pegawai") + private PegawaiVO pegawaiLogin; + + private Integer pegawaiLoginId; + public Set getMonitoringAbsen() { return monitoringAbsen; } @@ -17,4 +29,36 @@ public class MonitoringAbsenCustomVO extends BaseTransactionVO { this.monitoringAbsen = monitoringAbsen; } + public LoginUserVO getLoginUser() { + return loginUser; + } + + public void setLoginUser(LoginUserVO loginUser) { + this.loginUser = loginUser; + } + + public Integer getLoginUserId() { + return loginUserId; + } + + public void setLoginUserId(Integer loginUserId) { + this.loginUserId = loginUserId; + } + + public PegawaiVO getPegawaiLogin() { + return pegawaiLogin; + } + + public void setPegawaiLogin(PegawaiVO pegawaiLogin) { + this.pegawaiLogin = pegawaiLogin; + } + + public Integer getPegawaiLoginId() { + return pegawaiLoginId; + } + + public void setPegawaiLoginId(Integer pegawaiLoginId) { + this.pegawaiLoginId = pegawaiLoginId; + } + } diff --git a/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java b/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java index 0c8f839b..83d2eec5 100644 --- a/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java +++ b/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java @@ -4628,6 +4628,7 @@ public class ReportingController extends LocaleController @RequestParam(value = "subUnitKerja", required = false) Integer subUnitKerja) { List> listkehadiran = new ArrayList>(); Map kehadiran = new HashMap(); + if (CommonUtil.isNotNullOrEmpty(subUnitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) { List listId = monitoringAbsenDao.findPegawaiaAktifDanKaryawanByUnitKerjaAndSubUnitKerja(unitKerja, subUnitKerja); @@ -4635,10 +4636,17 @@ public class ReportingController extends LocaleController kehadiran = monitoringAbsenService.jumlahKehadiran(id, startDate, endDate); listkehadiran.addAll((List>) kehadiran.get("listkehadiran")); } + } else if (CommonUtil.isNullOrEmpty(subUnitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) { + List listId = monitoringAbsenDao.findPegawaiaAktifDanKaryawanByUnitKerja(unitKerja); + for (Integer id : listId) { + kehadiran = monitoringAbsenService.jumlahKehadiran(id, startDate, endDate); + listkehadiran.addAll((List>) kehadiran.get("listkehadiran")); + } } else if (CommonUtil.isNotNullOrEmpty(idPegawai)) { kehadiran = monitoringAbsenService.jumlahKehadiran(idPegawai, startDate, endDate); listkehadiran.addAll((List>) kehadiran.get("listkehadiran")); } + if (CommonUtil.isNotNullOrEmpty(listkehadiran)) { Map temp = listkehadiran.get(0); m.addObject("dataSource", listkehadiran); @@ -4664,6 +4672,7 @@ public class ReportingController extends LocaleController if (format != null && !format.isEmpty()) { m.addObject("format", format); } + return m; } @@ -7694,7 +7703,7 @@ public class ReportingController extends LocaleController return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } } - + @RequestMapping(value = "/rekapitulasi-diskon", method = RequestMethod.GET) public ResponseEntity>> getRekapDiskon(HttpServletRequest request, @RequestParam(value = "periode", required = true) Long periode) { diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/PegawaiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/PegawaiController.java index 79d1bbcf..56e95436 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/PegawaiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/PegawaiController.java @@ -1396,18 +1396,19 @@ public class PegawaiController extends LocaleController implements IB @RequestMapping(value = "/check-existing-fingerid", method = RequestMethod.GET) public ResponseEntity>> findExistingFingerId(HttpServletRequest request, - @RequestParam(value = "fingerId", required = true) String idFinger) { + @RequestParam(value = "fingerId", required = true) String idFinger, + @RequestParam(value = "pegawaiId", required = false) Integer idPegawai) { try { - List> result = pegawaiService.findExistingFingerId(idFinger); + List> result = pegawaiService.findExistingFingerId(idFinger, idPegawai); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException e) { - LOGGER.error("Got exception {} when get all jabatan", e.getMessage()); + LOGGER.error("Got exception {} when check existing finger id", 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 all jabatan", jse.getMessage()); + LOGGER.error("Got exception {} when check existing finger id", jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); }