- 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
This commit is contained in:
Salman Manoe 2021-09-08 08:24:27 +07:00
parent eae76ccb69
commit 7d0767e1d7
8 changed files with 123 additions and 55 deletions

View File

@ -152,19 +152,17 @@ public interface MonitoringAbsenDao extends PagingAndSortingRepository<Monitorin
@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 mapPegawai.isPrimary is true "
+ "and mapPegawai.statusEnabled is true " + "and unitKerja.id = :idUnitKerja "
+ "and pegawai.statusEnabled is not false " + "and pegawai.idFinger is not null "
+ "order by pegawai.nama asc")
+ "left join mapPegawai.unitKerjaPegawai unitKerja " + "where mapPegawai.statusEnabled is true "
+ "and unitKerja.id = :idUnitKerja " + "and pegawai.statusEnabled is not false "
+ "and pegawai.idFinger is not null " + "order by pegawai.nama asc")
public List<Integer> 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<Integer> findPegawaiaAktifDanKaryawanByUnitKerjaAndSubUnitKerja(
@Param("idUnitKerja") Integer idUnitKerja, @Param("idSubUnitKerja") Integer idSubUnitKerja);
@ -349,18 +347,15 @@ public interface MonitoringAbsenDao extends PagingAndSortingRepository<Monitorin
"and pegawai.kedudukanId not in (:listException) " + "order by namaLengkap")
public List<Map<String, Object>> getDataPegawaiRev(@Param("idUnitKerja") Integer idUnitKerja,
@Param("listException") List<Integer> 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<Map<String, Object>> getDataPegawaiDirektur(@Param("idUnitKerja") Integer idUnitKerja,
@Param("levelJabatan") Integer levelJabatan,
@Param("sublevelJabatan") Integer sublevelJabatan,
public List<Map<String, Object>> getDataPegawaiDirektur(@Param("idUnitKerja") Integer idUnitKerja,
@Param("levelJabatan") Integer levelJabatan, @Param("sublevelJabatan") Integer sublevelJabatan,
@Param("listException") List<Integer> listException);
}

View File

@ -1077,4 +1077,10 @@ public interface PegawaiDao extends PagingAndSortingRepository<Pegawai, Integer>
+ "where pg.statusEnabled is true " + "and pg.idFinger = :fingerId " + "and pg.idFinger <> ''")
public List<Map<String, Object>> 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<Map<String, Object>> checkExistingFingerId(@Param("fingerId") String idFinger,
@Param("pegawaiId") Integer idPegawai);
}

View File

@ -170,6 +170,6 @@ public interface PegawaiService extends BaseVoService<Pegawai, PegawaiVO, Intege
Map<String, Object> getEvaluasiJabatanByPegawai(Integer idPegawai);
List<Map<String, Object>> findExistingFingerId(String idFinger);
List<Map<String, Object>> findExistingFingerId(String idFinger, Integer idPegawai);
}

View File

@ -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<StrukHistoriVO, StrukHistori> strukHistoriConverter;
@ -116,9 +105,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
@Autowired
private BaseConverterImpl<KomponenIndexVO, KomponenIndex> komponenIndexConverter;
@Autowired
private SettingDataFixedDao settingDataFixedDao;
@Autowired
private BaseConverterImpl<RuanganVO, Ruangan> ruanganConverter;
@ -131,18 +117,9 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
@Autowired
private BaseConverterImpl<PegawaiHistoriRekapVO, PegawaiHistoriRekap> pegawaiHistoriRekapConverter;
@Autowired
private StrukHistoriDao strukHistoriDao;
@Autowired
private BaseConverterImpl<KelompokTransaksiVO, KelompokTransaksi> kelompokTransaksiConverter;
@Autowired
private FactorRateKelompokShiftDao factorRateKelompokShiftDao;
@Autowired
private MonitoringAbsenDao monitoringAbsenDao;
@Autowired
private BaseConverterImpl<MonitoringAbsenVO, MonitoringAbsen> monitoringAbsenConverter;
@ -152,6 +129,39 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
@Autowired
private BaseConverterImpl<ShiftKerjaVO, ShiftKerja> shiftKerjaConverter;
@Autowired
private BaseConverterImpl<StrukVerifikasiVO, StrukVerifikasi> strukVerifikasiConverter;
@Autowired
private BaseConverterImpl<JenisGajiVO, JenisGaji> jenisGajiConverter;
@Autowired
private BaseConverterImpl<LoginUserVO, LoginUser> 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<StrukVerifikasiVO, StrukVerifikasi> strukVerifikasiConverter;
@Autowired
private KelompokTransaksiDao kelompokTransaksiDao;
@ -200,9 +207,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
@Autowired
private PegawaiSKPajakDao pegawaiSKPajakDao;
@Autowired
private BaseConverterImpl<JenisGajiVO, JenisGaji> jenisGajiConverter;
@Autowired
private PegawaiJadwalKerjaDao pegawaiJadwalKerjaDao;
@ -632,10 +636,13 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
@Transactional(readOnly = false)
public Map<String, Object> saveMonitoring(MonitoringAbsenCustomVO vo) {
Map<String, Object> result = new HashMap<String, Object>();
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());

View File

@ -2404,8 +2404,14 @@ public class PegawaiServiceImpl extends BaseVoServiceImpl implements PegawaiServ
}
@Override
public List<Map<String, Object>> findExistingFingerId(String idFinger) {
List<Map<String, Object>> result = pegawaiDao.checkExistingFingerId(idFinger);
public List<Map<String, Object>> findExistingFingerId(String idFinger, Integer idPegawai) {
List<Map<String, Object>> result = new ArrayList<>();
if (CommonUtil.isNotNullOrEmpty(idPegawai)) {
result = pegawaiDao.checkExistingFingerId(idFinger, idPegawai);
} else {
result = pegawaiDao.checkExistingFingerId(idFinger);
}
return result;
}

View File

@ -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<MonitoringAbsenVO> monitoringAbsen = new HashSet<MonitoringAbsenVO>();
@Caption(value = "Login User")
private LoginUserVO loginUser;
private Integer loginUserId;
@Caption(value = "Pegawai")
private PegawaiVO pegawaiLogin;
private Integer pegawaiLoginId;
public Set<MonitoringAbsenVO> 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;
}
}

View File

@ -4628,6 +4628,7 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
@RequestParam(value = "subUnitKerja", required = false) Integer subUnitKerja) {
List<Map<String, Object>> listkehadiran = new ArrayList<Map<String, Object>>();
Map<String, Object> kehadiran = new HashMap<String, Object>();
if (CommonUtil.isNotNullOrEmpty(subUnitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) {
List<Integer> listId = monitoringAbsenDao.findPegawaiaAktifDanKaryawanByUnitKerjaAndSubUnitKerja(unitKerja,
subUnitKerja);
@ -4635,10 +4636,17 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
kehadiran = monitoringAbsenService.jumlahKehadiran(id, startDate, endDate);
listkehadiran.addAll((List<Map<String, Object>>) kehadiran.get("listkehadiran"));
}
} else if (CommonUtil.isNullOrEmpty(subUnitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) {
List<Integer> listId = monitoringAbsenDao.findPegawaiaAktifDanKaryawanByUnitKerja(unitKerja);
for (Integer id : listId) {
kehadiran = monitoringAbsenService.jumlahKehadiran(id, startDate, endDate);
listkehadiran.addAll((List<Map<String, Object>>) kehadiran.get("listkehadiran"));
}
} else if (CommonUtil.isNotNullOrEmpty(idPegawai)) {
kehadiran = monitoringAbsenService.jumlahKehadiran(idPegawai, startDate, endDate);
listkehadiran.addAll((List<Map<String, Object>>) kehadiran.get("listkehadiran"));
}
if (CommonUtil.isNotNullOrEmpty(listkehadiran)) {
Map<String, Object> temp = listkehadiran.get(0);
m.addObject("dataSource", listkehadiran);
@ -4664,6 +4672,7 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
if (format != null && !format.isEmpty()) {
m.addObject("format", format);
}
return m;
}
@ -7694,7 +7703,7 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/rekapitulasi-diskon", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getRekapDiskon(HttpServletRequest request,
@RequestParam(value = "periode", required = true) Long periode) {

View File

@ -1396,18 +1396,19 @@ public class PegawaiController extends LocaleController<PegawaiVO> implements IB
@RequestMapping(value = "/check-existing-fingerid", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> 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<Map<String, Object>> result = pegawaiService.findExistingFingerId(idFinger);
List<Map<String, Object>> 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);
}