중복페어 조회, 선택삭제, 파일삭제, 중복파일삭제 추가

This commit is contained in:
DanielLee
2025-12-16 18:48:30 +09:00
parent 9f0c55fd0c
commit cd21001a47
7 changed files with 189 additions and 10 deletions

View File

@@ -5,6 +5,7 @@ import com.kamco.cd.kamcoback.mapsheet.dto.ImageryDto;
import com.kamco.cd.kamcoback.postgres.entity.MapSheetMngHstEntity;
import com.kamco.cd.kamcoback.postgres.repository.mapsheet.MapSheetMngFileCheckerRepository;
import com.kamco.cd.kamcoback.postgres.repository.mapsheet.MapSheetMngRepository;
import java.time.ZonedDateTime;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
@@ -58,4 +59,12 @@ public class MapSheetMngFileCheckerCoreService {
public Optional<MapSheetMngHstEntity> findHstByUid(Long hstUid) {
return mapSheetMngRepository.findMapSheetMngHstInfo(hstUid);
}
public void updateHstSyncCheckStart(Long hstUid) {
mapSheetMngRepository.updateHstSyncCheck(hstUid, null, ZonedDateTime.now(), null);
}
public void updateHstSyncCheckEnd(Long hstUid, String state) {
mapSheetMngRepository.updateHstSyncCheck(hstUid, state, null, ZonedDateTime.now());
}
}

View File

@@ -1,10 +1,14 @@
package com.kamco.cd.kamcoback.postgres.repository.mapsheet;
import com.kamco.cd.kamcoback.postgres.entity.MapSheetMngFileEntity;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
public interface MapSheetMngFileRepository extends JpaRepository<MapSheetMngFileEntity, Long> {
boolean existsByFileNameAndFilePath(String fileName, String filePath);
void deleteByFileNameAndFilePath(String fileName, String filePath);
// 추가: 특정 경로에서 파일명 목록으로 중복 조회
List<MapSheetMngFileEntity> findByFilePathAndFileNameIn(String filePath, List<String> fileNames);
}

View File

@@ -3,6 +3,7 @@ package com.kamco.cd.kamcoback.postgres.repository.mapsheet;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto;
import com.kamco.cd.kamcoback.postgres.entity.MapSheetMngHstEntity;
import jakarta.validation.Valid;
import java.time.ZonedDateTime;
import java.util.Optional;
import org.springframework.data.domain.Page;
@@ -26,4 +27,7 @@ public interface MapSheetMngRepositoryCustom {
MapSheetMngDto.@Valid ErrorSearchReq searchReq);
void updateHstFileSizes(Long hstUid, long tifSizeBytes, long tfwSizeBytes, long totalSizeBytes);
// 동기화 점검 상태/시간 업데이트 (state/start/end 각각 null이면 기존값 유지)
void updateHstSyncCheck(Long hstUid, String state, ZonedDateTime start, ZonedDateTime end);
}

View File

@@ -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;
@@ -354,6 +355,34 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
query.executeUpdate();
}
@Override
public void updateHstSyncCheck(
Long hstUid, String state, ZonedDateTime start, ZonedDateTime end) {
StringBuilder sql = new StringBuilder("UPDATE tb_map_sheet_mng_hst SET ");
boolean first = true;
if (state != null) {
sql.append("sync_check_state = :state");
first = false;
}
if (start != null) {
if (!first) sql.append(", ");
sql.append("sync_check_strt_dttm = :start");
first = false;
}
if (end != null) {
if (!first) sql.append(", ");
sql.append("sync_check_end_dttm = :end");
}
sql.append(" WHERE hst_uid = :uid");
Query query = (Query) em.createNativeQuery(sql.toString());
if (state != null) query.setParameter("state", state);
if (start != null) query.setParameter("start", start);
if (end != null) query.setParameter("end", end);
query.setParameter("uid", hstUid);
query.executeUpdate();
}
private NumberExpression<Integer> rowNum() {
return Expressions.numberTemplate(
Integer.class, "row_number() over(order by {0} desc)", mapSheetMngHstEntity.createdDate);