From f4a20796a04371b980de85e7a349d4253cd7ee75 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Fri, 9 Jan 2026 17:50:48 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EB=B2=A8=EB=A7=81=20=ED=88=B4=20?= =?UTF-8?q?=EB=9D=BC=EB=B2=A8=EB=9F=AC=20=EB=AA=A9=EB=A1=9D=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=ED=95=84=ED=84=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/TrainingDataLabelCoreService.java | 5 +- .../TrainingDataLabelRepositoryCustom.java | 2 +- .../TrainingDataLabelRepositoryImpl.java | 66 ++++++++++++------- .../TrainingDataLabelApiController.java | 6 +- .../service/TrainingDataLabelService.java | 5 +- 5 files changed, 52 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/TrainingDataLabelCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/TrainingDataLabelCoreService.java index e58c3bec..76f9d29c 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/TrainingDataLabelCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/TrainingDataLabelCoreService.java @@ -13,7 +13,8 @@ public class TrainingDataLabelCoreService { private final TrainingDataLabelRepository trainingDataLabelRepository; - public Page findLabelingAssignedList(searchReq searchReq, String userId) { - return trainingDataLabelRepository.findLabelingAssignedList(searchReq, userId); + public Page findLabelingAssignedList( + searchReq searchReq, String userId, String status) { + return trainingDataLabelRepository.findLabelingAssignedList(searchReq, userId, status); } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/trainingdata/TrainingDataLabelRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/trainingdata/TrainingDataLabelRepositoryCustom.java index a4a694de..604f3d32 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/trainingdata/TrainingDataLabelRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/trainingdata/TrainingDataLabelRepositoryCustom.java @@ -6,5 +6,5 @@ import org.springframework.data.domain.Page; public interface TrainingDataLabelRepositoryCustom { - Page findLabelingAssignedList(searchReq searchReq, String userId); + Page findLabelingAssignedList(searchReq searchReq, String userId, String status); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/trainingdata/TrainingDataLabelRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/trainingdata/TrainingDataLabelRepositoryImpl.java index c42accda..63c1310f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/trainingdata/TrainingDataLabelRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/trainingdata/TrainingDataLabelRepositoryImpl.java @@ -9,12 +9,15 @@ import com.kamco.cd.kamcoback.postgres.entity.LabelingAssignmentEntity; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingListDto; import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.searchReq; import com.querydsl.core.types.Projections; +import com.querydsl.core.types.dsl.BooleanExpression; import com.querydsl.core.types.dsl.CaseBuilder; import com.querydsl.core.types.dsl.Expressions; import com.querydsl.core.types.dsl.NumberPath; import com.querydsl.core.types.dsl.StringExpression; import com.querydsl.jpa.impl.JPAQueryFactory; import java.util.List; +import java.util.Objects; +import java.util.Optional; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; @@ -32,7 +35,8 @@ public class TrainingDataLabelRepositoryImpl extends QuerydslRepositorySupport } @Override - public Page findLabelingAssignedList(searchReq searchReq, String userId) { + public Page findLabelingAssignedList( + searchReq searchReq, String userId, String status) { Pageable pageable = PageRequest.of(searchReq.getPage(), searchReq.getSize()); List list = queryFactory @@ -73,7 +77,7 @@ public class TrainingDataLabelRepositoryImpl extends QuerydslRepositorySupport .or( imageryEntity.year.eq( mapSheetAnalDataInferenceGeomEntity.targetYyyy)))) - .where(labelingAssignmentEntity.workerUid.eq(userId)) + .where(labelingAssignmentEntity.workerUid.eq(userId), statusInLabelState(status)) .groupBy( labelingAssignmentEntity.assignmentUid, labelingAssignmentEntity.inferenceGeomUid, @@ -91,30 +95,33 @@ public class TrainingDataLabelRepositoryImpl extends QuerydslRepositorySupport .fetch(); Long count = - queryFactory - .select(labelingAssignmentEntity.assignmentUid.count()) - .from(labelingAssignmentEntity) - .innerJoin(mapSheetAnalDataInferenceGeomEntity) - .on( - labelingAssignmentEntity.inferenceGeomUid.eq( - mapSheetAnalDataInferenceGeomEntity.geoUid)) - .innerJoin(mapInkx5kEntity) - .on(labelingAssignmentEntity.assignGroupId.eq(mapInkx5kEntity.mapidcdNo)) - .leftJoin(imageryEntity) - .on( - imageryEntity - .scene5k - .eq(labelingAssignmentEntity.assignGroupId) - .and( + Optional.ofNullable( + queryFactory + .select(labelingAssignmentEntity.assignmentUid.count()) + .from(labelingAssignmentEntity) + .innerJoin(mapSheetAnalDataInferenceGeomEntity) + .on( + labelingAssignmentEntity.inferenceGeomUid.eq( + mapSheetAnalDataInferenceGeomEntity.geoUid)) + .innerJoin(mapInkx5kEntity) + .on(labelingAssignmentEntity.assignGroupId.eq(mapInkx5kEntity.mapidcdNo)) + .leftJoin(imageryEntity) + .on( imageryEntity - .year - .eq(mapSheetAnalDataInferenceGeomEntity.compareYyyy) - .or( - imageryEntity.year.eq( - mapSheetAnalDataInferenceGeomEntity.targetYyyy)))) - .where(labelingAssignmentEntity.workerUid.eq(userId)) - .groupBy(labelingAssignmentEntity.assignmentUid) - .fetchOne(); + .scene5k + .eq(labelingAssignmentEntity.assignGroupId) + .and( + imageryEntity + .year + .eq(mapSheetAnalDataInferenceGeomEntity.compareYyyy) + .or( + imageryEntity.year.eq( + mapSheetAnalDataInferenceGeomEntity.targetYyyy)))) + .where( + labelingAssignmentEntity.workerUid.eq(userId), statusInLabelState(status)) + .groupBy(labelingAssignmentEntity.assignmentUid) + .fetchOne()) + .orElse(0L); return new PageImpl<>(list, pageable, count); } @@ -127,4 +134,13 @@ public class TrainingDataLabelRepositoryImpl extends QuerydslRepositorySupport "{0} || {1}", imageryEntity.cogMiddlePath, imageryEntity.cogFilename)) .otherwise(""); } + + private BooleanExpression statusInLabelState(String status) { + if (Objects.isNull(status)) { + return null; + } + + String[] arrStatus = status.split(","); + return labelingAssignmentEntity.workState.in(arrStatus); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/trainingdata/TrainingDataLabelApiController.java b/src/main/java/com/kamco/cd/kamcoback/trainingdata/TrainingDataLabelApiController.java index a9b16b6b..b013a608 100644 --- a/src/main/java/com/kamco/cd/kamcoback/trainingdata/TrainingDataLabelApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/trainingdata/TrainingDataLabelApiController.java @@ -43,8 +43,10 @@ public class TrainingDataLabelApiController { public ApiResponseDto> findLabelingAssignedList( @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "20") int size, - @RequestParam(defaultValue = "20260105001") String userId) { + @RequestParam(defaultValue = "01022223333") String userId, + @RequestParam(defaultValue = "ASSIGNED,SKIP,DONE", required = false) String status) { TrainingDataLabelDto.searchReq searchReq = new TrainingDataLabelDto.searchReq(page, size, ""); - return ApiResponseDto.ok(trainingDataLabelService.findLabelingAssignedList(searchReq, userId)); + return ApiResponseDto.ok( + trainingDataLabelService.findLabelingAssignedList(searchReq, userId, status)); } } diff --git a/src/main/java/com/kamco/cd/kamcoback/trainingdata/service/TrainingDataLabelService.java b/src/main/java/com/kamco/cd/kamcoback/trainingdata/service/TrainingDataLabelService.java index e0b859c6..8068801d 100644 --- a/src/main/java/com/kamco/cd/kamcoback/trainingdata/service/TrainingDataLabelService.java +++ b/src/main/java/com/kamco/cd/kamcoback/trainingdata/service/TrainingDataLabelService.java @@ -15,7 +15,8 @@ public class TrainingDataLabelService { this.trainingDataLabelCoreService = trainingDataLabelCoreService; } - public Page findLabelingAssignedList(searchReq searchReq, String userId) { - return trainingDataLabelCoreService.findLabelingAssignedList(searchReq, userId); + public Page findLabelingAssignedList( + searchReq searchReq, String userId, String status) { + return trainingDataLabelCoreService.findLabelingAssignedList(searchReq, userId, status); } }