fix(测试跟踪): 脑图创建用例自定义字段默认值未设置

--bug=1029671 --user=宋昌昌 【测试跟踪】github#26469,用例的自定义字段的默认值在脑图模式下未生效 https://www.tapd.cn/55049933/s/1413958
This commit is contained in:
song-cc-rock 2023-09-08 13:40:15 +08:00 committed by fit2-zhao
parent 28d5780ee6
commit e486c8e7cf
2 changed files with 45 additions and 11 deletions

View File

@ -21,7 +21,15 @@
order by `order` asc
</select>
<select id="getCustomFields" resultType="io.metersphere.base.domain.CustomFieldTemplate">
select id, field_id fieldId, template_id templateId, scene, required, `order`, default_value defaultValue, custom_data customData, `key`
select id,
field_id fieldId,
template_id templateId,
scene,
required,
`order`,
default_value defaultValue,
custom_data customData,
`key`
from custom_field_template
where custom_field_template.template_id = #{templateId}
order by `order` asc
@ -29,7 +37,7 @@
<select id="getCustomFieldByTemplateId" resultType="io.metersphere.dto.CustomFieldDao">
select
template_id, required, default_value, custom_data,
cf.id as id,
cf.id as id, cf.system as `system`,
cf.name as name, cf.type as type
from custom_field_template cft
inner join custom_field cf
@ -42,9 +50,11 @@
INSERT INTO
custom_field_template
VALUES
<foreach collection="customFieldTemplates" item="customFieldTemplate" separator="," >
(#{customFieldTemplate.id}, #{customFieldTemplate.fieldId}, #{customFieldTemplate.templateId}, #{customFieldTemplate.scene},
#{customFieldTemplate.required}, #{customFieldTemplate.order}, #{customFieldTemplate.defaultValue}, #{customFieldTemplate.customData},
<foreach collection="customFieldTemplates" item="customFieldTemplate" separator=",">
(#{customFieldTemplate.id}, #{customFieldTemplate.fieldId}, #{customFieldTemplate.templateId},
#{customFieldTemplate.scene},
#{customFieldTemplate.required}, #{customFieldTemplate.order}, #{customFieldTemplate.defaultValue},
#{customFieldTemplate.customData},
#{customFieldTemplate.key})
</foreach>
</insert>

View File

@ -46,6 +46,7 @@ import io.metersphere.request.testcase.*;
import io.metersphere.service.issue.platform.IssueFactory;
import io.metersphere.service.remote.api.RelevanceApiCaseService;
import io.metersphere.service.remote.performance.RelevanceLoadCaseService;
import io.metersphere.service.remote.project.TrackCustomFieldTemplateService;
import io.metersphere.service.remote.project.TrackTestCaseTemplateService;
import io.metersphere.service.remote.ui.RelevanceUiCaseService;
import io.metersphere.service.wapper.TrackProjectService;
@ -196,6 +197,8 @@ public class TestCaseService {
private PlatformPluginService platformPluginService;
@Resource
private OperatingLogService operatingLogService;
@Resource
private TrackCustomFieldTemplateService trackCustomFieldTemplateService;
private ThreadLocal<Integer> importCreateNum = new ThreadLocal<>();
@ -2470,16 +2473,11 @@ public class TestCaseService {
}
public void minderEdit(TestCaseMinderEditRequest request) {
deleteToGcBatch(request.getIds(), request.getProjectId());
testCaseNodeService.minderEdit(request);
List<TestCaseMinderEditRequest.TestCaseMinderEditItem> data = request.getData();
if (CollectionUtils.isNotEmpty(data)) {
String lastAddId = null;
for (TestCaseMinderEditRequest.TestCaseMinderEditItem item : data) {
if (StringUtils.isBlank(item.getNodeId()) || item.getNodeId().equals("root")) {
item.setNodeId(StringUtils.EMPTY);
@ -2499,6 +2497,8 @@ public class TestCaseService {
}
EditTestCaseRequest editTestCaseRequest = new EditTestCaseRequest();
BeanUtils.copyBean(editTestCaseRequest, item);
// 脑图创建用例, 设置非系统自定义字段默认值
setCustomDefault(editTestCaseRequest);
addTestCase(editTestCaseRequest);
if (StringUtils.equals(item.getMoveMode(), ResetOrderRequest.MoveMode.APPEND.name()) && StringUtils.isNotBlank(lastAddId)) {
item.setMoveMode(ResetOrderRequest.MoveMode.AFTER.name());
@ -2509,10 +2509,34 @@ public class TestCaseService {
}
}
}
minderExtraNodeService.batchEdit(request);
}
private void setCustomDefault(EditTestCaseRequest request) {
Project project = projectMapper.selectByPrimaryKey(request.getProjectId());
List<CustomFieldDao> customFields = trackCustomFieldTemplateService.getCustomFieldByTemplateId(project.getCaseTemplateId());
if (CollectionUtils.isNotEmpty(customFields)) {
// 过滤出模板中有默认值的非系统自定义字段(系统自定义字段前台保存时已经传默认值, 无需处理)
List<CustomFieldDao> hasDefaultFields = customFields.stream().filter(field -> StringUtils.isNotEmpty(field.getDefaultValue()) && !field.getSystem()).toList();
if (CollectionUtils.isNotEmpty(hasDefaultFields)) {
List<CustomFieldResourceDTO> addFields = new ArrayList<>();
hasDefaultFields.forEach(field -> {
CustomFieldResourceDTO addField = new CustomFieldResourceDTO();
addField.setResourceId(request.getId());
addField.setFieldId(field.getId());
if (StringUtils.equalsAny(field.getType(), CustomFieldType.RICH_TEXT.getValue(), CustomFieldType.TEXTAREA.getValue())) {
addField.setTextValue(field.getDefaultValue());
} else {
addField.setValue(field.getDefaultValue());
}
addFields.add(addField);
});
request.setAddFields(addFields);
request.setEditFields(Collections.emptyList());
}
}
}
private void changeOrder(TestCaseMinderEditRequest.TestCaseMinderEditItem item, String projectId) {
if (StringUtils.isNotBlank(item.getTargetId())) {
ResetOrderRequest resetOrderRequest = new ResetOrderRequest();