diff --git a/server-node-spring/build.gradle b/server-node-spring/build.gradle index 57ab2536292f87b0edf5aaae067a20273c7b7d9d..a6314f1c1e58dde941c646713d0c6e767338d26a 100644 --- a/server-node-spring/build.gradle +++ b/server-node-spring/build.gradle @@ -31,6 +31,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web-services' implementation 'org.springframework.boot:spring-boot-starter-websocket' implementation 'org.springframework.boot:spring-boot-starter-mail' + implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2' runtimeOnly 'com.mysql:mysql-connector-j' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' diff --git a/server-node-spring/src/main/java/org/example/thiefsil/repository/VehicleRepository.java b/server-node-spring/src/main/java/org/example/thiefsil/repository/VehicleRepository.java index cffdf18cb7fae30a8235fa98896d86f9169db350..686ad3d635626f48d8e84c5a141378a02fdfedd4 100644 --- a/server-node-spring/src/main/java/org/example/thiefsil/repository/VehicleRepository.java +++ b/server-node-spring/src/main/java/org/example/thiefsil/repository/VehicleRepository.java @@ -2,12 +2,16 @@ package org.example.thiefsil.repository; import org.example.thiefsil.entity.Vehicle; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.Optional; public interface VehicleRepository extends JpaRepository<Vehicle, Long> { public Optional<Vehicle> findVehicleByNumber(String number); - public Optional<Vehicle> findVehicleByCharger(int charger); + //public Optional<Vehicle> findVehicleByCharger(int charger); + @Query("SELECT v FROM Vehicle v WHERE v.charger = :charger") + Optional<Vehicle> findVehicleByCharger(@Param("charger") int charger); public void deleteVehicleByCharger(int charger); } diff --git a/server-node-spring/src/main/java/org/example/thiefsil/service/ChargingService.java b/server-node-spring/src/main/java/org/example/thiefsil/service/ChargingService.java index edef0b1216ba85b961dd35fe40bfb9e829285bcb..62cb1f1436e0b1d694f71eda47530f83c69cffab 100644 --- a/server-node-spring/src/main/java/org/example/thiefsil/service/ChargingService.java +++ b/server-node-spring/src/main/java/org/example/thiefsil/service/ChargingService.java @@ -2,7 +2,11 @@ package org.example.thiefsil.service; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import jakarta.annotation.PostConstruct; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.example.thiefsil.dto.CarDTO; import org.example.thiefsil.entity.Driver; @@ -29,7 +33,7 @@ public class ChargingService { private final DriverRepository driverRepository; private final VehicleRepository vehicleRepository; private final WebMailService webMailService; - + private final EntityManager entityManager; @Value("${test.mail}") private String mail; @@ -39,12 +43,17 @@ public class ChargingService { public void view(WebSocketSession session) throws InterruptedException, IOException { while (session.isOpen()) { ObjectMapper mapper = new ObjectMapper(); + mapper.registerModule(new JavaTimeModule()); List<CarDTO> list = new ArrayList<>(10); for (int i = 0; i < 10; i++) { + Vehicle vehicle = vehicleRepository.findVehicleByCharger(i).orElse(null); + if (vehicle != null) { + System.out.println(vehicle); + } CarDTO tmp = CarDTO.builder() .position(i) - .car(vehicleRepository.findVehicleByCharger(i).orElse(null)) + .car(vehicle) .build(); list.add(tmp); } @@ -59,11 +68,11 @@ public class ChargingService { if (vehicle == null) return; int c = Integer.valueOf(charge); vehicle.setCharge(c); - + vehicleRepository.save(vehicle); if (c == 100) { webMailService.sendChargeMail(lot); } - vehicleRepository.save(vehicle); + } public void makeVehicle(String lot, String id){ @@ -89,9 +98,12 @@ public class ChargingService { vehicleRepository.save(vehicle); } + @Transactional public void unpark(String lot) { vehicleRepository.deleteVehicleByCharger(Integer.valueOf(lot)); vehicleCount--; + entityManager.flush(); + entityManager.clear(); } public void identifyDriver(String lot, String id) {