Rviewer add

This commit is contained in:
DanielLee
2026-01-14 09:42:08 +09:00
parent 56e7866d4f
commit b918ad14c4
16 changed files with 13017 additions and 8 deletions

View File

@@ -3,6 +3,7 @@ package com.kamco.cd.kamcoback.trainingdata.service;
import com.kamco.cd.kamcoback.config.api.ApiResponseDto.ApiResponseCode;
import com.kamco.cd.kamcoback.config.api.ApiResponseDto.ResponseObj;
import com.kamco.cd.kamcoback.postgres.core.TrainingDataLabelCoreService;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DefaultPaging;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DetailRes;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.GeoFeatureRequest;
@@ -87,4 +88,30 @@ public class TrainingDataLabelService {
public DefaultPaging getDefaultPagingNumber(String userId, Integer size, String assignmentUid) {
return trainingDataLabelCoreService.getDefaultPagingNumber(userId, size, assignmentUid);
}
/**
* 새로운 polygon(들) 추가 저장
*
* @param request 새 polygon 정보 (여러 개 가능)
* @return 응답 메시지
*/
@Transactional
public ResponseObj saveNewPolygon(TrainingDataLabelDto.NewPolygonRequest request) {
trainingDataLabelCoreService.saveNewPolygon(request);
int count = request.getFeatures() != null ? request.getFeatures().size() : 0;
return new ResponseObj(ApiResponseCode.OK, count + "개의 polygon이 저장되었습니다.");
}
/**
* COG 이미지 URL 조회 (변화 전/후)
*
* @param mapSheetNum 도엽번호
* @param beforeYear 변화 전 년도
* @param afterYear 변화 후 년도
* @return 변화 전/후 COG 이미지 URL
*/
public TrainingDataLabelDto.CogImageResponse getCogImageUrl(
String mapSheetNum, Integer beforeYear, Integer afterYear) {
return trainingDataLabelCoreService.getCogImageUrl(mapSheetNum, beforeYear, afterYear);
}
}

View File

@@ -0,0 +1,119 @@
package com.kamco.cd.kamcoback.trainingdata.service;
import com.kamco.cd.kamcoback.config.api.ApiResponseDto.ApiResponseCode;
import com.kamco.cd.kamcoback.config.api.ApiResponseDto.ResponseObj;
import com.kamco.cd.kamcoback.postgres.core.TrainingDataReviewCoreService;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataReviewDto;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataReviewDto.DefaultPaging;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataReviewDto.DetailRes;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataReviewDto.GeoFeatureRequest;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataReviewDto.ReviewGeometryInfo;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataReviewDto.ReviewListDto;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataReviewDto.SummaryRes;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataReviewDto.searchReq;
import jakarta.transaction.Transactional;
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class TrainingDataReviewService {
private final TrainingDataReviewCoreService trainingDataReviewCoreService;
public TrainingDataReviewService(TrainingDataReviewCoreService trainingDataReviewCoreService) {
this.trainingDataReviewCoreService = trainingDataReviewCoreService;
}
public Page<ReviewListDto> findReviewAssignedList(searchReq searchReq, String userId) {
return trainingDataReviewCoreService.findReviewAssignedList(searchReq, userId);
}
public ReviewGeometryInfo findReviewAssignedGeom(String operatorUid) {
return trainingDataReviewCoreService.findReviewAssignedGeom(operatorUid);
}
@Transactional
public ResponseObj saveReviewFeature(GeoFeatureRequest request) {
String status = "";
String operatorUid = request.getOperatorUid();
Long inferenceGeomUid = trainingDataReviewCoreService.findReviewOperatorGeoUid(operatorUid);
if (request.getGeometry() == null || request.getGeometry().isEmpty()) {
// EXCEPT 상태만 업데이트
status = "EXCEPT";
trainingDataReviewCoreService.updateReviewStateOperator(
operatorUid, status, request.getProperties().getInspectMemo());
trainingDataReviewCoreService.updateReviewExceptState(inferenceGeomUid, status);
} else {
status = "COMPLETE";
trainingDataReviewCoreService.updateReviewStateOperator(
operatorUid, status, request.getProperties().getInspectMemo());
trainingDataReviewCoreService.updateReviewPolygonClass(
inferenceGeomUid, request.getGeometry(), request.getProperties(), status);
}
return new ResponseObj(ApiResponseCode.OK, "저장되었습니다.");
}
/**
* 검수자별 작업 통계 조회
*
* @param userId 검수자 사번
* @return 전체/미작업/Today 건수
*/
public SummaryRes getSummary(String userId) {
try {
System.out.println("[Service] getSummary called with userId: " + userId);
SummaryRes result = trainingDataReviewCoreService.getSummary(userId);
System.out.println("[Service] getSummary result: " + result);
return result;
} catch (Exception e) {
System.err.println("[Service] getSummary ERROR: " + e.getMessage());
e.printStackTrace();
// 예외 발생 시에도 빈 통계 반환
return SummaryRes.builder().totalCnt(0L).undoneCnt(0L).todayCnt(0L).build();
}
}
/**
* 검수 작업 상세 정보 조회
*
* @param operatorUid 검수 작업 ID
* @return 변화탐지정보 + 실태조사결과정보
*/
public DetailRes getDetail(UUID operatorUid) {
return trainingDataReviewCoreService.getDetail(operatorUid);
}
public DefaultPaging getDefaultPagingNumber(String userId, Integer size, String operatorUid) {
return trainingDataReviewCoreService.getDefaultPagingNumber(userId, size, operatorUid);
}
/**
* 새로운 polygon(들) 추가 저장
*
* @param request 새 polygon 정보 (여러 개 가능)
* @return 응답 메시지
*/
@Transactional
public ResponseObj saveNewPolygon(TrainingDataReviewDto.NewPolygonRequest request) {
trainingDataReviewCoreService.saveNewPolygon(request);
int count = request.getFeatures() != null ? request.getFeatures().size() : 0;
return new ResponseObj(ApiResponseCode.OK, count + "개의 polygon이 저장되었습니다.");
}
/**
* COG 이미지 URL 조회 (변화 전/후)
*
* @param mapSheetNum 도엽번호
* @param beforeYear 변화 전 년도
* @param afterYear 변화 후 년도
* @return 변화 전/후 COG 이미지 URL
*/
public TrainingDataReviewDto.CogImageResponse getCogImageUrl(
String mapSheetNum, Integer beforeYear, Integer afterYear) {
return trainingDataReviewCoreService.getCogImageUrl(mapSheetNum, beforeYear, afterYear);
}
}