fix: fix bugs Visit, VisitDTO, VisitServiceImpl, VisitMapper

This commit is contained in:
Petr Rudichev 2025-02-20 10:48:06 +03:00
parent 9d2aa4ddb2
commit fa27254abf
4 changed files with 13 additions and 7 deletions

View File

@ -33,11 +33,11 @@ public class Visit {
private boolean isFinished = false;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "start_terminal_id", referencedColumnName = "code", nullable = false)
@JoinColumn(name = "start_terminal_id", referencedColumnName = "id", nullable = false)
private Terminal startTerminal;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "end_terminal_id", referencedColumnName = "code")
@JoinColumn(name = "end_terminal_id", referencedColumnName = "id")
private Terminal endTerminal;
@ManyToOne(fetch = FetchType.EAGER)

View File

@ -22,7 +22,7 @@ public class VisitDTO {
// Возвращается длительность посещения в формате LocalDateTime.toString(),
// превратить обратно можно с помощью LocalDateTime.parse().
private String durationVisit;
private long durationVisit;
private String officeName;
private String typePassage; // Строка либо PASSAGE_CARD, либо PASSAGE_TELEPHONE

View File

@ -18,9 +18,15 @@ public class VisitMapper {
visitDTO.setId(visit.getId());
visitDTO.setStartVisit(visit.getStartVisit().toString());
visitDTO.setEndVisit(visit.getEndVisit().toString());
if (visit.getEndVisit() == null) visitDTO.setEndVisit(null);
else visitDTO.setEndVisit(visit.getEndVisit().toString());
visitDTO.setFinished(visit.isFinished());
visitDTO.setDurationVisit(Utils.period(visit.getStartVisit(), visit.getEndVisit()).toString());
if (visit.getEndVisit() == null) visitDTO.setDurationVisit(Utils.period(visit.getStartVisit(), LocalDateTime.now()));
else visitDTO.setDurationVisit(Utils.period(visit.getStartVisit(), visit.getEndVisit()));
visitDTO.setOfficeName(visit.getStartTerminal().getOffice().getName());
visitDTO.setTypePassage(visit.getPassage().getPassageName());

View File

@ -101,7 +101,7 @@ public class VisitServiceImpl implements VisitService {
.orElseThrow(() -> new ResourceNotFoundException("Терминал с id (" + endTerminalId + ") не найден!"));
Visit activeVisit = getActiveVisit(employee);
activeVisit.setStartVisit(LocalDateTime.now());
activeVisit.setEndVisit(LocalDateTime.now());
activeVisit.setFinished(true);
activeVisit.setEndTerminal(terminal);
@ -117,7 +117,7 @@ public class VisitServiceImpl implements VisitService {
}
private static Visit getActiveVisit(Employee employee) {
List<Visit> visits = employee.getVisits().stream().filter(Visit::isFinished).collect(Collectors.toList());
List<Visit> visits = employee.getVisits().stream().filter(visit -> !visit.isFinished()).collect(Collectors.toList());
if (visits.size() == 1) return visits.get(0);
else throw new IllegalStateException("Пользователь не может находится в суперпозиции");