refactor(缺陷管理): 增加关联用例的自定字段

--bug=1039553 --user=郭雨琦 https://www.tapd.cn/55049933/bugtrace/bugs/view/1155049933001039553
This commit is contained in:
guoyuqi 2024-04-17 11:25:36 +08:00 committed by 刘瑞斌
parent e73d14e680
commit 5365e7818c
3 changed files with 50 additions and 6 deletions

View File

@ -0,0 +1,37 @@
package io.metersphere.dto;
import io.metersphere.system.domain.CustomFieldOption;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
@Data
public class BaseCaseCustomFieldDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "用例ID")
private String caseId;
@Schema(description = "字段ID")
private String fieldId;
@Schema(description = "字段值")
private String defaultValue;
@Schema(description = "字段名称")
private String fieldName;
@Schema(description = "是否内置字段")
private Boolean internal;
@Schema(title = "选项值")
private List<CustomFieldOption> options;
@Schema(title = "字段类型")
private String type;
}

View File

@ -46,4 +46,7 @@ public class TestCaseProviderDTO {
@Schema(description = "版本名称")
private String versionName;
@Schema(description = "自定义字段集合")
private List<BaseCaseCustomFieldDTO> customFields;
}

View File

@ -1,5 +1,6 @@
package io.metersphere.functional.provider;
import io.metersphere.dto.BaseCaseCustomFieldDTO;
import io.metersphere.dto.TestCaseProviderDTO;
import io.metersphere.functional.dto.FunctionalCaseCustomFieldDTO;
import io.metersphere.functional.mapper.ExtFunctionalCaseMapper;
@ -7,16 +8,14 @@ import io.metersphere.functional.service.FunctionalCaseService;
import io.metersphere.provider.BaseAssociateCaseProvider;
import io.metersphere.request.AssociateOtherCaseRequest;
import io.metersphere.request.TestCasePageProviderRequest;
import io.metersphere.sdk.util.Translator;
import io.metersphere.sdk.util.BeanUtils;
import jakarta.annotation.Resource;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Service
public class AssociateCaseProvider implements BaseAssociateCaseProvider {
@ -33,11 +32,16 @@ public class AssociateCaseProvider implements BaseAssociateCaseProvider {
return new ArrayList<>();
}
List<String> ids = functionalCases.stream().map(TestCaseProviderDTO::getId).toList();
Map<String, List<FunctionalCaseCustomFieldDTO>> caseCustomFiledMap = functionalCaseService.getCaseCustomFiledMap(ids,testCasePageProviderRequest.getProjectId());
Map<String, List<FunctionalCaseCustomFieldDTO>> caseCustomFiledMap = functionalCaseService.getCaseCustomFiledMap(ids, testCasePageProviderRequest.getProjectId());
functionalCases.forEach(functionalCase -> {
List<FunctionalCaseCustomFieldDTO> customFields = caseCustomFiledMap.get(functionalCase.getId());
Optional<FunctionalCaseCustomFieldDTO> priorityField = customFields.stream().filter(field -> StringUtils.equals(Translator.get("custom_field.functional_priority"), field.getFieldName())).findFirst();
priorityField.ifPresent(functionalCaseCustomFieldDTO -> functionalCase.setPriority(functionalCaseCustomFieldDTO.getDefaultValue()));
List<BaseCaseCustomFieldDTO> baseCaseCustomFieldDTOS = new ArrayList<>();
for (FunctionalCaseCustomFieldDTO customField : customFields) {
BaseCaseCustomFieldDTO baseCaseCustomFieldDTO = new BaseCaseCustomFieldDTO();
BeanUtils.copyBean(baseCaseCustomFieldDTO, customField);
baseCaseCustomFieldDTOS.add(baseCaseCustomFieldDTO);
}
functionalCase.setCustomFields(baseCaseCustomFieldDTOS);
});
return functionalCases;
}