Przydzielanie zastępstwa

0

Siemka, mam pytanie.

Piszę pewien serwis. Potrzebuję w nim napisać funkcję, która na wniosek o urlop przydzieli go, a następnie spośród wolnych pracowników o danej godzinie przydzieli do prowadzenia wszystkich zajęć kogoś innego.

Napisałem takie coś:

public void acceptLeave(Long id, String name) {
		Leave leave = leaveRepo.findById(id);
		leave.setAssent(true);
		leave.setUser(userRepo.findByLogin(name));
		
		List<Activity> activity = leave.getEmployee().getActivity();
		
		for(Activity act:activity) {
			ArrayList<Long> listEmployeeId = employeeRepo.findAllAvailable(act.getStartTime());
			Long id2 = new Long(Long.valueOf((listEmployeeId.toArray()[0].toString())));
			act.setEmployee(employeeRepo.findById(id2));
			activityRepo.save(act);
		}
		
		leaveRepo.save(leave);
	} 

Wszystko działa, przydziela innego pracownika itd. Problem w tym - w jaki sposób po upłynięciu urlopu sprawić by te zajęcia prowadził pracownik, który wrócił z urlopu?

Używam Spring Data i Spring Boot.

PS. co do tej konwersji na longa to wiem, że bardzo naokoło, ale tylko tak uniknąłem wyjątku z BigDecimal.

PS2. Czy rozwiązaniem byłoby wydzielenie tych zajęć, w których zmieniam prowadzącego na czas urlopu i sprawdzanie czy skończył się urlop? Jeśli tak to wyciągnąć je z tej dodatkowej encji i nadpisać te nadpisane wcześniej?

0
  1. podziel kod na mniejsze części.
  2. urlop chyba powinien mieć wnioskującego zatem setUsersetApplicant, a w ogóle to powinien być już przypisany (twój design lubi się mścić).
  3. zamiast pętli użyj odpowiedniego zapytania, które wybierze czy to pierwszy czy to losowy rekord.
  4. do obsługi zdarzenia końca urlopu użyj schedulera → http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html
0
Koziołek napisał(a):
  1. podziel kod na mniejsze części.
  2. urlop chyba powinien mieć wnioskującego zatem setUsersetApplicant, a w ogóle to powinien być już przypisany (twój design lubi się mścić).
  3. zamiast pętli użyj odpowiedniego zapytania, które wybierze czy to pierwszy czy to losowy rekord.
  4. do obsługi zdarzenia końca urlopu użyj schedulera → http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html
  1. Taki mam zamiar. Na razie chciałem zrobić wersję beta.
  2. Tak, jest już przypisany. Wniosek o urlop składa pracownik, zapisuję to w bazie, ale ustawiam kolumnę informującą o rozpatrzeniu/przydzieleniu urlopu na false.
  3. Tak zrobię :)
  4. Dzięki, nie znałem tego.
0

Tak właściwie, w którym momencie sprawdzasz, kto powinien poprowadzić zajęcia? może na tym etapie powinieneś sprawdzić, czy pracownik jest dostępny?
Prosta sytuacja, pracownik był na urlopie, owszem, nawet wrócił, ale dostępny dalej nie jest bo jest na szkoleniu/konferencji, albo wziął urlop na żądanie etc.

0
shagrin napisał(a):

Tak właściwie, w którym momencie sprawdzasz, kto powinien poprowadzić zajęcia? może na tym etapie powinieneś sprawdzić, czy pracownik jest dostępny?
Prosta sytuacja, pracownik był na urlopie, owszem, nawet wrócił, ale dostępny dalej nie jest bo jest na szkoleniu/konferencji, albo wziął urlop na żądanie etc.

Mam to zapisane w bazie, w osobnej kolumnie. Hmm, jakby to zrobić żeby było dobrze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1