영상관리 상태정의수정 및 작업완료 추가
This commit is contained in:
@@ -9,7 +9,9 @@ import lombok.Getter;
|
|||||||
public enum MngStateType implements EnumType {
|
public enum MngStateType implements EnumType {
|
||||||
NOTYET("미처리"),
|
NOTYET("미처리"),
|
||||||
PROCESSING("진행중"),
|
PROCESSING("진행중"),
|
||||||
DONE ("완료");
|
DONE ("싱크완료"),
|
||||||
|
COMPLETE("작업완료");
|
||||||
|
|
||||||
|
|
||||||
private final String desc;
|
private final String desc;
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,9 @@ import jakarta.validation.Valid;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
@Tag(name = "영상 관리", description = "영상 관리 API")
|
@Tag(name = "영상 관리", description = "영상 관리 API")
|
||||||
@RestController
|
@RestController
|
||||||
@@ -84,6 +86,26 @@ public class MapSheetMngApiController {
|
|||||||
return ApiResponseDto.ok(mapSheetMngService.mngDataSave(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<MapSheetMngDto.DmlReturn> mngComplete(
|
||||||
|
@RequestParam @Valid int mngYyyy) {
|
||||||
|
return ApiResponseDto.ok(mapSheetMngService.mngComplete(mngYyyy));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 오류데이터 목록 조회
|
* 오류데이터 목록 조회
|
||||||
*
|
*
|
||||||
@@ -96,10 +118,7 @@ public class MapSheetMngApiController {
|
|||||||
return ApiResponseDto.ok(mapSheetMngService.findMapSheetErrorList(searchReq));
|
return ApiResponseDto.ok(mapSheetMngService.findMapSheetErrorList(searchReq));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param hstUidList
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Operation(summary = "오류데이터 팝업 > 업로드 처리", description = "오류데이터 팝업 > 업로드 처리")
|
@Operation(summary = "오류데이터 팝업 > 업로드 처리", description = "오류데이터 팝업 > 업로드 처리")
|
||||||
@ApiResponses(
|
@ApiResponses(
|
||||||
value = {
|
value = {
|
||||||
@@ -130,4 +149,17 @@ public class MapSheetMngApiController {
|
|||||||
@RequestBody @Valid List<Long> hstUidList) {
|
@RequestBody @Valid List<Long> hstUidList) {
|
||||||
return ApiResponseDto.ok(mapSheetMngService.updateExceptUseInference(hstUidList));
|
return ApiResponseDto.ok(mapSheetMngService.updateExceptUseInference(hstUidList));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Operation(summary = "페어 파일 업로드", description = "TFW/TIF 두 파일을 쌍으로 업로드 및 검증")
|
||||||
|
@PostMapping(value = "/upload-pair", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||||
|
public ApiResponseDto<MapSheetMngDto.DmlReturn> uploadPair(
|
||||||
|
@RequestPart("tfw") MultipartFile tfwFile,
|
||||||
|
@RequestPart("tif") MultipartFile tifFile,
|
||||||
|
@RequestParam(value = "hstUid", required = false) Long hstUid) {
|
||||||
|
return ApiResponseDto.createOK(
|
||||||
|
mapSheetMngService.uploadPair(tfwFile, tifFile, hstUid));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,18 +83,7 @@ public class MapSheetMngFileCheckerApiController {
|
|||||||
mapSheetMngFileCheckerService.uploadFile(file, targetPath, overwrite, hstUid));
|
mapSheetMngFileCheckerService.uploadFile(file, targetPath, overwrite, hstUid));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "페어 파일 업로드", description = "TFW/TIF 두 파일을 쌍으로 업로드 및 검증")
|
|
||||||
@PostMapping(value = "/upload-pair", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
|
||||||
public ApiResponseDto<String> uploadPair(
|
|
||||||
@RequestPart("tfw") MultipartFile tfwFile,
|
|
||||||
@RequestPart("tif") MultipartFile tifFile,
|
|
||||||
@RequestParam("targetPath") String targetPath,
|
|
||||||
@RequestParam(value = "overwrite", required = false, defaultValue = "false")
|
|
||||||
boolean overwrite,
|
|
||||||
@RequestParam(value = "hstUid", required = false) Long hstUid) {
|
|
||||||
return ApiResponseDto.createOK(
|
|
||||||
mapSheetMngFileCheckerService.uploadPair(tfwFile, tifFile, targetPath, overwrite, hstUid));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "파일 삭제", description = "중복 파일 등 파일 삭제")
|
@Operation(summary = "파일 삭제", description = "중복 파일 등 파일 삭제")
|
||||||
@PostMapping("/delete")
|
@PostMapping("/delete")
|
||||||
|
|||||||
@@ -2,6 +2,9 @@ package com.kamco.cd.kamcoback.mapsheet.service;
|
|||||||
|
|
||||||
import static java.lang.String.CASE_INSENSITIVE_ORDER;
|
import static java.lang.String.CASE_INSENSITIVE_ORDER;
|
||||||
|
|
||||||
|
import com.kamco.cd.kamcoback.common.exception.DuplicateFileException;
|
||||||
|
import com.kamco.cd.kamcoback.common.exception.ValidationException;
|
||||||
|
import com.kamco.cd.kamcoback.common.utils.FIleChecker;
|
||||||
import com.kamco.cd.kamcoback.mapsheet.dto.FileDto;
|
import com.kamco.cd.kamcoback.mapsheet.dto.FileDto;
|
||||||
import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.FilesDto;
|
import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.FilesDto;
|
||||||
import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFilesDepthDto;
|
import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFilesDepthDto;
|
||||||
@@ -29,6 +32,7 @@ import org.apache.commons.io.FilenameUtils;
|
|||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -220,11 +224,24 @@ public class MapSheetMngService {
|
|||||||
return mapSheetMngCoreService.findMapSheetMng(mngYyyy);
|
return mapSheetMngCoreService.findMapSheetMng(mngYyyy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public MapSheetMngDto.DmlReturn mngComplete(int mngYyyy) {
|
||||||
|
|
||||||
|
mapSheetMngCoreService.MapSheetMngComplete(mngYyyy);
|
||||||
|
|
||||||
|
return new MapSheetMngDto.DmlReturn("success", "작업완료 처리되었습니다.");
|
||||||
|
}
|
||||||
|
|
||||||
public Page<MapSheetMngDto.ErrorDataDto> findMapSheetErrorList(
|
public Page<MapSheetMngDto.ErrorDataDto> findMapSheetErrorList(
|
||||||
MapSheetMngDto.@Valid ErrorSearchReq searchReq) {
|
MapSheetMngDto.@Valid ErrorSearchReq searchReq) {
|
||||||
return mapSheetMngCoreService.findMapSheetErrorList(searchReq);
|
return mapSheetMngCoreService.findMapSheetErrorList(searchReq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid) {
|
||||||
|
return mapSheetMngCoreService.findMapSheetError(hstUid);
|
||||||
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public MapSheetMngDto.DmlReturn mngDataSave(MapSheetMngDto.AddReq AddReq) {
|
public MapSheetMngDto.DmlReturn mngDataSave(MapSheetMngDto.AddReq AddReq) {
|
||||||
return mapSheetMngCoreService.mngDataSave(AddReq);
|
return mapSheetMngCoreService.mngDataSave(AddReq);
|
||||||
@@ -248,4 +265,39 @@ public class MapSheetMngService {
|
|||||||
public MapSheetMngDto.DmlReturn updateExceptUseInference(@Valid List<Long> hstUidList) {
|
public MapSheetMngDto.DmlReturn updateExceptUseInference(@Valid List<Long> hstUidList) {
|
||||||
return mapSheetMngCoreService.updateExceptUseInference(hstUidList);
|
return mapSheetMngCoreService.updateExceptUseInference(hstUidList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public MapSheetMngDto.DmlReturn uploadPair(
|
||||||
|
MultipartFile tfwFile,
|
||||||
|
MultipartFile tifFile,
|
||||||
|
//String targetPath,
|
||||||
|
Long hstUid) {
|
||||||
|
|
||||||
|
// 파일 유효성 검증
|
||||||
|
if (tfwFile == null || tfwFile.isEmpty() || tfwFile.getSize() == 0) {
|
||||||
|
return new MapSheetMngDto.DmlReturn("fail", "TFW 파일이(0Byte) 비어있습니다.");
|
||||||
|
}else if (tifFile == null || tifFile.isEmpty() || tifFile.getSize() == 0) {
|
||||||
|
return new MapSheetMngDto.DmlReturn("fail", "TIF 파일이(0Byte) 비어있습니다.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ! tfwFile.getOriginalFilename()
|
||||||
|
.substring(tfwFile.getOriginalFilename().lastIndexOf('.') + 1)
|
||||||
|
.toLowerCase()
|
||||||
|
.equals("tfw") )
|
||||||
|
{
|
||||||
|
return new MapSheetMngDto.DmlReturn("fail", "파일명이 TFW형식이 아닙니다.");
|
||||||
|
}else if( ! tifFile.getOriginalFilename()
|
||||||
|
.substring(tifFile.getOriginalFilename().lastIndexOf('.') + 1)
|
||||||
|
.toLowerCase()
|
||||||
|
.equals("tif") )
|
||||||
|
{
|
||||||
|
return new MapSheetMngDto.DmlReturn("fail", "파일명이 TIF형식이 아닙니다.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return new MapSheetMngDto.DmlReturn("success", "파일 업로드 완료되었습니다.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,11 +32,6 @@ public class MapSheetMngCoreService {
|
|||||||
@Value("{spring.profiles.active}")
|
@Value("{spring.profiles.active}")
|
||||||
private String activeEnv;
|
private String activeEnv;
|
||||||
|
|
||||||
public Page<MapSheetMngDto.ErrorDataDto> findMapSheetErrorList(
|
|
||||||
MapSheetMngDto.@Valid ErrorSearchReq searchReq) {
|
|
||||||
return mapSheetMngRepository.findMapSheetErrorList(searchReq);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<MapSheetMngDto.MngDto> findMapSheetMngList() {
|
public List<MapSheetMngDto.MngDto> findMapSheetMngList() {
|
||||||
return mapSheetMngRepository.findMapSheetMngList();
|
return mapSheetMngRepository.findMapSheetMngList();
|
||||||
}
|
}
|
||||||
@@ -45,6 +40,22 @@ public class MapSheetMngCoreService {
|
|||||||
return mapSheetMngRepository.findMapSheetMng(mngYyyy);
|
return mapSheetMngRepository.findMapSheetMng(mngYyyy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void MapSheetMngComplete(@Valid int mngYyyy) {
|
||||||
|
mapSheetMngRepository.MapSheetMngComplete(mngYyyy);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Page<MapSheetMngDto.ErrorDataDto> findMapSheetErrorList(
|
||||||
|
MapSheetMngDto.@Valid ErrorSearchReq searchReq) {
|
||||||
|
return mapSheetMngRepository.findMapSheetErrorList(searchReq);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid){
|
||||||
|
return mapSheetMngRepository.findMapSheetError(hstUid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public MapSheetMngDto.DmlReturn uploadProcess(@Valid List<Long> hstUidList) {
|
public MapSheetMngDto.DmlReturn uploadProcess(@Valid List<Long> hstUidList) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
if (!Objects.isNull(hstUidList) && !hstUidList.isEmpty()) {
|
if (!Objects.isNull(hstUidList) && !hstUidList.isEmpty()) {
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ public interface MapSheetMngRepositoryCustom {
|
|||||||
|
|
||||||
MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy);
|
MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy);
|
||||||
|
|
||||||
|
void MapSheetMngComplete(int mngYyyy);
|
||||||
|
|
||||||
Optional<MapSheetMngHstEntity> findMapSheetMngHstInfo(Long hstUid);
|
Optional<MapSheetMngHstEntity> findMapSheetMngHstInfo(Long hstUid);
|
||||||
|
|
||||||
int insertMapSheetOrgDataToMapSheetMngHst(int mngYyyy);
|
int insertMapSheetOrgDataToMapSheetMngHst(int mngYyyy);
|
||||||
@@ -28,5 +30,7 @@ public interface MapSheetMngRepositoryCustom {
|
|||||||
Page<MapSheetMngDto.ErrorDataDto> findMapSheetErrorList(
|
Page<MapSheetMngDto.ErrorDataDto> findMapSheetErrorList(
|
||||||
MapSheetMngDto.@Valid ErrorSearchReq searchReq);
|
MapSheetMngDto.@Valid ErrorSearchReq searchReq);
|
||||||
|
|
||||||
|
MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid);
|
||||||
|
|
||||||
void updateHstFileSizes(Long hstUid, long tifSizeBytes, long tfwSizeBytes, long totalSizeBytes);
|
void updateHstFileSizes(Long hstUid, long tifSizeBytes, long tfwSizeBytes, long totalSizeBytes);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -367,6 +367,56 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
return new PageImpl<>(foundContent, pageable, countQuery);
|
return new PageImpl<>(foundContent, pageable, countQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid){
|
||||||
|
|
||||||
|
BooleanBuilder whereBuilder = new BooleanBuilder();
|
||||||
|
whereBuilder.and( mapSheetMngHstEntity.hstUid.eq(hstUid));
|
||||||
|
|
||||||
|
MapSheetMngDto.ErrorDataDto foundContent =
|
||||||
|
queryFactory
|
||||||
|
.select(
|
||||||
|
Projections.constructor(
|
||||||
|
MapSheetMngDto.ErrorDataDto.class,
|
||||||
|
mapSheetMngHstEntity.hstUid,
|
||||||
|
Expressions.stringTemplate(
|
||||||
|
"concat({0},substring({1}, 0, 6))",
|
||||||
|
mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum).as("map50kName"),
|
||||||
|
Expressions.stringTemplate(
|
||||||
|
"concat({0},substring({1}, 6, 8))",
|
||||||
|
mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum).as("map5kName"),
|
||||||
|
Expressions.stringTemplate(
|
||||||
|
"concat({0},substring({1}, 6, 8))",
|
||||||
|
mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum).as("mapSrcName"),
|
||||||
|
mapInkx5kEntity.fid,
|
||||||
|
mapSheetMngHstEntity.createdDate,
|
||||||
|
mapSheetMngHstEntity.syncState,
|
||||||
|
mapSheetMngHstEntity.syncTfwFileName,
|
||||||
|
mapSheetMngHstEntity.syncTifFileName,
|
||||||
|
mapSheetMngHstEntity.syncCheckState,
|
||||||
|
mapSheetMngHstEntity.syncCheckTfwFileName,
|
||||||
|
mapSheetMngHstEntity.syncCheckTifFileName
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.from(mapSheetMngHstEntity)
|
||||||
|
.innerJoin(mapInkx5kEntity).on(mapSheetMngHstEntity.mapSheetNum.eq(mapInkx5kEntity.mapidcdNo))
|
||||||
|
.where(whereBuilder)
|
||||||
|
.fetchOne();
|
||||||
|
|
||||||
|
return foundContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void MapSheetMngComplete(int mngYyyy) {
|
||||||
|
long execCount =
|
||||||
|
queryFactory
|
||||||
|
.update(mapSheetMngEntity)
|
||||||
|
.set(mapSheetMngEntity.mngState, "COMPLETE")
|
||||||
|
.where(mapSheetMngEntity.mngYyyy.eq(mngYyyy))
|
||||||
|
.execute();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteByMngYyyyMngAll(int mngYyyy) {
|
public void deleteByMngYyyyMngAll(int mngYyyy) {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user