라벨 이관 로직 수정

This commit is contained in:
2026-01-05 14:13:24 +09:00
parent 3bc801053a
commit 0978842400
6 changed files with 48 additions and 23 deletions

View File

@@ -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(

View File

@@ -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

View File

@@ -132,11 +132,11 @@ public class LabelAllocateService {
}
public ApiResponseDto.ResponseObj allocateMove(
String autoType,
Integer stage,
List<TargetUser> 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<Long> 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();

View File

@@ -79,9 +79,14 @@ public class LabelAllocateCoreService {
}
public List<Long> 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<Long> sub, String userId) {

View File

@@ -48,7 +48,12 @@ public interface LabelAllocateRepositoryCustom {
InferenceDetail findInferenceDetail(String uuid);
List<Long> 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<Long> sub, String userId);

View File

@@ -493,20 +493,35 @@ public class LabelAllocateRepositoryImpl implements LabelAllocateRepositoryCusto
@Override
public List<Long> 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();
}