라벨링작업 관리 목록조회 수정

This commit is contained in:
2026-01-05 15:01:51 +09:00
parent 7acfd32b49
commit 067862ff12
2 changed files with 36 additions and 41 deletions

View File

@@ -32,22 +32,22 @@ public class LabelAllocateService {
/**
* 도엽 기준 asc sorting 해서 할당 수만큼 배정하는 로직
*
* @param stage 회차
* @param targetUsers 라벨러 목록
* @param stage 회차
* @param targetUsers 라벨러 목록
* @param targetInspectors 검수자 목록
*/
@Transactional
public ApiResponseDto.ResponseObj allocateAsc(
Integer stage,
List<TargetUser> targetUsers,
List<String> targetInspectors,
Integer compareYyyy,
Integer targetYyyy) {
Integer stage,
List<TargetUser> targetUsers,
List<String> targetInspectors,
Integer compareYyyy,
Integer targetYyyy) {
Long lastId = null;
// geom 잔여건수 조회
Long chargeCnt =
labelAllocateCoreService.findLabelUnAssignedCnt(stage, compareYyyy, targetYyyy);
labelAllocateCoreService.findLabelUnAssignedCnt(stage, compareYyyy, targetYyyy);
if (chargeCnt <= 0) {
return new ApiResponseDto.ResponseObj(ApiResponseCode.DUPLICATE_DATA, "이미 배정완료된 회차 입니다.");
}
@@ -55,15 +55,15 @@ public class LabelAllocateService {
Long totalDemand = targetUsers.stream().mapToLong(TargetUser::getDemand).sum();
if (!Objects.equals(chargeCnt, totalDemand)) {
return new ApiResponseDto.ResponseObj(
ApiResponseCode.BAD_REQUEST, "총 잔여건수와 요청 값의 합계가 맞지 않습니다.");
ApiResponseCode.BAD_REQUEST, "총 잔여건수와 요청 값의 합계가 맞지 않습니다.");
}
List<AllocateInfoDto> allIds =
labelAllocateCoreService.fetchNextIds(lastId, chargeCnt, compareYyyy, targetYyyy, stage);
labelAllocateCoreService.fetchNextIds(lastId, chargeCnt, compareYyyy, targetYyyy, stage);
// MapSheetAnalInferenceEntity analUid 가져오기
Long analUid =
labelAllocateCoreService.findMapSheetAnalInferenceUid(compareYyyy, targetYyyy, stage);
labelAllocateCoreService.findMapSheetAnalInferenceUid(compareYyyy, targetYyyy, stage);
int index = 0;
for (TargetUser target : targetUsers) {
@@ -109,17 +109,14 @@ public class LabelAllocateService {
/**
* 작업자 통계 조회
*
* @param analUid 분석 ID
* @param analUid 분석 ID
* @param workerType 작업자 유형 (LABELER/INSPECTOR)
* @param search 검색어 (이름 또는 사번)
* @param sortType 정렬 조건
* @param search 검색어 (이름 또는 사번)
* @param sortType 정렬 조건
* @return 작업자 목록 및 통계
*/
public WorkerListResponse getWorkerStatistics(
Long analUid,
String workerType,
String search,
String sortType) {
Long analUid, String workerType, String search, String sortType) {
// 프로젝트 정보 조회 (analUid가 있을 때만)
var projectInfo = labelAllocateCoreService.findProjectInfo(analUid);
@@ -127,10 +124,7 @@ public class LabelAllocateService {
// 작업 진행 현황 조회
var progressInfo = labelAllocateCoreService.findWorkProgressInfo(analUid);
return WorkerListResponse.builder()
.projectInfo(projectInfo)
.progressInfo(progressInfo)
.build();
return WorkerListResponse.builder().projectInfo(projectInfo).progressInfo(progressInfo).build();
}
public InferenceDetail findInferenceDetail(String uuid) {
@@ -138,11 +132,11 @@ public class LabelAllocateService {
}
public ApiResponseDto.ResponseObj allocateMove(
Integer stage,
List<TargetUser> targetUsers,
Integer compareYyyy,
Integer targetYyyy,
String userId) {
Integer stage,
List<TargetUser> targetUsers,
Integer compareYyyy,
Integer targetYyyy,
String userId) {
Long lastId = null;
Long chargeCnt = targetUsers.stream().mapToLong(TargetUser::getDemand).sum();
@@ -152,8 +146,8 @@ public class LabelAllocateService {
}
List<Long> allIds =
labelAllocateCoreService.fetchNextMoveIds(
lastId, chargeCnt, compareYyyy, targetYyyy, stage, userId);
labelAllocateCoreService.fetchNextMoveIds(
lastId, chargeCnt, compareYyyy, targetYyyy, stage, userId);
int index = 0;
for (TargetUser target : targetUsers) {
int end = index + target.getDemand();
@@ -175,7 +169,7 @@ public class LabelAllocateService {
}
public Page<LabelingStatDto> findDaliyList(
LabelAllocateDto.searchReq searchReq, String uuid, String userId, String type) {
LabelAllocateDto.searchReq searchReq, String uuid, String userId, String type) {
if (type.equals("LABELER")) {
return labelAllocateCoreService.findLabelerDailyStat(searchReq, uuid, userId);
} else {

View File

@@ -314,18 +314,19 @@ public class LabelWorkRepositoryImpl extends QuerydslRepositorySupport
.fetchOne();
*/
Long total =
queryFactory
.select(mapSheetAnalInferenceEntity.uuid.countDistinct())
.from(mapSheetAnalInferenceEntity)
.innerJoin(mapSheetAnalDataInferenceEntity)
.on(whereSubDataBuilder)
.innerJoin(mapSheetAnalDataInferenceGeomEntity)
.on(whereSubBuilder)
.where(whereBuilder)
.fetchOne();
Long totalCnt =
(long)
queryFactory
.select(memberEntity.userRole, memberEntity.name, memberEntity.userId)
.from(labelingAssignmentEntity)
.innerJoin(memberEntity)
.on(whereSubBuilder)
.where(whereBuilder)
.groupBy(memberEntity.userRole, memberEntity.name, memberEntity.userId)
.fetch()
.size();
return new PageImpl<>(foundContent, pageable, total);
return new PageImpl<>(foundContent, pageable, totalCnt);
}
/**