diff --git a/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java b/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java index 96f3ac85..9ac58123 100644 --- a/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java +++ b/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java @@ -593,7 +593,7 @@ public class AihrPracticeSeedService { ReviewDetailResponse detail = reviewDetail(id); String extPartyId = reviewExtPartyId(id); createAssignment(new PracticeAssignmentRequest( - firstNonBlank(extPartyId, detail == null ? "mobile-user" : detail.trainee()), + firstNonBlank(extPartyId, ""), detail == null ? "待复盘员工" : detail.trainee(), request.nextScenarioId(), null, @@ -876,11 +876,14 @@ public class AihrPracticeSeedService { } public PracticeAssignmentResponse createAssignment(PracticeAssignmentRequest request) { + String extPartyId = request == null ? "" : firstNonBlank(request.extPartyId(), ""); + if (isBlank(extPartyId)) { + throw new ServiceException("缺少员工ID,无法派发专项训练"); + } ensureAssignmentTable(); LocalDateTime now = LocalDateTime.now(); String scenarioId = firstNonBlank(request == null ? null : request.scenarioId(), "fee-parking"); ScenarioSeed scenario = resolveScenario(scenarioId, null); - String extPartyId = firstNonBlank(request == null ? null : request.extPartyId(), "mobile-user"); String traineeName = firstNonBlank(request == null ? null : request.traineeName(), extPartyId); String source = firstNonBlank(request == null ? null : request.source(), "manual"); String reason = firstNonBlank(request == null ? null : request.reason(), "主管派发专项训练"); diff --git a/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrPracticeSeedServiceTest.java b/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrPracticeSeedServiceTest.java new file mode 100644 index 00000000..832c7731 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrPracticeSeedServiceTest.java @@ -0,0 +1,27 @@ +package org.dromara.aihr.service; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.dromara.aihr.domain.AihrPracticeDto.PracticeAssignmentRequest; +import org.dromara.common.core.exception.ServiceException; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class AihrPracticeSeedServiceTest { + + @Test + public void createAssignmentRequiresExtPartyId() { + AihrPracticeSeedService service = new AihrPracticeSeedService(new ObjectMapper(), null, null, null); + + ServiceException error = assertThrows(ServiceException.class, () -> service.createAssignment(new PracticeAssignmentRequest( + "", + "测试员工", + "fee-parking", + null, + "manual", + "主管派发专项训练" + ))); + assertEquals("缺少员工ID,无法派发专项训练", error.getMessage()); + } +}