Update service mapping jabatan pegawai

Pembuatan endpoint daftar jabatan diampu pegawai
This commit is contained in:
Salman Manoe 2025-02-06 10:43:17 +07:00
parent 653731c7c9
commit 34ee699775
6 changed files with 59 additions and 268 deletions

View File

@ -197,19 +197,6 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends JpaRepository<MapPegawa
+ "where mapp.statusEnabled is true " + "and mapp.isPrimary is true " + "and mapp.pegawaiId = :idPegawai")
Map<String, Object> getMapJabatanUtamaByPegawai(@Param("idPegawai") Integer idPegawai);
@Query("select new Map(mapp.id, mapp.pegawaiId, mapp.isCanCreateJadwal, mapp.isMonitoring, mapp.isPrimary, jab.levelJabatan) "
+ "from MapPegawaiJabatanToUnitKerja mapp " + "left join mapp.jabatan jab "
+ "where mapp.statusEnabled is true and jab.statusEnabled is true and jab.levelJabatan is not null "
+ "and mapp.jabatanId = :idJabatan and mapp.subUnitKerjaPegawaiId = :idSubunitKerja and mapp.unitKerjaPegawaiId = :idUnitKerja")
Map<String, Object> getMappByDetail(@Param("idJabatan") Integer idJabatan,
@Param("idSubunitKerja") Integer idSubunitKerja, @Param("idUnitKerja") Integer idUnitKerja);
@Query("select distinct mapp.pegawaiId " + "from MapPegawaiJabatanToUnitKerja mapp "
+ "inner join mapp.jabatan jab " + "where mapp.statusEnabled is true " + "and jab.statusEnabled is true "
+ "and jab.levelJabatan > :levelJabatan " + "and mapp.subUnitKerjaPegawaiId = :idSubunitKerja")
List<Integer> getPegawaiBySubunitKerja(@Param("idSubunitKerja") Integer idSubunitKerja,
@Param("levelJabatan") Integer levelJabatan);
@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")
@ -315,24 +302,6 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends JpaRepository<MapPegawa
+ "and lower(pg.namaLengkap) not like '%administrator%'")
List<MapPegawaiJabatanToUnitKerja> getAll();
@Query("select new Map(mapp.id as idMapping, mapp.pegawaiId as idPegawai, mapp.atasanLangsungId as idAtasan, mapp.pejabatPenilaiId as idPenilai) "
+ "from MapPegawaiJabatanToUnitKerja mapp "
+ "where mapp.statusEnabled is true and mapp.jabatanId is not null and mapp.unitKerjaPegawaiId is not null and mapp.subUnitKerjaPegawaiId is not null "
+ "and (mapp.pegawaiId in (:listAtasan) or mapp.pegawaiId in (:listPenilai)) and mapp.jabatanId = :jabatanId "
+ "and mapp.unitKerjaPegawaiId = :unitId and mapp.subUnitKerjaPegawaiId = :subId")
List<Map<String, Object>> getMappingJabatanDanAtasan(@Param("listAtasan") List<Integer> listAtasan,
@Param("listPenilai") List<Integer> listPenilai, @Param("jabatanId") Integer jabatanId,
@Param("unitId") Integer unitId, @Param("subId") Integer subId);
@Query("select distinct mapp.atasanLangsungId from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.atasanLangsungId is not null")
List<Integer> listAtasanLangsung();
@Query("select distinct mapp.pejabatPenilaiId from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.pejabatPenilaiId is not null")
List<Integer> listPejabatPenilai();
@Query("select mapp.id from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.pegawaiId = :pegawaiId")
List<Integer> getMappingIdByPegawai(@Param("pegawaiId") Integer pegawaiId);
@Query("select new Map(jab.id as idJabatan, jab.namaJabatan as namaJabatan, "
+ "peg.id as idPegawai, peg.namaLengkap as namaLengkap, coalesce(peg.nipPns,peg.nip,peg.nikIntern) as nipPns, "
+ "uk.id as idUnitKerja, uk.name as namaUnitKerja, "
@ -527,4 +496,5 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends JpaRepository<MapPegawa
+ "where mj.statusEnabled is true " + "and pg.statusEnabled is true "
+ "and mj.unitKerjaPegawaiId in (:listUnitKerjaId) " + "and pg.jenisPegawaiId = 1")
Set<Integer> findDokterByUnitKerja(@Param("listUnitKerjaId") List<Integer> listIdUnitKerja);
}

View File

@ -786,14 +786,6 @@ public interface PegawaiDao extends JpaRepository<Pegawai, Integer>, JpaSpecific
+ "and mj.unitKerjaPegawaiId = :idUnitKerja " + "and (jb.levelJabatan in (3,4,5))")
List<Integer> getPegawaiSDMforCred(@Param("idUnitKerja") Integer idUnitKerja);
@Query("select pg.id from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg "
+ "inner join mj.jabatan jb " + "where mj.unitKerjaPegawaiId = jb.unitKerjaId "
+ "and mj.statusEnabled is true and pg.statusEnabled is true and jb.statusEnabled is true "
+ "and mj.unitKerjaPegawaiId = :idUnitKerja " + "and (jb.levelJabatan in (3,4) "
+ "or (mj.subUnitKerjaPegawaiId = :idSubUnitKerja and jb.levelJabatan = 5))")
List<Integer> getPegawaiSDMforCred(@Param("idUnitKerja") Integer idUnitKerja,
@Param("idSubUnitKerja") Integer idSubUnitKerja);
@Query("select pegawai.id " + "from MapPegawaiJabatanToUnitKerja mapPegawai "
+ "inner join mapPegawai.pegawai pegawai " + "where mapPegawai.isPrimary is true "
+ "and mapPegawai.statusEnabled is true " + "and pegawai.statusEnabled is true "
@ -849,12 +841,6 @@ public interface PegawaiDao extends JpaRepository<Pegawai, Integer>, JpaSpecific
@Query("select pg.shiftKerjaId from Pegawai pg where pg.statusEnabled is true and pg.id = :idPegawai")
Integer getKelompokShiftByIdPegawai(@Param("idPegawai") Integer idPegawai);
@Query("select p.id " + "from Pegawai p," + "JenisPegawai j," + "SettingDataFixed s "
+ "where p.statusEnabled is true " + "and p.jenisPegawaiId = j.id "
+ "and p.jenisPegawaiId = cast(s.nilaiField as int) " + "and j.id = cast(s.nilaiField as int) "
+ "and s.namaField='KdJenisPegawaiDokter' " + "and p.statusPegawai.id = 2")
List<Integer> getPegawaiKedokteran();
@Query("select new Map(pegawai.alamat as alamat, " + "pegawai.agamaId as agamaId, "
+ "pegawai.bankRekeningAtasNama as bankRekeningAtasNama, "
+ "pegawai.bankRekeningNama as bankRekeningNama, " + "pegawai.bankRekeningNomor as bankRekeningNomor, "

View File

@ -1,5 +1,6 @@
package com.jasamedika.medifirst2000.service;
import com.jasamedika.medifirst2000.dto.PegawaiJabatanDto;
import com.jasamedika.medifirst2000.dto.superapp.request.EmailDto;
import com.jasamedika.medifirst2000.dto.superapp.response.AuthorizationDto;
import com.jasamedika.medifirst2000.entities.MapPegawaiJabatanToUnitKerja;
@ -16,8 +17,6 @@ public interface MapPegawaiJabatanToUnitKerjaService {
Map<String, Object> saveHistory(List<MapPegawaiJabatanToUnitKerjaVO> listVo);
Map<String, Object> saveHistory(MapPegawaiJabatanToUnitKerja mapp);
Map<String, Object> findAllByPegawai(Integer idPegawai);
Map<String, Object> findAllMap();
@ -36,8 +35,6 @@ public interface MapPegawaiJabatanToUnitKerjaService {
List<Map<String, Object>> findSubUnitByUnitJadwal(Integer idPegawai, Integer idUnit);
Map<String, Object> checkAtasan(MapPegawaiJabatanToUnitKerjaVO vo);
void saveHistoryPegawai(MapPegawaiJabatanToUnitKerja model, String perubahan);
Map<String, Object> getMapJabatanForMonitoringAbsensiByPegawai(Integer idPegawai);
@ -52,8 +49,6 @@ public interface MapPegawaiJabatanToUnitKerjaService {
Map<String, Object> findAtasanDanUnitKerja(Integer idPegawai, Integer idJabatan);
Map<String, Object> autoMappingAtasan(Integer idPegawai, Integer idJabatan, Integer idUnit, Integer idSub);
List<Map<String, Object>> findFormasiJabatan();
List<Map<String, Object>> getJabatanPegawai();
@ -69,4 +64,6 @@ public interface MapPegawaiJabatanToUnitKerjaService {
AuthorizationDto get(EmailDto dto);
String getJenisLogbook(Integer idPegawai);
PegawaiJabatanDto getDataJabatan(Integer idPegawai);
}

View File

@ -4,12 +4,12 @@ import com.google.gson.Gson;
import com.jasamedika.medifirst2000.constants.Master;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.*;
import com.jasamedika.medifirst2000.dto.PegawaiJabatanDto;
import com.jasamedika.medifirst2000.dto.superapp.request.EmailDto;
import com.jasamedika.medifirst2000.dto.superapp.response.AuthorizationDto;
import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.service.LoginUserService;
import com.jasamedika.medifirst2000.service.MapPegawaiJabatanToUnitKerjaService;
import com.jasamedika.medifirst2000.service.MappingPegawaiToAtasanService;
import com.jasamedika.medifirst2000.service.RiwayatJabatanService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.*;
@ -26,9 +26,6 @@ import static com.jasamedika.medifirst2000.constants.Master.KelompokJabatan.PENU
public class MapPegawaiJabatanToUnitKerjaServiceImpl extends BaseVoServiceImpl
implements MapPegawaiJabatanToUnitKerjaService {
@Autowired
private MappingPegawaiToAtasanService mappingPegawaiToAtasanService;
@Autowired
private LoginUserService loginUserService;
@ -868,88 +865,6 @@ public class MapPegawaiJabatanToUnitKerjaServiceImpl extends BaseVoServiceImpl
return result;
}
@Override
@Transactional
public Map<String, Object> saveHistory(MapPegawaiJabatanToUnitKerja mapp) {
Map<String, Object> result = new HashMap<>();
MapPegawaiJabatanToUnitKerjaHistori map = new MapPegawaiJabatanToUnitKerjaHistori();
LoginUser loginUser = loginUserService.getLoginUser();
// exceptional dynamic data entry
if (CommonUtil.isNotNullOrEmpty(mapp.getJabatan())) {
if (mapp.getJabatan().getId().equals(Master.EMPTY_DATA)) {
mapp.setJabatan(null);
}
}
if (CommonUtil.isNotNullOrEmpty(mapp.getUnitKerjaPegawai())) {
if (mapp.getUnitKerjaPegawai().getId().equals(Master.EMPTY_DATA)) {
mapp.setUnitKerjaPegawai(null);
}
}
if (CommonUtil.isNotNullOrEmpty(mapp.getSubUnitKerjaPegawai())) {
if (mapp.getSubUnitKerjaPegawai().getId().equals(Master.EMPTY_DATA)) {
mapp.setSubUnitKerjaPegawai(null);
}
}
if (CommonUtil.isNotNullOrEmpty(mapp.getAtasanLangsung())) {
if (mapp.getAtasanLangsung().getId().equals(Master.EMPTY_DATA)) {
mapp.setAtasanLangsung(null);
}
}
if (CommonUtil.isNotNullOrEmpty(mapp.getPejabatPenilai())) {
if (mapp.getPejabatPenilai().getId().equals(Master.EMPTY_DATA)) {
mapp.setPejabatPenilai(null);
}
}
map.setKdProfile(Master.KODE_PROFILE);
map.setStatusEnabled(Master.STATUS_ENABLE_TRUE);
if (CommonUtil.isNotNullOrEmpty(mapp.getPegawai())) {
map.setPegawai(mapp.getPegawai());
}
if (CommonUtil.isNotNullOrEmpty(mapp.getJabatan())) {
map.setJabatan(mapp.getJabatan());
}
if (CommonUtil.isNotNullOrEmpty(mapp.getUnitKerjaPegawai())) {
map.setUnitKerjaPegawai(mapp.getUnitKerjaPegawai());
}
if (CommonUtil.isNotNullOrEmpty(mapp.getSubUnitKerjaPegawai())) {
map.setSubUnitKerjaPegawai(mapp.getSubUnitKerjaPegawai());
}
if (CommonUtil.isNotNullOrEmpty(mapp.getAtasanLangsung())) {
map.setAtasanLangsung(mapp.getAtasanLangsung());
}
if (CommonUtil.isNotNullOrEmpty(mapp.getAtasanLangsungDireksi())) {
map.setAtasanLangsungDireksi(mapp.getAtasanLangsungDireksi());
}
if (CommonUtil.isNotNullOrEmpty(mapp.getPejabatPenilai())) {
map.setPejabatPenilai(mapp.getPejabatPenilai());
}
if (CommonUtil.isNotNullOrEmpty(mapp.getPejabatPenilaiDireksi())) {
map.setPejabatPenilaiDireksi(mapp.getPejabatPenilaiDireksi());
}
if (CommonUtil.isNotNullOrEmpty(loginUser.getPegawai())) {
map.setMappingId(mapp.getId());
map.setPegawaiInput(loginUser.getPegawai());
map.setTglInput(new Date());
}
map = mapPegawaiJabatanToUnitKerjaHistoriDao.save(map);
result.put("norec", map.getNoRec());
return result;
}
@Transactional
public void disableIsprimary(Integer idPegawai, Integer id) {
mapPegawaiJabatanToUnitKerjaDao.changeIsNotPrimary(idPegawai, id);
@ -1297,67 +1212,6 @@ public class MapPegawaiJabatanToUnitKerjaServiceImpl extends BaseVoServiceImpl
return lis;
}
@Override
public Map<String, Object> checkAtasan(MapPegawaiJabatanToUnitKerjaVO vo) {
Map<String, Object> result = new HashMap<>();
List<MapPegawaiJabatanToUnitKerjaVO> mappVos = new ArrayList<>();
MapPegawaiJabatanToUnitKerjaVO mappVo = new MapPegawaiJabatanToUnitKerjaVO();
Map<String, Object> currentDataMappByDetail = mapPegawaiJabatanToUnitKerjaDao.getMappByDetail(
vo.getJabatan().getId(), vo.getSubUnitKerjaPegawai().getId(), vo.getUnitKerjaPegawai().getId());
if (CommonUtil.isNotNullOrEmpty(vo.getJabatan().getLevelJabatan())) {
// hanya jabatan yang memiliki bawahan
if (CommonUtil.isNotNullOrEmpty(currentDataMappByDetail)) {
// data mapping existing sudah ada
if (!currentDataMappByDetail.get("id").equals(vo.getId())) {
// ubah atau buat baru jabatan untuk menggantikan pegawai
// dengan jabatan yang sama sebelumnya
// delete data pejabat lama
mappVo.setId((Integer) currentDataMappByDetail.get("id"));
mappVo.setStatusEnabled(false);
mappVos.add(mappVo);
save(mappVos);
// dapatkan pegawai bawahan
List<Integer> listPegawai = mapPegawaiJabatanToUnitKerjaDao.getPegawaiBySubunitKerja(
vo.getSubUnitKerjaPegawai().getId(),
Integer.valueOf(currentDataMappByDetail.get("levelJabatan").toString()));
// set atasan di pegawai bawahan
for (Integer idPeg : listPegawai) {
List<MappingPegawaiToAtasanVO> vosMappAtasan = getMappingPegawaiToAtasanVo(vo, idPeg);
mappingPegawaiToAtasanService.saveMappingPegawaiToAtasan(vosMappAtasan);
}
}
}
}
return result;
}
private static List<MappingPegawaiToAtasanVO> getMappingPegawaiToAtasanVo(MapPegawaiJabatanToUnitKerjaVO vo,
Integer idPeg) {
List<MappingPegawaiToAtasanVO> vosMappAtasan = new ArrayList<>();
MappingPegawaiToAtasanVO voMappAtasan = new MappingPegawaiToAtasanVO();
PegawaiVO voPegawai = new PegawaiVO();
PegawaiVO voAtasan = new PegawaiVO();
PegawaiVO voPenilai = new PegawaiVO();
voPegawai.setId(idPeg);
voAtasan.setId(vo.getPegawai().getId());
voPenilai.setId(vo.getPegawai().getId());
voMappAtasan.setPegawai(voPegawai);
voMappAtasan.setAtasanLangsung(voAtasan);
voMappAtasan.setAtasanPejabatPenilai(voPenilai);
vosMappAtasan.add(voMappAtasan);
return vosMappAtasan;
}
@Override
public void saveHistoryPegawai(MapPegawaiJabatanToUnitKerja model, String perubahan) {
HistoryDataPegawai historyDataPegawai = new HistoryDataPegawai();
@ -1561,76 +1415,6 @@ public class MapPegawaiJabatanToUnitKerjaServiceImpl extends BaseVoServiceImpl
return result;
}
@Override
@Transactional
public Map<String, Object> autoMappingAtasan(Integer idPegawai, Integer idJabatan, Integer idUnit, Integer idSub) {
Map<String, Object> result = new HashMap<>();
List<Integer> listPegawaiAtasanHistori;
List<Integer> listPegawaiPenilaiHistori;
List<Integer> listAtasan = mapPegawaiJabatanToUnitKerjaDao.listAtasanLangsung();
List<Integer> listPenilai = mapPegawaiJabatanToUnitKerjaDao.listPejabatPenilai();
List<Map<String, Object>> mappingBaru = mapPegawaiJabatanToUnitKerjaDao.getMappingJabatanDanAtasan(listAtasan,
listPenilai, idJabatan, idUnit, idSub);
if (CommonUtil.isNotNullOrEmpty(mappingBaru)) {
List<Integer> listAtasanHist = mapPegawaiJabatanToUnitKerjaHistoriDao.getHistoriAtasan(idJabatan, idUnit,
idSub);
if (CommonUtil.isNotNullOrEmpty(listAtasanHist)) {
for (Integer idAtasan : listAtasanHist) {
listPegawaiAtasanHistori = mapPegawaiJabatanToUnitKerjaHistoriDao.getHistoriBawahanAtasan(idAtasan);
listPegawaiPenilaiHistori = mapPegawaiJabatanToUnitKerjaHistoriDao
.getHistoriBawahanPenilai(idAtasan);
List<Integer> listMappingChanged = new ArrayList<>();
if (CommonUtil.isNotNullOrEmpty(listPegawaiAtasanHistori)) {
for (Integer idPegawaiHistori : listPegawaiAtasanHistori) {
List<Integer> listMapping = mapPegawaiJabatanToUnitKerjaDao
.getMappingIdByPegawai(idPegawaiHistori);
Pegawai pegawaiAtasan = new Pegawai();
pegawaiAtasan.setId(idPegawai);
for (Integer idMapping : listMapping) {
MapPegawaiJabatanToUnitKerja mapping = mapPegawaiJabatanToUnitKerjaDao
.findOne(idMapping);
if (CommonUtil.isNotNullOrEmpty(mapping)) {
mapping.setAtasanLangsung(pegawaiAtasan);
mapPegawaiJabatanToUnitKerjaDao.save(mapping);
listMappingChanged.add(idMapping);
}
}
}
}
if (CommonUtil.isNotNullOrEmpty(listPegawaiPenilaiHistori)) {
for (Integer idPegawaiHistori : listPegawaiPenilaiHistori) {
List<Integer> listMapping = mapPegawaiJabatanToUnitKerjaDao
.getMappingIdByPegawai(idPegawaiHistori);
Pegawai pegawaiAtasan = new Pegawai();
pegawaiAtasan.setId(idPegawai);
for (Integer idMapping : listMapping) {
MapPegawaiJabatanToUnitKerja mapping = mapPegawaiJabatanToUnitKerjaDao
.findOne(idMapping);
if (CommonUtil.isNotNullOrEmpty(mapping)) {
mapping.setAtasanLangsung(pegawaiAtasan);
mapPegawaiJabatanToUnitKerjaDao.save(mapping);
listMappingChanged.add(idMapping);
}
}
}
}
result.put("data", listMappingChanged);
}
}
}
return result;
}
@Override
public List<Map<String, Object>> findFormasiJabatan() {
List<Map<String, Object>> result = new ArrayList<>();
@ -1771,4 +1555,25 @@ public class MapPegawaiJabatanToUnitKerjaServiceImpl extends BaseVoServiceImpl
return "Logbook Tarif";
}
}
@Override
public PegawaiJabatanDto getDataJabatan(Integer idPegawai) {
PegawaiJabatanDto.PegawaiJabatanDtoBuilder builder = PegawaiJabatanDto.builder();
Pegawai pegawai = pegawaiDao.getPegawaiById(idPegawai);
if (CommonUtil.isNotNullOrEmpty(pegawai)) {
if (CommonUtil.isNotNullOrEmpty(pegawai.getNipPns())) {
builder.noKepegawaian(pegawai.getNipPns());
} else if (CommonUtil.isNotNullOrEmpty(pegawai.getNikIntern())) {
builder.noKepegawaian(pegawai.getNikIntern());
} else if (CommonUtil.isNotNullOrEmpty(pegawai.getNim())) {
builder.noKepegawaian(pegawai.getNim());
}
}
List<MapPegawaiJabatanToUnitKerja> listMap = mapPegawaiJabatanToUnitKerjaDao.findByPegawaiId(idPegawai);
List<String> jabatan = listMap.stream().map(map -> map.getJabatan().getNamaJabatan() + " - "
+ map.getUnitKerjaPegawai().getName() + " - " + map.getSubUnitKerjaPegawai().getName()).distinct()
.collect(Collectors.toList());
builder.jabatan(jabatan);
return builder.build();
}
}

View File

@ -0,0 +1,25 @@
package com.jasamedika.medifirst2000.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author salmanoe
* @version 1.0.0
* @since 06/02/2025
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PegawaiJabatanDto {
private String noKepegawaian;
private List<String> jabatan;
}

View File

@ -5,6 +5,7 @@ import com.jasamedika.medifirst2000.constants.Master;
import com.jasamedika.medifirst2000.constants.MessageResource;
import com.jasamedika.medifirst2000.controller.base.LocaleController;
import com.jasamedika.medifirst2000.core.web.WebConstants;
import com.jasamedika.medifirst2000.dto.PegawaiJabatanDto;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.MapPegawaiJabatanToUnitKerjaService;
import com.jasamedika.medifirst2000.util.rest.RestUtil;
@ -368,4 +369,11 @@ public class MapPegawaiJabatanToUnitKerjaController extends LocaleController<Map
String jenisLogbook = mapPegawaiJabatanToUnitKerjaService.getJenisLogbook(idPegawai);
return RestUtil.getJsonResponse(jenisLogbook, HttpStatus.OK);
}
@RequestMapping(value = "/jabatan/{idPegawai}", method = RequestMethod.GET)
public ResponseEntity<PegawaiJabatanDto> pegawaiJabatan(@PathVariable("idPegawai") Integer idPegawai) {
PegawaiJabatanDto dataJabatan = mapPegawaiJabatanToUnitKerjaService.getDataJabatan(idPegawai);
return RestUtil.getJsonResponse(dataJabatan, HttpStatus.OK);
}
}