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

View File

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