From 097884240080f2595c73dd2f924170630c9af261 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Mon, 5 Jan 2026 14:13:24 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EB=B2=A8=20=EC=9D=B4=EA=B4=80=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../label/LabelAllocateApiController.java | 4 +- .../kamcoback/label/dto/LabelAllocateDto.java | 8 ++-- .../label/service/LabelAllocateService.java | 6 +-- .../core/LabelAllocateCoreService.java | 9 ++++- .../label/LabelAllocateRepositoryCustom.java | 7 +++- .../label/LabelAllocateRepositoryImpl.java | 37 +++++++++++++------ 6 files changed, 48 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java b/src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java index db1c7521..00e507de 100644 --- a/src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java @@ -197,11 +197,11 @@ public class LabelAllocateApiController { return ApiResponseDto.okObject( labelAllocateService.allocateMove( - dto.getAutoType(), dto.getStage(), dto.getLabelers(), dto.getCompareYyyy(), - dto.getTargetYyyy())); + dto.getTargetYyyy(), + dto.getUserId())); } @Operation( diff --git a/src/main/java/com/kamco/cd/kamcoback/label/dto/LabelAllocateDto.java b/src/main/java/com/kamco/cd/kamcoback/label/dto/LabelAllocateDto.java index 75381dd8..12c95bb7 100644 --- a/src/main/java/com/kamco/cd/kamcoback/label/dto/LabelAllocateDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/label/dto/LabelAllocateDto.java @@ -225,14 +225,11 @@ public class LabelAllocateDto { @AllArgsConstructor public static class AllocateMoveDto { - @Schema(description = "자동/수동여부(AUTO/MANUAL)", example = "AUTO") - private String autoType; - @Schema(description = "회차", example = "4") private Integer stage; @Schema( - description = "라벨러 할당 목록", + description = "이관할 라벨러 할당량", example = """ [ @@ -253,6 +250,9 @@ public class LabelAllocateDto { @Schema(description = "기준년도", example = "2024") private Integer targetYyyy; + + @Schema(description = "대상 사번", example = "01022223333") + private String userId; } @Getter diff --git a/src/main/java/com/kamco/cd/kamcoback/label/service/LabelAllocateService.java b/src/main/java/com/kamco/cd/kamcoback/label/service/LabelAllocateService.java index 1ea0f5b9..fa850685 100644 --- a/src/main/java/com/kamco/cd/kamcoback/label/service/LabelAllocateService.java +++ b/src/main/java/com/kamco/cd/kamcoback/label/service/LabelAllocateService.java @@ -132,11 +132,11 @@ public class LabelAllocateService { } public ApiResponseDto.ResponseObj allocateMove( - String autoType, Integer stage, List targetUsers, Integer compareYyyy, - Integer targetYyyy) { + Integer targetYyyy, + String userId) { Long lastId = null; Long chargeCnt = targetUsers.stream().mapToLong(TargetUser::getDemand).sum(); @@ -147,7 +147,7 @@ public class LabelAllocateService { List allIds = labelAllocateCoreService.fetchNextMoveIds( - lastId, chargeCnt, compareYyyy, targetYyyy, stage); + lastId, chargeCnt, compareYyyy, targetYyyy, stage, userId); int index = 0; for (TargetUser target : targetUsers) { int end = index + target.getDemand(); diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/LabelAllocateCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/LabelAllocateCoreService.java index 4e8cacfd..30f788bd 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/LabelAllocateCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/LabelAllocateCoreService.java @@ -79,9 +79,14 @@ public class LabelAllocateCoreService { } public List fetchNextMoveIds( - Long lastId, Long batchSize, Integer compareYyyy, Integer targetYyyy, Integer stage) { + Long lastId, + Long batchSize, + Integer compareYyyy, + Integer targetYyyy, + Integer stage, + String userId) { return labelAllocateRepository.fetchNextMoveIds( - lastId, batchSize, compareYyyy, targetYyyy, stage); + lastId, batchSize, compareYyyy, targetYyyy, stage, userId); } public void assignOwnerMove(List sub, String userId) { diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryCustom.java index 659f03bd..ff30ac7a 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryCustom.java @@ -48,7 +48,12 @@ public interface LabelAllocateRepositoryCustom { InferenceDetail findInferenceDetail(String uuid); List fetchNextMoveIds( - Long lastId, Long batchSize, Integer compareYyyy, Integer targetYyyy, Integer stage); + Long lastId, + Long batchSize, + Integer compareYyyy, + Integer targetYyyy, + Integer stage, + String userId); void assignOwnerMove(List sub, String userId); diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java index 1abb30f3..f42b83c2 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java @@ -493,20 +493,35 @@ public class LabelAllocateRepositoryImpl implements LabelAllocateRepositoryCusto @Override public List fetchNextMoveIds( - Long lastId, Long batchSize, Integer compareYyyy, Integer targetYyyy, Integer stage) { + Long lastId, + Long batchSize, + Integer compareYyyy, + Integer targetYyyy, + Integer stage, + String userId) { + + MapSheetAnalInferenceEntity analEntity = + queryFactory + .selectFrom(mapSheetAnalInferenceEntity) + .where( + mapSheetAnalInferenceEntity.compareYyyy.eq(compareYyyy), + mapSheetAnalInferenceEntity.targetYyyy.eq(targetYyyy), + mapSheetAnalInferenceEntity.stage.eq(stage)) + .fetchOne(); + + if (Objects.isNull(analEntity)) { + throw new EntityNotFoundException("MapSheetAnalInferenceEntity not found for analUid: "); + } return queryFactory - .select(mapSheetAnalDataInferenceGeomEntity.geoUid) - .from(mapSheetAnalDataInferenceGeomEntity) + .select(labelingAssignmentEntity.inferenceGeomUid) + .from(labelingAssignmentEntity) .where( - // mapSheetAnalDataGeomEntity.pnu.isNotNull(), //TODO: Mockup 진행 이후 확인하기 - lastId == null ? null : mapSheetAnalDataInferenceGeomEntity.geoUid.gt(lastId), - mapSheetAnalDataInferenceGeomEntity.compareYyyy.eq(compareYyyy), - mapSheetAnalDataInferenceGeomEntity.targetYyyy.eq(targetYyyy), - mapSheetAnalDataInferenceGeomEntity.stage.eq(stage), - mapSheetAnalDataInferenceGeomEntity.labelState.in( - LabelState.ASSIGNED.getId(), LabelState.SKIP.getId())) - .orderBy(mapSheetAnalDataInferenceGeomEntity.mapSheetNum.asc()) + labelingAssignmentEntity.workerUid.eq(userId), + labelingAssignmentEntity.workState.eq(LabelState.ASSIGNED.getId()), + labelingAssignmentEntity.analUid.eq(analEntity.getId()), + lastId == null ? null : labelingAssignmentEntity.inferenceGeomUid.gt(lastId)) + .orderBy(labelingAssignmentEntity.inferenceGeomUid.asc()) .limit(batchSize) .fetch(); }