From fa27254abff9c1cd8d1f1da18493d6f16347aeb3 Mon Sep 17 00:00:00 2001 From: Petr Rudichev Date: Thu, 20 Feb 2025 10:48:06 +0300 Subject: [PATCH] fix: fix bugs Visit, VisitDTO, VisitServiceImpl, VisitMapper --- src/main/java/com/example/nto/domain/entity/Visit.java | 4 ++-- src/main/java/com/example/nto/dto/entity/VisitDTO.java | 2 +- .../java/com/example/nto/dto/mappers/VisitMapper.java | 10 ++++++++-- .../com/example/nto/service/impl/VisitServiceImpl.java | 4 ++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/example/nto/domain/entity/Visit.java b/src/main/java/com/example/nto/domain/entity/Visit.java index 691cfb6..edc402f 100644 --- a/src/main/java/com/example/nto/domain/entity/Visit.java +++ b/src/main/java/com/example/nto/domain/entity/Visit.java @@ -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) diff --git a/src/main/java/com/example/nto/dto/entity/VisitDTO.java b/src/main/java/com/example/nto/dto/entity/VisitDTO.java index 0c047f9..97c5af8 100644 --- a/src/main/java/com/example/nto/dto/entity/VisitDTO.java +++ b/src/main/java/com/example/nto/dto/entity/VisitDTO.java @@ -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 diff --git a/src/main/java/com/example/nto/dto/mappers/VisitMapper.java b/src/main/java/com/example/nto/dto/mappers/VisitMapper.java index 98f44f8..0676795 100644 --- a/src/main/java/com/example/nto/dto/mappers/VisitMapper.java +++ b/src/main/java/com/example/nto/dto/mappers/VisitMapper.java @@ -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()); diff --git a/src/main/java/com/example/nto/service/impl/VisitServiceImpl.java b/src/main/java/com/example/nto/service/impl/VisitServiceImpl.java index 0c462f2..ada3faf 100644 --- a/src/main/java/com/example/nto/service/impl/VisitServiceImpl.java +++ b/src/main/java/com/example/nto/service/impl/VisitServiceImpl.java @@ -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 visits = employee.getVisits().stream().filter(Visit::isFinished).collect(Collectors.toList()); + List visits = employee.getVisits().stream().filter(visit -> !visit.isFinished()).collect(Collectors.toList()); if (visits.size() == 1) return visits.get(0); else throw new IllegalStateException("Пользователь не может находится в суперпозиции");