영상관리 중복파일제거 수정

This commit is contained in:
Moon
2025-12-18 09:31:20 +09:00
parent d6b6e77a88
commit f6d0034df2
6 changed files with 157 additions and 28 deletions

View File

@@ -139,10 +139,7 @@ public class MapSheetMngApiController {
return ApiResponseDto.ok(mapSheetMngService.uploadProcess(hstUidList));
}
/**
* @param hstUidList
* @return
*/
@Operation(summary = "오류데이터 팝업 > 추론 제외", description = "오류데이터 팝업 > 추론 제외")
@PutMapping("/except-inference")
public ApiResponseDto<MapSheetMngDto.DmlReturn> updateExceptUseInference(
@@ -162,4 +159,13 @@ public class MapSheetMngApiController {
return ApiResponseDto.createOK(
mapSheetMngService.uploadPair(tfwFile, tifFile, hstUid));
}
@GetMapping("/mng-file-list")
public ApiResponseDto<List<MapSheetMngDto.MngFilesDto>> findHstUidToMapSheetFileList(
@RequestParam @Valid Long hstUid) {
return ApiResponseDto.ok(mapSheetMngService.findHstUidToMapSheetFileList(hstUid));
}
}

View File

@@ -164,6 +164,7 @@ public class MapSheetMngDto {
public static class ErrorDataDto {
// private Integer rowNum;
private Long hstUid;
private String mapSheetNum;
private String map50kName;
private String map5kName;
private String mapSrcName;
@@ -242,25 +243,21 @@ public class MapSheetMngDto {
private String message;
}
@Schema(name = "MngFilesDto", description = "영상파일내역 검색 리턴")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public enum DataState implements EnumType {
NOTYET("대기중"),
PROCESSING("진행중"),
DONE("완료");
private final String desc;
@Override
public String getId() {
return name();
public static class MngFilesDto {
private long fileUid;
private int mngYyyy;
private String mapSheetNum;
private String refMapSheetNum;
private String filePath;
private String fileName;
private String fileExt;
private Long hstUid;
private Long fileSize;
}
@Override
public String getText() {
return desc;
}
}
}

View File

@@ -5,11 +5,15 @@ 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.config.FileConfig;
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.SrchFilesDepthDto;
import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFilesDto;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.DmlReturn;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.ErrorDataDto;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngFilesDto;
import com.kamco.cd.kamcoback.postgres.core.MapSheetMngCoreService;
import jakarta.validation.Valid;
import java.io.File;
@@ -267,7 +271,7 @@ public class MapSheetMngService {
}
@Transactional
public MapSheetMngDto.DmlReturn uploadPair(
public DmlReturn uploadPair(
MultipartFile tfwFile,
MultipartFile tifFile,
//String targetPath,
@@ -275,9 +279,9 @@ public class MapSheetMngService {
// 파일 유효성 검증
if (tfwFile == null || tfwFile.isEmpty() || tfwFile.getSize() == 0) {
return new MapSheetMngDto.DmlReturn("fail", "TFW 파일이(0Byte) 비어있습니다.");
return new DmlReturn("fail", "TFW SIZE 오류");
}else if (tifFile == null || tifFile.isEmpty() || tifFile.getSize() == 0) {
return new MapSheetMngDto.DmlReturn("fail", "TIF 파일이(0Byte) 비어있습니다.");
return new DmlReturn("fail", "TIF SIZE 오류");
}
if( ! tfwFile.getOriginalFilename()
@@ -285,19 +289,39 @@ public class MapSheetMngService {
.toLowerCase()
.equals("tfw") )
{
return new MapSheetMngDto.DmlReturn("fail", "파일명이 TFW형식이 아닙니다.");
return new DmlReturn("fail", "TFW TYPE ERROR");
}else if( ! tifFile.getOriginalFilename()
.substring(tifFile.getOriginalFilename().lastIndexOf('.') + 1)
.toLowerCase()
.equals("tif") )
{
return new MapSheetMngDto.DmlReturn("fail", "파일명이 TIF형식이 아닙니다.");
return new DmlReturn("fail", "TIF TYPE ERROR");
}
//싱크파일목록 가저오기
List<MngFilesDto> mngFiles = mapSheetMngCoreService.findIdToMapSheetFileList(hstUid);
String uploadPath = "";
for (MngFilesDto dto : mngFiles) {
uploadPath = dto.getFilePath();
break;
}
if( uploadPath.isEmpty() ) {
//ErrorDataDto errDto = mapSheetMngCoreService.findMapSheetError(hstUid);
//uploadPath = FileConfig.rootSyncDir+"\\"+errDto.getMapSheetNum();
}
//tfw가 있는 경우
//tif가 있는 경우
return new DmlReturn("success", "파일 업로드 완료되었습니다.");
}
return new MapSheetMngDto.DmlReturn("success", "파일 업로드 완료되었습니다.");
public List<MapSheetMngDto.MngFilesDto> findHstUidToMapSheetFileList(Long hstUid) {
return mapSheetMngCoreService.findHstUidToMapSheetFileList(hstUid);
}
}

View File

@@ -54,6 +54,9 @@ public class MapSheetMngCoreService {
return mapSheetMngRepository.findMapSheetError(hstUid);
}
public List<MapSheetMngDto.MngFilesDto> findIdToMapSheetFileList(Long hstUid) {
return mapSheetMngRepository.findIdToMapSheetFileList(hstUid);
}
public MapSheetMngDto.DmlReturn uploadProcess(@Valid List<Long> hstUidList) {
@@ -203,4 +206,10 @@ public class MapSheetMngCoreService {
return new MapSheetMngDto.DmlReturn("success", saved.getMngYyyy().toString());
}
public List<MapSheetMngDto.MngFilesDto> findHstUidToMapSheetFileList(Long hstUid){
return mapSheetMngRepository.findHstUidToMapSheetFileList(hstUid);
}
}

View File

@@ -19,6 +19,10 @@ public interface MapSheetMngRepositoryCustom {
int insertMapSheetOrgDataToMapSheetMngHst(int mngYyyy);
List<MapSheetMngDto.MngFilesDto> findHstUidToMapSheetFileList(Long hstUid);
MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePath(int mngYyyy);
void deleteByMngYyyyMngAll(int mngYyyy);
void deleteByMngYyyyMng(int mngYyyy);
@@ -32,5 +36,7 @@ public interface MapSheetMngRepositoryCustom {
MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid);
List<MapSheetMngDto.MngFilesDto> findIdToMapSheetFileList(Long hstUid);
void updateHstFileSizes(Long hstUid, long tifSizeBytes, long tfwSizeBytes, long totalSizeBytes);
}

View File

@@ -380,6 +380,7 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
Projections.constructor(
MapSheetMngDto.ErrorDataDto.class,
mapSheetMngHstEntity.hstUid,
mapSheetMngHstEntity.mapSheetNum,
Expressions.stringTemplate(
"concat({0},substring({1}, 0, 6))",
mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum).as("map50kName"),
@@ -407,6 +408,92 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
return foundContent;
}
@Override
public List<MapSheetMngDto.MngFilesDto> findIdToMapSheetFileList(Long hstUid){
BooleanBuilder whereBuilder = new BooleanBuilder();
whereBuilder.and( mapSheetMngFileEntity.hstUid.eq(hstUid) );
List<MapSheetMngDto.MngFilesDto> foundContent =
queryFactory
.select(
Projections.constructor(
MapSheetMngDto.MngFilesDto.class,
mapSheetMngFileEntity.fileUid,
mapSheetMngFileEntity.mngYyyy,
mapSheetMngFileEntity.mapSheetNum,
mapSheetMngFileEntity.refMapSheetNum,
mapSheetMngFileEntity.filePath,
mapSheetMngFileEntity.fileName,
mapSheetMngFileEntity.fileExt,
mapSheetMngFileEntity.hstUid,
mapSheetMngFileEntity.fileSize
)
)
.from(mapSheetMngFileEntity)
.where(whereBuilder)
.fetch();
return foundContent;
}
@Override
public List<MapSheetMngDto.MngFilesDto> findHstUidToMapSheetFileList(Long hstUid) {
BooleanBuilder whereBuilder = new BooleanBuilder();
whereBuilder.and( mapSheetMngFileEntity.hstUid.eq(hstUid) );
List<MapSheetMngDto.MngFilesDto> foundContent =
queryFactory
.select(
Projections.constructor(
MapSheetMngDto.MngFilesDto.class,
mapSheetMngFileEntity.fileUid,
mapSheetMngFileEntity.mngYyyy,
mapSheetMngFileEntity.mapSheetNum,
mapSheetMngFileEntity.refMapSheetNum,
mapSheetMngFileEntity.filePath,
mapSheetMngFileEntity.fileName,
mapSheetMngFileEntity.fileExt,
mapSheetMngFileEntity.hstUid,
mapSheetMngFileEntity.fileSize
)
)
.from(mapSheetMngFileEntity)
.where(whereBuilder)
.orderBy(mapSheetMngFileEntity.fileExt.desc())
.fetch();
return foundContent;
}
@Override
public MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePath(int mngYyyy){
BooleanBuilder whereBuilder = new BooleanBuilder();
whereBuilder.and( mapSheetMngFileEntity.mngYyyy.eq(mngYyyy) );
MapSheetMngDto.MngFilesDto foundContent =
queryFactory
.select(
Projections.constructor(
MapSheetMngDto.MngFilesDto.class,
mapSheetMngFileEntity.fileUid,
mapSheetMngFileEntity.mngYyyy,
mapSheetMngFileEntity.mapSheetNum,
mapSheetMngFileEntity.refMapSheetNum,
mapSheetMngFileEntity.filePath,
mapSheetMngFileEntity.fileName,
mapSheetMngFileEntity.fileExt,
mapSheetMngFileEntity.hstUid,
mapSheetMngFileEntity.fileSize
)
)
.from(mapSheetMngFileEntity)
.where(whereBuilder)
.fetchOne();
return foundContent;
}
public void MapSheetMngComplete(int mngYyyy) {
long execCount =