Update service login user

Perbaikan serialisasi login user dan pegawai
This commit is contained in:
Salman Manoe 2023-10-11 23:28:47 +07:00
parent 90241ab74d
commit 7c1011ff48
4 changed files with 58 additions and 524 deletions

View File

@ -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<LoginUserVO, LoginUser> {
/*
@Override
public class LoginUserAuthConverter extends FindConverterDao implements BaseVoConverter<LoginUserVO, LoginUser> {
public LoginUser transferVOToModel(LoginUserVO vo, LoginUser model) {
if (null == model)
model = new LoginUser();
try {
String[] fieldsToInclude = null;
Map<String, Object> 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<LoginUserVO> transferListOfModelToListOfVO(List<LoginUser> models, List<LoginUserVO> vos) {
if (null == vos)
vos = new ArrayList<LoginUserVO>();
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<String, Object> 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<LoginUserVO> transferListOfModelToListOfVO(
List<LoginUser> models, List<LoginUserVO> vos) {
public List<LoginUserVO> transferListOfModelToListOfVO(List<LoginUser> models, List<LoginUserVO> vos) {
if (null == vos)
vos = new ArrayList<LoginUserVO>();
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;
}

View File

@ -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) {

View File

@ -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<LoginUserVO, LoginUser> loginUserConverters;
private BaseConverterImpl<LoginUserVO, LoginUser> loginUserConverter;
@Autowired
private BaseConverterImpl<PegawaiVO, Pegawai> 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<LoginUser> loginUserList = IteratorUtils.toList(loginUserDao.findAll().iterator());
List<LoginUserVO> loginUserVOList = new ArrayList<LoginUserVO>();
List<LoginUserVO> 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> loginUser = null;
try {
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
String namaUser = principal.toString();
loginUser = loginUserDao.findByNamaUser(namaUser);
List<LoginUser> 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<String, Object> getAllUser() {
Map<String, Object> result = new HashMap<String, Object>();
List<LoginUser> list = new ArrayList<LoginUser>();
list = (List<LoginUser>) loginUserDao.findAllUser();
Map<String, Object> result = new HashMap<>();
List<LoginUser> 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<String, Object> getLoadData() {
Map<String, Object> result = new HashMap<String, Object>();
Map<String, Object> result = new HashMap<>();
// --------------------------------------------------------------------------
List<Map<String, Object>> 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<String, Object> getListRuangan(Integer loginUserId) {
Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> 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<String, Object> getListModulAplikasi(Integer pegawaiId) {
Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> listModulAplikasi = loginUserDao.getListModulAplikasi(pegawaiId);
if (CommonUtil.isNotNullOrEmpty(listModulAplikasi)) {
if (CommonUtil.isNotNullOrEmpty(listModulAplikasi))
result.put("listModulAplikasi", listModulAplikasi);
}
return result;
}
@Override
public List<Map<String, Object>> getListObjectModulAplikasi(Integer modulAplikasiId) {
List<Map<String, Object>> result = new ArrayList<>();
// for(Map<String, Object> objectModulHead :
// loginUserDao.getObjectModulHeadByModul(modulAplikasiId)){
// Map<String, Object> parent = new HashMap<>();
//
// if(CommonUtil.isNotNullOrEmpty(objectModulHead)){
// parent.put("name", objectModulHead.get("objekModulAplikasi"));
// parent.put("noUrut", objectModulHead.get("objekModulNoUrut"));
//
// List<Map<String, Object>> listObjectModul =
// loginUserDao.getModulByModulHead((Integer)objectModulHead.get("id"));
// if(CommonUtil.isNullOrEmpty(listObjectModul)){
// parent.put("link", objectModulHead.get("alamatUrlForm"));
// }
//
// List<Map<String, Object>> listChildren = new ArrayList<>();
// for(Map<String, Object> objectModul: listObjectModul){
// Map<String, Object> 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<String, Object> saveUpdateLoginUser(LoginUserVO vo) {
Map<String, Object> 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())) {

View File

@ -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<PegawaiJadwalKerjaVO, PegawaiJadwalKerja> pegawaiJadwalKerjaConverter;
@Autowired
private BaseConverterImpl<PegawaiVO, Pegawai> pegawaiConverter;
@Autowired
private BaseConverterImpl<RuanganVO, Ruangan> ruanganConverter;
@Autowired
private BaseConverterImpl<ShiftKerjaVO, ShiftKerja> shiftKerjaConverter;
@Autowired
private BaseConverterImpl<KalenderVO, Kalender> 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<Kalender> 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<String, Object> findPegawaiByRuanganRev2(Integer ruangan, Integer
* tahun, Integer bulan, Integer idPegawai) Map<String, Object>
* 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<Integer> listPegawai = pegawaiDao.getPegawaiNonshift();
List<PegawaiJadwalKerjaVO> vos = new ArrayList<>();
if (CommonUtil.isNotNullOrEmpty(listPegawai)) {
for (Integer idPegawai : listPegawai) {
// generate jadwal hanya untuk yang belum buat jadwal
List<PegawaiJadwalKerja> jadwal = pegawaiJadwalKerjaDao.findJadwalByBulan(tahun, bulan, idPegawai);
if (CommonUtil.isNullOrEmpty(jadwal)) {
Pegawai pegawai = pegawaiDao.findOne(idPegawai);
List<Map<String, Object>> mapListHariLibur = pegawaiDaoCustom.findHariLiburPegawaiNonShift(tahun,
bulan);
// clear false data
if (CommonUtil.isNotNullOrEmpty(mapListHariLibur))
for (Map<String, Object> 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<Map<String, Object>> listShiftKerja = shiftKerjaDao.findByKelompokShiftId(idShift);
// Non Shift +
if (idShift == 2)
listShiftKerja.addAll(shiftKerjaDao.findByKelompokShiftId(1));
List<PegawaiJadwalKerja> resultPegawaiJadwalKerja = pegawaiDaoCustom.findJadwalByTanggal(tahun,
bulan, idPegawai);
if (resultPegawaiJadwalKerja.isEmpty()) { // Apabila_jadwal_kosong
if (idShift == 1 || idShift == 2) { // apabila_pegawai_nonshift
for (Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<PegawaiJadwalKerjaVO> 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<String, Object> 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<String, Object> 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<Integer> listIdPegawaiSlip = slipGajiDao.findPegawaiByBulan(startMonth, endMonth);
List<MapPegawaiJabatanToUnitKerja> listJabatan = mappingJabatanDao.getAll();
listJabatan = listJabatan.stream().filter(j -> !listIdPegawaiSlip.contains(j.getPegawaiId()))
.sorted(Comparator.comparingInt(MapPegawaiJabatanToUnitKerja::getPegawaiId))
.collect(Collectors.toList());
List<Integer> listIdPegawai = new ArrayList<>();
listJabatan.forEach(j -> {
if (!listIdPegawai.contains(j.getPegawaiId()))
listIdPegawai.add(j.getPegawaiId());
});
List<SlipGaji> listSlipGaji = new ArrayList<>();
List<SlipGajiDetail> 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();
}
}