From 2b892f2c2fcf208dc7b0e847f2f4b0ee870be892 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Fri, 9 Jan 2026 11:47:55 +0900 Subject: [PATCH] =?UTF-8?q?[KC-148]=20=ED=95=99=EC=8A=B5=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EB=AA=A9=EB=A1=9D=20API=20=ED=95=AD=EB=AA=A9=20?= =?UTF-8?q?=EC=88=98=EC=A0=95,=20=ED=98=84=ED=99=A9=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=20=EC=82=AC=EC=9A=A9=EC=9E=90=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20API=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../label/LabelWorkerApiController.java | 8 ++-- .../cd/kamcoback/label/dto/LabelWorkDto.java | 40 ++++++++++--------- .../label/LabelWorkRepositoryImpl.java | 30 ++++++++------ 3 files changed, 44 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/label/LabelWorkerApiController.java b/src/main/java/com/kamco/cd/kamcoback/label/LabelWorkerApiController.java index a12a868c..862c9a0f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/label/LabelWorkerApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/label/LabelWorkerApiController.java @@ -136,11 +136,13 @@ public class LabelWorkerApiController { @Parameter(description = "페이지 번호 (0부터 시작)", example = "0") @RequestParam(defaultValue = "0") int page, @Parameter(description = "페이지 크기", example = "20") @RequestParam(defaultValue = "20") - int size) { + int size, + @Parameter(description = "회차 UUID key", example = "f97dc186-e6d3-4645-9737-3173dde8dc64") + String uuid) { // 대상추출(최근) - UUID lstUuid = labelWorkService.findLastLabelWorkState(); - String uuid = lstUuid.toString(); + // UUID lstUuid = labelWorkService.findLastLabelWorkState(); + // String uuid = lstUuid.toString(); LabelWorkDto.WorkerStateSearchReq searchReq = new WorkerStateSearchReq(); searchReq.setUserRole(userRole); diff --git a/src/main/java/com/kamco/cd/kamcoback/label/dto/LabelWorkDto.java b/src/main/java/com/kamco/cd/kamcoback/label/dto/LabelWorkDto.java index a7913c2b..97016833 100644 --- a/src/main/java/com/kamco/cd/kamcoback/label/dto/LabelWorkDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/label/dto/LabelWorkDto.java @@ -38,17 +38,16 @@ public class LabelWorkDto { private Integer compareYyyy; private Integer targetYyyy; private Integer stage; - @JsonFormatDttm private ZonedDateTime createdDttm; + @JsonFormatDttm private ZonedDateTime gukyuinApplyDttm; private Long detectionTotCnt; private Long labelTotCnt; private Long labelAssignCnt; - private Long labelStopTotCnt; - private Long labelIngTotCnt; + private Long labelSkipTotCnt; private Long labelCompleteTotCnt; @JsonFormatDttm private ZonedDateTime labelStartDttm; - // tb_map_sheet_anal_inference.anal_state 컬럼 값 - private String analState; + // tb_map_sheet_anal_inference.anal_state 컬럼 값 -> 미사용 + // private String analState; // tb_labeling_assignment 테이블에서 stagnation_yn = 'N'인 정상 진행 건수 private Long normalProgressCnt; @@ -56,6 +55,9 @@ public class LabelWorkDto { // tb_labeling_assignment 테이블에서 총 배정 건수 private Long totalAssignmentCnt; + private String labelingClosedYn; + private String inspectionClosedYn; + @JsonProperty("detectYear") public String getDetectYear() { if (compareYyyy == null || targetYyyy == null) { @@ -66,22 +68,24 @@ public class LabelWorkDto { /** 라벨링 상태 반환 (tb_map_sheet_anal_inference.anal_state 기준) */ public String getLabelState() { - // anal_state 값이 있으면 해당 값 사용 - if (this.analState != null && !this.analState.isEmpty()) { - return this.analState; - } + // anal_state 값이 있으면 해당 값 사용 -> 우선은 미사용 + // if (this.analState != null && !this.analState.isEmpty()) { + // return this.analState; + // } // anal_state 값이 없으면 기존 로직으로 폴백 - String mngState = "PENDING"; + String mngState = LabelMngState.PENDING.getId(); if (this.labelTotCnt == 0) { - mngState = "PENDING"; - } else if (this.labelTotCnt > 0 && this.labelAssignCnt > 0 && this.labelIngTotCnt == 0) { - mngState = "ASSIGNED"; - } else if (this.labelIngTotCnt > 0) { - mngState = "LABEL_ING"; + mngState = LabelMngState.PENDING.getId(); + } else if (this.labelTotCnt > 0 && this.labelAssignCnt > 0 && this.labelCompleteTotCnt == 0) { + mngState = LabelMngState.ASSIGNED.getId(); + } else if (this.labelCompleteTotCnt > 0) { + mngState = LabelMngState.LABEL_ING.getId(); } else if (this.labelTotCnt <= labelCompleteTotCnt) { - mngState = "LABEL_COMPLETE"; + mngState = LabelMngState.LABEL_COMPLETE.getId(); + } else if (this.labelingClosedYn.equals("Y") && this.inspectionClosedYn.equals("Y")) { + mngState = LabelMngState.FINISH.getId(); } return mngState; @@ -109,10 +113,10 @@ public class LabelWorkDto { if (this.totalAssignmentCnt == null || this.totalAssignmentCnt == 0) { return 0.0; } - if (this.normalProgressCnt == null) { + if (this.labelCompleteTotCnt == null) { return 0.0; } - return (double) this.normalProgressCnt / this.totalAssignmentCnt * 100.0; + return (double) this.labelCompleteTotCnt / this.totalAssignmentCnt * 100.0; } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelWorkRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelWorkRepositoryImpl.java index 4530a9d7..50bcd45b 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelWorkRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelWorkRepositoryImpl.java @@ -169,38 +169,42 @@ public class LabelWorkRepositoryImpl implements LabelWorkRepositoryCustom { mapSheetAnalInferenceEntity.compareYyyy, mapSheetAnalInferenceEntity.targetYyyy, mapSheetAnalInferenceEntity.stage, - // createdDttm: tb_map_sheet_anal_inference.created_dttm 사용 - mapSheetAnalInferenceEntity.createdDttm, + // 국유인 반영 컬럼 gukyuinApplyDttm + mapSheetAnalInferenceEntity.gukyuinApplyDttm, mapSheetAnalDataInferenceGeomEntity.dataUid.count(), // labelTotCnt: pnu 있고 pass_yn = false인 건수 labelTotCntExpr, new CaseBuilder() - .when(mapSheetAnalDataInferenceGeomEntity.labelState.eq("ASSIGNED")) + .when( + mapSheetAnalDataInferenceGeomEntity.labelState.eq( + LabelState.ASSIGNED.getId())) .then(1L) .otherwise(0L) .sum(), new CaseBuilder() - .when(mapSheetAnalDataInferenceGeomEntity.labelState.eq("STOP")) + .when( + mapSheetAnalDataInferenceGeomEntity.labelState.eq( + LabelState.SKIP.getId())) // "STOP"? .then(1L) .otherwise(0L) .sum(), new CaseBuilder() - .when(mapSheetAnalDataInferenceGeomEntity.labelState.eq("LABEL_ING")) - .then(1L) - .otherwise(0L) - .sum(), - new CaseBuilder() - .when(mapSheetAnalDataInferenceGeomEntity.labelState.eq("LABEL_COMPLETE")) + .when( + mapSheetAnalDataInferenceGeomEntity.labelState.eq( + LabelState.DONE.getId())) // "LABEL_COMPLETE"? .then(1L) .otherwise(0L) .sum(), mapSheetAnalDataInferenceGeomEntity.labelStateDttm.min(), - // analState: tb_map_sheet_anal_inference.anal_state - mapSheetAnalInferenceEntity.analState, + // analState: tb_map_sheet_anal_inference.anal_state -> 우선은 미사용, java 단에서 로직화 해서 + // 내려줌 + // mapSheetAnalInferenceEntity.analState, // normalProgressCnt: stagnation_yn = 'N'인 건수 (서브쿼리) normalProgressCntSubQuery, // totalAssignmentCnt: 총 배정 건수 (서브쿼리) - totalAssignmentCntSubQuery)) + totalAssignmentCntSubQuery, + mapSheetAnalInferenceEntity.labelingClosedYn, + mapSheetAnalInferenceEntity.inspectionClosedYn)) .from(mapSheetAnalInferenceEntity) .innerJoin(mapSheetAnalDataInferenceEntity) .on(whereSubDataBuilder)