From 43b6e7866548db1a228593c76164a42ab90573bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B2=9C=20=EC=A7=84=EA=B0=95?= <jjjjjk12@ajou.ac.kr> Date: Tue, 19 Nov 2024 17:11:28 +0900 Subject: [PATCH] =?UTF-8?q?fix(spring):=20=EB=B3=80=EA=B2=BD=EC=82=AC?= =?UTF-8?q?=ED=95=AD=EB=93=A4=EC=9D=B4=20=EC=9B=B9=EB=B7=B0=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=A0=81=EC=9A=A9=EC=95=88=EB=90=98=EB=8D=98=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server-node-spring/build.gradle | 1 + .../repository/VehicleRepository.java | 6 +++++- .../thiefsil/service/ChargingService.java | 20 +++++++++++++++---- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/server-node-spring/build.gradle b/server-node-spring/build.gradle index 57ab253..a6314f1 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 cffdf18..686ad3d 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 edef0b1..62cb1f1 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) { -- GitLab