영상데이터관리 > tif 대용량 분할전송 추가

This commit is contained in:
2026-01-26 18:20:39 +09:00
parent 8a0c6d124b
commit bbc87071fb
5 changed files with 112 additions and 16 deletions

View File

@@ -15,8 +15,12 @@ import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngDto;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngFilesDto;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngYyyyDto;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.YearSearchReq;
import com.kamco.cd.kamcoback.model.dto.ModelMngDto.ModelUploadResDto;
import com.kamco.cd.kamcoback.postgres.core.MapSheetMngCoreService;
import com.kamco.cd.kamcoback.postgres.entity.YearEntity;
import com.kamco.cd.kamcoback.upload.dto.UploadDto;
import com.kamco.cd.kamcoback.upload.dto.UploadDto.UploadAddReq;
import com.kamco.cd.kamcoback.upload.service.UploadService;
import jakarta.validation.Valid;
import java.io.IOException;
import java.nio.file.Files;
@@ -38,6 +42,7 @@ import org.springframework.web.multipart.MultipartFile;
public class MapSheetMngService {
private final MapSheetMngCoreService mapSheetMngCoreService;
private final UploadService uploadService;
private final UserUtil userUtil = new UserUtil();
@Value("${file.sync-root-dir}")
@@ -129,15 +134,15 @@ public class MapSheetMngService {
MngDto mngDto = mapSheetMngCoreService.findMapSheetMng(errDto.getMngYyyy());
String targetYearDir = mngDto.getMngPath();
// 중복체크
if (!overwrite) {
dmlReturn =
this.duplicateFile(
errDto.getMngYyyy(), tfwFile.getOriginalFilename(), tifFile.getOriginalFilename());
if (dmlReturn.getFlag().equals("duplicate")) {
return dmlReturn;
}
}
// 중복체크 -> 도엽/uuid_yyyyMMddhhmmss 경로에 업로드 할 거라 overwrite 되지 않음
// if (!overwrite) {
// dmlReturn =
// this.duplicateFile(
// errDto.getMngYyyy(), tfwFile.getOriginalFilename(), tifFile.getOriginalFilename());
// if (dmlReturn.getFlag().equals("duplicate")) {
// return dmlReturn;
// }
// }
// 멀티파트 파일 tmp폴더 저장(파일형식 체크를 위해)
String tfwTmpPath = tmpPath + tfwFile.getOriginalFilename();
@@ -357,4 +362,44 @@ public class MapSheetMngService {
return yearList;
}
@Transactional
public ModelUploadResDto uploadChunkMapSheetFile(
Long hstUid, UploadAddReq upAddReqDto, MultipartFile chunkFile) {
// String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
ErrorDataDto errDto = mapSheetMngCoreService.findMapSheetError(hstUid);
// 싱크파일목록으로 업로드 경로 확인
List<MngFilesDto> mngFiles = mapSheetMngCoreService.findByHstUidMapSheetFileList(hstUid);
String uploadPath = "";
for (MngFilesDto dto : mngFiles) {
uploadPath = dto.getFilePath();
break;
}
if (uploadPath.isEmpty()) {
MngFilesDto filesDto =
mapSheetMngCoreService.findYyyyToMapSheetFilePathRefer(errDto.getMngYyyy());
String referPath = filesDto.getFilePath();
uploadPath = Paths.get(referPath).getParent().toString() + "/" + errDto.getRefMapSheetNum();
}
upAddReqDto.setUuid(errDto.getUuid());
upAddReqDto.setFinalPath(uploadPath + "/");
upAddReqDto.setTempPath(upAddReqDto.getTempPath() + "/");
UploadDto.UploadRes upRes = uploadService.uploadChunk(upAddReqDto, chunkFile);
ModelUploadResDto modelUploadResDto = new ModelUploadResDto();
modelUploadResDto.setRes(upRes.getRes());
modelUploadResDto.setResMsg(upRes.getResMsg());
modelUploadResDto.setUuid(upRes.getUuid());
modelUploadResDto.setFilePath(upRes.getFilePath());
modelUploadResDto.setFileName(upRes.getFileName());
modelUploadResDto.setChunkIndex(upRes.getChunkIndex());
modelUploadResDto.setChunkTotalIndex(upRes.getChunkTotalIndex());
return modelUploadResDto;
}
}