fix(项目设置): 模板设置的多选框默认值选项被删除后,创建项目报错
This commit is contained in:
parent
858f9bd16d
commit
e94af49d6f
|
@ -23,7 +23,7 @@ public abstract class AbstractCustomFieldResolver {
|
||||||
abstract public void validate(CustomFieldDao customField, Object value);
|
abstract public void validate(CustomFieldDao customField, Object value);
|
||||||
|
|
||||||
protected void throwValidateException(String name) {
|
protected void throwValidateException(String name) {
|
||||||
throw new MSException(FIELD_VALIDATE_ERROR, Translator.get(FIELD_VALIDATE_ERROR.getMessage(), name));
|
throw new MSException(FIELD_VALIDATE_ERROR, Translator.getWithArgs(FIELD_VALIDATE_ERROR.getMessage(), name));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void validateRequired(CustomFieldDao customField, Object value) {
|
protected void validateRequired(CustomFieldDao customField, Object value) {
|
||||||
|
|
|
@ -12,6 +12,7 @@ import io.metersphere.system.resolver.field.CustomFieldResolverFactory;
|
||||||
import io.metersphere.system.uid.IDGenerator;
|
import io.metersphere.system.uid.IDGenerator;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
import org.apache.commons.lang3.BooleanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
@ -33,6 +34,11 @@ public class BaseTemplateCustomFieldService {
|
||||||
@Resource
|
@Resource
|
||||||
private BaseCustomFieldService baseCustomFieldService;
|
private BaseCustomFieldService baseCustomFieldService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否校验默认值
|
||||||
|
*/
|
||||||
|
public static final ThreadLocal<Boolean> validateDefaultValue = new ThreadLocal<>();
|
||||||
|
|
||||||
public void deleteByTemplateId(String templateId) {
|
public void deleteByTemplateId(String templateId) {
|
||||||
TemplateCustomFieldExample example = new TemplateCustomFieldExample();
|
TemplateCustomFieldExample example = new TemplateCustomFieldExample();
|
||||||
example.createCriteria()
|
example.createCriteria()
|
||||||
|
@ -102,7 +108,10 @@ public class BaseTemplateCustomFieldService {
|
||||||
AbstractCustomFieldResolver customFieldResolver = CustomFieldResolverFactory.getResolver(customField.getType());
|
AbstractCustomFieldResolver customFieldResolver = CustomFieldResolverFactory.getResolver(customField.getType());
|
||||||
CustomFieldDao customFieldDao = BeanUtils.copyBean(new CustomFieldDao(), customField);
|
CustomFieldDao customFieldDao = BeanUtils.copyBean(new CustomFieldDao(), customField);
|
||||||
customFieldDao.setRequired(false);
|
customFieldDao.setRequired(false);
|
||||||
customFieldResolver.validate(customFieldDao, field.getDefaultValue());
|
if (BooleanUtils.isNotFalse(validateDefaultValue.get())) {
|
||||||
|
// 创建项目时不校验默认值
|
||||||
|
customFieldResolver.validate(customFieldDao, field.getDefaultValue());
|
||||||
|
}
|
||||||
return customFieldResolver.parse2String(field.getDefaultValue());
|
return customFieldResolver.parse2String(field.getDefaultValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -110,6 +110,9 @@ public class CreateTemplateResourceService implements CreateProjectResourceServi
|
||||||
Map<String, CustomField> customFieldMap = baseCustomFieldService.getByScopeIdAndScene(organizationId, scene.name()).stream()
|
Map<String, CustomField> customFieldMap = baseCustomFieldService.getByScopeIdAndScene(organizationId, scene.name()).stream()
|
||||||
.collect(Collectors.toMap(CustomField::getId, Function.identity()));
|
.collect(Collectors.toMap(CustomField::getId, Function.identity()));
|
||||||
|
|
||||||
|
// 忽略默认值校验,可能有多选框的选项被删除,造成不合法数据
|
||||||
|
BaseTemplateCustomFieldService.validateDefaultValue.set(false);
|
||||||
|
|
||||||
orgTemplates.forEach((template) -> {
|
orgTemplates.forEach((template) -> {
|
||||||
List<TemplateCustomField> templateCustomFields = templateCustomFieldMap.get(template.getId());
|
List<TemplateCustomField> templateCustomFields = templateCustomFieldMap.get(template.getId());
|
||||||
templateCustomFields = templateCustomFields == null ? List.of() : templateCustomFields;
|
templateCustomFields = templateCustomFields == null ? List.of() : templateCustomFields;
|
||||||
|
@ -124,6 +127,7 @@ public class CreateTemplateResourceService implements CreateProjectResourceServi
|
||||||
templateCustomFieldRequest.setDefaultValue(customFieldResolver.parse2Value(templateCustomField.getDefaultValue()));
|
templateCustomFieldRequest.setDefaultValue(customFieldResolver.parse2Value(templateCustomField.getDefaultValue()));
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
BaseTemplateCustomFieldService.validateDefaultValue.remove();
|
||||||
LogUtils.error(e);
|
LogUtils.error(e);
|
||||||
templateCustomFieldRequest.setDefaultValue(null);
|
templateCustomFieldRequest.setDefaultValue(null);
|
||||||
}
|
}
|
||||||
|
@ -132,6 +136,7 @@ public class CreateTemplateResourceService implements CreateProjectResourceServi
|
||||||
.toList();
|
.toList();
|
||||||
addRefProjectTemplate(projectId, template, templateCustomFieldRequests, null);
|
addRefProjectTemplate(projectId, template, templateCustomFieldRequests, null);
|
||||||
});
|
});
|
||||||
|
BaseTemplateCustomFieldService.validateDefaultValue.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue