package com.kamco.cd.kamcoback.mapsheet; import com.kamco.cd.kamcoback.code.dto.CommonCodeDto; import com.kamco.cd.kamcoback.code.service.CommonCodeService; import com.kamco.cd.kamcoback.config.api.ApiResponseDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.FilesDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.FoldersDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFilesDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFoldersDto; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngYyyyDto; import com.kamco.cd.kamcoback.mapsheet.service.MapSheetMngService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; 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 lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @Tag(name = "영상 관리", description = "영상 관리 API") @RestController @RequiredArgsConstructor @RequestMapping({"/api/imagery/dataset"}) public class MapSheetMngApiController { private final CommonCodeService commonCodeService; private final MapSheetMngService mapSheetMngService; @Operation(summary = "영상 데이터 관리 목록 조회", description = "영상 데이터 관리 목록 조회") @ApiResponses( value = { @ApiResponse( responseCode = "200", description = "조회 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = CommonCodeDto.Basic.class))), @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @PostMapping("/mng-list") public ApiResponseDto> findMapSheetMngList() { return ApiResponseDto.ok(mapSheetMngService.findMapSheetMngList()); } @Operation(summary = "영상 데이터 관리 상세", description = "영상 데이터 관리 상세") @ApiResponses( value = { @ApiResponse( responseCode = "200", description = "조회 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = CommonCodeDto.Basic.class))), @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @GetMapping("/mng") public ApiResponseDto findMapSheetMng(@RequestParam int mngYyyy) { return ApiResponseDto.ok(mapSheetMngService.findMapSheetMng(mngYyyy)); } @Operation(summary = "영상관리 > 데이터 등록", description = "영상관리 > 데이터 등록") @ApiResponses( value = { @ApiResponse( responseCode = "201", description = "데이터 등록 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = Long.class))), @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), @ApiResponse(responseCode = "404", description = "데이터를 찾을 수 없음", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @PutMapping("/mng-data-save") public ApiResponseDto mngDataSave( @RequestBody @Valid MapSheetMngDto.AddReq AddReq) { return ApiResponseDto.ok(mapSheetMngService.mngDataSave(AddReq)); } @Operation(summary = "영상관리 > 작업완료", description = "영상관리 > 작업완료") @ApiResponses( value = { @ApiResponse( responseCode = "201", description = "작업완료 처리 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = Long.class))), @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @PutMapping("/mng-complete") public ApiResponseDto mngComplete(@RequestParam @Valid int mngYyyy) { return ApiResponseDto.ok(mapSheetMngService.mngComplete(mngYyyy)); } @Operation(summary = "영상 데이터 관리 년도 목록", description = "영상 데이터 관리 년도 목록") @ApiResponses( value = { @ApiResponse( responseCode = "200", description = "조회 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = CommonCodeDto.Basic.class))), @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @PostMapping("/mng-year-list") public ApiResponseDto> findMapSheetMngYyyyList() { return ApiResponseDto.ok(mapSheetMngService.findMapSheetMngYyyyList()); } @Operation(summary = "영상 데이터 관리 오류 목록", description = "영상 데이터 관리 오류 목록") @ApiResponses( value = { @ApiResponse( responseCode = "200", description = "조회 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = CommonCodeDto.Basic.class))), @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @PostMapping("/error-list") public ApiResponseDto> findMapSheetErrorList( @RequestBody @Valid MapSheetMngDto.ErrorSearchReq searchReq) { return ApiResponseDto.ok(mapSheetMngService.findMapSheetErrorList(searchReq)); } /* @Operation(summary = "오류데이터 팝업 > 업로드 처리", description = "오류데이터 팝업 > 업로드 처리") @ApiResponses( value = { @ApiResponse( responseCode = "201", description = "업로드 처리 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = Long.class))), @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @PutMapping("/upload-process") public ApiResponseDto uploadProcess( @RequestBody @Valid List hstUidList) { return ApiResponseDto.ok(mapSheetMngService.uploadProcess(hstUidList)); } */ /* @Operation(summary = "오류데이터 팝업 > 추론 제외", description = "오류데이터 팝업 > 추론 제외") @PutMapping("/except-inference") public ApiResponseDto updateExceptUseInference( @RequestBody @Valid List hstUidList) { return ApiResponseDto.ok(mapSheetMngService.updateExceptUseInference(hstUidList)); } */ @Operation(summary = "페어 파일 업로드", description = "TFW/TIF 두 파일을 쌍으로 업로드 및 검증") @PostMapping(value = "/upload-pair", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ApiResponseDto uploadPair( @RequestPart("tfw") MultipartFile tfwFile, @RequestPart("tif") MultipartFile tifFile, @RequestParam(value = "hstUid", required = false) Long hstUid, @RequestParam(value = "overwrite", required = false) boolean overwrite) { return ApiResponseDto.createOK( mapSheetMngService.uploadPair(tfwFile, tifFile, hstUid, overwrite)); } @Operation(summary = "영상관리 > 파일조회", description = "영상관리 > 파일조회") @ApiResponses( value = { @ApiResponse( responseCode = "201", description = "파일조회 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = Long.class))), @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @GetMapping("/mng-file-list") public ApiResponseDto> findByHstUidMapSheetFileList( @RequestParam @Valid Long hstUid) { return ApiResponseDto.ok(mapSheetMngService.findByHstUidMapSheetFileList(hstUid)); } @Operation( summary = "영상관리 > 파일사용설정 및 중복제거", description = "영상관리 >파일사용설정 및 중복제거(중복파일제거 및 선택파일사용설정)") @ApiResponses( value = { @ApiResponse( responseCode = "201", description = "파일사용설정 처리 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = Long.class))), @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @PutMapping("/update-use-mng-files") public ApiResponseDto updateUseByFileUidMngFile( @RequestParam @Valid List fileUids) { return ApiResponseDto.ok(mapSheetMngService.setUseByFileUidMngFile(fileUids)); } @Operation(summary = "폴더 조회", description = "폴더 조회 (ROOT:/app/original-images 이하로 경로입력)") @ApiResponses( value = { @ApiResponse( responseCode = "200", description = "조회 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = CommonCodeDto.Basic.class))), @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @PostMapping("/folder-list") public ApiResponseDto getDir(@RequestBody SrchFoldersDto srchDto) { return ApiResponseDto.createOK(mapSheetMngService.getFolderAll(srchDto)); } @Operation(summary = "지정폴더내 파일목록 조회", description = "지정폴더내 파일목록 조회") @ApiResponses( value = { @ApiResponse( responseCode = "200", description = "조회 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = CommonCodeDto.Basic.class))), @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @PostMapping("/file-list") public ApiResponseDto getFiles(@RequestBody SrchFilesDto srchDto) { return ApiResponseDto.createOK(mapSheetMngService.getFilesAll(srchDto)); } @Operation(summary = "영상 데이터 관리 완료 년도 목록 조회", description = "영상 데이터 관리 완료 년도 목록 조회") @ApiResponses( value = { @ApiResponse( responseCode = "200", description = "조회 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = CommonCodeDto.Basic.class))), @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @PostMapping("/mng-done-yyyy-list") public ApiResponseDto> findMapSheetMngDoneYyyyList() { return ApiResponseDto.ok(mapSheetMngService.findMapSheetMngDoneYyyyList()); } }