fix(测试跟踪): 功能用例导出文本类型的自定义字段为空

--bug=1016034 --user=陈建星 【测试跟踪】功能用例中包含自定义字段,导出后自定义字段内容是空的 https://www.tapd.cn/55049933/s/1230916
This commit is contained in:
AnAngle 2022-08-23 14:24:58 +08:00 committed by jianxing
parent eb82a33e88
commit a933b92500
3 changed files with 13 additions and 2 deletions

View File

@ -49,6 +49,8 @@ public class TestCaseExcelData {
private String priority;
@ExcelIgnore
Map<String, Object> customData = new LinkedHashMap<>();
@ExcelIgnore
Set<String> textFieldSet = new HashSet<>(2);
@ExcelIgnore
List<String> mergeStepDesc;

View File

@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONObject;
import io.metersphere.base.domain.TestCase;
import io.metersphere.base.domain.TestCaseWithBLOBs;
import io.metersphere.base.domain.ext.CustomFieldResource;
import io.metersphere.commons.constants.CustomFieldType;
import io.metersphere.commons.constants.TestCaseConstants;
import io.metersphere.commons.exception.CustomFieldValidateException;
import io.metersphere.commons.exception.MSException;
@ -410,6 +411,9 @@ public class TestCaseNoModelDataListener extends AnalysisEventListener<Map<Integ
// 这里如果填的是选项值替换成选项ID保存
customData.put(fieldName, customFieldValidator.parse2Key(value.toString(), customField));
}
if (StringUtils.equalsAny(customField.getType(), CustomFieldType.TEXTAREA.getValue(), CustomFieldType.RICH_TEXT.getValue())) {
data.getTextFieldSet().add(fieldName);
}
} catch (CustomFieldValidateException e) {
stringBuilder.append(e.getMessage().concat(ERROR_MSG_SEPARATOR));
}
@ -554,6 +558,7 @@ public class TestCaseNoModelDataListener extends AnalysisEventListener<Map<Integ
*/
private void buildTestCaseCustomFieldMap(TestCaseExcelData data, TestCaseWithBLOBs testCase) {
Map<String, Object> customData = data.getCustomData();
Set<String> textFieldSet = data.getTextFieldSet();
List<CustomFieldResource> testCaseCustomFields = new ArrayList<>();
customData.forEach((k, v) -> {
if ((v instanceof List && CollectionUtils.isNotEmpty((List)v))
@ -562,7 +567,11 @@ public class TestCaseNoModelDataListener extends AnalysisEventListener<Map<Integ
if (customFieldDao != null) {
CustomFieldResource customFieldResource = new CustomFieldResource();
customFieldResource.setFieldId(customFieldDao.getId());
if (textFieldSet.contains(customFieldDao.getId())) {
customFieldResource.setTextValue(v.toString());
} else {
customFieldResource.setValue(JSON.toJSONString(v));
}
customFieldResource.setResourceId(testCase.getId());
testCaseCustomFields.add(customFieldResource);
}

View File

@ -67,7 +67,7 @@ export function parseCustomField(data, template, rules, oldFields) {
let customField = data.fields[i];
if (customField.id === item.id) {
try {
if (customField.textValue) {
if (item.type === 'textarea' || item.type === 'richText') {
setDefaultValue(item, customField.textValue);
} else {
setDefaultValue(item, customField.value);