From e1febf5863f1b62f44dca8e9ef83829083b23888 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Mon, 9 Mar 2026 10:10:08 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B5=AD=EC=9C=A0=EC=9D=B8=EC=97=B0=EB=8F=99?= =?UTF-8?q?=20:=20=EB=9D=BC=EB=B2=A8=EB=A7=81=20=EC=A7=84=ED=96=89?= =?UTF-8?q?=EC=A4=91=20=ED=9A=8C=EC=B0=A8=20uuid=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cd/kamcoback/gukyuin/dto/GukYuinDto.java | 12 ++++--- .../gukyuin/service/GukYuinApiService.java | 5 ++- .../MapSheetLearnRepositoryImpl.java | 31 ++++++++++--------- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/gukyuin/dto/GukYuinDto.java b/src/main/java/com/kamco/cd/kamcoback/gukyuin/dto/GukYuinDto.java index da25f653..4dd13858 100644 --- a/src/main/java/com/kamco/cd/kamcoback/gukyuin/dto/GukYuinDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/gukyuin/dto/GukYuinDto.java @@ -14,9 +14,9 @@ public class GukYuinDto { public enum GukYuinLinkFailCode implements EnumType { OK("연동 가능"), NOT_FOUND("대상 회차가 없습니다."), - SCOPE_PART_NOT_ALLOWED("부분 도엽은 연동 불가능 합니다."), - HAS_RUNNING_INFERENCE("라벨링 진행 중 회차가 있습니다."), - OTHER_GUKYUIN_IN_PROGRESS("국유in 연동 진행 중 회차가 있습니다."); + SCOPE_PART_NOT_ALLOWED("부분 도엽 추론 결과는 연동 할 수 없습니다."), + HAS_RUNNING_INFERENCE("라벨링 진행중인 회차가 있습니다. 진행중인 라벨링 작업을 종료하신 후 다시 연동해주세요."), + OTHER_GUKYUIN_IN_PROGRESS("국유in 연동이 진행중입니다. 선행 연동 작업이 종료된 후 진행할 수 있습니다."); private final String desc; @@ -36,8 +36,9 @@ public class GukYuinDto { public static class GukYuinLinkableRes { private boolean linkable; - // private GukYuinLinkFailCode code; + private GukYuinLinkFailCode code; private String message; + private UUID inferenceUuid; } // Repository가 반환할 Fact(조회 결과) @@ -45,7 +46,8 @@ public class GukYuinDto { boolean existsLearn, boolean isPartScope, boolean hasRunningInference, - boolean hasOtherUnfinishedGukYuin) {} + boolean hasOtherUnfinishedGukYuin, + UUID inferenceUuid) {} @Getter @Setter diff --git a/src/main/java/com/kamco/cd/kamcoback/gukyuin/service/GukYuinApiService.java b/src/main/java/com/kamco/cd/kamcoback/gukyuin/service/GukYuinApiService.java index c1fe8cbf..1c4577b4 100644 --- a/src/main/java/com/kamco/cd/kamcoback/gukyuin/service/GukYuinApiService.java +++ b/src/main/java/com/kamco/cd/kamcoback/gukyuin/service/GukYuinApiService.java @@ -237,9 +237,12 @@ public class GukYuinApiService { GukYuinLinkFailCode code = decideCode(f); GukYuinLinkableRes res = new GukYuinLinkableRes(); - // res.setCode(code); + res.setCode(code); res.setLinkable(code == GukYuinLinkFailCode.OK); res.setMessage(code.getDesc()); + if (code == GukYuinLinkFailCode.HAS_RUNNING_INFERENCE) { + res.setInferenceUuid(f.inferenceUuid()); + } return res; } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java index 49c210e7..64dd5c72 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java @@ -519,7 +519,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto .fetchOne(); if (learn == null) { - return new GukYuinLinkFacts(false, false, false, false); + return new GukYuinLinkFacts(false, false, false, false, null); } // 부분 도엽 실행인지 확인 @@ -529,19 +529,21 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto QMapSheetLearnEntity learn2 = new QMapSheetLearnEntity("learn2"); QMapSheetLearnEntity learnQ = QMapSheetLearnEntity.mapSheetLearnEntity; - // 실행중인 추론 있는지 확인 - boolean hasRunningInference = + // 현재 국유인 연동하려는 추론의 비교년도,기준년도와 같은 회차 중, 할당되거나 진행중인 학습데이터 uuid 조회 + // ex. 2022-2023년도 9회차 학습데이터 제작 진행중 -> 10회차 연동하려고 할 시, 먼저 9회차를 종료해야 함 + UUID runningInferenceUuid = queryFactory - .selectOne() - .from(inf) - .join(learn2) - .on(inf.learnId.eq(learn2.id)) - .where( - learn2.compareYyyy.eq(learn.getCompareYyyy()), - learn2.targetYyyy.eq(learn.getTargetYyyy()), - inf.analState.in("ASSIGNED", "ING")) - .fetchFirst() - != null; + .select(inf.uuid) + .from(inf) + .join(learn2) + .on(inf.learnId.eq(learn2.id)) + .where( + learn2.compareYyyy.eq(learn.getCompareYyyy()), + learn2.targetYyyy.eq(learn.getTargetYyyy()), + inf.analState.in("ASSIGNED", "ING")) + .fetchFirst(); + + boolean hasRunningInference = runningInferenceUuid != null; // 국유인 작업 진행중 있는지 확인 boolean hasOtherUnfinishedGukYuin = @@ -556,6 +558,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto .fetchFirst() != null; - return new GukYuinLinkFacts(true, isPartScope, hasRunningInference, hasOtherUnfinishedGukYuin); + return new GukYuinLinkFacts( + true, isPartScope, hasRunningInference, hasOtherUnfinishedGukYuin, runningInferenceUuid); } }