diff --git a/src/main/java/com/kamco/cd/kamcoback/config/FileConfig.java b/src/main/java/com/kamco/cd/kamcoback/config/FileConfig.java index fb0ae08c..b734aec1 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/FileConfig.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/FileConfig.java @@ -12,6 +12,9 @@ import org.springframework.stereotype.Component; @Setter public class FileConfig { - // private String rootSyncDir = "D:\\app\\original-images"; - private String rootSyncDir = "/app/original-images"; + // private String rootSyncDir = "D:\\app\\original-images\\"; + // private String tmpSyncDir = rootSyncDir+"tmp\\"; + + private String rootSyncDir = "/app/original-images/"; + private String tmpSyncDir = rootSyncDir + "tmp/"; } diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java index 81325b29..0d483dd6 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java @@ -72,6 +72,7 @@ public class MapSheetMngDto { private int rowNum; private int mngYyyy; + private String mngPath; private String mngState; private String syncState; private String syncDataCheckState; @@ -166,9 +167,10 @@ public class MapSheetMngDto { @Setter public static class ErrorDataDto { - // private Integer rowNum; private Long hstUid; + private Integer mngYyyy; private String mapSheetNum; + private String refMapSheetNum; private String map50kName; private String map5kName; private String mapSrcName; @@ -189,6 +191,9 @@ public class MapSheetMngDto { public ErrorDataDto( Long hstUid, + Integer mngYyyy, + String mapSheetNum, + String refMapSheetNum, String map50kName, String map5kName, String mapSrcName, @@ -201,6 +206,9 @@ public class MapSheetMngDto { String errorCheckTfwFileName, String errorCheckTifFileName) { this.hstUid = hstUid; + this.mngYyyy = mngYyyy; + this.mapSheetNum = mapSheetNum; + this.refMapSheetNum = refMapSheetNum; this.map50kName = map50kName; this.map5kName = map5kName; this.mapSrcName = mapSrcName; @@ -250,6 +258,24 @@ public class MapSheetMngDto { private String message; } + @Schema(name = "MngFileAddReq", description = "영상관리파일 등록 요청") + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class MngFileAddReq { + + private int mngYyyy; + private String mapSheetNum; + private String refMapSheetNum; + private String filePath; + private String fileName; + private String fileExt; + private Long hstUid; + private Long fileSize; + private String fileState; + } + @Schema(name = "MngFilesDto", description = "영상파일내역 검색 리턴") @Getter @Setter @@ -267,4 +293,26 @@ public class MapSheetMngDto { private Long hstUid; private Long fileSize; } + + @Schema(name = "ReqUpdateErrorCheckStateDto", description = "영상관리 오류데이터 체크결과 수정요청") + @Getter + @Setter + public static class ReqUpdateErrorCheckStateDto { + + private Long hstUid; + private String errorCheckState; + private String errorCheckTfwFileName; + private String errorCheckTifFileName; + /* + public reqErrorDataCheckStateDto( + Long hstUid, + String errorCheckState, + String errorCheckTfwFileName, + String errorCheckTifFileName) { + this.hstUid = hstUid; + this.errorCheckState = errorCheckState; + this.errorCheckTfwFileName = errorCheckTfwFileName; + this.errorCheckTifFileName = errorCheckTifFileName; + }*/ + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java index e3939b9f..8f4f04f2 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java @@ -2,12 +2,18 @@ package com.kamco.cd.kamcoback.mapsheet.service; import static java.lang.String.CASE_INSENSITIVE_ORDER; -import com.kamco.cd.kamcoback.mapsheet.dto.FileDto; +import com.kamco.cd.kamcoback.common.utils.FIleChecker; +import com.kamco.cd.kamcoback.config.FileConfig; +import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.Basic; 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.AddReq; 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.ErrorSearchReq; +import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngDto; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngFilesDto; import com.kamco.cd.kamcoback.postgres.core.MapSheetMngCoreService; import jakarta.validation.Valid; @@ -16,6 +22,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; import java.nio.file.attribute.FileTime; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -39,6 +46,7 @@ import org.springframework.web.multipart.MultipartFile; public class MapSheetMngService { private final MapSheetMngCoreService mapSheetMngCoreService; + private final FileConfig fileConfig; public FilesDto getFilesAll(SrchFilesDto srchDto) { @@ -50,7 +58,7 @@ public class MapSheetMngService { File dir = new File(dirPath); File[] fileList = dir.listFiles(); - List files = new ArrayList<>(); + List files = new ArrayList<>(); SimpleDateFormat dttmFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); int fileListPos = 0; @@ -85,7 +93,7 @@ public class MapSheetMngService { String lastModified = dttmFormat.format(new Date(file.lastModified())); files.add( - new FileDto.Basic( + new Basic( fileName, parentFolderNm, parentPath, fullPath, ext, fileSize, lastModified)); fileTotCnt = fileTotCnt + 1; @@ -113,7 +121,7 @@ public class MapSheetMngService { Set targetExtensions = createExtensionSet(extension); - List fileDtoList = new ArrayList<>(); + List fileDtoList = new ArrayList<>(); SimpleDateFormat dttmFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); int fileTotCnt = 0; @@ -147,13 +155,13 @@ public class MapSheetMngService { long fileSize = file.length(); String lastModified = dttmFormat.format(new Date(file.lastModified())); - return new FileDto.Basic( + return new Basic( fileNm, parentFolderNm, parentPath, fullPath, ext, fileSize, lastModified); }) .collect(Collectors.toList()); fileTotCnt = fileDtoList.size(); - fileTotSize = fileDtoList.stream().mapToLong(FileDto.Basic::getFileSize).sum(); + fileTotSize = fileDtoList.stream().mapToLong(Basic::getFileSize).sum(); } catch (IOException e) { System.err.println("파일 I/O 오류 발생: " + e.getMessage()); @@ -215,7 +223,7 @@ public class MapSheetMngService { } } - public List findMapSheetMngList() { + public List findMapSheetMngList() { return mapSheetMngCoreService.findMapSheetMngList(); } @@ -223,29 +231,28 @@ public class MapSheetMngService { return mapSheetMngCoreService.findMapSheetMngYyyyList(); } - public MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy) { + public MngDto findMapSheetMng(int mngYyyy) { return mapSheetMngCoreService.findMapSheetMng(mngYyyy); } @Transactional - public MapSheetMngDto.DmlReturn mngComplete(int mngYyyy) { + public DmlReturn mngComplete(int mngYyyy) { mapSheetMngCoreService.MapSheetMngComplete(mngYyyy); - return new MapSheetMngDto.DmlReturn("success", "작업완료 처리되었습니다."); + return new DmlReturn("success", "작업완료 처리되었습니다."); } - public Page findMapSheetErrorList( - MapSheetMngDto.@Valid ErrorSearchReq searchReq) { + public Page findMapSheetErrorList(@Valid ErrorSearchReq searchReq) { return mapSheetMngCoreService.findMapSheetErrorList(searchReq); } - public MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid) { + public ErrorDataDto findMapSheetError(Long hstUid) { return mapSheetMngCoreService.findMapSheetError(hstUid); } @Transactional - public MapSheetMngDto.DmlReturn mngDataSave(MapSheetMngDto.AddReq AddReq) { + public DmlReturn mngDataSave(AddReq AddReq) { return mapSheetMngCoreService.mngDataSave(AddReq); } @@ -260,11 +267,11 @@ public class MapSheetMngService { */ - public MapSheetMngDto.DmlReturn uploadProcess(@Valid List hstUidList) { + public DmlReturn uploadProcess(@Valid List hstUidList) { return mapSheetMngCoreService.uploadProcess(hstUidList); } - public MapSheetMngDto.DmlReturn updateExceptUseInference(@Valid List hstUidList) { + public DmlReturn updateExceptUseInference(@Valid List hstUidList) { return mapSheetMngCoreService.updateExceptUseInference(hstUidList); } @@ -275,6 +282,9 @@ public class MapSheetMngService { // String targetPath, Long hstUid) { + String rootPath = fileConfig.getRootSyncDir(); + String tmpPath = fileConfig.getTmpSyncDir(); + // 파일 유효성 검증 if (tfwFile == null || tfwFile.isEmpty() || tfwFile.getSize() == 0) { return new DmlReturn("fail", "TFW SIZE 오류"); @@ -287,15 +297,68 @@ public class MapSheetMngService { .substring(tfwFile.getOriginalFilename().lastIndexOf('.') + 1) .toLowerCase() .equals("tfw")) { - return new DmlReturn("fail", "TFW TYPE ERROR"); + return new DmlReturn("fail", "TFW FILENAME ERROR"); } else if (!tifFile .getOriginalFilename() .substring(tifFile.getOriginalFilename().lastIndexOf('.') + 1) .toLowerCase() .equals("tif")) { - return new DmlReturn("fail", "TIF TYPE ERROR"); + return new DmlReturn("fail", "TIF FILENAME ERROR"); } + ErrorDataDto errDto = mapSheetMngCoreService.findMapSheetError(hstUid); + if (errDto == null) { + return new DmlReturn("fail", "NO hstUid Data"); + } + MngDto mngDto = mapSheetMngCoreService.findMapSheetMng(errDto.getMngYyyy()); + + String targetYearDir = mngDto.getMngPath(); + + List basicTfwList = + FIleChecker.getFilesFromAllDepth( + targetYearDir, tfwFile.getOriginalFilename(), "tfw", 100, "name", 0, 100); + + List basicTifList = + FIleChecker.getFilesFromAllDepth( + targetYearDir, tifFile.getOriginalFilename(), "tif", 100, "name", 0, 100); + + int tfwCnt = + (int) + basicTfwList.stream() + .filter(dto -> dto.getExtension().toString().equals("tfw")) + .count(); + + int tifCnt = + (int) + basicTifList.stream() + .filter(dto -> dto.getExtension().toString().equals("tif")) + .count(); + + if (tfwCnt > 0 || tifCnt > 0) { + String tfwMsg = ""; + String tifMsg = ""; + if (tfwCnt > 0) tfwMsg = tfwFile.getOriginalFilename(); + if (tifCnt > 0) tifMsg = tifFile.getOriginalFilename(); + return new DmlReturn("fail", tfwMsg + "," + tifMsg + " DUPLICATE ERROR"); + } + + File directory = new File(tmpPath); + String tfwTmpPath = tmpPath + tfwFile.getOriginalFilename(); + Path tfwTmpSavePath = Paths.get(tfwTmpPath); + String tifTmpPath = tmpPath + tifFile.getOriginalFilename(); + Path tifTmpSavePath = Paths.get(tifTmpPath); + boolean fileUpload = true; + try { + tfwFile.transferTo(tfwTmpSavePath); + tifFile.transferTo(tifTmpSavePath); + } catch (IOException e) { + // throw new RuntimeException(e); + return new DmlReturn("fail", "UPLOAD ERROR"); + } + + if (!FIleChecker.cmmndGdalInfo(tifTmpPath)) return new DmlReturn("fail", "TIF TYPE ERROR"); + if (!FIleChecker.checkTfw(tfwTmpPath)) return new DmlReturn("fail", "TFW TYPE ERROR"); + // 싱크파일목록 가저오기 List mngFiles = mapSheetMngCoreService.findIdToMapSheetFileList(hstUid); String uploadPath = ""; @@ -304,28 +367,80 @@ public class MapSheetMngService { break; } + Path tfwTargetPath = null; + Path tifTargetPath = null; + Path uploadTargetPath = null; + if (uploadPath.isEmpty()) { - // ErrorDataDto errDto = mapSheetMngCoreService.findMapSheetError(hstUid); - // uploadPath = FileConfig.rootSyncDir+"\\"+errDto.getMapSheetNum(); + MngFilesDto filesDto = + mapSheetMngCoreService.findYyyyToMapSheetFilePathRefer(errDto.getMngYyyy()); + String referPath = filesDto.getFilePath(); + uploadPath = Paths.get(referPath).getParent().toString() + "/" + errDto.getRefMapSheetNum(); + tfwTargetPath = Paths.get(uploadPath).resolve(tfwFile.getOriginalFilename()); + tifTargetPath = Paths.get(uploadPath).resolve(tifFile.getOriginalFilename()); } - // tfw가 있는 경우 - // tif가 있는 경우 + // String searchDir = + + try { + uploadTargetPath = Paths.get(uploadPath); + Files.createDirectories(uploadTargetPath); + Files.move(tfwTmpSavePath, tfwTargetPath, StandardCopyOption.REPLACE_EXISTING); + Files.move(tifTmpSavePath, tifTargetPath, StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + throw new RuntimeException(e); + } + + // hst업데이트 + mapSheetMngCoreService.updateMapSheetMngHstSyncCheckState( + hstUid, uploadPath, tfwFile.getOriginalFilename(), tifFile.getOriginalFilename()); + // 파일정보 업데이트 + mapSheetMngCoreService.deleteByHstUidMngFile(hstUid); + + MapSheetMngDto.MngFileAddReq addReq = new MapSheetMngDto.MngFileAddReq(); + addReq.setMngYyyy(errDto.getMngYyyy()); + addReq.setMapSheetNum(errDto.getMapSheetNum()); + addReq.setRefMapSheetNum(errDto.getRefMapSheetNum()); + addReq.setFilePath(uploadPath); + addReq.setFileName(tfwFile.getOriginalFilename()); + addReq.setFileExt("tfw"); + addReq.setFileSize(tfwFile.getSize()); + addReq.setHstUid(errDto.getHstUid()); + addReq.setFileState("DONE"); + + mapSheetMngCoreService.mngFileSave(addReq); + + addReq.setFileExt("tif"); + addReq.setFileSize(tifFile.getSize()); + mapSheetMngCoreService.mngFileSave(addReq); return new DmlReturn("success", "파일 업로드 완료되었습니다."); } - public List findHstUidToMapSheetFileList(Long hstUid) { + public List findHstUidToMapSheetFileList(Long hstUid) { return mapSheetMngCoreService.findHstUidToMapSheetFileList(hstUid); } @Transactional - public MapSheetMngDto.DmlReturn deleteByFileUidMngFile(List fileUids) { + public DmlReturn deleteByFileUidMngFile(List fileUids) { for (Long uid : fileUids) { - MapSheetMngDto.DmlReturn dmlReturn = mapSheetMngCoreService.deleteByFileUidMngFile(uid); + MapSheetMngDto.MngFilesDto dto = mapSheetMngCoreService.findIdToMapSheetFile(uid); + String filePath = dto.getFilePath() + "/" + dto.getFileName(); + Path path = Paths.get(filePath); + try { + boolean isDeleted = Files.deleteIfExists(path); + if (isDeleted) { + System.out.println("파일 삭제 성공: " + filePath); + } else { + System.out.println("삭제 실패: 파일이 존재하지 않습니다."); + } + } catch (IOException e) { + System.err.println("파일 삭제 중 오류 발생: " + e.getMessage()); + } + DmlReturn dmlReturn = mapSheetMngCoreService.deleteByFileUidMngFile(uid); } - return new MapSheetMngDto.DmlReturn("success", fileUids.size() + "개 파일이 삭제되었습니다."); + return new DmlReturn("success", fileUids.size() + "개 파일이 삭제되었습니다."); } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java index e7b7eb5e..53cfe380 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java @@ -48,6 +48,24 @@ public class MapSheetMngCoreService { mapSheetMngRepository.MapSheetMngComplete(mngYyyy); } + public void deleteByHstUidMngFile(@Valid Long hstUid) { + mapSheetMngRepository.deleteByHstUidMngFile(hstUid); + } + + public MapSheetMngDto.DmlReturn mngFileSave(@Valid MapSheetMngDto.MngFileAddReq addReq) { + + mapSheetMngRepository.mngFileSave(addReq); + // int hstCnt = mapSheetMngRepository.insertMapSheetOrgDataToMapSheetMngHst(saved.getMngYyyy()); + + return new MapSheetMngDto.DmlReturn("success", "파일정보저장되었습니다."); + } + + public void updateMapSheetMngHstSyncCheckState( + Long hstUid, String uploadPath, String syncCheckTfwFileName, String syncCheckTifFileName) { + mapSheetMngRepository.updateMapSheetMngHstSyncCheckState( + hstUid, uploadPath, syncCheckTfwFileName, syncCheckTifFileName); + } + public Page findMapSheetErrorList( MapSheetMngDto.@Valid ErrorSearchReq searchReq) { return mapSheetMngRepository.findMapSheetErrorList(searchReq); @@ -61,6 +79,14 @@ public class MapSheetMngCoreService { return mapSheetMngRepository.findIdToMapSheetFileList(hstUid); } + public MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePathRefer(int mngYyyy) { + return mapSheetMngRepository.findYyyyToMapSheetFilePathRefer(mngYyyy); + } + + public MapSheetMngDto.MngFilesDto findIdToMapSheetFile(Long fileUid) { + return mapSheetMngRepository.findIdToMapSheetFile(fileUid); + } + public MapSheetMngDto.DmlReturn uploadProcess(@Valid List hstUidList) { int count = 0; if (!Objects.isNull(hstUidList) && !hstUidList.isEmpty()) { @@ -214,6 +240,7 @@ public class MapSheetMngCoreService { } public MapSheetMngDto.DmlReturn deleteByFileUidMngFile(Long fileUid) { + mapSheetMngRepository.deleteByFileUidMngFile(fileUid); return new MapSheetMngDto.DmlReturn("success", fileUid + " : 삭제되었습니다."); diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java index 3683f365..d479ff91 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java @@ -25,7 +25,7 @@ public interface MapSheetMngRepositoryCustom { void deleteByFileUidMngFile(Long fileUid); - MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePath(int mngYyyy); + MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePathRefer(int mngYyyy); void deleteByMngYyyyMngAll(int mngYyyy); @@ -35,6 +35,13 @@ public interface MapSheetMngRepositoryCustom { void deleteByMngYyyyMngFile(int mngYyyy); + void deleteByHstUidMngFile(Long hstUid); + + void mngFileSave(@Valid MapSheetMngDto.MngFileAddReq addReq); + + void updateMapSheetMngHstSyncCheckState( + Long hstUid, String uploadPath, String syncCheckTfwFileName, String syncCheckTifFileName); + Page findMapSheetErrorList( MapSheetMngDto.@Valid ErrorSearchReq searchReq); @@ -42,5 +49,7 @@ public interface MapSheetMngRepositoryCustom { List findIdToMapSheetFileList(Long hstUid); + MapSheetMngDto.MngFilesDto findIdToMapSheetFile(Long fileUid); + void updateHstFileSizes(Long hstUid, long tifSizeBytes, long tfwSizeBytes, long totalSizeBytes); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java index e56eb8b6..6863cf0d 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java @@ -19,6 +19,7 @@ import com.querydsl.jpa.impl.JPAQueryFactory; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import jakarta.validation.Valid; +import java.time.ZonedDateTime; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -72,6 +73,7 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport "row_number() over(order by {0} desc)", mapSheetMngEntity.createdDttm), mapSheetMngEntity.mngYyyy, + mapSheetMngEntity.mngPath, mapSheetMngEntity.mngState, mapSheetMngEntity.syncState, mapSheetMngEntity.syncCheckState, @@ -194,6 +196,7 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport "row_number() over(order by {0} desc)", mapSheetMngEntity.createdDttm), mapSheetMngEntity.mngYyyy, + mapSheetMngEntity.mngPath, mapSheetMngEntity.mngState, mapSheetMngEntity.syncState, mapSheetMngEntity.syncCheckState, @@ -336,6 +339,9 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport Projections.constructor( MapSheetMngDto.ErrorDataDto.class, mapSheetMngHstEntity.hstUid, + mapSheetMngHstEntity.mngYyyy, + mapSheetMngHstEntity.mapSheetNum, + mapSheetMngHstEntity.refMapSheetNum, Expressions.stringTemplate( "concat({0},substring({1}, 0, 6))", mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum) @@ -391,7 +397,9 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport Projections.constructor( MapSheetMngDto.ErrorDataDto.class, mapSheetMngHstEntity.hstUid, + mapSheetMngHstEntity.mngYyyy, mapSheetMngHstEntity.mapSheetNum, + mapSheetMngHstEntity.refMapSheetNum, Expressions.stringTemplate( "concat({0},substring({1}, 0, 6))", mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum) @@ -476,7 +484,7 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport } @Override - public MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePath(int mngYyyy) { + public MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePathRefer(int mngYyyy) { BooleanBuilder whereBuilder = new BooleanBuilder(); whereBuilder.and(mapSheetMngFileEntity.mngYyyy.eq(mngYyyy)); @@ -497,11 +505,38 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport mapSheetMngFileEntity.fileSize)) .from(mapSheetMngFileEntity) .where(whereBuilder) + .orderBy(mapSheetMngFileEntity.fileUid.desc()) + .limit(1) .fetchOne(); return foundContent; } + @Override + public MapSheetMngDto.MngFilesDto findIdToMapSheetFile(Long fileUid) { + + 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(mapSheetMngFileEntity.fileUid.eq(fileUid)) + .fetchOne(); + + return foundContent; + } + + @Override public void MapSheetMngComplete(int mngYyyy) { long execCount = queryFactory @@ -511,6 +546,23 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport .execute(); } + @Override + public void updateMapSheetMngHstSyncCheckState( + Long hstUid, String uploadPath, String syncCheckTfwFileName, String syncCheckTifFileName) { + + long execCount = + queryFactory + .update(mapSheetMngHstEntity) + .set(mapSheetMngHstEntity.syncCheckState, "DONE") + .set(mapSheetMngHstEntity.mapSheetPath, uploadPath) + .set(mapSheetMngHstEntity.syncCheckTfwFileName, syncCheckTfwFileName) + .set(mapSheetMngHstEntity.syncCheckTifFileName, syncCheckTifFileName) + .set(mapSheetMngHstEntity.syncCheckStrtDttm, ZonedDateTime.now()) + .set(mapSheetMngHstEntity.syncCheckEndDttm, ZonedDateTime.now()) + .where(mapSheetMngHstEntity.hstUid.eq(hstUid)) + .execute(); + } + @Override public void deleteByMngYyyyMngAll(int mngYyyy) { @@ -564,14 +616,51 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport } @Override - public void deleteByFileUidMngFile(Long fileUid) { + public void deleteByHstUidMngFile(Long hstUid) { long deletedFileCount = + queryFactory + .delete(mapSheetMngFileEntity) + .where(mapSheetMngFileEntity.fileUid.eq(hstUid)) + .execute(); + } + + @Override + public void deleteByFileUidMngFile(Long fileUid) { + long fileCount = queryFactory .delete(mapSheetMngFileEntity) .where(mapSheetMngFileEntity.fileUid.eq(fileUid)) .execute(); } + @Override + public void mngFileSave(@Valid MapSheetMngDto.MngFileAddReq addReq) { + long fileCount = + queryFactory + .insert(mapSheetMngFileEntity) + .columns( + mapSheetMngFileEntity.mngYyyy, + mapSheetMngFileEntity.mapSheetNum, + mapSheetMngFileEntity.refMapSheetNum, + mapSheetMngFileEntity.filePath, + mapSheetMngFileEntity.fileName, + mapSheetMngFileEntity.fileExt, + mapSheetMngFileEntity.hstUid, + mapSheetMngFileEntity.fileSize, + mapSheetMngFileEntity.fileState) + .values( + addReq.getMngYyyy(), + addReq.getMapSheetNum(), + addReq.getRefMapSheetNum(), + addReq.getFilePath(), + addReq.getFileName(), + addReq.getFileExt(), + addReq.getHstUid(), + addReq.getFileSize(), + addReq.getFileState()) + .execute(); + } + @Override public int insertMapSheetOrgDataToMapSheetMngHst(int mngYyyy) {