diff --git a/backend/services/case-management/src/main/java/io/metersphere/functional/provider/AssociateCaseProvider.java b/backend/services/case-management/src/main/java/io/metersphere/functional/provider/AssociateCaseProvider.java index 9c8df79978..73a024f773 100644 --- a/backend/services/case-management/src/main/java/io/metersphere/functional/provider/AssociateCaseProvider.java +++ b/backend/services/case-management/src/main/java/io/metersphere/functional/provider/AssociateCaseProvider.java @@ -33,7 +33,7 @@ public class AssociateCaseProvider implements BaseAssociateCaseProvider { return new ArrayList<>(); } List ids = functionalCases.stream().map(TestCaseProviderDTO::getId).toList(); - Map> caseCustomFiledMap = functionalCaseService.getCaseCustomFiledMap(ids); + Map> caseCustomFiledMap = functionalCaseService.getCaseCustomFiledMap(ids,testCasePageProviderRequest.getProjectId()); functionalCases.forEach(functionalCase -> { List customFields = caseCustomFiledMap.get(functionalCase.getId()); Optional priorityField = customFields.stream().filter(field -> StringUtils.equals(Translator.get("custom_field.functional_priority"), field.getFieldName())).findFirst(); diff --git a/backend/services/case-management/src/main/java/io/metersphere/functional/service/FunctionalCaseMinderService.java b/backend/services/case-management/src/main/java/io/metersphere/functional/service/FunctionalCaseMinderService.java index 0be1d46a82..3e729b8402 100644 --- a/backend/services/case-management/src/main/java/io/metersphere/functional/service/FunctionalCaseMinderService.java +++ b/backend/services/case-management/src/main/java/io/metersphere/functional/service/FunctionalCaseMinderService.java @@ -166,7 +166,7 @@ public class FunctionalCaseMinderService { baseTreeNodes.remove(0); } //自定义字段 - Map> caseCustomFiledMap = functionalCaseService.getCaseCustomFiledMap(caseIds); + Map> caseCustomFiledMap = functionalCaseService.getCaseCustomFiledMap(caseIds,request.getProjectId()); //构建返回数据,主层级应与模块树层级相同 MinderSearchDTO minderSearchDTO = new MinderSearchDTO(); minderSearchDTO.setBaseTreeNodes(baseTreeNodes); diff --git a/backend/services/case-management/src/main/java/io/metersphere/functional/service/FunctionalCaseService.java b/backend/services/case-management/src/main/java/io/metersphere/functional/service/FunctionalCaseService.java index dc035996ad..12871baf2e 100644 --- a/backend/services/case-management/src/main/java/io/metersphere/functional/service/FunctionalCaseService.java +++ b/backend/services/case-management/src/main/java/io/metersphere/functional/service/FunctionalCaseService.java @@ -460,20 +460,11 @@ public class FunctionalCaseService { TemplateDTO templateDTO = projectTemplateService.getTemplateDTOById(functionalCase.getTemplateId(), functionalCase.getProjectId(), TemplateScene.FUNCTIONAL.name()); if (CollectionUtils.isNotEmpty(templateDTO.getCustomFields())) { List customFields = templateDTO.getCustomFields(); - List memberOption = projectService.getMemberOption(functionalCase.getProjectId(), null); - List memberCustomOption = memberOption.stream().map(option -> { - CustomFieldOption customFieldOption = new CustomFieldOption(); - customFieldOption.setFieldId(option.getId()); - customFieldOption.setValue(option.getId()); - customFieldOption.setInternal(false); - customFieldOption.setText(option.getName()); - return customFieldOption; - }).toList(); + List memberCustomOption = getMemberOptions(functionalCase.getProjectId()); customFields.forEach(item -> { if (StringUtils.equalsAnyIgnoreCase(item.getType(), CustomFieldType.MEMBER.name(), CustomFieldType.MULTIPLE_MEMBER.name())) { item.setOptions(memberCustomOption); } - ; FunctionalCaseCustomField caseCustomField = functionalCaseCustomFieldService.getCustomField(item.getFieldId(), functionalCase.getId()); Optional.ofNullable(caseCustomField).ifPresentOrElse(customField -> { item.setDefaultValue(customField.getValue()); @@ -483,10 +474,24 @@ public class FunctionalCaseService { }, () -> { }); }); + functionalCaseDetailDTO.setCustomFields(customFields); } } + private List getMemberOptions(String projectId) { + List memberOption = projectService.getMemberOption(projectId, null); + List memberCustomOption = memberOption.stream().map(option -> { + CustomFieldOption customFieldOption = new CustomFieldOption(); + customFieldOption.setFieldId(option.getId()); + customFieldOption.setValue(option.getId()); + customFieldOption.setInternal(false); + customFieldOption.setText(option.getName()); + return customFieldOption; + }).toList(); + return memberCustomOption; + } + /** * 更新用例 基本信息 @@ -669,12 +674,12 @@ public class FunctionalCaseService { return new ArrayList<>(); } //处理自定义字段值 - return handleCustomFields(functionalCaseLists); + return handleCustomFields(functionalCaseLists, request.getProjectId()); } - private List handleCustomFields(List functionalCaseLists) { + private List handleCustomFields(List functionalCaseLists,String projectId) { List ids = functionalCaseLists.stream().map(FunctionalCasePageDTO::getId).collect(Collectors.toList()); - Map> collect = getCaseCustomFiledMap(ids); + Map> collect = getCaseCustomFiledMap(ids,projectId); Set userIds = extractUserIds(functionalCaseLists); Map userMap = userLoginService.getUserNameMap(new ArrayList<>(userIds)); functionalCaseLists.forEach(functionalCasePageDTO -> { @@ -693,9 +698,13 @@ public class FunctionalCaseService { .collect(Collectors.toSet()); } - public Map> getCaseCustomFiledMap(List ids) { + public Map> getCaseCustomFiledMap(List ids,String projectId) { + List memberCustomOption = getMemberOptions(projectId); List customFields = functionalCaseCustomFieldService.getCustomFieldsByCaseIds(ids); customFields.forEach(customField -> { + if (StringUtils.equalsAnyIgnoreCase(customField.getType(), CustomFieldType.MEMBER.name(), CustomFieldType.MULTIPLE_MEMBER.name())) { + customField.setOptions(memberCustomOption); + } if (customField.getInternal()) { customField.setFieldName(baseCustomFieldService.translateInternalField(customField.getFieldName())); }