데이터셋 API 커밋
This commit is contained in:
@@ -2,6 +2,8 @@ package com.kamco.cd.training.dataset;
|
||||
|
||||
import com.kamco.cd.training.config.api.ApiResponseDto;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto.SelectDataSet;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto;
|
||||
import com.kamco.cd.training.dataset.service.DatasetService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@@ -11,6 +13,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.data.domain.Page;
|
||||
@@ -39,7 +42,10 @@ public class DatasetApiController {
|
||||
})
|
||||
@GetMapping
|
||||
public ApiResponseDto<Page<DatasetDto.Basic>> searchDatasets(
|
||||
@Parameter(description = "구분", example = "DELIVER(납품), PRODUCTION(제작)")
|
||||
@Parameter(
|
||||
description = "구분",
|
||||
example = "",
|
||||
schema = @Schema(allowableValues = {"DELIVER", "PRODUCTION"}))
|
||||
@RequestParam(required = false)
|
||||
String groupTitle,
|
||||
@Parameter(description = "제목", example = "") @RequestParam(required = false) String title,
|
||||
@@ -129,8 +135,7 @@ public class DatasetApiController {
|
||||
return ApiResponseDto.ok(uuid);
|
||||
}
|
||||
|
||||
/*
|
||||
@Operation(summary = "데이터셋 통계 요약", description = "선택 데이터셋의 통계를 요약합니다.")
|
||||
@Operation(summary = "학습데이터 관리 목록 조회", description = "학습데이터 목록을 조회합니다.")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
@@ -139,16 +144,84 @@ public class DatasetApiController {
|
||||
content =
|
||||
@Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = DatasetDto.Summary.class))),
|
||||
@ApiResponse(responseCode = "400", description = "잘못된 요청", content = @Content),
|
||||
schema = @Schema(implementation = Page.class))),
|
||||
@ApiResponse(responseCode = "400", description = "잘못된 검색 조건", content = @Content),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||
})
|
||||
@PostMapping("/summary")
|
||||
public ApiResponseDto<DatasetDto.Summary> getDatasetSummary(
|
||||
@RequestBody @Valid DatasetDto.SummaryReq summaryReq) {
|
||||
return ApiResponseDto.ok(datasetService.getDatasetSummary(summaryReq));
|
||||
@GetMapping("/obj-list")
|
||||
public ApiResponseDto<Page<DatasetObjDto.Basic>> searchDatasetObjectList(
|
||||
@Parameter(description = "회차 uuid", example = "35e20bb2-9014-4c9d-abe2-9046db5f930c")
|
||||
@RequestParam(required = true)
|
||||
UUID uuid,
|
||||
@Parameter(description = "비교년도", example = "2021") @RequestParam(required = false)
|
||||
Integer compareYyyy,
|
||||
@Parameter(description = "비교년도분류", example = "container") @RequestParam(required = false)
|
||||
String compareClassCd,
|
||||
@Parameter(description = "기준년도", example = "2022") @RequestParam(required = false)
|
||||
Integer targetYyyy,
|
||||
@Parameter(description = "기준년도분류", example = "waste") @RequestParam(required = false)
|
||||
String targetClassCd,
|
||||
@Parameter(description = "도엽번호", example = "36713060") @RequestParam(required = false)
|
||||
String mapSheetNum,
|
||||
@RequestParam(defaultValue = "0") int page,
|
||||
@RequestParam(defaultValue = "20") int size) {
|
||||
DatasetObjDto.SearchReq searchReq = new DatasetObjDto.SearchReq();
|
||||
searchReq.setUuid(uuid);
|
||||
searchReq.setCompareYyyy(compareYyyy);
|
||||
searchReq.setCompareClassCd(compareClassCd);
|
||||
searchReq.setTargetYyyy(targetYyyy);
|
||||
searchReq.setTargetClassCd(targetClassCd);
|
||||
searchReq.setMapSheetNum(mapSheetNum);
|
||||
searchReq.setPage(page);
|
||||
searchReq.setSize(size);
|
||||
return ApiResponseDto.ok(datasetService.searchDatasetObjectList(searchReq));
|
||||
}
|
||||
|
||||
*/
|
||||
@Operation(summary = "학습데이터 관리 목록 조회", description = "학습데이터 목록을 조회합니다.")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
responseCode = "200",
|
||||
description = "조회 성공",
|
||||
content =
|
||||
@Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = Page.class))),
|
||||
@ApiResponse(responseCode = "400", description = "잘못된 검색 조건", content = @Content),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||
})
|
||||
@DeleteMapping("/obj/{uuid}")
|
||||
public ApiResponseDto<UUID> deleteDatasetObjByUuid(@PathVariable UUID uuid) {
|
||||
return ApiResponseDto.ok(datasetService.deleteDatasetObjByUuid(uuid));
|
||||
}
|
||||
|
||||
@Operation(summary = "학습데이터관리 상세 조회", description = "학습데이터관리 상세 정보를 조회합니다.")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
responseCode = "200",
|
||||
description = "조회 성공",
|
||||
content =
|
||||
@Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = DatasetDto.Basic.class))),
|
||||
@ApiResponse(responseCode = "404", description = "데이터셋을 찾을 수 없음", content = @Content),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||
})
|
||||
@GetMapping("/select-dataset-list")
|
||||
public ApiResponseDto<List<SelectDataSet>> getDatasetSelectList(
|
||||
@Parameter(
|
||||
description = "모델 구분",
|
||||
example = "",
|
||||
schema = @Schema(allowableValues = {"M1", "M2", "M3"}))
|
||||
@RequestParam
|
||||
String modelType,
|
||||
@Parameter(
|
||||
description = "선택 구분",
|
||||
example = "",
|
||||
schema = @Schema(allowableValues = {"CURRENT", "DELIVER", "PRODUCTION"}))
|
||||
@RequestParam
|
||||
String selectType) {
|
||||
return ApiResponseDto.ok(datasetService.getDatasetSelectList(modelType, selectType));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.kamco.cd.training.dataset.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.kamco.cd.training.common.enums.LearnDataRegister;
|
||||
import com.kamco.cd.training.common.enums.LearnDataType;
|
||||
import com.kamco.cd.training.common.utils.enums.Enums;
|
||||
@@ -15,10 +16,12 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Sort;
|
||||
|
||||
@Slf4j
|
||||
public class DatasetDto {
|
||||
|
||||
@Schema(name = "Dataset Basic", description = "데이터셋 기본 정보")
|
||||
@@ -108,7 +111,7 @@ public class DatasetDto {
|
||||
@AllArgsConstructor
|
||||
public static class SearchReq {
|
||||
|
||||
@Schema(description = "구분", example = "DELIVER(납품), PRODUCTION(제작)")
|
||||
@Schema(description = "구분")
|
||||
private String groupTitle;
|
||||
|
||||
@Schema(description = "제목 (부분 검색)", example = "1차")
|
||||
@@ -209,4 +212,65 @@ public class DatasetDto {
|
||||
@Schema(description = "평균 도엽 수", example = "750")
|
||||
private double averageMapSheets;
|
||||
}
|
||||
|
||||
@Schema(name = "SelectDataSet", description = "데이터셋 선택 리스트")
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public static class SelectDataSet {
|
||||
|
||||
private Long datasetId;
|
||||
private UUID uuid;
|
||||
private String groupTitle;
|
||||
private String yyyy;
|
||||
private Long roundNo;
|
||||
private String memo;
|
||||
private Long classCount;
|
||||
private Integer buildingCount;
|
||||
private Integer containerCount;
|
||||
private String groupTitleCd;
|
||||
|
||||
public SelectDataSet(
|
||||
Long datasetId,
|
||||
UUID uuid,
|
||||
String groupTitle,
|
||||
String yyyy,
|
||||
Long roundNo,
|
||||
String memo,
|
||||
Long classCount) {
|
||||
this.datasetId = datasetId;
|
||||
this.uuid = uuid;
|
||||
this.groupTitle = groupTitle;
|
||||
this.yyyy = yyyy;
|
||||
this.roundNo = roundNo;
|
||||
this.memo = memo;
|
||||
this.classCount = classCount;
|
||||
}
|
||||
|
||||
public SelectDataSet(
|
||||
Long datasetId,
|
||||
UUID uuid,
|
||||
String groupTitle,
|
||||
String yyyy,
|
||||
Long roundNo,
|
||||
String memo,
|
||||
Integer buildingCount,
|
||||
Integer containerCount) {
|
||||
this.datasetId = datasetId;
|
||||
this.uuid = uuid;
|
||||
this.groupTitle = getGroupTitle(groupTitle);
|
||||
this.groupTitleCd = groupTitle;
|
||||
this.yyyy = yyyy;
|
||||
this.roundNo = roundNo;
|
||||
this.memo = memo;
|
||||
this.buildingCount = buildingCount;
|
||||
this.containerCount = containerCount;
|
||||
}
|
||||
|
||||
public String getGroupTitle(String groupTitleCd) {
|
||||
LearnDataType type = Enums.fromId(LearnDataType.class, groupTitleCd);
|
||||
return type == null ? null : type.getText();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
package com.kamco.cd.training.dataset.dto;
|
||||
|
||||
import com.kamco.cd.training.common.utils.interfaces.JsonFormatDttm;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.UUID;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Sort;
|
||||
|
||||
@Slf4j
|
||||
public class DatasetObjDto {
|
||||
|
||||
@Schema(name = "DatasetObj Basic", description = "데이터셋 객체 Obj 기본 정보")
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
public static class Basic {
|
||||
|
||||
private Long objId;
|
||||
private Long datasetUid;
|
||||
private Integer targetYyyy;
|
||||
private String targetClassCd;
|
||||
private Integer compareYyyy;
|
||||
private String compareClassCd;
|
||||
private String targetPath;
|
||||
private String comparePath;
|
||||
private String labelPath;
|
||||
private String geojsonPath;
|
||||
private String mapSheetNum;
|
||||
@JsonFormatDttm private ZonedDateTime createdDttm;
|
||||
private Long createdUid;
|
||||
private Boolean deleted;
|
||||
private UUID uuid;
|
||||
|
||||
public Basic(
|
||||
Long objId,
|
||||
Long datasetUid,
|
||||
Integer targetYyyy,
|
||||
String targetClassCd,
|
||||
Integer compareYyyy,
|
||||
String compareClassCd,
|
||||
String targetPath,
|
||||
String comparePath,
|
||||
String labelPath,
|
||||
String geojsonPath,
|
||||
String mapSheetNum,
|
||||
ZonedDateTime createdDttm,
|
||||
Long createdUid,
|
||||
Boolean deleted,
|
||||
UUID uuid) {
|
||||
this.objId = objId;
|
||||
this.datasetUid = datasetUid;
|
||||
this.targetYyyy = targetYyyy;
|
||||
this.targetClassCd = targetClassCd;
|
||||
this.compareYyyy = compareYyyy;
|
||||
this.compareClassCd = compareClassCd;
|
||||
this.targetPath = targetPath;
|
||||
this.comparePath = comparePath;
|
||||
this.labelPath = labelPath;
|
||||
this.geojsonPath = geojsonPath;
|
||||
this.mapSheetNum = mapSheetNum;
|
||||
this.createdDttm = createdDttm;
|
||||
this.createdUid = createdUid;
|
||||
this.deleted = deleted;
|
||||
this.uuid = uuid;
|
||||
}
|
||||
}
|
||||
|
||||
@Schema(name = "DatasetSearchReq", description = "데이터셋 상세 도엽목록 조회 요청")
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class SearchReq {
|
||||
@Schema(description = "회차 uuid", example = "35e20bb2-9014-4c9d-abe2-9046db5f930c")
|
||||
private UUID uuid;
|
||||
|
||||
@Schema(description = "비교년도", example = "2021")
|
||||
private Integer compareYyyy;
|
||||
|
||||
@Schema(description = "비교년도분류", example = "waste")
|
||||
private String compareClassCd;
|
||||
|
||||
@Schema(description = "기준년도", example = "2022")
|
||||
private Integer targetYyyy;
|
||||
|
||||
@Schema(description = "기준년도분류", example = "land")
|
||||
private String targetClassCd;
|
||||
|
||||
@Schema(description = "도엽번호", example = "36713060")
|
||||
private String mapSheetNum;
|
||||
|
||||
@Schema(description = "페이지 번호 (0부터 시작)", example = "0")
|
||||
private int page = 0;
|
||||
|
||||
@Schema(description = "페이지 크기", example = "20")
|
||||
private int size = 20;
|
||||
|
||||
public Pageable toPageable() {
|
||||
// API에서는 1부터 시작하지만 내부적으로는 0부터 시작
|
||||
int pageIndex = Math.max(0, page - 1);
|
||||
return PageRequest.of(pageIndex, size, Sort.by(Sort.Direction.DESC, "createdDttm"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,11 @@
|
||||
package com.kamco.cd.training.dataset.service;
|
||||
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto.SelectDataSet;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto.SearchReq;
|
||||
import com.kamco.cd.training.postgres.core.DatasetCoreService;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -83,4 +87,20 @@ public class DatasetService {
|
||||
log.info("데이터셋 통계 요약 - 요청: {}", summaryReq);
|
||||
return datasetCoreService.getDatasetSummary(summaryReq);
|
||||
}
|
||||
|
||||
public Page<DatasetObjDto.Basic> searchDatasetObjectList(SearchReq searchReq) {
|
||||
return datasetCoreService.searchDatasetObjectList(searchReq);
|
||||
}
|
||||
|
||||
public UUID deleteDatasetObjByUuid(UUID uuid) {
|
||||
return datasetCoreService.deleteDatasetObjByUuid(uuid);
|
||||
}
|
||||
|
||||
public List<SelectDataSet> getDatasetSelectList(String modelType, String selectType) {
|
||||
if (modelType.equals("M1")) {
|
||||
return datasetCoreService.getDatasetSelectM1List(modelType, selectType);
|
||||
} else {
|
||||
return datasetCoreService.getDatasetSelectM2M3List(modelType, selectType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user