From 7c1011ff48d5ed4837142b6c0ade8fe142f46b69 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 11 Oct 2023 23:28:47 +0700 Subject: [PATCH] Update service login user Perbaikan serialisasi login user dan pegawai --- .../converter/LoginUserAuthConverter.java | 114 +----- .../impl/ActivityPegawaiServiceImpl.java | 1 - .../service/impl/LoginUserServiceImpl.java | 111 ++---- .../task/schedule/ScheduleTask.java | 356 +----------------- 4 files changed, 58 insertions(+), 524 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/converter/LoginUserAuthConverter.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/converter/LoginUserAuthConverter.java index fe2e3973..c9f8dfe4 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/converter/LoginUserAuthConverter.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/converter/LoginUserAuthConverter.java @@ -1,21 +1,15 @@ package com.jasamedika.medifirst2000.converter; -import java.util.ArrayList; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - import com.jasamedika.medifirst2000.converter.base.BaseVoConverter; import com.jasamedika.medifirst2000.dao.custom.base.impl.FindConverterDao; import com.jasamedika.medifirst2000.entities.KelompokUser; import com.jasamedika.medifirst2000.entities.LoginUser; -import com.jasamedika.medifirst2000.service.KelompokUserService; -import com.jasamedika.medifirst2000.service.PegawaiService; import com.jasamedika.medifirst2000.util.ExtendedSpringBeanUtil; -import com.jasamedika.medifirst2000.vo.KelompokUserVO; import com.jasamedika.medifirst2000.vo.LoginUserVO; -import com.jasamedika.medifirst2000.vo.PegawaiVO; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; /** * Converter class between LoginUser and LoginUserVO @@ -23,85 +17,22 @@ import com.jasamedika.medifirst2000.vo.PegawaiVO; * @author Roberto */ @Component -public class LoginUserAuthConverter extends FindConverterDao implements - BaseVoConverter { -/* - @Override +public class LoginUserAuthConverter extends FindConverterDao implements BaseVoConverter { public LoginUser transferVOToModel(LoginUserVO vo, LoginUser model) { if (null == model) model = new LoginUser(); - - try { - String[] fieldsToInclude = null; - Map serialized = vo.serialize(fieldsToInclude,vo.getClass().getName()); - Gson gson = new Gson(); - String json = gson.toJson(serialized); - model = gson.fromJson(json, LoginUser.class); - } catch (Exception e) { - e.printStackTrace(); - } - - return model; - } - - @Override - public List transferListOfModelToListOfVO(List models, List vos) { - if (null == vos) - vos = new ArrayList(); - - if (null == models) - return vos; - - for (LoginUser loginUser : models) { - LoginUserVO vo = new LoginUserVO(); - vo=transferModelToVO(loginUser, vo); - vos.add(vo); - } - - return vos; - } - - @Override - public LoginUserVO transferModelToVO(LoginUser model, LoginUserVO vo) { - if (null == vo) - vo = new LoginUserVO(); - try { - String[] fieldsToInclude = null; - Map serialized = model.serialize(fieldsToInclude,model.getClass().getSimpleName()); - Gson gson = new Gson(); - - String json = gson.toJson(serialized); - vo = gson.fromJson(json, LoginUserVO.class); - } catch (Exception e) { - e.printStackTrace(); - } - - return vo; - } - */ - - public LoginUser transferVOToModel(LoginUserVO vo, LoginUser model) { - if (null == model) - model = new LoginUser(); - - // fix this - ExtendedSpringBeanUtil.copySpecificProperties(vo, model, new String[] { - "id", "kataSandi", "namaUser", }, new String[] { "id", - "kataSandi", "namaUser", }); + ExtendedSpringBeanUtil.copySpecificProperties(vo, model, new String[] { "id", "kataSandi", "namaUser", }, + new String[] { "id", "kataSandi", "namaUser", }); if (vo.getKelompokUser() != null) { - KelompokUser kelompokUser = (KelompokUser) findObjectById( - KelompokUser.class, vo.getKelompokUser().getId()); + KelompokUser kelompokUser = (KelompokUser) findObjectById(KelompokUser.class, vo.getKelompokUser().getId()); model.setKelompokUser(kelompokUser); } return model; - } - public List transferListOfModelToListOfVO( - List models, List vos) { + public List transferListOfModelToListOfVO(List models, List vos) { if (null == vos) - vos = new ArrayList(); - + vos = new ArrayList<>(); if (null == models) return vos; @@ -110,35 +41,14 @@ public class LoginUserAuthConverter extends FindConverterDao implements transferModelToVO(loginUser, loginUserVO); vos.add(loginUserVO); } - return vos; } public LoginUserVO transferModelToVO(LoginUser model, LoginUserVO vo) { if (null == vo) - vo = new LoginUserVO(); - - // fix this - ExtendedSpringBeanUtil.copySpecificProperties(model, vo, new String[] { - "id", "kataSandi", "namaUser", }, new String[] { "id", - "kataSandi", "namaUser", }); - - if (model.getKelompokUser() != null) { - KelompokUserVO kelompokUserVo = kelompokUserService.findById(model - .getKelompokUser().getId()); - vo.setKelompokUser(kelompokUserVo); - } - if (model.getPegawai() != null) { - PegawaiVO kelompokUserVo = pgawaiService.findById(model - .getPegawai().getId()); - vo.setPegawai(kelompokUserVo); - } + ExtendedSpringBeanUtil.copySpecificProperties(model, vo, new String[] { "id", "kataSandi", "namaUser", }, + new String[] { "id", "kataSandi", "namaUser", }); return vo; } - - @Autowired - private KelompokUserService kelompokUserService; - @Autowired - private PegawaiService pgawaiService; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ActivityPegawaiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ActivityPegawaiServiceImpl.java index 33478436..d1ba4501 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ActivityPegawaiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ActivityPegawaiServiceImpl.java @@ -96,7 +96,6 @@ public class ActivityPegawaiServiceImpl implements ActivityPegawaiService { act.setTanggalKejadian(new Date()); act = activityPegawaiDao.save(act); act = activityPegawaiDao.findOne(act.getNoRec()); - act.setPegawai(pegawaiDao.findById(pegawai.getId())); try { BroadcastMessage("IKI", act.ToMap()); } catch (IllegalArgumentException | IllegalAccessException e) { diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LoginUserServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LoginUserServiceImpl.java index c6c3b813..8605097c 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LoginUserServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LoginUserServiceImpl.java @@ -2,7 +2,6 @@ package com.jasamedika.medifirst2000.service.impl; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.converter.LoginUserAuthConverter; -import com.jasamedika.medifirst2000.converter.LoginUserConverter; import com.jasamedika.medifirst2000.dao.HistoryLoginModulAplikasiDao; import com.jasamedika.medifirst2000.dao.LoginUserDao; import com.jasamedika.medifirst2000.dao.MapPegawaiToModulAplikasiDao; @@ -30,7 +29,6 @@ import java.util.*; @Service("LoginUserService") public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUserService { - private static final Logger LOGGER = LoggerFactory.getLogger(LoginUserServiceImpl.class); @Autowired @@ -43,10 +41,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser private LoginUserAuthConverter loginUserAuthConverter; @Autowired - private LoginUserConverter loginUserConverter; - - @Autowired - private BaseConverterImpl loginUserConverters; + private BaseConverterImpl loginUserConverter; @Autowired private BaseConverterImpl pegawaiConverter; @@ -103,7 +98,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser } @Override - @Transactional(readOnly = false) + @Transactional public LoginUserVO add(LoginUserVO vo) throws JpaSystemException, ServiceVOException { // convert to model and call repository LoginUser loginUser = new LoginUser(); @@ -113,7 +108,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser try { loginUser.setKataSandi(passwordUtil.encryptPassword(loginUser.getKataSandi())); } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { - e.printStackTrace(); + throw new ServiceVOException(e.getMessage()); } LoginUser resultModel = loginUserDao.save(loginUser); @@ -126,7 +121,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser } @Override - @Transactional(readOnly = false) + @Transactional public LoginUserVO update(LoginUserVO vo) throws JpaSystemException, ServiceVOException { // Alter Syamsu @@ -139,7 +134,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser try { loginUserLama.setKataSandi(passwordUtil.encryptPassword(loginUserLama.getKataSandi())); } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { - e.printStackTrace(); + throw new ServiceVOException(e.getMessage()); } loginUserDao.save(loginUserLama); @@ -152,7 +147,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser } @Override - @Transactional(readOnly = false) + @Transactional public Boolean delete(Integer key) throws JpaSystemException { if (loginUserDao.exists(key)) { loginUserDao.delete(key); @@ -180,7 +175,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser List loginUserList = IteratorUtils.toList(loginUserDao.findAll().iterator()); - List loginUserVOList = new ArrayList(); + List loginUserVOList = new ArrayList<>(); loginUserConverter.transferListOfModelToListOfVO(loginUserList, loginUserVOList); return loginUserVOList; @@ -202,7 +197,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser LoginUser loginUser = loginUsers.get(0); PasswordUtil passwordUtil = new PasswordUtil(); - Boolean isValidPassword = false; + boolean isValidPassword; try { isValidPassword = passwordUtil.isPasswordEqual(authVO.getKataSandi(), loginUser.getKataSandi()); } catch (IOException ioe) { @@ -214,11 +209,19 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser return null; } // to do validasi yang advanced di sini - LoginUserVO vo = new LoginUserVO(); - loginUserAuthConverter.transferModelToVO(loginUser, vo); + vo = loginUserAuthConverter.transferModelToVO(loginUser, vo); + if (CommonUtil.isNotNullOrEmpty(loginUser.getKelompokUser())) { + KelompokUserVO kelompokUserVO = new KelompokUserVO(); + kelompokUserVO = kelompokUserConverter.transferModelToVO(loginUser.getKelompokUser(), kelompokUserVO); + vo.setKelompokUser(kelompokUserVO); + } + if (CommonUtil.isNotNullOrEmpty(loginUser.getPegawai())) { + PegawaiVO pegawaiVO = new PegawaiVO(); + pegawaiVO = pegawaiConverter.transferModelToVO(loginUser.getPegawai(), pegawaiVO); + vo.setPegawai(pegawaiVO); + } return vo; - } else { throw new RuntimeException("User account is unauthorized : username : " + authVO.getNamaUser()); } @@ -226,22 +229,20 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser @Override public LoginUser getLoginUser() { - List loginUser = null; try { Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); String namaUser = principal.toString(); - loginUser = loginUserDao.findByNamaUser(namaUser); + List loginUser = loginUserDao.findByNamaUser(namaUser); + return loginUser.get(0); } catch (Exception e) { - e.printStackTrace(); + throw new ServiceVOException(e.getMessage()); } - return loginUser.get(0); } @Override public Map getAllUser() { - Map result = new HashMap(); - List list = new ArrayList(); - list = (List) loginUserDao.findAllUser(); + Map result = new HashMap<>(); + List list = loginUserDao.findAllUser(); if (CommonUtil.isNotNullOrEmpty(list)) { result.put("data", list); result.put("dataFound", true); @@ -251,12 +252,9 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser return result; } - // Reza - // ----------------------------------------------------------------------------------------------- - @Override public Map getLoadData() { - Map result = new HashMap(); + Map result = new HashMap<>(); // -------------------------------------------------------------------------- List> listPegawai = loginUserDao.listPegawai(); if (CommonUtil.isNotNullOrEmpty(listPegawai)) { @@ -348,7 +346,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser } } } catch (Exception ex) { - ex.printStackTrace(); + throw new ServiceVOException(ex.getMessage()); } return listSideMenu; } @@ -366,7 +364,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser LoginUser loginUser = new LoginUser(); if (CommonUtil.isNotNullOrEmpty(vo)) { - loginUser = loginUserConverters.transferVOToModel(vo, new LoginUser()); + loginUser = loginUserConverter.transferVOToModel(vo, new LoginUser()); loginUser.setKdProfile((short) 0); loginUser.setStatusEnabled(true); loginUser.setKodeExternal(""); @@ -381,7 +379,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser try { loginUser.setKataSandi(new PasswordUtil().encryptPassword(vo.getKataSandi())); } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { - e.printStackTrace(); + throw new ServiceVOException(e.getMessage()); } } if (CommonUtil.isNotNullOrEmpty(vo.getPegawai())) { @@ -441,9 +439,8 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser public Map getListRuangan(Integer loginUserId) { Map result = new HashMap<>(); List> listRuangan = loginUserDao.getListRuangan(loginUserId); - if (CommonUtil.isNotNullOrEmpty(listRuangan)) { + if (CommonUtil.isNotNullOrEmpty(listRuangan)) result.put("listRuangan", listRuangan); - } return result; } @@ -451,62 +448,22 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser public Map getListModulAplikasi(Integer pegawaiId) { Map result = new HashMap<>(); List> listModulAplikasi = loginUserDao.getListModulAplikasi(pegawaiId); - if (CommonUtil.isNotNullOrEmpty(listModulAplikasi)) { + if (CommonUtil.isNotNullOrEmpty(listModulAplikasi)) result.put("listModulAplikasi", listModulAplikasi); - } return result; } @Override public List> getListObjectModulAplikasi(Integer modulAplikasiId) { - List> result = new ArrayList<>(); - // for(Map objectModulHead : - // loginUserDao.getObjectModulHeadByModul(modulAplikasiId)){ - // Map parent = new HashMap<>(); - // - // if(CommonUtil.isNotNullOrEmpty(objectModulHead)){ - // parent.put("name", objectModulHead.get("objekModulAplikasi")); - // parent.put("noUrut", objectModulHead.get("objekModulNoUrut")); - // - // List> listObjectModul = - // loginUserDao.getModulByModulHead((Integer)objectModulHead.get("id")); - // if(CommonUtil.isNullOrEmpty(listObjectModul)){ - // parent.put("link", objectModulHead.get("alamatUrlForm")); - // } - // - // List> listChildren = new ArrayList<>(); - // for(Map objectModul: listObjectModul){ - // Map children = new HashMap<>(); - // - // if(CommonUtil.isNotNullOrEmpty(objectModul)){ - // children.put("name", objectModul.get("objekModulAplikasi")); - // children.put("link", objectModul.get("alamatUrlForm")); - // children.put("noUrut", objectModul.get("objekModulNoUrut")); - // } - // if(CommonUtil.isNotNullOrEmpty(children)){ - // listChildren.add(children); - // } - // } - // if(CommonUtil.isNotNullOrEmpty(listChildren)){ - // parent.put("children", listChildren); - // } - // } - // if(CommonUtil.isNotNullOrEmpty(parent)){ - // result.add(parent); - // } - // } - return result; + return new ArrayList<>(); } @Override public Map saveUpdateLoginUser(LoginUserVO vo) { Map result = new HashMap<>(); - if (CommonUtil.isNotNullOrEmpty(vo)) { - LoginUser loginUser = new LoginUser(); - if (CommonUtil.isNotNullOrEmpty(vo.getId())) { - loginUser = setLoginUser(vo); + LoginUser loginUser = setLoginUser(vo); if (CommonUtil.isNotNullOrEmpty(loginUser)) { LoginUser loginUserResult = loginUserDao.save(loginUser); result.put("namaUser", loginUserResult.getNamaUser()); @@ -518,7 +475,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser if (CommonUtil.isNotNullOrEmpty(users)) { result.put("statusError", "Nama user sudah ada, silahkan input nama user lainya"); } else { - loginUser = setLoginUser(vo); + LoginUser loginUser = setLoginUser(vo); if (CommonUtil.isNotNullOrEmpty(loginUser)) { LoginUser loginUserResult = loginUserDao.save(loginUser); result.put("namaUser", loginUserResult.getNamaUser()); @@ -557,7 +514,7 @@ public class LoginUserServiceImpl extends BaseVoServiceImpl implements LoginUser try { loginUser.setKataSandi(new PasswordUtil().encryptPassword(vo.getKataSandi())); } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { - e.printStackTrace(); + throw new ServiceVOException(e.getMessage()); } } if (CommonUtil.isNotNullOrEmpty(vo.getPegawai())) { diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/task/schedule/ScheduleTask.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/task/schedule/ScheduleTask.java index 739ac51d..3d778ab9 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/task/schedule/ScheduleTask.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/task/schedule/ScheduleTask.java @@ -1,29 +1,17 @@ package com.jasamedika.medifirst2000.task.schedule; -import com.jasamedika.medifirst2000.constants.Master; -import com.jasamedika.medifirst2000.converter.BaseConverterImpl; -import com.jasamedika.medifirst2000.dao.*; -import com.jasamedika.medifirst2000.dao.custom.PegawaiDaoCustom; -import com.jasamedika.medifirst2000.entities.*; -import com.jasamedika.medifirst2000.exception.ServiceVOException; -import com.jasamedika.medifirst2000.util.CommonUtil; -import com.jasamedika.medifirst2000.util.DateUtil; -import com.jasamedika.medifirst2000.vo.*; -import org.joda.time.Chronology; -import org.joda.time.chrono.ISOChronology; -import org.joda.time.chrono.IslamicChronology; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; -import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.stream.Collectors; +import com.jasamedika.medifirst2000.service.KalenderService; +import com.jasamedika.medifirst2000.service.PegawaiJadwalKerjaService; +import com.jasamedika.medifirst2000.service.SlipGajiService; /** * @author Salman @@ -34,286 +22,27 @@ public class ScheduleTask { private static final Logger LOGGER = LoggerFactory.getLogger(ScheduleTask.class); @Autowired - private KalenderDao kalenderDao; + private KalenderService kalenderService; @Autowired - private PegawaiDao pegawaiDao; + private PegawaiJadwalKerjaService pegawaiJadwalKerjaService; @Autowired - private PegawaiDaoCustom pegawaiDaoCustom; - - @Autowired - private PegawaiJadwalKerjaDao pegawaiJadwalKerjaDao; - - @Autowired - private ShiftKerjaDao shiftKerjaDao; - - @Autowired - private SlipGajiDao slipGajiDao; - - @Autowired - private MapPegawaiJabatanToUnitKerjaDao mappingJabatanDao; - - @Autowired - private SlipGajiDetailDao slipGajiDetailDao; - - @Autowired - private BaseConverterImpl pegawaiJadwalKerjaConverter; - - @Autowired - private BaseConverterImpl pegawaiConverter; - - @Autowired - private BaseConverterImpl ruanganConverter; - - @Autowired - private BaseConverterImpl shiftKerjaConverter; - - @Autowired - private BaseConverterImpl kalenderConverter; + private SlipGajiService slipGajiService; @Scheduled(cron = "0 0 23 30 6 ?") public void generateKalender() { LOGGER.info("Generate kalender tahun {}", LocalDate.now().plusYears(1).format(DateTimeFormatter.ofPattern("yyyy"))); - saveKalender(); - } - - @Transactional - private void saveKalender() { - List kals = new ArrayList<>(); - Calendar ct = Calendar.getInstance(); - ct.set(Calendar.MONTH, 0); - ct.set(Calendar.DAY_OF_MONTH, 1); - ct.set(Calendar.HOUR, 0); - ct.set(Calendar.MINUTE, 0); - ct.set(Calendar.SECOND, 0); - ct.set(Calendar.MILLISECOND, 0); - ct.add(Calendar.YEAR, 1); - Calendar c = Calendar.getInstance(); - Date lastDate = kalenderDao.getLastDateData(); - c.setTime(lastDate); - c.add(Calendar.DATE, 1); - if (ct.getTime().compareTo(c.getTime()) == 0) { - int daysInYear = c.getActualMaximum(Calendar.DAY_OF_YEAR); - for (int i = 1; i <= daysInYear; i++) { - c.set(Calendar.DAY_OF_YEAR, i); - Kalender kal = new Kalender(); - kal.setKdProfile((short) 0); - kal.setStatusEnabled(Master.STATUS_ENABLE_TRUE); - kal.setBulanKeDlmTahun((byte) (c.get(Calendar.MONTH) + 1)); - kal.setHariKeDlmBulan((byte) c.get(Calendar.DAY_OF_MONTH)); - kal.setHariKeDlmMinggu((byte) c.get(Calendar.WEEK_OF_MONTH)); - kal.setHariKeDlmTahun((short) c.get(Calendar.DAY_OF_YEAR)); - kal.setKdTanggal(c.get(Calendar.DAY_OF_YEAR)); - kal.setNamaBulan(new SimpleDateFormat("MMMM", new java.util.Locale("id")).format(c.getTime())); - kal.setNamaHari(new SimpleDateFormat("EEEE", new java.util.Locale("id")).format(c.getTime())); - kal.setqTanggal(c.get(Calendar.DAY_OF_YEAR)); - kal.setTahunKalender((short) c.get(Calendar.YEAR)); - kal.setTanggal(c.getTime()); - kals.add(kal); - } - kalenderDao.save(kals); - } + kalenderService.generateAndSaveKalender(); } @Scheduled(cron = "0 0 0 1 * ?") public void genarateJadwalPegawaiNonShift() { LOGGER.info("Generate jadwal pegawai bulan {}", LocalDate.now().format(DateTimeFormatter.ofPattern("MM-yyyy"))); - saveJadwalKerjaNonShift(); - } - - private void saveJadwalKerjaNonShift() { - /* - * Perbaikan Method ini mohon untuk diikutsertakan juga memperbaiki - * Map findPegawaiByRuanganRev2(Integer ruangan, Integer - * tahun, Integer bulan, Integer idPegawai) Map - * findPegawaiByRuanganRev2(Integer subUnitKerja, Integer tahun, Integer - * bulan) - */ - // set auto save untuk bulan ini - Calendar c = Calendar.getInstance(); - c.setTime(new Date()); - Integer tahun = c.get(Calendar.YEAR); - Integer bulan = c.get(Calendar.MONTH) + 1; - // get list pegawai non shift by subunitkerja - List listPegawai = pegawaiDao.getPegawaiNonshift(); - List vos = new ArrayList<>(); - if (CommonUtil.isNotNullOrEmpty(listPegawai)) { - for (Integer idPegawai : listPegawai) { - // generate jadwal hanya untuk yang belum buat jadwal - List jadwal = pegawaiJadwalKerjaDao.findJadwalByBulan(tahun, bulan, idPegawai); - if (CommonUtil.isNullOrEmpty(jadwal)) { - Pegawai pegawai = pegawaiDao.findOne(idPegawai); - List> mapListHariLibur = pegawaiDaoCustom.findHariLiburPegawaiNonShift(tahun, - bulan); - // clear false data - if (CommonUtil.isNotNullOrEmpty(mapListHariLibur)) - for (Map mh : mapListHariLibur) - if (CommonUtil.isNotNullOrEmpty(mh.get("statusEnabled")) - && mh.get("statusEnabled").equals(Master.STATUS_ENABLE_FALSE)) - mh.put("namaHariLibur", null); - // Setting Bulan Ramadhan - Chronology iso = ISOChronology.getInstance(); - Chronology hijri = IslamicChronology.getInstance(); - int bulanHijri; - try { - Integer idShift = pegawai.getShiftKerjaId(); - List> listShiftKerja = shiftKerjaDao.findByKelompokShiftId(idShift); - // Non Shift + - if (idShift == 2) - listShiftKerja.addAll(shiftKerjaDao.findByKelompokShiftId(1)); - List resultPegawaiJadwalKerja = pegawaiDaoCustom.findJadwalByTanggal(tahun, - bulan, idPegawai); - if (resultPegawaiJadwalKerja.isEmpty()) { // Apabila_jadwal_kosong - if (idShift == 1 || idShift == 2) { // apabila_pegawai_nonshift - for (Map hariLibur : mapListHariLibur) { - PegawaiJadwalKerjaVO vo = new PegawaiJadwalKerjaVO(); - ShiftKerjaVO shiftKerjaPegawai = new ShiftKerjaVO(); - if (!CommonUtil.isNotNullOrEmpty(hariLibur.get("namaHariLibur"))) { - // cek apakah nama harinya adalah jumat, - // senin-kamis atau sabtu minggu - if (hariLibur.get("namaHari").toString().equals("Minggu") - || hariLibur.get("namaHari").toString().equals("Sabtu")) { - shiftKerjaPegawai.setId(8); - } else if (hariLibur.get("namaHari").toString().equals("Jumat")) { - org.joda.time.LocalDate tglIso = new org.joda.time.LocalDate(tahun, bulan, - Integer.parseInt(hariLibur.get("tgl").toString()), iso); - org.joda.time.LocalDate tglHijri = new org.joda.time.LocalDate( - tglIso.toDateTimeAtStartOfDay(), hijri); - bulanHijri = tglHijri.getMonthOfYear(); - if (bulanHijri == 9) { - shiftKerjaPegawai.setId(57); // RMJ - } else { - shiftKerjaPegawai.setId(19); - } - } else { - org.joda.time.LocalDate tglIso = new org.joda.time.LocalDate(tahun, bulan, - Integer.parseInt(hariLibur.get("tgl").toString()), iso); - org.joda.time.LocalDate tglHijri = new org.joda.time.LocalDate( - tglIso.toDateTimeAtStartOfDay(), hijri); - bulanHijri = tglHijri.getMonthOfYear(); - if (bulanHijri == 9) { - shiftKerjaPegawai.setId(56); // RM - } else { - shiftKerjaPegawai.setId(18); - } - } - } else { - shiftKerjaPegawai.setId(8); - } - PegawaiVO peg = new PegawaiVO(); - peg.setId(idPegawai); - KalenderVO kalendar = new KalenderVO(); - kalendar.setId(Integer.parseInt(hariLibur.get("idKalendar").toString())); - vo.setPegawai(peg); - vo.setShift(shiftKerjaPegawai); - vo.setTanggal(kalendar); - vos.add(vo); - } - } // end if shift 1 - else {// Selain shift 1 - for (Map hariLibur : mapListHariLibur) { - PegawaiJadwalKerjaVO vo = new PegawaiJadwalKerjaVO(); - PegawaiVO peg = new PegawaiVO(); - peg.setId(idPegawai); - ShiftKerjaVO shiftKerjaPegawai = new ShiftKerjaVO(); - shiftKerjaPegawai.setId(0); - KalenderVO kalendar = new KalenderVO(); - kalendar.setId(Integer.parseInt(hariLibur.get("idKalendar").toString())); - vo.setPegawai(peg); - vo.setShift(shiftKerjaPegawai); - vo.setTanggal(kalendar); - vos.add(vo); - } - } - } else {// Jadwal tidak kosong - Integer idLooping = 0; - for (Map map2 : mapListHariLibur) { - for (PegawaiJadwalKerja mapPegawaiJadwalKerja : resultPegawaiJadwalKerja) { - if (mapPegawaiJadwalKerja.getPegawaiId().equals(idPegawai) && (Integer - .parseInt(map2.get("idKalendar").toString()) == mapPegawaiJadwalKerja - .getTanggalId())) { - mapListHariLibur.remove(idLooping); - break; - } - } - idLooping++; - } - // Untuk tanggal yang kosong diisi disini - for (Map map2 : mapListHariLibur) { - PegawaiJadwalKerjaVO vo = new PegawaiJadwalKerjaVO(); - PegawaiVO peg = new PegawaiVO(); - peg.setId(idPegawai); - ShiftKerjaVO shiftKerjaPegawai = new ShiftKerjaVO(); - shiftKerjaPegawai.setId(0); - KalenderVO kalendar = new KalenderVO(); - kalendar.setId(Integer.parseInt(map2.get("idKalendar").toString())); - vo.setPegawai(peg); - vo.setShift(shiftKerjaPegawai); - vo.setTanggal(kalendar); - vos.add(vo); - } - } // end else - } catch (IllegalArgumentException e) { - throw new ServiceVOException(e.getMessage()); - } - } // kondisi tidak ada data di pegawai jadwal kerja - } // looping pegawai - if (CommonUtil.isNotNullOrEmpty(vos)) - saveListJadwalPegawai(vos, false, false); - } - } - - @Transactional - public void saveListJadwalPegawai(List vos, boolean isUnggah, boolean isPenangguhan) { - for (PegawaiJadwalKerjaVO vo : vos) { - boolean editKetidakhadiran = false; - if (CommonUtil.isNotNullOrEmpty(vo)) { - PegawaiJadwalKerja model = pegawaiJadwalKerjaConverter.transferVOToModel(vo, new PegawaiJadwalKerja()); - if (CommonUtil.isNotNullOrEmpty(vo.getPegawai())) - model.setPegawai(pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai())); - if (CommonUtil.isNotNullOrEmpty(vo.getPegawaiGanti())) - model.setPegawaiGanti(pegawaiConverter.transferVOToModel(vo.getPegawaiGanti(), new Pegawai())); - if (CommonUtil.isNotNullOrEmpty(vo.getRuangan())) - model.setRuangan(ruanganConverter.transferVOToModel(vo.getRuangan(), new Ruangan())); - if (isPenangguhan && CommonUtil.isNotNullOrEmpty(vo.getShift()) - && CommonUtil.isNotNullOrEmpty(vo.getShift().getId()) && vo.getShift().getId().equals(0)) { - if (CommonUtil.isNotNullOrEmpty(vo.getTanggal())) { - Date tanggal = pegawaiJadwalKerjaDao.getTanggal(vo.getTanggal().getId()); - Map map = pegawaiJadwalKerjaDao.getJadwal(vo.getPegawai().getId(), - new SimpleDateFormat("yyyy-MM-dd").format(tanggal)); - if (CommonUtil.isNotNullOrEmpty(map) && CommonUtil.isNotNullOrEmpty(map.get("id"))) { - pegawaiJadwalKerjaDao.delete(Integer.parseInt(map.get("id").toString())); - } - } - } else { - if (CommonUtil.isNotNullOrEmpty(vo.getShift())) { - model.setShift(shiftKerjaConverter.transferVOToModel(vo.getShift(), new ShiftKerja())); - if (CommonUtil.isNotNullOrEmpty(vo.getTanggal())) { - Date tanggal = pegawaiJadwalKerjaDao.getTanggal(vo.getTanggal().getId()); - Map map = pegawaiJadwalKerjaDao.getJadwal(vo.getPegawai().getId(), - new SimpleDateFormat("yyyy-MM-dd").format(tanggal)); - model.setTanggal(kalenderConverter.transferVOToModel(vo.getTanggal(), new Kalender())); - if (CommonUtil.isNotNullOrEmpty(map) && CommonUtil.isNotNullOrEmpty(map.get("id"))) { - model.setId(Integer.parseInt(map.get("id").toString())); - if (CommonUtil.isNotNullOrEmpty(map.get("flagKetidakhadiran")) - && Boolean.parseBoolean(map.get("flagKetidakhadiran").toString())) { - editKetidakhadiran = true; - } else if (isUnggah && vo.getShift().getFlagKetidakhadiran()) { - editKetidakhadiran = true; - } - } - } - if (CommonUtil.isNotNullOrEmpty(model) && (isPenangguhan || !editKetidakhadiran)) - pegawaiJadwalKerjaDao.save(model); - } - } - } - } - + pegawaiJadwalKerjaService.autoSaveJadwalKerjaNonShift(); } @Scheduled(cron = "0 0 0 1 * ?") @@ -321,67 +50,6 @@ public class ScheduleTask { LOGGER.info("Initiate template slip gaji bulan {}", LocalDate.now().format(DateTimeFormatter.ofPattern("MM-yyyy"))); - initiateDataSlipGaji(); - } - - @Transactional - public void initiateDataSlipGaji() { - Date now = new Date(); - Date startMonth = DateUtil.startMonth(now); - Date endMonth = DateUtil.endMonth(now); - List listIdPegawaiSlip = slipGajiDao.findPegawaiByBulan(startMonth, endMonth); - List listJabatan = mappingJabatanDao.getAll(); - listJabatan = listJabatan.stream().filter(j -> !listIdPegawaiSlip.contains(j.getPegawaiId())) - .sorted(Comparator.comparingInt(MapPegawaiJabatanToUnitKerja::getPegawaiId)) - .collect(Collectors.toList()); - List listIdPegawai = new ArrayList<>(); - listJabatan.forEach(j -> { - if (!listIdPegawai.contains(j.getPegawaiId())) - listIdPegawai.add(j.getPegawaiId()); - }); - List listSlipGaji = new ArrayList<>(); - List listSlipGajiDetail = new ArrayList<>(); - for (Integer idPegawai : listIdPegawai) { - SlipGaji.SlipGajiBuilder b = SlipGaji.builder(); - for (MapPegawaiJabatanToUnitKerja j : listJabatan) - if (idPegawai.equals(j.getPegawaiId())) { - Pegawai pegawai = new Pegawai(); - pegawai.setId(j.getPegawaiId()); - b.pegawai(pegawai); - b.bulan(now); - break; - } - SlipGaji slipGaji = b.build(); - listSlipGaji.add(slipGaji); - if (CommonUtil.isNotNullOrEmpty(slipGaji)) - for (MapPegawaiJabatanToUnitKerja j : listJabatan) - if (idPegawai.equals(j.getPegawaiId())) { - SlipGajiDetail.SlipGajiDetailBuilder detail = SlipGajiDetail.builder(); - detail.slipGaji(slipGaji); - if (CommonUtil.isNotNullOrEmpty(j.getJabatanId())) { - Jabatan jabatan = new Jabatan(); - jabatan.setId(j.getJabatanId()); - detail.jabatan(jabatan); - } - if (CommonUtil.isNotNullOrEmpty(j.getUnitKerjaPegawaiId())) { - UnitKerjaPegawai unitKerja = new UnitKerjaPegawai(); - unitKerja.setId(j.getUnitKerjaPegawaiId()); - detail.unitKerja(unitKerja); - } - if (CommonUtil.isNotNullOrEmpty(j.getSubUnitKerjaPegawaiId())) { - SubUnitKerjaPegawai subunitKerja = new SubUnitKerjaPegawai(); - subunitKerja.setId(j.getSubUnitKerjaPegawaiId()); - detail.subUnitKerja(subunitKerja); - } - if (CommonUtil.isNotNullOrEmpty(j.getGradeId())) { - NilaiKelompokJabatan grade = new NilaiKelompokJabatan(); - grade.setId(j.getGradeId()); - detail.grade(grade); - } - listSlipGajiDetail.add(detail.build()); - } - slipGajiDao.save(listSlipGaji); - slipGajiDetailDao.save(listSlipGajiDetail); - } + slipGajiService.init(); } }