Skip to content
Snippets Groups Projects
Commit ba9ec810 authored by 천 진강's avatar 천 진강
Browse files

feat(spring): 화재 관련 API 추가 및 사용자, 차량 조회 API 추가

parent 3a65d819
Branches
No related tags found
No related merge requests found
...@@ -25,15 +25,20 @@ public class WebSocketHandler extends TextWebSocketHandler { ...@@ -25,15 +25,20 @@ public class WebSocketHandler extends TextWebSocketHandler {
@Override @Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
String str = message.getPayload(); String str = message.getPayload();
if (!str.contains("-")) return;
String lot = str.split("-")[0]; String lot = str.split("-")[0];
String cmd = str.split("-")[1]; String cmd = str.split("-")[1];
System.out.println("주차 성공"); System.out.println("주차 성공");
System.out.println(str);
if (cmd.equals("PARK")) { if (cmd.equals("PARK")) {
chargingService.park(lot); chargingService.park(lot);
session.sendMessage(new TextMessage( lot + "-PARK"));
} }
else if (cmd.length() >= 6) { else if (cmd.length() >= 6) {
......
package org.example.thiefsil.controller; package org.example.thiefsil.controller;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.example.thiefsil.dto.FireDTO;
import org.example.thiefsil.entity.Cache; import org.example.thiefsil.entity.Cache;
import org.example.thiefsil.entity.Driver;
import org.example.thiefsil.repository.CacheRepository; import org.example.thiefsil.repository.CacheRepository;
import org.example.thiefsil.repository.DriverRepository;
import org.example.thiefsil.repository.SocketRepository; import org.example.thiefsil.repository.SocketRepository;
import org.example.thiefsil.service.ChargingService;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.WebSocketSession;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
@Controller @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@CrossOrigin(origins = "*")
public class MainController { public class MainController {
private final SocketRepository socketRepository; private final SocketRepository socketRepository;
private final ChargingService chargingService;
private final CacheRepository cacheRepository; private final CacheRepository cacheRepository;
private final DriverRepository driverRepository;
@GetMapping("/api/clear") @GetMapping("/api/clear")
public void clear() throws IOException { public void clear() throws IOException {
List<WebSocketSession> sessions = socketRepository.findAllSession(); List<WebSocketSession> sessions = socketRepository.findAllSession();
chargingService.extinguish();
for (WebSocketSession session : sessions) { for (WebSocketSession session : sessions) {
session.sendMessage(new TextMessage("CLEAR")); session.sendMessage(new TextMessage("CLEAR"));
} }
} }
@GetMapping("/api/cache") @GetMapping("/api/cars")
public List<Cache> cache() { public List<Cache> car() {
return cacheRepository.findAll(); return cacheRepository.findAll();
} }
@GetMapping("/api/users")
public List<Driver> driver() {
return driverRepository.findAll();
}
@GetMapping("/api/fire")
public FireDTO fire() {
return new FireDTO(chargingService.isFireState());
}
} }
package org.example.thiefsil.dto; package org.example.thiefsil.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.RequiredArgsConstructor;
@Data
@AllArgsConstructor
public class FireDTO { public class FireDTO {
boolean fire;
} }
...@@ -9,6 +9,7 @@ import jakarta.persistence.PersistenceContext; ...@@ -9,6 +9,7 @@ import jakarta.persistence.PersistenceContext;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.example.thiefsil.dto.CarDTO; import org.example.thiefsil.dto.CarDTO;
import org.example.thiefsil.dto.FireDTO;
import org.example.thiefsil.dto.ValidateCarDTO; import org.example.thiefsil.dto.ValidateCarDTO;
import org.example.thiefsil.entity.Cache; import org.example.thiefsil.entity.Cache;
import org.example.thiefsil.entity.Driver; import org.example.thiefsil.entity.Driver;
...@@ -42,6 +43,7 @@ public class ChargingService { ...@@ -42,6 +43,7 @@ public class ChargingService {
private final WebMailService webMailService; private final WebMailService webMailService;
private final EntityManager entityManager; private final EntityManager entityManager;
private final CacheRepository cacheRepository; private final CacheRepository cacheRepository;
static private boolean fireState = false;
@Value("${test.mail}") @Value("${test.mail}")
private String mail; private String mail;
...@@ -52,7 +54,11 @@ public class ChargingService { ...@@ -52,7 +54,11 @@ public class ChargingService {
while (session.isOpen()) { while (session.isOpen()) {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule()); mapper.registerModule(new JavaTimeModule());
if (fireState) {
session.sendMessage(new TextMessage(mapper.writeValueAsString(new FireDTO(fireState))));
}
else {
List<CarDTO> list = new ArrayList<>(10); List<CarDTO> list = new ArrayList<>(10);
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
Vehicle vehicle = vehicleRepository.findVehicleByCharger(i).orElse(null); Vehicle vehicle = vehicleRepository.findVehicleByCharger(i).orElse(null);
...@@ -67,6 +73,8 @@ public class ChargingService { ...@@ -67,6 +73,8 @@ public class ChargingService {
} }
session.sendMessage(new TextMessage(mapper.writeValueAsString(list))); session.sendMessage(new TextMessage(mapper.writeValueAsString(list)));
}
Thread.sleep(1000); Thread.sleep(1000);
} }
} }
...@@ -130,10 +138,18 @@ public class ChargingService { ...@@ -130,10 +138,18 @@ public class ChargingService {
for (WebSocketSession session : sessions) { for (WebSocketSession session : sessions) {
session.sendMessage(new TextMessage(lot + "-FIRE")); session.sendMessage(new TextMessage(lot + "-FIRE"));
} }
fireState = true;
webMailService.sendFireMail(lot); webMailService.sendFireMail(lot);
} }
public void extinguish() {
fireState = false;
}
public boolean isFireState() {
return fireState;
}
@Scheduled(fixedRate = 60000) @Scheduled(fixedRate = 60000)
public void overParking() { public void overParking() {
LocalDateTime park = LocalDateTime.now(ZoneId.of("Asia/Seoul")); LocalDateTime park = LocalDateTime.now(ZoneId.of("Asia/Seoul"));
...@@ -161,6 +177,9 @@ public class ChargingService { ...@@ -161,6 +177,9 @@ public class ChargingService {
Cache cache = cacheRepository.findByNumber(number).orElse(null); Cache cache = cacheRepository.findByNumber(number).orElse(null);
if (cache != null) { if (cache != null) {
if (cache.isElectric()) {
makeVehicle(lot, number);
}
return cache.isElectric(); return cache.isElectric();
} }
...@@ -190,9 +209,9 @@ public class ChargingService { ...@@ -190,9 +209,9 @@ public class ChargingService {
@PostConstruct @PostConstruct
public void init() { public void init() {
driverRepository.deleteAll();
vehicleRepository.deleteAll(); vehicleRepository.deleteAll();
driverRepository.deleteAll();
Driver d1 = Driver.builder().id(1L).name("홍길동").email(mail).build(); Driver d1 = Driver.builder().id(1L).name("홍길동").email(mail).build();
Driver d2 = Driver.builder().id(2L).name("구자욱").email(mail).build(); Driver d2 = Driver.builder().id(2L).name("구자욱").email(mail).build();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment