Skip to content

Commit

Permalink
Merge branch 'feature/224' of https://github.com/kookmin-sw/capstone-…
Browse files Browse the repository at this point in the history
…2024-14 into feature/224
  • Loading branch information
begong313 committed May 15, 2024
2 parents 1666cac + 15e4813 commit cc60f17
Show file tree
Hide file tree
Showing 19 changed files with 263 additions and 84 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package com.capstone.server.controller;

import com.capstone.server.dto.detectionResult.DetectionResultDto;
import com.capstone.server.dto.SearchRequestDto;
import com.capstone.server.dto.detection.DetectionResultDto;
import com.capstone.server.dto.guardian.BetweenRequestDto;
import com.capstone.server.model.enums.SearchResultSortBy;
import com.capstone.server.model.enums.Step;
import com.capstone.server.response.SuccessResponse;
import com.capstone.server.service.EncryptionService;
import com.capstone.server.service.GuardianService;
import com.capstone.server.service.MissingPeopleService;
import com.capstone.server.service.SearchResultService;
import com.capstone.server.service.*;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -21,6 +19,7 @@

import java.net.URI;
import java.net.URISyntaxException;
import java.time.LocalDateTime;


@Slf4j
Expand All @@ -35,6 +34,12 @@ public class GuardianController {
private EncryptionService encryptionService;
@Autowired
private MissingPeopleService missingPeopleService;
@Autowired
private DetectService detectService;
@Autowired
private SearchHistoryService searchHistoryService;
@Autowired
private KafkaProducerService kafkaProducerService;

@Value("${mobile.server.url}")
private String REDIRECT_URL;
Expand Down Expand Up @@ -79,7 +84,20 @@ public ResponseEntity<?> uploadBetweenResult(
// if (step.equals(Step.fromValue("between"))) {
// throw new CustomException(ErrorCode.BAD_REQUEST, "invalid step", "can't request step");
// }
return ResponseEntity.ok().body(new SuccessResponse(guardianService.postBetween(id, betweenRequestDto)));
//상화작용 단계 결과 db저장
guardianService.postBetween(id, betweenRequestDto);

SearchRequestDto searchRequestDto = new SearchRequestDto(
LocalDateTime.parse("2021-09-06T01:01:01")
, LocalDateTime.parse("2021-09-06T01:01:01"),
37.6100, 126.9967, "도로명 주소"); //todo : 기능추가;
//2차탐색기록 생성
Step step = Step.fromValue("second");
Long searchId = searchHistoryService.createSearchHistory(searchRequestDto, id, step);
//2차탐색 시작
detectService.postSecondDetectionResult(detectService.callSecondDetectApi(id, betweenRequestDto, searchId));
//사진을 업로드하면 바로 2차탐색하게 구현하기
return ResponseEntity.ok().body(new SuccessResponse("success"));
}

//상호작용 단계에서 고른 사진 보기
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.capstone.server.code.ErrorCode;
import com.capstone.server.dto.*;
import com.capstone.server.dto.detectionResult.DetectionResultDetailDto;
import com.capstone.server.dto.detection.DetectionResultDetailDto;
import com.capstone.server.exception.CustomException;
import com.capstone.server.model.enums.MissingPeopleSortBy;
import com.capstone.server.model.enums.SearchResultSortBy;
Expand Down Expand Up @@ -116,13 +116,13 @@ public ResponseEntity<?> totalTest(@Validated @RequestBody MissingPeopleCreateRe
} else {
// ChatGPT query 생성, [ko_query, en_query]
missingPeopleCreateRequestDto = chatGPTService.translateEnglishToKorean(missingPeopleCreateRequestDto);

//DB에 실종자 정보 등록
MissingPeopleCreateResponseDto createResponse = missingPeopleService.createMissingPeople(missingPeopleCreateRequestDto);

//생성된 MissingpeopleId와 searchid로 탐색 todo : 이 함수를 kafka에 넣고 돌아오는 결과처리
kafkaProducerService.startCallFirstDetectApiToKafka(Long.toString(createResponse.getId()));

// 2차 모델 사용한다고 하면 주석 풀기
// kafkaProducerService.startCallSecondDetectApiToKafka(Long.toString(createResponse.getId()));

Expand Down Expand Up @@ -263,7 +263,7 @@ public ResponseEntity<?> getSearchRadius(
if (searchId != null) {//search-id가 있으면 searchid기준으로 결과를 보내줌
return ResponseEntity.ok().body(new SuccessResponse(searchHistoryService.getSearchHistoryBySearchId(searchId)));
}
return ResponseEntity.ok().body(new SuccessResponse(searchHistoryService.getSearchHistoryById(id)));
return ResponseEntity.ok().body(new SuccessResponse(searchHistoryService.getSearchRangeById(id)));
}

//지능형 탐색 시작하기
Expand All @@ -274,7 +274,8 @@ public ResponseEntity<?> startSearching(
) {
//Todo : 1차인지, 2차인지 고를 수 있어야 함
//DB에 탐색 등록
searchHistoryService.createSearchHistory(searchRequestDto, id);
Step step = Step.fromValue("first");
searchHistoryService.createSearchHistory(searchRequestDto, id, step);
//생성된 MissingpeopleId와 searchid로 탐색 todo : 이 함수를 kafka에 넣고 돌아오는 결과처리
// detectService.callFirstDetectAPI(id); //Kafka안돼서 테스트용
// kafkaProducerService.startCallFirstDetectApiToKafka(id);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
package com.capstone.server.controller;

import com.capstone.server.dto.FirstDetectionRequestDto;
import com.capstone.server.dto.SearchRequestDto;
import com.capstone.server.dto.detection.FirstDetectionRequestDto;
import com.capstone.server.dto.guardian.BetweenRequestDto;
import com.capstone.server.model.enums.Step;
import com.capstone.server.response.SuccessResponse;
import com.capstone.server.service.DetectService;
import com.capstone.server.service.SearchHistoryService;
import com.capstone.server.service.SmsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Slf4j
@RestController
@RequestMapping("/test")
Expand All @@ -17,6 +25,8 @@ public class TestController {
private SmsService smsService;
@Autowired
private DetectService detectService;
@Autowired
private SearchHistoryService searchHistoryService;

//ai 탐색코드 테스트
@PostMapping("/aiserver")
Expand All @@ -29,4 +39,23 @@ public ResponseEntity<?> urlTest(@RequestParam("id") Long id) {
return ResponseEntity.ok().body(new SuccessResponse<>(smsService.getShortUrl(id)));
}

@GetMapping("/second")
public ResponseEntity<?> secondTest() {
List<Long> list = new ArrayList<>();
list.add(266L);
list.add(274L);
BetweenRequestDto betweenRequestDto = new BetweenRequestDto();
betweenRequestDto.setResultIds(list);
SearchRequestDto searchRequestDto = new SearchRequestDto(
LocalDateTime.parse("2021-09-06T01:01:01")
, LocalDateTime.parse("2021-09-06T01:01:01"),
37.6100, 126.9967, "도로명 주소"); //todo : 기능추가;
//2차탐색기록 생성
Step step = Step.fromValue("second");
Long searchId = searchHistoryService.createSearchHistory(searchRequestDto, 89L, step);
//2차탐색 시작
detectService.postSecondDetectionResult(detectService.callSecondDetectApi(89L, betweenRequestDto, searchId));
return ResponseEntity.ok().body(new SuccessResponse<>());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,11 @@
@AllArgsConstructor
@NoArgsConstructor
public class SearchRangeDto {
private Long id;
private double longitude;
private double latitude;
private int searchRadius;

private SearchRangeDto(SearchHistoryEntity searchHistoryEntity) {
this.id = searchHistoryEntity.getId();
this.longitude = searchHistoryEntity.getLongitude();
this.latitude = searchHistoryEntity.getLatitude();
this.searchRadius = searchHistoryEntity.getSearchRadius();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.capstone.server.dto;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.time.LocalDateTime;
import java.util.List;


@Getter
@Setter
@ToString
public class SearchResultDetailResponse<T> extends SearchResultResponse<T> {
private SearchRangeDto searchRange;
private LocalDateTime startTime;
private LocalDateTime endTime;

public SearchResultDetailResponse(long count, List<T> list, SearchRangeDto searchRangeDto, LocalDateTime startTime, LocalDateTime endTime) {
super(count, list);
searchRange = searchRangeDto;
this.startTime = startTime;
this.endTime = endTime;
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.capstone.server.dto.detectionResult;
package com.capstone.server.dto.detection;

import com.capstone.server.dto.CCTVDto;
import com.capstone.server.model.CCTVEntity;
import com.capstone.server.model.SearchResultEntity;
import lombok.*;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.math.BigDecimal;
import java.math.RoundingMode;
Expand All @@ -14,24 +17,17 @@
public class DetectionResultDetailDto extends DetectionResultDto {
private double similarity;
private LocalDateTime time;
private CCTV cctv;
private CCTVDto cctv;


public DetectionResultDetailDto(SearchResultEntity searchResultEntity) {
super(searchResultEntity.getId(), searchResultEntity.getImageUrl());
this.similarity = roundTo8DecimalPlaces(searchResultEntity.getSimilarity());
this.time = searchResultEntity.getTime();
CCTVEntity cctvEntity = searchResultEntity.getCctvEntity();
this.cctv = new CCTV(cctvEntity.getId(), cctvEntity.getGps().getX(), cctvEntity.getGps().getY());
this.cctv = CCTVDto.fromEntity(cctvEntity);
}

@AllArgsConstructor
@Data
static class CCTV {
private long cctvId;
private double latitude;
private double longitude;

}

public static DetectionResultDetailDto fromEntity(SearchResultEntity searchResultEntity) {
return new DetectionResultDetailDto(searchResultEntity);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.capstone.server.dto.detectionResult;
package com.capstone.server.dto.detection;


import com.capstone.server.model.SearchResultEntity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.capstone.server.dto;
package com.capstone.server.dto.detection;


import com.capstone.server.model.SearchResultEntity;
Expand All @@ -12,7 +12,7 @@

@Data
@AllArgsConstructor
public class DetectionDataDto {
public class FirstDetectionDataDto {
long searchId; //backend server에 결과 넣을 때 사용
long missingPeopleId; //backend server에 결과 넣을 때 사용
List<ImageData> data;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.capstone.server.dto;
package com.capstone.server.dto.detection;

import com.capstone.server.dto.CCTVDto;
import com.capstone.server.model.MissingPeopleEntity;
import com.capstone.server.model.SearchHistoryEntity;
import com.capstone.server.model.enums.Step;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.capstone.server.dto.detection;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@NoArgsConstructor
@AllArgsConstructor
@Data
public class SecondDetectionDataDto {
List<String> data;
Long secondSearchId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.capstone.server.dto.detection;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.List;

@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class SecondDetectionRequestDto {
private Long missingPeopleId;
private Long firstSearchId;
private Long secondSearchId;
private int topK;
private List<String> queryImagePath;

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@
public interface BetweenRepository extends JpaRepository<BetweenEntity, Long> {
@Query("SELECT sr FROM between bt JOIN bt.searchResult sr WHERE sr.searchHistoryEntity = :searchHistoryEntity ORDER BY sr.similarity DESC, sr.time DESC")
Page<SearchResultEntity> findAllBySearchHistoryEntity(Pageable pageable, SearchHistoryEntity searchHistoryEntity);

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,13 @@
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface SearchResultRepository extends JpaRepository<SearchResultEntity, Long> {
List<SearchResultEntity> findAllBySearchHistoryEntity(SearchHistoryEntity searchHistoryEntity);
List<SearchResultEntity> findByIdIn(List<Long> ids);

Page<SearchResultEntity> findAllBySearchHistoryEntity(Pageable pageable, SearchHistoryEntity searchHistoryEntity);

Expand Down
Loading

0 comments on commit cc60f17

Please sign in to comment.