라벨링 툴 라벨 저장 로직 수정

This commit is contained in:
2026-01-14 17:25:54 +09:00
parent 3bb85b4130
commit adcf8f0a8d
6 changed files with 187 additions and 169 deletions

View File

@@ -4,7 +4,7 @@ import com.kamco.cd.kamcoback.postgres.repository.trainingdata.TrainingDataLabel
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DefaultPaging; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DefaultPaging;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DetailRes; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DetailRes;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.GeoFeatureRequest.Properties; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelFeatureRequest.LabelProperties;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingGeometryInfo; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingGeometryInfo;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingListDto; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingListDto;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.SummaryRes; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.SummaryRes;
@@ -42,7 +42,7 @@ public class TrainingDataLabelCoreService {
} }
public void updateLabelingPolygonClass( public void updateLabelingPolygonClass(
Long inferenceGeomUid, Geometry geometry, Properties properties, String status) { Long inferenceGeomUid, Geometry geometry, LabelProperties properties, String status) {
trainingDataLabelRepository.updateLabelingPolygonClass( trainingDataLabelRepository.updateLabelingPolygonClass(
inferenceGeomUid, geometry, properties, status); inferenceGeomUid, geometry, properties, status);
} }

View File

@@ -3,7 +3,7 @@ package com.kamco.cd.kamcoback.postgres.repository.trainingdata;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DefaultPaging; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DefaultPaging;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DetailRes; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DetailRes;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.GeoFeatureRequest.Properties; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelFeatureRequest.LabelProperties;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingGeometryInfo; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingGeometryInfo;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingListDto; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingListDto;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.SummaryRes; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.SummaryRes;
@@ -25,7 +25,7 @@ public interface TrainingDataLabelRepositoryCustom {
void updateLabelingSkipState(Long inferenceGeomUid, String status); void updateLabelingSkipState(Long inferenceGeomUid, String status);
void updateLabelingPolygonClass( void updateLabelingPolygonClass(
Long inferenceGeomUid, Geometry geometry, Properties properties, String status); Long inferenceGeomUid, Geometry geometry, LabelProperties properties, String status);
SummaryRes getSummary(String userId); SummaryRes getSummary(String userId);

View File

@@ -11,15 +11,16 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelState; import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelState;
import com.kamco.cd.kamcoback.postgres.entity.LabelingAssignmentEntity; import com.kamco.cd.kamcoback.postgres.entity.LabelingAssignmentEntity;
import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataInferenceGeomEntity; import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataInferenceGeomEntity;
import com.kamco.cd.kamcoback.postgres.entity.MapSheetLearnDataGeomEntity;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.ChangeDetectionInfo; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.ChangeDetectionInfo;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.ClassificationInfo; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.ClassificationInfo;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DefaultPaging; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DefaultPaging;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DetailRes; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DetailRes;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.GeoFeatureRequest.Properties;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.InferenceDataGeometry; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.InferenceDataGeometry;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.InferenceDataGeometry.InferenceProperties; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.InferenceDataGeometry.InferenceProperties;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.InspectionResultInfo; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.InspectionResultInfo;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelFeatureRequest.LabelProperties;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingGeometryInfo; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingGeometryInfo;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingListDto; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingListDto;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LearnDataGeometry; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LearnDataGeometry;
@@ -204,7 +205,7 @@ public class TrainingDataLabelRepositoryImpl extends QuerydslRepositorySupport
@Override @Override
public void updateLabelingPolygonClass( public void updateLabelingPolygonClass(
Long inferenceGeomUid, Geometry geometry, Properties properties, String status) { Long inferenceGeomUid, Geometry geometry, LabelProperties properties, String status) {
// inference_geom 테이블에 상태 업데이트 // inference_geom 테이블에 상태 업데이트
queryFactory queryFactory
.update(mapSheetAnalDataInferenceGeomEntity) .update(mapSheetAnalDataInferenceGeomEntity)
@@ -225,6 +226,13 @@ public class TrainingDataLabelRepositoryImpl extends QuerydslRepositorySupport
"MapSheetAnalDataInferenceGeomEntity not found for analUid: "); "MapSheetAnalDataInferenceGeomEntity not found for analUid: ");
} }
MapSheetLearnDataGeomEntity learnEntity =
queryFactory
.selectFrom(mapSheetLearnDataGeomEntity)
.where(mapSheetLearnDataGeomEntity.geoUid.eq(inferenceGeomUid))
.fetchOne();
if (Objects.isNull(learnEntity)) {
// learn_data_geom 에 insert // learn_data_geom 에 insert
queryFactory queryFactory
.insert(mapSheetLearnDataGeomEntity) .insert(mapSheetLearnDataGeomEntity)
@@ -247,6 +255,16 @@ public class TrainingDataLabelRepositoryImpl extends QuerydslRepositorySupport
ZonedDateTime.now(), ZonedDateTime.now(),
ZonedDateTime.now()) ZonedDateTime.now())
.execute(); .execute();
} else {
queryFactory
.update(mapSheetLearnDataGeomEntity)
.set(mapSheetLearnDataGeomEntity.geom, geometry)
.set(mapSheetLearnDataGeomEntity.classAfterCd, properties.getAfterClass().toLowerCase())
.set(mapSheetLearnDataGeomEntity.classBeforeCd, properties.getBeforeClass().toLowerCase())
.set(mapSheetLearnDataGeomEntity.modifiedDate, ZonedDateTime.now())
.where(mapSheetLearnDataGeomEntity.geoUid.eq(inferenceGeomUid))
.execute();
}
} }
@Override @Override

View File

@@ -89,7 +89,7 @@ public class TrainingDataLabelApiController {
}) })
@PostMapping @PostMapping
public ApiResponseDto<ResponseObj> saveLabelingFeature( public ApiResponseDto<ResponseObj> saveLabelingFeature(
@RequestBody TrainingDataLabelDto.GeoFeatureRequest request) { @RequestBody TrainingDataLabelDto.LabelFeatureRequest request) {
return ApiResponseDto.okObject(trainingDataLabelService.saveLabelingFeature(request)); return ApiResponseDto.okObject(trainingDataLabelService.saveLabelingFeature(request));
} }

View File

@@ -96,12 +96,12 @@ public class TrainingDataLabelDto {
} }
} }
@Schema(name = "GeoFeatureRequest", description = "polygon 저장") @Schema(name = "LabelFeatureRequest", description = "polygon 저장")
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public static class GeoFeatureRequest { public static class LabelFeatureRequest {
@Schema(description = "assignmentUid", example = "4f9ebc8b-6635-4177-b42f-7efc9c7b4c02") @Schema(description = "assignmentUid", example = "4f9ebc8b-6635-4177-b42f-7efc9c7b4c02")
private String assignmentUid; private String assignmentUid;
@@ -148,10 +148,10 @@ public class TrainingDataLabelDto {
""") """)
private Geometry geometry; private Geometry geometry;
private Properties properties; private LabelProperties properties;
@Getter @Getter
public static class Properties { public static class LabelProperties {
@Schema(description = "beforeClass", example = "WASTE") @Schema(description = "beforeClass", example = "WASTE")
private String beforeClass; private String beforeClass;

View File

@@ -6,7 +6,7 @@ import com.kamco.cd.kamcoback.postgres.core.TrainingDataLabelCoreService;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DefaultPaging; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DefaultPaging;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DetailRes; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DetailRes;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.GeoFeatureRequest; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelFeatureRequest;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingGeometryInfo; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingGeometryInfo;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingListDto; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingListDto;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.SummaryRes; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.SummaryRes;
@@ -36,7 +36,7 @@ public class TrainingDataLabelService {
} }
@Transactional @Transactional
public ResponseObj saveLabelingFeature(GeoFeatureRequest request) { public ResponseObj saveLabelingFeature(LabelFeatureRequest request) {
String status = ""; String status = "";
String assignmentUid = request.getAssignmentUid(); String assignmentUid = request.getAssignmentUid();
Long inferenceGeomUid = Long inferenceGeomUid =