Geojson DATA Operation change to Stable - Daniel C No.7
This commit is contained in:
@@ -61,8 +61,23 @@ public class GeometryConversionService {
|
||||
List<Long> geometryIds = new ArrayList<>();
|
||||
|
||||
try {
|
||||
// 기존 geometry 데이터 삭제 (재생성)
|
||||
mapSheetLearnDataGeomRepository.deleteByDataUid(learnData.getId());
|
||||
// 기존 geometry 데이터 확인 - 데이터가 이미 존재하고 유효한 경우 재처리 건너뛰기
|
||||
List<MapSheetLearnDataGeomEntity> existingGeoms = mapSheetLearnDataGeomRepository.findByDataUid(learnData.getId());
|
||||
if (!existingGeoms.isEmpty() && isValidGeometryData(existingGeoms)) {
|
||||
log.debug("유효한 geometry 데이터가 이미 존재합니다. 재처리를 건너뜁니다: {}", learnData.getId());
|
||||
return existingGeoms.stream().map(MapSheetLearnDataGeomEntity::getId).toList();
|
||||
}
|
||||
|
||||
// 유효하지 않은 데이터만 조건부 삭제 (null geometry 또는 잘못된 형식)
|
||||
if (!existingGeoms.isEmpty()) {
|
||||
List<MapSheetLearnDataGeomEntity> invalidGeoms = existingGeoms.stream()
|
||||
.filter(g -> g.getGeom() == null || g.getGeom().isEmpty())
|
||||
.toList();
|
||||
if (!invalidGeoms.isEmpty()) {
|
||||
mapSheetLearnDataGeomRepository.deleteAll(invalidGeoms);
|
||||
log.debug("유효하지 않은 geometry 데이터만 삭제했습니다: {}개", invalidGeoms.size());
|
||||
}
|
||||
}
|
||||
|
||||
// JSON 데이터에서 GeoJSON 추출
|
||||
Map<String, Object> dataJson = learnData.getDataJson();
|
||||
@@ -433,4 +448,15 @@ public class GeometryConversionService {
|
||||
|
||||
return processedIds;
|
||||
}
|
||||
|
||||
/** Geometry 데이터의 유효성 검사 */
|
||||
private boolean isValidGeometryData(List<MapSheetLearnDataGeomEntity> geometryEntities) {
|
||||
if (geometryEntities == null || geometryEntities.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 모든 geometry가 null이 아니고 유효한지 확인
|
||||
return geometryEntities.stream()
|
||||
.allMatch(entity -> entity.getGeom() != null && !entity.getGeom().isEmpty());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user