refactor(功能用例): 功能用例列表自定义字段返回值

This commit is contained in:
WangXu10 2024-01-16 17:45:41 +08:00 committed by Craftsman
parent 3e458c55e8
commit f904a5e413
3 changed files with 25 additions and 6 deletions

View File

@ -1,10 +1,12 @@
package io.metersphere.functional.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;
/**
* @author wx
@ -22,12 +24,18 @@ public class FunctionalCaseCustomFieldDTO implements Serializable {
private String fieldId;
@Schema(description = "字段值")
private String value;
private String defaultValue;
@Schema(description = "字段名称")
private String name;
private String fieldName;
@Schema(description = "是否内置字段")
private Boolean internal;
@Schema(title = "选项值")
private List<CustomFieldOption> options;
@Schema(title = "字段类型")
private String type;
}

View File

@ -23,9 +23,10 @@
SELECT
fccf.case_id caseId,
fccf.field_id fieldId,
fccf.`value` value,
cf.NAME name,
cf.internal internal
fccf.`value` defaultValue,
cf.NAME fieldName,
cf.internal internal,
cf.type type
FROM
functional_case_custom_field fccf
LEFT JOIN custom_field cf ON fccf.field_id = cf.id

View File

@ -22,9 +22,11 @@ import io.metersphere.sdk.constants.TemplateScene;
import io.metersphere.sdk.exception.MSException;
import io.metersphere.sdk.util.BeanUtils;
import io.metersphere.sdk.util.Translator;
import io.metersphere.system.domain.CustomFieldOption;
import io.metersphere.system.dto.sdk.TemplateCustomFieldDTO;
import io.metersphere.system.dto.sdk.TemplateDTO;
import io.metersphere.system.dto.sdk.request.PosRequest;
import io.metersphere.system.service.BaseCustomFieldOptionService;
import io.metersphere.system.service.BaseCustomFieldService;
import io.metersphere.system.uid.IDGenerator;
import io.metersphere.system.uid.NumGenerator;
@ -111,6 +113,8 @@ public class FunctionalCaseService {
private FunctionalCaseRelationshipEdgeMapper functionalCaseRelationshipEdgeMapper;
@Resource
private CaseReviewFunctionalCaseMapper caseReviewFunctionalCaseMapper;
@Resource
private BaseCustomFieldOptionService baseCustomFieldOptionService;
public FunctionalCase addFunctionalCase(FunctionalCaseAddRequest request, List<MultipartFile> files, String userId) {
@ -514,9 +518,15 @@ public class FunctionalCaseService {
List<FunctionalCaseCustomFieldDTO> customFields = functionalCaseCustomFieldService.getCustomFieldsByCaseIds(ids);
customFields.forEach(customField -> {
if (customField.getInternal()) {
customField.setName(baseCustomFieldService.translateInternalField(customField.getName()));
customField.setFieldName(baseCustomFieldService.translateInternalField(customField.getFieldName()));
}
});
List<String> fieldIds = customFields.stream().map(FunctionalCaseCustomFieldDTO::getFieldId).toList();
List<CustomFieldOption> fieldOptions = baseCustomFieldOptionService.getByFieldIds(fieldIds);
Map<String, List<CustomFieldOption>> customOptions = fieldOptions.stream().collect(Collectors.groupingBy(CustomFieldOption::getFieldId));
customFields.forEach(customField -> {
customField.setOptions(customOptions.get(customField.getFieldId()));
});
Map<String, List<FunctionalCaseCustomFieldDTO>> collect = customFields.stream().collect(Collectors.groupingBy(FunctionalCaseCustomFieldDTO::getCaseId));
functionalCaseLists.forEach(functionalCasePageDTO -> {
functionalCasePageDTO.setCustomFields(collect.get(functionalCasePageDTO.getId()));