diff --git a/backend/src/main/java/com/example/backend/analysis/controller/CaseStatsController.java b/backend/src/main/java/com/example/backend/analysis/controller/CaseStatsController.java index 267c41d2..2b3e3aa1 100644 --- a/backend/src/main/java/com/example/backend/analysis/controller/CaseStatsController.java +++ b/backend/src/main/java/com/example/backend/analysis/controller/CaseStatsController.java @@ -10,7 +10,6 @@ import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.NoSuchElementException; @RestController @RequestMapping("/api/v1/stats") @@ -22,16 +21,13 @@ public class CaseStatsController { // 개요 조회 @GetMapping("/overview") public ResponseEntity getOverview(HttpSession session) { - try { - CaseStatsOverviewResponse response = caseStatsService.getOverview(session); - return ResponseEntity.ok(response); - } catch (IllegalStateException e) { - return ResponseEntity.status(401).body(Collections.singletonMap("message", e.getMessage())); - } catch (NoSuchElementException e) { - return ResponseEntity.status(404).body(Collections.singletonMap("message", e.getMessage())); - } catch (Exception e) { - return ResponseEntity.status(500).body(Collections.singletonMap("message", "내부 서버 오류 발생")); + // 결과가 없으면 404, 있으면 200 + CaseStatsOverviewResponse response = caseStatsService.getOverview(session); + if (response == null) { + return ResponseEntity.status(404) + .body(Collections.singletonMap("message", "개요 정보가 없습니다.")); } + return ResponseEntity.ok(response); } // 시간대별 사건 수 조회 (0시~23시 모두 반환) @@ -39,16 +35,12 @@ public ResponseEntity getOverview(HttpSession session) { public ResponseEntity getHourlyCaseStats(@RequestParam("date") String date, @RequestParam(value = "category", required = false) String category, HttpSession session) { - try { - List stats = caseStatsService.getHourlyCaseStats(date, category, session); - return ResponseEntity.ok(stats); - } catch (IllegalStateException e) { - return ResponseEntity.status(401).body(Collections.singletonMap("message", e.getMessage())); - } catch (NoSuchElementException e) { - return ResponseEntity.status(404).body(Collections.singletonMap("message", e.getMessage())); - } catch (Exception e) { - return ResponseEntity.status(500).body(Collections.singletonMap("message", "내부 서버 오류가 발생했습니다.")); + List stats = caseStatsService.getHourlyCaseStats(date, category, session); + if (stats.isEmpty()) { + return ResponseEntity.status(404) + .body(Collections.singletonMap("message", "시간대별 사건 정보가 없습니다.")); } + return ResponseEntity.ok(stats); } // 월별/일별 사건 수 조회 (month 파라미터 존재 여부에 따라 분기; 전체 범위를 0으로 채워 반환) @@ -57,70 +49,36 @@ public ResponseEntity getCaseStats(@RequestParam("year") int year, @RequestParam(value = "month", required = false) Integer month, @RequestParam(value = "category", required = false) String category, HttpSession session) { - try { - if (month == null) { - List monthlyStats = caseStatsService.getMonthlyCaseStats(year, category, session); - return ResponseEntity.ok(monthlyStats); - } - List dailyStats = caseStatsService.getDailyCaseStats(year, month, category, session); - return ResponseEntity.ok(dailyStats); - } catch (IllegalStateException e) { - return ResponseEntity.status(401).body(Collections.singletonMap("message", e.getMessage())); - } catch (NoSuchElementException e) { - return ResponseEntity.status(404).body(Collections.singletonMap("message", e.getMessage())); - } catch (Exception e) { - return ResponseEntity.status(500).body(Collections.singletonMap("message", "내부 서버 오류가 발생했습니다.")); + // month가 없으면 월별 데이터 + if (month == null) { + List monthlyStats = caseStatsService.getMonthlyCaseStats(year, category, session); + return ResponseEntity.ok(monthlyStats); } + + // month가 있으면 일별 데이터 + List dailyStats = caseStatsService.getDailyCaseStats(year, month, category, session); + return ResponseEntity.ok(dailyStats); } // 유형별 사건 수 조회 (기본 카테고리 0 포함) @GetMapping("/category") public ResponseEntity getCategoryCaseStats(@RequestParam("period") String period, HttpSession session) { - try { - Map stats = caseStatsService.getCategoryCaseStats(period, session); - return ResponseEntity.ok(stats); - } catch (IllegalStateException e) { - return ResponseEntity.status(401).body(Collections.singletonMap("message", e.getMessage())); - } catch (IllegalArgumentException e) { - return ResponseEntity.status(400).body(Collections.singletonMap("message", e.getMessage())); - } catch (NoSuchElementException e) { - return ResponseEntity.status(404).body(Collections.singletonMap("message", e.getMessage())); - } catch (Exception e) { - return ResponseEntity.status(500).body(Collections.singletonMap("message", "내부 서버 오류가 발생했습니다.")); - } + Map stats = caseStatsService.getCategoryCaseStats(period, session); + return ResponseEntity.ok(stats); } // 장소별 사건 수 조회 @GetMapping("/location") public ResponseEntity getLocationCaseStats(@RequestParam("period") String period, HttpSession session) { - try { - List stats = caseStatsService.getLocationCaseStats(period, session); - return ResponseEntity.ok(stats); - } catch (IllegalStateException e) { - return ResponseEntity.status(401).body(Collections.singletonMap("message", e.getMessage())); - } catch (IllegalArgumentException e) { - return ResponseEntity.status(400).body(Collections.singletonMap("message", e.getMessage())); - } catch (NoSuchElementException e) { - return ResponseEntity.status(404).body(Collections.singletonMap("message", e.getMessage())); - } catch (Exception e) { - return ResponseEntity.status(500).body(Collections.singletonMap("message", "내부 서버 오류가 발생했습니다.")); - } + List stats = caseStatsService.getLocationCaseStats(period, session); + return ResponseEntity.ok(stats); } // 지도용 장소별 사건 수 조회 @GetMapping("/map") public ResponseEntity getMapCaseStats(@RequestParam("period") String period, HttpSession session) { - try { - List stats = caseStatsService.getMapCaseStats(period, session); - return ResponseEntity.ok(stats); - } catch (IllegalStateException e) { - return ResponseEntity.status(401).body(Collections.singletonMap("message", e.getMessage())); - } catch (IllegalArgumentException e) { - return ResponseEntity.status(400).body(Collections.singletonMap("message", e.getMessage())); - } catch (NoSuchElementException e) { - return ResponseEntity.status(404).body(Collections.singletonMap("message", e.getMessage())); - } catch (Exception e) { - return ResponseEntity.status(500).body(Collections.singletonMap("message", "내부 서버 오류가 발생했습니다.")); - } + List stats = caseStatsService.getMapCaseStats(period, session); + return ResponseEntity.ok(stats); } + } diff --git a/backend/src/main/java/com/example/backend/analysis/dto/CaseStatsOverviewResponse.java b/backend/src/main/java/com/example/backend/analysis/dto/CaseStatsOverviewResponse.java index c8e38534..c27d547e 100644 --- a/backend/src/main/java/com/example/backend/analysis/dto/CaseStatsOverviewResponse.java +++ b/backend/src/main/java/com/example/backend/analysis/dto/CaseStatsOverviewResponse.java @@ -1,12 +1,25 @@ package com.example.backend.analysis.dto; +import com.example.backend.common.domain.CaseEntity; +import com.example.backend.common.domain.CaseStatsOverviewEntity; import lombok.*; @Data +@Builder +@NoArgsConstructor @AllArgsConstructor public class CaseStatsOverviewResponse { private int recentCase; private int todayCase; - private String mostCase; + private CaseEntity.CaseCategory mostCase; private String patrolRegion; + + public static CaseStatsOverviewResponse fromEntity(CaseStatsOverviewEntity entity, String patrolRegionAddress) { + return CaseStatsOverviewResponse.builder() + .recentCase(entity.getRecentCaseCount()) + .todayCase(entity.getTodayCaseCount()) + .mostCase(entity.getMostCase()) + .patrolRegion(patrolRegionAddress) + .build(); + } } diff --git a/backend/src/main/java/com/example/backend/analysis/dto/DailyCaseStatsResponse.java b/backend/src/main/java/com/example/backend/analysis/dto/DailyCaseStatsResponse.java index c6e46d1b..851bbd4d 100644 --- a/backend/src/main/java/com/example/backend/analysis/dto/DailyCaseStatsResponse.java +++ b/backend/src/main/java/com/example/backend/analysis/dto/DailyCaseStatsResponse.java @@ -2,10 +2,10 @@ import lombok.*; -@Getter -@Setter -@AllArgsConstructor +@Data +@Builder @NoArgsConstructor +@AllArgsConstructor public class DailyCaseStatsResponse { private int day; private int fireCount; @@ -13,4 +13,15 @@ public class DailyCaseStatsResponse { private int crowdCongestionCount; private int weaponCount; private int swoonCount; + + public static DailyCaseStatsResponse fromRow(Object[] row) { + return DailyCaseStatsResponse.builder() + .day(((Number) row[0]).intValue()) + .fireCount(((Number) row[1]).intValue()) + .assaultCount(((Number) row[2]).intValue()) + .crowdCongestionCount(((Number) row[3]).intValue()) + .weaponCount(((Number) row[4]).intValue()) + .swoonCount(((Number) row[5]).intValue()) + .build(); + } } \ No newline at end of file diff --git a/backend/src/main/java/com/example/backend/analysis/dto/HourlyCaseStatsResponse.java b/backend/src/main/java/com/example/backend/analysis/dto/HourlyCaseStatsResponse.java index c17db8e5..b52e14c9 100644 --- a/backend/src/main/java/com/example/backend/analysis/dto/HourlyCaseStatsResponse.java +++ b/backend/src/main/java/com/example/backend/analysis/dto/HourlyCaseStatsResponse.java @@ -1,9 +1,10 @@ package com.example.backend.analysis.dto; -import lombok.AllArgsConstructor; -import lombok.Data; +import lombok.*; @Data +@Builder +@NoArgsConstructor @AllArgsConstructor public class HourlyCaseStatsResponse { private int hour; @@ -12,4 +13,15 @@ public class HourlyCaseStatsResponse { private int crowdCongestionCount; private int weaponCount; private int swoonCount; + + public static HourlyCaseStatsResponse fromRow(Object[] row) { + return HourlyCaseStatsResponse.builder() + .hour(((Number) row[0]).intValue()) + .fireCount(((Number) row[1]).intValue()) + .assaultCount(((Number) row[2]).intValue()) + .crowdCongestionCount(((Number) row[3]).intValue()) + .weaponCount(((Number) row[4]).intValue()) + .swoonCount(((Number) row[5]).intValue()) + .build(); + } } diff --git a/backend/src/main/java/com/example/backend/analysis/dto/LocationCaseStatsResponse.java b/backend/src/main/java/com/example/backend/analysis/dto/LocationCaseStatsResponse.java index f8076e1f..0f81d714 100644 --- a/backend/src/main/java/com/example/backend/analysis/dto/LocationCaseStatsResponse.java +++ b/backend/src/main/java/com/example/backend/analysis/dto/LocationCaseStatsResponse.java @@ -3,10 +3,21 @@ import lombok.*; @Data +@Builder +@NoArgsConstructor @AllArgsConstructor public class LocationCaseStatsResponse { - String address; - double latitude; - double longitude; - int count; + private String address; + private double latitude; + private double longitude; + private int count; + + public static LocationCaseStatsResponse fromRow(Object[] row) { + return LocationCaseStatsResponse.builder() + .address((String) row[0]) + .latitude((Double) row[1]) + .longitude((Double) row[2]) + .count(((Number) row[3]).intValue()) + .build(); + } } diff --git a/backend/src/main/java/com/example/backend/analysis/dto/MapCaseStatsResponse.java b/backend/src/main/java/com/example/backend/analysis/dto/MapCaseStatsResponse.java index 7ed237b3..61a71acd 100644 --- a/backend/src/main/java/com/example/backend/analysis/dto/MapCaseStatsResponse.java +++ b/backend/src/main/java/com/example/backend/analysis/dto/MapCaseStatsResponse.java @@ -1,17 +1,31 @@ package com.example.backend.analysis.dto; -import lombok.AllArgsConstructor; -import lombok.Data; +import lombok.*; @Data +@Builder +@NoArgsConstructor @AllArgsConstructor public class MapCaseStatsResponse { - String address; - double latitude; - double longitude; - int fire_count; - int assault_count; - int crowd_congestion_count; - int weapon_count; - int swoon_count; + private String address; + private double latitude; + private double longitude; + private int fireCount; + private int assaultCount; + private int crowdCongestionCount; + private int weaponCount; + private int swoonCount; + + public static MapCaseStatsResponse fromRow(Object[] row) { + return MapCaseStatsResponse.builder() + .address((String) row[0]) + .latitude((Double) row[1]) + .longitude((Double) row[2]) + .fireCount(((Number) row[3]).intValue()) + .assaultCount(((Number) row[4]).intValue()) + .crowdCongestionCount(((Number) row[5]).intValue()) + .weaponCount(((Number) row[6]).intValue()) + .swoonCount(((Number) row[7]).intValue()) + .build(); + } } diff --git a/backend/src/main/java/com/example/backend/analysis/dto/MonthlyCaseStatsResponse.java b/backend/src/main/java/com/example/backend/analysis/dto/MonthlyCaseStatsResponse.java index 9e4e30b8..6878b67d 100644 --- a/backend/src/main/java/com/example/backend/analysis/dto/MonthlyCaseStatsResponse.java +++ b/backend/src/main/java/com/example/backend/analysis/dto/MonthlyCaseStatsResponse.java @@ -2,10 +2,10 @@ import lombok.*; -@Getter -@Setter -@AllArgsConstructor +@Data +@Builder @NoArgsConstructor +@AllArgsConstructor public class MonthlyCaseStatsResponse { private int month; private int fireCount; @@ -13,4 +13,15 @@ public class MonthlyCaseStatsResponse { private int crowdCongestionCount; private int weaponCount; private int swoonCount; + + public static MonthlyCaseStatsResponse fromRow(Object[] row) { + return MonthlyCaseStatsResponse.builder() + .month(((Number) row[0]).intValue()) + .fireCount(((Number) row[1]).intValue()) + .assaultCount(((Number) row[2]).intValue()) + .crowdCongestionCount(((Number) row[3]).intValue()) + .weaponCount(((Number) row[4]).intValue()) + .swoonCount(((Number) row[5]).intValue()) + .build(); + } } \ No newline at end of file diff --git a/backend/src/main/java/com/example/backend/analysis/service/CaseStatsService.java b/backend/src/main/java/com/example/backend/analysis/service/CaseStatsService.java index 938050a5..66dc640b 100644 --- a/backend/src/main/java/com/example/backend/analysis/service/CaseStatsService.java +++ b/backend/src/main/java/com/example/backend/analysis/service/CaseStatsService.java @@ -1,9 +1,9 @@ package com.example.backend.analysis.service; -import com.example.backend.common.domain.CaseStatsOverviewEntity; import com.example.backend.analysis.dto.*; import com.example.backend.analysis.repository.CaseStatsCategoryRepository; import com.example.backend.analysis.repository.CaseStatsOverviewRepository; +import com.example.backend.common.domain.CaseStatsOverviewEntity; import com.example.backend.user.dto.UserResponseDto; import jakarta.servlet.http.HttpSession; import lombok.RequiredArgsConstructor; @@ -11,11 +11,7 @@ import java.time.LocalDateTime; import java.time.YearMonth; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; +import java.util.*; import java.util.stream.Collectors; @Service @@ -62,13 +58,7 @@ public CaseStatsOverviewResponse getOverview(HttpSession session) { String patrolRegionAddress = statsOverviewRepository.findAddressWithMostIncidentsLastMonth(officeId) .orElse("정보 없음"); - // 응답 생성 (순찰 강화 지역은 주소만 포함) - return new CaseStatsOverviewResponse( - stats.getRecentCaseCount(), // 지난 7일간 사건 수 - stats.getTodayCaseCount(), // 오늘 사건 수 - stats.getMostCase().name(), // 이번 달 가장 많이 발생한 사건 유형 - patrolRegionAddress // 순찰 강화 지역 (주소) - ); + return CaseStatsOverviewResponse.fromEntity(stats, patrolRegionAddress); } // 시간대별 사건 수 조회 (결과에 없는 시간은 0으로 채움) @@ -81,28 +71,22 @@ public List getHourlyCaseStats(String date, String cate // 조회된 결과를 hour를 key로 하는 맵에 담음 Map hourMap = new LinkedHashMap<>(); for (Object[] row : results) { - int hour = ((Number) row[0]).intValue(); - HourlyCaseStatsResponse response = new HourlyCaseStatsResponse( - hour, - ((Number) row[1]).intValue(), // fire - ((Number) row[2]).intValue(), // assault - ((Number) row[3]).intValue(), // crowdCongestion - ((Number) row[4]).intValue(), // weapon - ((Number) row[5]).intValue() // swoon - ); - hourMap.put(hour, response); + HourlyCaseStatsResponse response = HourlyCaseStatsResponse.fromRow(row); + hourMap.put(response.getHour(), response); } - // 0시부터 23시까지 모두 포함하는 리스트 생성 + // 0시부터 23시까지 모두 포함 List fullHourlyList = new ArrayList<>(); for (int h = 0; h < 24; h++) { if (hourMap.containsKey(h)) { fullHourlyList.add(hourMap.get(h)); } else { - fullHourlyList.add(new HourlyCaseStatsResponse(h, 0, 0, 0, 0, 0)); + // 값이 없는 시간대는 0으로 채움 + fullHourlyList.add(HourlyCaseStatsResponse.builder() + .hour(h).fireCount(0).assaultCount(0).crowdCongestionCount(0).weaponCount(0).swoonCount(0) + .build()); } } - return fullHourlyList; } @@ -116,16 +100,8 @@ public List getDailyCaseStats(int year, int month, Strin // 조회된 결과를 day를 key로 하는 맵에 담음 Map dayMap = new LinkedHashMap<>(); for (Object[] row : results) { - int day = ((Number) row[0]).intValue(); - DailyCaseStatsResponse response = new DailyCaseStatsResponse( - day, - ((Number) row[1]).intValue(), // fire - ((Number) row[2]).intValue(), // assault - ((Number) row[3]).intValue(), // crowdCongestion - ((Number) row[4]).intValue(), // weapon - ((Number) row[5]).intValue() // swoon - ); - dayMap.put(day, response); + DailyCaseStatsResponse response = DailyCaseStatsResponse.fromRow(row); + dayMap.put(response.getDay(), response); } // 해당 월의 일 수 계산 @@ -137,10 +113,11 @@ public List getDailyCaseStats(int year, int month, Strin if (dayMap.containsKey(d)) { fullDailyList.add(dayMap.get(d)); } else { - fullDailyList.add(new DailyCaseStatsResponse(d, 0, 0, 0, 0, 0)); + fullDailyList.add(DailyCaseStatsResponse.builder() + .day(d).fireCount(0).assaultCount(0).crowdCongestionCount(0).weaponCount(0).swoonCount(0) + .build()); } } - return fullDailyList; } @@ -151,19 +128,10 @@ public List getMonthlyCaseStats(int year, String categ String categoryParam = processCategory(category); List results = statsCategoryRepository.findMonthlyCaseStats(year, officeId, categoryParam); - // 조회된 결과를 month를 key로 하는 맵에 담음 Map monthMap = new LinkedHashMap<>(); for (Object[] row : results) { - int month = ((Number) row[0]).intValue(); - MonthlyCaseStatsResponse response = new MonthlyCaseStatsResponse( - month, - ((Number) row[1]).intValue(), // fire - ((Number) row[2]).intValue(), // assault - ((Number) row[3]).intValue(), // crowdCongestion - ((Number) row[4]).intValue(), // weapon - ((Number) row[5]).intValue() // swoon - ); - monthMap.put(month, response); + MonthlyCaseStatsResponse response = MonthlyCaseStatsResponse.fromRow(row); + monthMap.put(response.getMonth(), response); } List fullMonthlyList = new ArrayList<>(); @@ -171,10 +139,11 @@ public List getMonthlyCaseStats(int year, String categ if (monthMap.containsKey(m)) { fullMonthlyList.add(monthMap.get(m)); } else { - fullMonthlyList.add(new MonthlyCaseStatsResponse(m, 0, 0, 0, 0, 0)); + fullMonthlyList.add(MonthlyCaseStatsResponse.builder() + .month(m).fireCount(0).assaultCount(0).crowdCongestionCount(0).weaponCount(0).swoonCount(0) + .build()); } } - return fullMonthlyList; } @@ -199,7 +168,6 @@ public Map getCategoryCaseStats(String period, HttpSession sess int count = (row[1] == null) ? 0 : ((Number) row[1]).intValue(); resultMap.put(cat, count); } - return resultMap; } @@ -215,11 +183,7 @@ public List getLocationCaseStats(String period, HttpS } return results.stream() - .map(row -> new LocationCaseStatsResponse( - (String) row[0], // address - (Double) row[1], // latitude - (Double) row[2], // longitude - ((Number) row[3]).intValue())) // count + .map(LocationCaseStatsResponse::fromRow) .collect(Collectors.toList()); } @@ -235,16 +199,7 @@ public List getMapCaseStats(String period, HttpSession ses } return results.stream() - .map(row -> new MapCaseStatsResponse( - (String) row[0], // address - (Double) row[1], // latitude - (Double) row[2], // longitude - ((Number) row[3]).intValue(), // fire_count - ((Number) row[4]).intValue(), // assault_count - ((Number) row[5]).intValue(), // crowd_congestion_count - ((Number) row[6]).intValue(), // weapon_count - ((Number) row[7]).intValue())) // swoon_count + .map(MapCaseStatsResponse::fromRow) .collect(Collectors.toList()); } - } diff --git a/backend/src/main/java/com/example/backend/dashboard/dto/CaseDetectRequest.java b/backend/src/main/java/com/example/backend/dashboard/dto/CaseDetectRequest.java index 2a59d809..f10e0cb2 100644 --- a/backend/src/main/java/com/example/backend/dashboard/dto/CaseDetectRequest.java +++ b/backend/src/main/java/com/example/backend/dashboard/dto/CaseDetectRequest.java @@ -3,9 +3,9 @@ @Data public class CaseDetectRequest { - private Integer officeId; // 사무소 ID - private Integer cctvId; // CCTV ID - private Integer level; // 위험 레벨 + private int officeId; // 사무소 ID + private int cctvId; // CCTV ID + private int level; // 위험 레벨 private String category; // "fire", "assault" 등 private String video; // 스토리지에 저장된 영상 URL private String memo; // 기타 메모 diff --git a/backend/src/main/java/com/example/backend/dashboard/dto/CaseDetectResponse.java b/backend/src/main/java/com/example/backend/dashboard/dto/CaseDetectResponse.java index a7e0360c..1696d343 100644 --- a/backend/src/main/java/com/example/backend/dashboard/dto/CaseDetectResponse.java +++ b/backend/src/main/java/com/example/backend/dashboard/dto/CaseDetectResponse.java @@ -12,7 +12,7 @@ @NoArgsConstructor @AllArgsConstructor public class CaseDetectResponse { - private Integer caseId; // 사건 ID + private int caseId; // 사건 ID private String category; // 사건 카테고리 (예: fire, assault 등) private String cctvAddress; // CCTV 주소 private String dateTime; // 사건 감지 시각 (문자열 형태, yyyy-MM-dd HH:mm:ss) diff --git a/backend/src/main/java/com/example/backend/dashboard/dto/DashboardResponse.java b/backend/src/main/java/com/example/backend/dashboard/dto/DashboardResponse.java index a09094cc..55d26ba2 100644 --- a/backend/src/main/java/com/example/backend/dashboard/dto/DashboardResponse.java +++ b/backend/src/main/java/com/example/backend/dashboard/dto/DashboardResponse.java @@ -11,7 +11,7 @@ @Data @Builder public class DashboardResponse { - private Integer id; + private int id; private String police_name; private String police_rank; private String address; @@ -19,7 +19,7 @@ public class DashboardResponse { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime date; - private Integer level; + private int level; private CaseCategory category; private CaseState state; diff --git a/backend/src/main/java/com/example/backend/search/dto/DetailResponse.java b/backend/src/main/java/com/example/backend/search/dto/DetailResponse.java index 5fc3965e..4d3199e8 100644 --- a/backend/src/main/java/com/example/backend/search/dto/DetailResponse.java +++ b/backend/src/main/java/com/example/backend/search/dto/DetailResponse.java @@ -2,17 +2,19 @@ import com.example.backend.common.domain.CaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Builder; -import lombok.Getter; +import lombok.*; import java.time.LocalDateTime; -@Getter +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor public class DetailResponse { private int id; - private int policeId; + private Integer policeId; private String policeName; - private int cctvId; + private Integer cctvId; private String address; private Double longitude; private Double latitude; @@ -24,22 +26,6 @@ public class DetailResponse { private String video; private String memo; - @Builder - public DetailResponse(Integer id, Integer policeId, String policeName, Integer cctvId, String address, Double latitude, Double longitude, LocalDateTime date, - String category, String video, String memo) { - this.id = id; - this.policeId = policeId; - this.policeName = policeName; - this.cctvId = cctvId; - this.address = address; - this.latitude = latitude; - this.longitude = longitude; - this.date = date; - this.category = category; - this.video = video; - this.memo = memo; - } - public static DetailResponse fromEntity(CaseEntity entity) { return DetailResponse.builder() .id(entity.getId()) diff --git a/backend/src/main/java/com/example/backend/search/dto/SearchRequest.java b/backend/src/main/java/com/example/backend/search/dto/SearchRequest.java index 097ea46e..8e731cc4 100644 --- a/backend/src/main/java/com/example/backend/search/dto/SearchRequest.java +++ b/backend/src/main/java/com/example/backend/search/dto/SearchRequest.java @@ -13,7 +13,7 @@ public class SearchRequest { private String address; private String police; private String order; - private Integer page; + private int page; // startDate 변환 00:00:00 public LocalDateTime getStartDateTime() { diff --git a/backend/src/main/java/com/example/backend/search/dto/SearchResponse.java b/backend/src/main/java/com/example/backend/search/dto/SearchResponse.java index 77fcb20d..abd018f1 100644 --- a/backend/src/main/java/com/example/backend/search/dto/SearchResponse.java +++ b/backend/src/main/java/com/example/backend/search/dto/SearchResponse.java @@ -2,21 +2,19 @@ import com.example.backend.common.domain.CaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Builder; -import lombok.Data; -import lombok.Getter; -import lombok.NoArgsConstructor; +import lombok.*; import java.time.LocalDateTime; -@Getter -@NoArgsConstructor @Data +@Builder +@NoArgsConstructor +@AllArgsConstructor public class SearchResponse { private int id; - private int policeId; + private Integer policeId; private String policeName; - private int cctvId; + private Integer cctvId; private String address; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") @@ -25,19 +23,6 @@ public class SearchResponse { private String category; private String memo; - @Builder - public SearchResponse(Integer id, Integer policeId, String policeName, Integer cctvId, String address, LocalDateTime date, - String category, String memo) { - this.id = id; - this.policeId = policeId; - this.policeName = policeName; - this.cctvId = cctvId; - this.address = address; - this.date = date; - this.category = category; - this.memo = memo; - } - public static SearchResponse fromEntity(CaseEntity entity) { return SearchResponse.builder() .id(entity.getId()) diff --git a/backend/src/main/java/com/example/backend/search/dto/SearchResult.java b/backend/src/main/java/com/example/backend/search/dto/SearchResult.java index 8d6b4e0e..21aafd3f 100644 --- a/backend/src/main/java/com/example/backend/search/dto/SearchResult.java +++ b/backend/src/main/java/com/example/backend/search/dto/SearchResult.java @@ -1,20 +1,12 @@ package com.example.backend.search.dto; -import lombok.Builder; -import lombok.Getter; - +import lombok.*; import java.util.List; -@Getter +@Data +@Builder public class SearchResult { private final List results; // 검색 결과 리스트 private final int totalPages; // 전체 페이지 수 private final long totalElements; // 전체 데이터 개수 - - @Builder - public SearchResult(List results, int totalPages, long totalElements) { - this.results = results; - this.totalPages = totalPages; - this.totalElements = totalElements; - } -} +} \ No newline at end of file diff --git a/backend/src/main/java/com/example/backend/user/dto/UserResponseDto.java b/backend/src/main/java/com/example/backend/user/dto/UserResponseDto.java index 78f0dd78..5cefe8bd 100644 --- a/backend/src/main/java/com/example/backend/user/dto/UserResponseDto.java +++ b/backend/src/main/java/com/example/backend/user/dto/UserResponseDto.java @@ -10,8 +10,8 @@ @AllArgsConstructor public class UserResponseDto { @JsonIgnore - private Integer id; - private Integer officeId; + private int id; + private int officeId; private String name; private String officeName; private String profileUrl;