작업현황관리 리스트 API분리

This commit is contained in:
Moon
2026-01-05 14:22:38 +09:00
parent ba0e408c2b
commit 2db7177edd
7 changed files with 265 additions and 12 deletions

View File

@@ -3,9 +3,11 @@ package com.kamco.cd.kamcoback.label.dto;
import com.kamco.cd.kamcoback.common.utils.enums.Enums;
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelMngState;
import com.kamco.cd.kamcoback.label.dto.WorkerStatsDto.DailyHistory;
import io.swagger.v3.oas.annotations.media.Schema;
import java.time.ZonedDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@@ -93,4 +95,86 @@ public class LabelWorkDto {
return PageRequest.of(page, size);
}
}
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "작업자 통계 응답")
public static class WorkerState {
@Schema(description = "작업자 유형 (LABELER/INSPECTOR)")
private String userRole;
@Schema(description = "작업자 ID (사번)")
private String name;
@Schema(description = "작업자 이름")
private String userId;
@Schema(description = "배정개수")
private Long assignedCnt;
@Schema(description = "완료개수")
private Long doneCnt;
@Schema(description = "Skip개수")
private Long skipCnt;
@Schema(description = "Skip개수")
private Long day3AgoDoneCnt;
@Schema(description = "Skip개수")
private Long day2AgoDoneCnt;
@Schema(description = "Skip개수")
private Long day1AgoDoneCnt;
public Long getremindCnt() {
return this.assignedCnt - this.doneCnt;
}
public double getDoneRate() {
if (this.doneCnt == null || this.assignedCnt == 0) {
return 0.0;
}
return (double) this.doneCnt / this.assignedCnt * 100.0;
}
public String getUserRoleName() {
if (this.userRole.equals("LABELER")) {
return "라벨러";
}
return "검수자";
}
}
@Schema(name = "WorkerStateSearchReq", description = "라벨작업관리 검색 요청")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public static class WorkerStateSearchReq {
// 페이징 파라미터
@Schema(description = "페이지 번호 (0부터 시작) ", example = "0")
private int page = 0;
@Schema(description = "페이지 크기", example = "20")
private int size = 20;
@Schema(description = "유형", example = "LABELER")
private String userRole;
@Schema(description = "종료일", example = "20261201")
private String searchVal;
public Pageable toPageable() {
return PageRequest.of(page, size);
}
}
}