feat(项目设置): 模板支持设置系统字段默认值
This commit is contained in:
parent
51aa8771b4
commit
af79281e22
|
@ -39,6 +39,10 @@ public class TemplateCustomField implements Serializable {
|
|||
@Schema(description = "默认值")
|
||||
private String defaultValue;
|
||||
|
||||
@Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "{template_custom_field.system_field.not_blank}", groups = {Created.class})
|
||||
private Boolean systemField;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public enum Column {
|
||||
|
@ -48,7 +52,8 @@ public class TemplateCustomField implements Serializable {
|
|||
required("required", "required", "BIT", false),
|
||||
pos("pos", "pos", "INTEGER", false),
|
||||
apiFieldId("api_field_id", "apiFieldId", "VARCHAR", false),
|
||||
defaultValue("default_value", "defaultValue", "VARCHAR", false);
|
||||
defaultValue("default_value", "defaultValue", "VARCHAR", false),
|
||||
systemField("system_field", "systemField", "BIT", false);
|
||||
|
||||
private static final String BEGINNING_DELIMITER = "`";
|
||||
|
||||
|
|
|
@ -573,6 +573,66 @@ public class TemplateCustomFieldExample {
|
|||
addCriterion("default_value not between", value1, value2, "defaultValue");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andSystemFieldIsNull() {
|
||||
addCriterion("system_field is null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andSystemFieldIsNotNull() {
|
||||
addCriterion("system_field is not null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andSystemFieldEqualTo(Boolean value) {
|
||||
addCriterion("system_field =", value, "systemField");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andSystemFieldNotEqualTo(Boolean value) {
|
||||
addCriterion("system_field <>", value, "systemField");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andSystemFieldGreaterThan(Boolean value) {
|
||||
addCriterion("system_field >", value, "systemField");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andSystemFieldGreaterThanOrEqualTo(Boolean value) {
|
||||
addCriterion("system_field >=", value, "systemField");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andSystemFieldLessThan(Boolean value) {
|
||||
addCriterion("system_field <", value, "systemField");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andSystemFieldLessThanOrEqualTo(Boolean value) {
|
||||
addCriterion("system_field <=", value, "systemField");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andSystemFieldIn(List<Boolean> values) {
|
||||
addCriterion("system_field in", values, "systemField");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andSystemFieldNotIn(List<Boolean> values) {
|
||||
addCriterion("system_field not in", values, "systemField");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andSystemFieldBetween(Boolean value1, Boolean value2) {
|
||||
addCriterion("system_field between", value1, value2, "systemField");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andSystemFieldNotBetween(Boolean value1, Boolean value2) {
|
||||
addCriterion("system_field not between", value1, value2, "systemField");
|
||||
return (Criteria) this;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Criteria extends GeneratedCriteria {
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<result column="pos" jdbcType="INTEGER" property="pos" />
|
||||
<result column="api_field_id" jdbcType="VARCHAR" property="apiFieldId" />
|
||||
<result column="default_value" jdbcType="VARCHAR" property="defaultValue" />
|
||||
<result column="system_field" jdbcType="BIT" property="systemField" />
|
||||
</resultMap>
|
||||
<sql id="Example_Where_Clause">
|
||||
<where>
|
||||
|
@ -69,7 +70,7 @@
|
|||
</where>
|
||||
</sql>
|
||||
<sql id="Base_Column_List">
|
||||
id, field_id, template_id, required, pos, api_field_id, default_value
|
||||
id, field_id, template_id, required, pos, api_field_id, default_value, system_field
|
||||
</sql>
|
||||
<select id="selectByExample" parameterType="io.metersphere.system.domain.TemplateCustomFieldExample" resultMap="BaseResultMap">
|
||||
select
|
||||
|
@ -104,10 +105,10 @@
|
|||
<insert id="insert" parameterType="io.metersphere.system.domain.TemplateCustomField">
|
||||
insert into template_custom_field (id, field_id, template_id,
|
||||
required, pos, api_field_id,
|
||||
default_value)
|
||||
default_value, system_field)
|
||||
values (#{id,jdbcType=VARCHAR}, #{fieldId,jdbcType=VARCHAR}, #{templateId,jdbcType=VARCHAR},
|
||||
#{required,jdbcType=BIT}, #{pos,jdbcType=INTEGER}, #{apiFieldId,jdbcType=VARCHAR},
|
||||
#{defaultValue,jdbcType=VARCHAR})
|
||||
#{defaultValue,jdbcType=VARCHAR}, #{systemField,jdbcType=BIT})
|
||||
</insert>
|
||||
<insert id="insertSelective" parameterType="io.metersphere.system.domain.TemplateCustomField">
|
||||
insert into template_custom_field
|
||||
|
@ -133,6 +134,9 @@
|
|||
<if test="defaultValue != null">
|
||||
default_value,
|
||||
</if>
|
||||
<if test="systemField != null">
|
||||
system_field,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">
|
||||
|
@ -156,6 +160,9 @@
|
|||
<if test="defaultValue != null">
|
||||
#{defaultValue,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="systemField != null">
|
||||
#{systemField,jdbcType=BIT},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<select id="countByExample" parameterType="io.metersphere.system.domain.TemplateCustomFieldExample" resultType="java.lang.Long">
|
||||
|
@ -188,6 +195,9 @@
|
|||
<if test="record.defaultValue != null">
|
||||
default_value = #{record.defaultValue,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="record.systemField != null">
|
||||
system_field = #{record.systemField,jdbcType=BIT},
|
||||
</if>
|
||||
</set>
|
||||
<if test="_parameter != null">
|
||||
<include refid="Update_By_Example_Where_Clause" />
|
||||
|
@ -201,7 +211,8 @@
|
|||
required = #{record.required,jdbcType=BIT},
|
||||
pos = #{record.pos,jdbcType=INTEGER},
|
||||
api_field_id = #{record.apiFieldId,jdbcType=VARCHAR},
|
||||
default_value = #{record.defaultValue,jdbcType=VARCHAR}
|
||||
default_value = #{record.defaultValue,jdbcType=VARCHAR},
|
||||
system_field = #{record.systemField,jdbcType=BIT}
|
||||
<if test="_parameter != null">
|
||||
<include refid="Update_By_Example_Where_Clause" />
|
||||
</if>
|
||||
|
@ -227,6 +238,9 @@
|
|||
<if test="defaultValue != null">
|
||||
default_value = #{defaultValue,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="systemField != null">
|
||||
system_field = #{systemField,jdbcType=BIT},
|
||||
</if>
|
||||
</set>
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
|
@ -237,17 +251,19 @@
|
|||
required = #{required,jdbcType=BIT},
|
||||
pos = #{pos,jdbcType=INTEGER},
|
||||
api_field_id = #{apiFieldId,jdbcType=VARCHAR},
|
||||
default_value = #{defaultValue,jdbcType=VARCHAR}
|
||||
default_value = #{defaultValue,jdbcType=VARCHAR},
|
||||
system_field = #{systemField,jdbcType=BIT}
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
<insert id="batchInsert" parameterType="map">
|
||||
insert into template_custom_field
|
||||
(id, field_id, template_id, required, pos, api_field_id, default_value)
|
||||
(id, field_id, template_id, required, pos, api_field_id, default_value, system_field
|
||||
)
|
||||
values
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(#{item.id,jdbcType=VARCHAR}, #{item.fieldId,jdbcType=VARCHAR}, #{item.templateId,jdbcType=VARCHAR},
|
||||
#{item.required,jdbcType=BIT}, #{item.pos,jdbcType=INTEGER}, #{item.apiFieldId,jdbcType=VARCHAR},
|
||||
#{item.defaultValue,jdbcType=VARCHAR})
|
||||
#{item.defaultValue,jdbcType=VARCHAR}, #{item.systemField,jdbcType=BIT})
|
||||
</foreach>
|
||||
</insert>
|
||||
<insert id="batchInsertSelective" parameterType="map">
|
||||
|
@ -281,6 +297,9 @@
|
|||
<if test="'default_value'.toString() == column.value">
|
||||
#{item.defaultValue,jdbcType=VARCHAR}
|
||||
</if>
|
||||
<if test="'system_field'.toString() == column.value">
|
||||
#{item.systemField,jdbcType=BIT}
|
||||
</if>
|
||||
</foreach>
|
||||
)
|
||||
</foreach>
|
||||
|
|
|
@ -397,9 +397,10 @@ CREATE TABLE IF NOT EXISTS template_custom_field(
|
|||
`field_id` VARCHAR(50) NOT NULL COMMENT '字段ID' ,
|
||||
`template_id` VARCHAR(50) NOT NULL COMMENT '模版ID' ,
|
||||
`required` BIT NOT NULL DEFAULT 0 COMMENT '是否必填' ,
|
||||
`system_field` BIT NOT NULL DEFAULT 0 COMMENT '是否是系统字段' ,
|
||||
`pos` INT NOT NULL DEFAULT 0 COMMENT '排序字段' ,
|
||||
`api_field_id` VARCHAR(255) COMMENT 'api字段名' ,
|
||||
`default_value` VARCHAR(500) COMMENT '默认值' ,
|
||||
`default_value` VARCHAR(1500) COMMENT '默认值' ,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
|
|
|
@ -205,8 +205,8 @@ VALUES ((select id from custom_field where name = 'functional_priority'), 'P3',
|
|||
-- 初始化组织功能用例模板
|
||||
INSERT INTO template (id,name,remark,internal,update_time,create_time,create_user,scope_type,scope_id,enable_third_part, scene)
|
||||
VALUES (UUID_SHORT(), 'functional_default', '', 1, UNIX_TIMESTAMP() * 1000, UNIX_TIMESTAMP() * 1000, 'admin', 'ORGANIZATION', '100001', 0, 'FUNCTIONAL');
|
||||
INSERT INTO template_custom_field(id, field_id, template_id, required, pos, api_field_id, default_value)
|
||||
VALUES(UUID_SHORT(), (select id from custom_field where name = 'functional_priority'), (select id from template where name = 'functional_default'), 1, 0, NULL, NULL);
|
||||
INSERT INTO template_custom_field(id, field_id, template_id, required, pos, system_field, api_field_id, default_value)
|
||||
VALUES(UUID_SHORT(), (select id from custom_field where name = 'functional_priority'), (select id from template where name = 'functional_default'), 1, 0, 0, NULL, NULL);
|
||||
|
||||
-- 初始化默认项目版本
|
||||
INSERT INTO project_version (id, project_id, name, description, status, latest, publish_time, start_time, end_time, create_time, create_user) VALUES (UUID_SHORT(), '100001100001', 'v1.0', NULL, 'open', 1, UNIX_TIMESTAMP() * 1000, UNIX_TIMESTAMP() * 1000, UNIX_TIMESTAMP() * 1000, UNIX_TIMESTAMP() * 1000, 'admin');
|
||||
|
@ -228,12 +228,12 @@ VALUES ((select id from custom_field where name = 'functional_priority' and scop
|
|||
INSERT INTO template (id,name,remark,internal,update_time,create_time,create_user,scope_type,scope_id,enable_third_part, scene, ref_id)
|
||||
VALUES (UUID_SHORT(), 'functional_default', '', 1, UNIX_TIMESTAMP() * 1000, UNIX_TIMESTAMP() * 1000, 'admin', 'PROJECT', '100001100001', 0, 'FUNCTIONAL',
|
||||
(SELECT id FROM (SELECT * FROM template) t where name = 'functional_default'));
|
||||
INSERT INTO template_custom_field(id, field_id, template_id, required, pos, api_field_id, default_value)
|
||||
INSERT INTO template_custom_field(id, field_id, template_id, required, pos, system_field, api_field_id, default_value)
|
||||
VALUES(
|
||||
UUID_SHORT(),
|
||||
(select id from custom_field where name = 'functional_priority' and scope_id = '100001100001'),
|
||||
(select id from template where name = 'functional_default' and scope_id = '100001100001'),
|
||||
1, 0, NULL, null
|
||||
1, 0, 0, NULL, null
|
||||
);
|
||||
|
||||
-- 初始化组织缺陷模板
|
||||
|
|
|
@ -232,6 +232,16 @@ permission.system_organization_project_member.add=添加成员
|
|||
permission.system_organization_project_member.delete=删除成员
|
||||
permission.system_operation_log.name=日志
|
||||
permission.organization_operation_log.name=日志
|
||||
# template
|
||||
permission.system_template_custom_field.name=模板和字段的关联关系
|
||||
template_custom_field.exist=模板和字段的关联关系已存在
|
||||
template_custom_field.id.not_blank=ID不能为空
|
||||
template_custom_field.id.length_range=ID长度必须在{min}和{max}之间
|
||||
template_custom_field.field_id.not_blank=字段ID不能为空
|
||||
template_custom_field.field_id.length_range=字段ID长度必须在{min}和{max}之间
|
||||
template_custom_field.template_id.not_blank=模版ID不能为空
|
||||
template_custom_field.template_id.length_range=模版ID长度必须在{min}和{max}之间
|
||||
template_custom_field.default_value.length_range=默认值长度必须小于{max}
|
||||
permission.organization_custom_field.name=自定义字段
|
||||
permission.organization_template.name=模板
|
||||
permission.system_organization_template.enable=启用项目模板
|
||||
|
|
|
@ -234,6 +234,16 @@ permission.system_organization_project_member.add=Add member
|
|||
permission.system_organization_project_member.delete=Delete member
|
||||
permission.system_operation_log.name=Operation log
|
||||
permission.organization_operation_log.name=Operation log
|
||||
|
||||
permission.system_template_custom_field.name=模板和字段的关联关系
|
||||
template_custom_field.exist=模板和字段的关联关系 already exists
|
||||
template_custom_field.id.not_blank=id cannot be empty
|
||||
template_custom_field.id.length_range=id length must be between {min} and {max}
|
||||
template_custom_field.field_id.not_blank=fieldId cannot be empty
|
||||
template_custom_field.field_id.length_range=fieldId length must be between {min} and {max}
|
||||
template_custom_field.template_id.not_blank=templateId cannot be empty
|
||||
template_custom_field.template_id.length_range=templateId length must be between {min} and {max}
|
||||
template_custom_field.default_value.length_range=default value length must be less than{max}
|
||||
permission.organization_custom_field.name=Custom Field
|
||||
permission.organization_template.name=Template
|
||||
permission.system_organization_template.enable=Enable project templates
|
||||
|
|
|
@ -234,6 +234,16 @@ permission.system_organization_project_member.add=添加成员
|
|||
permission.system_organization_project_member.delete=删除成员
|
||||
permission.system_operation_log.name=日志
|
||||
permission.organization_operation_log.name=日志
|
||||
# template
|
||||
permission.system_template_custom_field.name=模板和字段的关联关系
|
||||
template_custom_field.exist=模板和字段的关联关系已存在
|
||||
template_custom_field.id.not_blank=ID不能为空
|
||||
template_custom_field.id.length_range=ID长度必须在{min}和{max}之间
|
||||
template_custom_field.field_id.not_blank=字段ID不能为空
|
||||
template_custom_field.field_id.length_range=字段ID长度必须在{min}和{max}之间
|
||||
template_custom_field.template_id.not_blank=模版ID不能为空
|
||||
template_custom_field.template_id.length_range=模版ID长度必须在{min}和{max}之间
|
||||
template_custom_field.default_value.length_range=默认值长度必须小于{max}
|
||||
permission.organization_custom_field.name=自定义字段
|
||||
permission.organization_template.name=模板
|
||||
permission.system_organization_template.enable=启用项目模板
|
||||
|
|
|
@ -234,6 +234,16 @@ permission.system_organization_project_member.add=添加成员
|
|||
permission.system_organization_project_member.delete=删除成员
|
||||
permission.system_operation_log.name=日志
|
||||
permission.organization_operation_log.name=日志
|
||||
# template
|
||||
permission.system_template_custom_field.name=模板和字段的關聯關係
|
||||
template_custom_field.exist=模板和字段的關聯關係已存在
|
||||
template_custom_field.id.not_blank=ID不能為空
|
||||
template_custom_field.id.length_range=ID長度必須在{min}和{max}之間
|
||||
template_custom_field.field_id.not_blank=字段ID不能為空
|
||||
template_custom_field.field_id.length_range=字段ID長度必須在{min}和{max}之間
|
||||
template_custom_field.template_id.not_blank=模版ID不能為空
|
||||
template_custom_field.template_id.length_range=模版ID長度必須在{min}和{max}之間
|
||||
template_custom_field.default_value.length_range=默認值長度必須小於{max}
|
||||
permission.organization_custom_field.name=自定義字段
|
||||
permission.organization_template.name=模板
|
||||
permission.system_organization_template.enable=啟用項目模板
|
||||
|
|
|
@ -4,10 +4,9 @@ import io.metersphere.project.dto.ProjectTemplateDTO;
|
|||
import io.metersphere.project.service.ProjectTemplateLogService;
|
||||
import io.metersphere.project.service.ProjectTemplateService;
|
||||
import io.metersphere.sdk.constants.PermissionConstants;
|
||||
import io.metersphere.system.domain.Template;
|
||||
import io.metersphere.system.dto.sdk.TemplateDTO;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateUpdateRequest;
|
||||
import io.metersphere.sdk.util.BeanUtils;
|
||||
import io.metersphere.system.domain.Template;
|
||||
import io.metersphere.system.log.annotation.Log;
|
||||
import io.metersphere.system.log.constants.OperationLogType;
|
||||
import io.metersphere.system.utils.SessionUtils;
|
||||
|
@ -56,22 +55,17 @@ public class ProjectTemplateController {
|
|||
@PostMapping("/add")
|
||||
@Operation(summary = "创建模版")
|
||||
@RequiresPermissions(PermissionConstants.PROJECT_TEMPLATE_ADD)
|
||||
@Log(type = OperationLogType.UPDATE, expression = "#msClass.addLog(#request)", msClass = ProjectTemplateLogService.class)
|
||||
@Log(type = OperationLogType.ADD, expression = "#msClass.addLog(#request)", msClass = ProjectTemplateLogService.class)
|
||||
public Template add(@Validated({Created.class}) @RequestBody TemplateUpdateRequest request) {
|
||||
Template template = new Template();
|
||||
BeanUtils.copyBean(template, request);
|
||||
template.setCreateUser(SessionUtils.getUserId());
|
||||
return projectTemplateservice.add(template, request.getCustomFields());
|
||||
return projectTemplateservice.add(request, SessionUtils.getUserId());
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
@Operation(summary = "更新模版")
|
||||
@RequiresPermissions(PermissionConstants.PROJECT_TEMPLATE_UPDATE)
|
||||
@Log(type = OperationLogType.ADD, expression = "#msClass.updateLog(#request)", msClass = ProjectTemplateLogService.class)
|
||||
@Log(type = OperationLogType.UPDATE, expression = "#msClass.updateLog(#request)", msClass = ProjectTemplateLogService.class)
|
||||
public Template update(@Validated({Updated.class}) @RequestBody TemplateUpdateRequest request) {
|
||||
Template template = new Template();
|
||||
BeanUtils.copyBean(template, request);
|
||||
return projectTemplateservice.update(template, request.getCustomFields());
|
||||
return projectTemplateservice.update(request);
|
||||
}
|
||||
|
||||
@GetMapping("/delete/{id}")
|
||||
|
|
|
@ -16,8 +16,8 @@ import io.metersphere.sdk.util.Translator;
|
|||
import io.metersphere.system.domain.*;
|
||||
import io.metersphere.system.dto.ProjectDTO;
|
||||
import io.metersphere.system.dto.sdk.TemplateDTO;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateCustomFieldRequest;
|
||||
import io.metersphere.system.mapper.CustomFieldOptionMapper;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateUpdateRequest;
|
||||
import io.metersphere.system.service.BaseTemplateService;
|
||||
import io.metersphere.system.service.PlatformPluginService;
|
||||
import io.metersphere.system.service.PluginLoadService;
|
||||
|
@ -296,26 +296,28 @@ public class ProjectTemplateService extends BaseTemplateService {
|
|||
return super.getTemplateDTO(template);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Template add(Template template, List<TemplateCustomFieldRequest> customFields) {
|
||||
public Template add(TemplateUpdateRequest request, String creator) {
|
||||
Template template = BeanUtils.copyBean(new Template(), request);
|
||||
template.setCreateUser(creator);
|
||||
checkProjectResourceExist(template);
|
||||
checkProjectTemplateEnable(template.getScopeId(), template.getScene());
|
||||
template.setScopeType(TemplateScopeType.PROJECT.name());
|
||||
template.setRefId(null);
|
||||
return super.add(template, customFields);
|
||||
return super.add(template, request.getCustomFields(), request.getSystemFields());
|
||||
}
|
||||
|
||||
public void checkProjectResourceExist(Template template) {
|
||||
projectService.checkResourceExist(template.getScopeId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Template update(Template template, List<TemplateCustomFieldRequest> customFields) {
|
||||
public Template update(TemplateUpdateRequest request) {
|
||||
Template template = new Template();
|
||||
BeanUtils.copyBean(template, request);
|
||||
Template originTemplate = super.getWithCheck(template.getId());
|
||||
checkProjectTemplateEnable(originTemplate.getScopeId(), originTemplate.getScene());
|
||||
template.setScopeId(originTemplate.getScopeId());
|
||||
checkProjectResourceExist(originTemplate);
|
||||
return super.update(template, customFields);
|
||||
return super.update(template, request.getCustomFields(), request.getSystemFields());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -7,15 +7,17 @@ import io.metersphere.sdk.constants.OrganizationParameterConstants;
|
|||
import io.metersphere.sdk.constants.PermissionConstants;
|
||||
import io.metersphere.sdk.constants.TemplateScene;
|
||||
import io.metersphere.sdk.constants.TemplateScopeType;
|
||||
import io.metersphere.system.dto.sdk.TemplateCustomFieldDTO;
|
||||
import io.metersphere.system.dto.sdk.TemplateDTO;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateCustomFieldRequest;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateUpdateRequest;
|
||||
import io.metersphere.sdk.util.BeanUtils;
|
||||
import io.metersphere.system.base.BasePluginTestService;
|
||||
import io.metersphere.system.base.BaseTest;
|
||||
import io.metersphere.system.controller.OrganizationTemplateControllerTests;
|
||||
import io.metersphere.system.controller.param.TemplateUpdateRequestDefinition;
|
||||
import io.metersphere.system.domain.*;
|
||||
import io.metersphere.system.domain.CustomField;
|
||||
import io.metersphere.system.domain.OrganizationParameter;
|
||||
import io.metersphere.system.domain.Template;
|
||||
import io.metersphere.system.dto.sdk.TemplateDTO;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateCustomFieldRequest;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateUpdateRequest;
|
||||
import io.metersphere.system.log.constants.OperationLogType;
|
||||
import io.metersphere.system.mapper.OrganizationParameterMapper;
|
||||
import io.metersphere.system.mapper.TemplateMapper;
|
||||
|
@ -109,6 +111,7 @@ public class ProjectTemplateControllerTests extends BaseTest {
|
|||
request.setEnableThirdPart(true);
|
||||
request.setScopeId(DEFAULT_PROJECT_ID);
|
||||
request.setCustomFields(List.of(templateCustomFieldRequest));
|
||||
request.setSystemFields(OrganizationTemplateControllerTests.getTemplateSystemCustomFieldRequests());
|
||||
|
||||
MvcResult mvcResult = this.requestPostWithOkAndReturn(DEFAULT_ADD, request);
|
||||
|
||||
|
@ -119,11 +122,12 @@ public class ProjectTemplateControllerTests extends BaseTest {
|
|||
request.setId(template.getId());
|
||||
TemplateUpdateRequest copyRequest = BeanUtils.copyBean(new TemplateUpdateRequest(), request);
|
||||
copyRequest.setCustomFields(null);
|
||||
copyRequest.setSystemFields(null);
|
||||
Assertions.assertEquals(copyRequest, BeanUtils.copyBean(new TemplateUpdateRequest(), template));
|
||||
Assertions.assertEquals(template.getCreateUser(), ADMIN.getValue());
|
||||
Assertions.assertEquals(template.getInternal(), false);
|
||||
Assertions.assertEquals(template.getScopeType(), TemplateScopeType.PROJECT.name());
|
||||
assertTemplateCustomFields(request, template);
|
||||
OrganizationTemplateControllerTests.assertTemplateCustomFields(request, template);
|
||||
|
||||
// @@重名校验异常
|
||||
assertErrorCode(this.requestPost(DEFAULT_ADD, request), TEMPLATE_EXIST);
|
||||
|
@ -140,6 +144,8 @@ public class ProjectTemplateControllerTests extends BaseTest {
|
|||
|
||||
// 插入另一条数据,用户更新时重名校验
|
||||
request.setScopeId(DEFAULT_PROJECT_ID);
|
||||
request.setCustomFields(null);
|
||||
request.setSystemFields(null);
|
||||
MvcResult anotherMvcResult = this.requestPostWithOkAndReturn(DEFAULT_ADD, request);
|
||||
this.anotherTemplateField = templateMapper.selectByPrimaryKey(getResultData(anotherMvcResult, Template.class).getId());
|
||||
|
||||
|
@ -151,20 +157,6 @@ public class ProjectTemplateControllerTests extends BaseTest {
|
|||
requestPostPermissionTest(PermissionConstants.PROJECT_TEMPLATE_ADD, DEFAULT_ADD, request);
|
||||
}
|
||||
|
||||
private void assertTemplateCustomFields(TemplateUpdateRequest request, Template template) {
|
||||
List<TemplateCustomField> templateCustomFields = baseTemplateCustomFieldService.getByTemplateId(template.getId());
|
||||
Assertions.assertEquals(templateCustomFields.size(), request.getCustomFields().size());
|
||||
for (int i = 0; i < templateCustomFields.size(); i++) {
|
||||
TemplateCustomField templateCustomField = templateCustomFields.get(i);
|
||||
TemplateCustomFieldRequest customFieldRequest = request.getCustomFields().get(i);
|
||||
Assertions.assertEquals(templateCustomField.getFieldId(), customFieldRequest.getFieldId());
|
||||
Assertions.assertEquals(templateCustomField.getTemplateId(), template.getId());
|
||||
Assertions.assertEquals(templateCustomField.getRequired(), customFieldRequest.getRequired());
|
||||
Assertions.assertEquals(templateCustomField.getApiFieldId(), customFieldRequest.getApiFieldId());
|
||||
Assertions.assertEquals(templateCustomField.getDefaultValue(), customFieldRequest.getDefaultValue());
|
||||
}
|
||||
}
|
||||
|
||||
private TemplateCustomFieldRequest getTemplateCustomFieldRequest(String scene) {
|
||||
List<CustomField> customFields = baseCustomFieldService.getByScopeIdAndScene(DEFAULT_PROJECT_ID, scene);
|
||||
CustomField customField = customFields.stream()
|
||||
|
@ -194,6 +186,8 @@ public class ProjectTemplateControllerTests extends BaseTest {
|
|||
request.setScene(TemplateScene.UI.name());
|
||||
request.setEnableThirdPart(true);
|
||||
request.setCustomFields(new ArrayList<>(0));
|
||||
request.setSystemFields(OrganizationTemplateControllerTests.getTemplateSystemCustomFieldRequests());
|
||||
request.getSystemFields().get(0).setDefaultValue("update");
|
||||
this.requestPostWithOk(DEFAULT_UPDATE, request);
|
||||
Template template = templateMapper.selectByPrimaryKey(request.getId());
|
||||
// 校验请求成功数据
|
||||
|
@ -205,18 +199,18 @@ public class ProjectTemplateControllerTests extends BaseTest {
|
|||
Assertions.assertEquals(template.getScopeType(), TemplateScopeType.PROJECT.name());
|
||||
Assertions.assertEquals(template.getScene(), scene);
|
||||
Assertions.assertEquals(template.getEnableThirdPart(), request.getEnableThirdPart());
|
||||
assertTemplateCustomFields(request, template);
|
||||
OrganizationTemplateControllerTests.assertTemplateCustomFields(request, template);
|
||||
|
||||
// 带字段的更新
|
||||
TemplateCustomFieldRequest templateCustomFieldRequest = getTemplateCustomFieldRequest(scene);
|
||||
request.setCustomFields(List.of(templateCustomFieldRequest));
|
||||
this.requestPostWithOk(DEFAULT_UPDATE, request);
|
||||
assertTemplateCustomFields(request, template);
|
||||
OrganizationTemplateControllerTests.assertTemplateCustomFields(request, template);
|
||||
|
||||
// 不更新字段
|
||||
request.setCustomFields(null);
|
||||
this.requestPostWithOk(DEFAULT_UPDATE, request);
|
||||
Assertions.assertEquals(baseTemplateCustomFieldService.getByTemplateId(template.getId()).size(), 1);
|
||||
Assertions.assertEquals(baseTemplateCustomFieldService.getByTemplateId(template.getId()).size(), 3);
|
||||
|
||||
// @校验是否开启项目模板
|
||||
changeOrgTemplateEnable(true);
|
||||
|
@ -342,19 +336,7 @@ public class ProjectTemplateControllerTests extends BaseTest {
|
|||
.andReturn();
|
||||
// 校验数据是否正确
|
||||
TemplateDTO templateDTO = getResultData(mvcResult, TemplateDTO.class);
|
||||
Template template = templateMapper.selectByPrimaryKey(templateDTO.getId());
|
||||
Assertions.assertEquals(template, BeanUtils.copyBean(new Template(), templateDTO));
|
||||
List<TemplateCustomFieldDTO> customFields = templateDTO.getCustomFields();
|
||||
List<TemplateCustomField> templateCustomFields = baseTemplateCustomFieldService.getByTemplateId(template.getId());
|
||||
for (int i = 0; i < customFields.size(); i++) {
|
||||
TemplateCustomFieldDTO customFieldDTO = customFields.get(i);
|
||||
TemplateCustomField templateCustomField = templateCustomFields.get(i);
|
||||
Assertions.assertEquals(customFieldDTO.getFieldId(), templateCustomField.getFieldId());
|
||||
Assertions.assertEquals(customFieldDTO.getApiFieldId(), templateCustomField.getApiFieldId());
|
||||
Assertions.assertEquals(customFieldDTO.getRequired(), templateCustomField.getRequired());
|
||||
Assertions.assertEquals(templateCustomField.getTemplateId(), template.getId());
|
||||
Assertions.assertEquals(customFieldDTO.getFieldName(), "用例等级");
|
||||
}
|
||||
OrganizationTemplateControllerTests.assertGetTemplateDTO(templateDTO);
|
||||
|
||||
// @@校验权限
|
||||
requestGetPermissionTest(PermissionConstants.PROJECT_TEMPLATE_READ, DEFAULT_GET, templateDTO.getId());
|
||||
|
|
|
@ -1,15 +1,14 @@
|
|||
package io.metersphere.system.controller;
|
||||
|
||||
import io.metersphere.sdk.constants.PermissionConstants;
|
||||
import io.metersphere.system.domain.Template;
|
||||
import io.metersphere.system.dto.sdk.TemplateDTO;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateUpdateRequest;
|
||||
import io.metersphere.sdk.util.BeanUtils;
|
||||
import io.metersphere.system.utils.SessionUtils;
|
||||
import io.metersphere.system.domain.Template;
|
||||
import io.metersphere.system.log.annotation.Log;
|
||||
import io.metersphere.system.log.constants.OperationLogType;
|
||||
import io.metersphere.system.service.OrganizationTemplateLogService;
|
||||
import io.metersphere.system.service.OrganizationTemplateService;
|
||||
import io.metersphere.system.utils.SessionUtils;
|
||||
import io.metersphere.validation.groups.Created;
|
||||
import io.metersphere.validation.groups.Updated;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
@ -57,10 +56,7 @@ public class OrganizationTemplateController {
|
|||
@RequiresPermissions(PermissionConstants.ORGANIZATION_TEMPLATE_ADD)
|
||||
@Log(type = OperationLogType.UPDATE, expression = "#msClass.addLog(#request)", msClass = OrganizationTemplateLogService.class)
|
||||
public Template add(@Validated({Created.class}) @RequestBody TemplateUpdateRequest request) {
|
||||
Template template = new Template();
|
||||
BeanUtils.copyBean(template, request);
|
||||
template.setCreateUser(SessionUtils.getUserId());
|
||||
return organizationTemplateService.add(template, request.getCustomFields());
|
||||
return organizationTemplateService.add(request, SessionUtils.getUserId());
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
|
@ -68,9 +64,7 @@ public class OrganizationTemplateController {
|
|||
@RequiresPermissions(PermissionConstants.ORGANIZATION_TEMPLATE_UPDATE)
|
||||
@Log(type = OperationLogType.ADD, expression = "#msClass.updateLog(#request)", msClass = OrganizationTemplateLogService.class)
|
||||
public Template update(@Validated({Updated.class}) @RequestBody TemplateUpdateRequest request) {
|
||||
Template template = new Template();
|
||||
BeanUtils.copyBean(template, request);
|
||||
return organizationTemplateService.update(template, request.getCustomFields());
|
||||
return organizationTemplateService.update(request);
|
||||
}
|
||||
|
||||
@GetMapping("/delete/{id}")
|
||||
|
|
|
@ -8,6 +8,8 @@ import java.util.List;
|
|||
|
||||
@Data
|
||||
public class TemplateDTO extends Template {
|
||||
@Schema(description = "相关的自定义字段")
|
||||
@Schema(description = "模板关联的自定义字段")
|
||||
List<TemplateCustomFieldDTO> customFields;
|
||||
@Schema(description = "系统字段配置")
|
||||
List<TemplateCustomFieldDTO> systemFields;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
package io.metersphere.system.dto.sdk.request;
|
||||
|
||||
import io.metersphere.validation.groups.Created;
|
||||
import io.metersphere.validation.groups.Updated;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TemplateSystemCustomFieldRequest {
|
||||
|
||||
@Schema(title = "字段ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "{custom_field.id.not_blank}", groups = {Created.class})
|
||||
@Size(min = 1, max = 50, message = "{template_custom_field.field_id.length_range}", groups = {Created.class, Updated.class})
|
||||
private String fieldId;
|
||||
|
||||
@Schema(title = "默认值")
|
||||
private Object defaultValue;
|
||||
}
|
|
@ -44,4 +44,8 @@ public class TemplateUpdateRequest {
|
|||
@Valid
|
||||
@Schema(title = "自定义字段Id列表")
|
||||
private List<TemplateCustomFieldRequest> customFields;
|
||||
|
||||
@Valid
|
||||
@Schema(title = "系统字段列表")
|
||||
private List<TemplateSystemCustomFieldRequest> systemFields;
|
||||
}
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
package io.metersphere.system.service;
|
||||
|
||||
import io.metersphere.system.dto.sdk.request.TemplateCustomFieldRequest;
|
||||
import io.metersphere.sdk.util.BeanUtils;
|
||||
import io.metersphere.system.domain.CustomField;
|
||||
import io.metersphere.system.domain.TemplateCustomField;
|
||||
import io.metersphere.system.domain.TemplateCustomFieldExample;
|
||||
import io.metersphere.system.dto.CustomFieldDao;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateCustomFieldRequest;
|
||||
import io.metersphere.system.mapper.TemplateCustomFieldMapper;
|
||||
import io.metersphere.system.resolver.field.AbstractCustomFieldResolver;
|
||||
import io.metersphere.system.resolver.field.CustomFieldResolverFactory;
|
||||
import io.metersphere.system.uid.IDGenerator;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -17,7 +18,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import io.metersphere.system.uid.IDGenerator;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -35,7 +35,16 @@ public class BaseTemplateCustomFieldService {
|
|||
|
||||
public void deleteByTemplateId(String templateId) {
|
||||
TemplateCustomFieldExample example = new TemplateCustomFieldExample();
|
||||
example.createCriteria().andTemplateIdEqualTo(templateId);
|
||||
example.createCriteria()
|
||||
.andTemplateIdEqualTo(templateId);
|
||||
templateCustomFieldMapper.deleteByExample(example);
|
||||
}
|
||||
|
||||
public void deleteByTemplateIdAndSystem(String templateId, boolean isSystem) {
|
||||
TemplateCustomFieldExample example = new TemplateCustomFieldExample();
|
||||
example.createCriteria()
|
||||
.andTemplateIdEqualTo(templateId)
|
||||
.andSystemFieldEqualTo(isSystem);
|
||||
templateCustomFieldMapper.deleteByExample(example);
|
||||
}
|
||||
|
||||
|
@ -48,11 +57,10 @@ public class BaseTemplateCustomFieldService {
|
|||
templateCustomFieldMapper.deleteByExample(example);
|
||||
}
|
||||
|
||||
public void addByTemplateId(String id, List<TemplateCustomFieldRequest> customFieldRequests) {
|
||||
public void addCustomFieldByTemplateId(String id, List<TemplateCustomFieldRequest> customFieldRequests) {
|
||||
if (CollectionUtils.isEmpty(customFieldRequests)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 过滤下不存在的字段
|
||||
List<String> ids = customFieldRequests.stream().map(TemplateCustomFieldRequest::getFieldId).toList();
|
||||
Set<String> fieldIdSet = baseCustomFieldService.getByIds(ids)
|
||||
|
@ -62,18 +70,28 @@ public class BaseTemplateCustomFieldService {
|
|||
customFieldRequests = customFieldRequests.stream()
|
||||
.filter(item -> fieldIdSet.contains(item.getFieldId()))
|
||||
.toList();
|
||||
this.addByTemplateId(id, customFieldRequests, false);
|
||||
}
|
||||
|
||||
public void addSystemFieldByTemplateId(String id, List<TemplateCustomFieldRequest> customFieldRequests) {
|
||||
if (CollectionUtils.isEmpty(customFieldRequests)) {
|
||||
return;
|
||||
}
|
||||
this.addByTemplateId(id, customFieldRequests, true);
|
||||
}
|
||||
|
||||
private void addByTemplateId(String templateId, List<TemplateCustomFieldRequest> customFieldRequests, boolean isSystem) {
|
||||
AtomicReference<Integer> pos = new AtomicReference<>(0);
|
||||
List<TemplateCustomField> templateCustomFields = customFieldRequests.stream().map(field -> {
|
||||
TemplateCustomField templateCustomField = new TemplateCustomField();
|
||||
templateCustomField.setId(IDGenerator.nextStr());
|
||||
BeanUtils.copyBean(templateCustomField, field);
|
||||
templateCustomField.setTemplateId(id);
|
||||
templateCustomField.setTemplateId(templateId);
|
||||
templateCustomField.setPos(pos.getAndSet(pos.get() + 1));
|
||||
templateCustomField.setDefaultValue(parseDefaultValue(field));
|
||||
templateCustomField.setDefaultValue(isSystem ? field.getDefaultValue().toString() : parseDefaultValue(field));
|
||||
templateCustomField.setSystemField(isSystem);
|
||||
return templateCustomField;
|
||||
}).toList();
|
||||
|
||||
if (templateCustomFields.size() > 0) {
|
||||
templateCustomFieldMapper.batchInsert(templateCustomFields);
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import io.metersphere.system.domain.TemplateExample;
|
|||
import io.metersphere.system.dto.sdk.TemplateCustomFieldDTO;
|
||||
import io.metersphere.system.dto.sdk.TemplateDTO;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateCustomFieldRequest;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateSystemCustomFieldRequest;
|
||||
import io.metersphere.system.mapper.TemplateMapper;
|
||||
import io.metersphere.system.resolver.field.AbstractCustomFieldResolver;
|
||||
import io.metersphere.system.resolver.field.CustomFieldResolverFactory;
|
||||
|
@ -20,6 +21,7 @@ import io.metersphere.system.uid.IDGenerator;
|
|||
import io.metersphere.system.utils.ServiceUtils;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
@ -109,41 +111,54 @@ public class BaseTemplateService {
|
|||
return customField;
|
||||
}));
|
||||
|
||||
// 封装字段信息
|
||||
List<TemplateCustomFieldDTO> fieldDTOS = templateCustomFields.stream().map(i -> {
|
||||
CustomField customField = fieldMap.get(i.getFieldId());
|
||||
TemplateCustomFieldDTO templateCustomFieldDTO = new TemplateCustomFieldDTO();
|
||||
BeanUtils.copyBean(templateCustomFieldDTO, i);
|
||||
templateCustomFieldDTO.setFieldName(customField.getName());
|
||||
AbstractCustomFieldResolver customFieldResolver = CustomFieldResolverFactory.getResolver(customField.getType());
|
||||
Object defaultValue = null;
|
||||
try {
|
||||
defaultValue = customFieldResolver.parse2Value(i.getDefaultValue());
|
||||
} catch (Exception e) {
|
||||
LogUtils.error(e);
|
||||
}
|
||||
templateCustomFieldDTO.setDefaultValue(defaultValue);
|
||||
return templateCustomFieldDTO;
|
||||
}).toList();
|
||||
// 封装自定义字段信息
|
||||
List<TemplateCustomFieldDTO> fieldDTOS = templateCustomFields.stream()
|
||||
.filter(i -> !BooleanUtils.isTrue(i.getSystemField()))
|
||||
.map(i -> {
|
||||
CustomField customField = fieldMap.get(i.getFieldId());
|
||||
TemplateCustomFieldDTO templateCustomFieldDTO = new TemplateCustomFieldDTO();
|
||||
BeanUtils.copyBean(templateCustomFieldDTO, i);
|
||||
templateCustomFieldDTO.setFieldName(customField.getName());
|
||||
AbstractCustomFieldResolver customFieldResolver = CustomFieldResolverFactory.getResolver(customField.getType());
|
||||
Object defaultValue = null;
|
||||
try {
|
||||
defaultValue = customFieldResolver.parse2Value(i.getDefaultValue());
|
||||
} catch (Exception e) {
|
||||
LogUtils.error(e);
|
||||
}
|
||||
templateCustomFieldDTO.setDefaultValue(defaultValue);
|
||||
return templateCustomFieldDTO;
|
||||
}).toList();
|
||||
|
||||
// 封装系统字段信息
|
||||
List<TemplateCustomFieldDTO> systemFieldDTOS = templateCustomFields.stream()
|
||||
.filter(i -> BooleanUtils.isTrue(i.getSystemField()))
|
||||
.map(i -> {
|
||||
TemplateCustomFieldDTO templateCustomFieldDTO = new TemplateCustomFieldDTO();
|
||||
templateCustomFieldDTO.setFieldId(i.getFieldId());
|
||||
templateCustomFieldDTO.setDefaultValue(i.getDefaultValue());
|
||||
return templateCustomFieldDTO;
|
||||
}).toList();
|
||||
|
||||
TemplateDTO templateDTO = BeanUtils.copyBean(new TemplateDTO(), template);
|
||||
templateDTO.setCustomFields(fieldDTOS);
|
||||
templateDTO.setSystemFields(systemFieldDTOS);
|
||||
return templateDTO;
|
||||
}
|
||||
|
||||
public Template add(Template template, List<TemplateCustomFieldRequest> customFields) {
|
||||
protected Template add(Template template, List<TemplateCustomFieldRequest> customFields, List<TemplateSystemCustomFieldRequest> systemFields) {
|
||||
template.setInternal(false);
|
||||
return this.baseAdd(template, customFields);
|
||||
return this.baseAdd(template, customFields, systemFields);
|
||||
}
|
||||
|
||||
public Template baseAdd(Template template, List<TemplateCustomFieldRequest> customFields) {
|
||||
public Template baseAdd(Template template, List<TemplateCustomFieldRequest> customFields, List<TemplateSystemCustomFieldRequest> systemFields) {
|
||||
checkAddExist(template);
|
||||
template.setId(IDGenerator.nextStr());
|
||||
template.setCreateTime(System.currentTimeMillis());
|
||||
template.setUpdateTime(System.currentTimeMillis());
|
||||
templateMapper.insert(template);
|
||||
baseTemplateCustomFieldService.deleteByTemplateId(template.getId());
|
||||
baseTemplateCustomFieldService.addByTemplateId(template.getId(), customFields);
|
||||
baseTemplateCustomFieldService.addCustomFieldByTemplateId(template.getId(), customFields);
|
||||
baseTemplateCustomFieldService.addSystemFieldByTemplateId(template.getId(), parse2TemplateCustomFieldRequests(systemFields));
|
||||
return template;
|
||||
}
|
||||
|
||||
|
@ -154,7 +169,7 @@ public class BaseTemplateService {
|
|||
.orElseThrow(() -> new MSException(TEMPLATE_SCENE_ILLEGAL));
|
||||
}
|
||||
|
||||
public Template update(Template template, List<TemplateCustomFieldRequest> customFields) {
|
||||
protected Template update(Template template, List<TemplateCustomFieldRequest> customFields, List<TemplateSystemCustomFieldRequest> systemFields) {
|
||||
checkResourceExist(template.getId());
|
||||
checkUpdateExist(template);
|
||||
template.setUpdateTime(System.currentTimeMillis());
|
||||
|
@ -166,13 +181,31 @@ public class BaseTemplateService {
|
|||
template.setCreateTime(null);
|
||||
// customFields 为 null 则不修改
|
||||
if (customFields != null) {
|
||||
baseTemplateCustomFieldService.deleteByTemplateId(template.getId());
|
||||
baseTemplateCustomFieldService.addByTemplateId(template.getId(), customFields);
|
||||
baseTemplateCustomFieldService.deleteByTemplateIdAndSystem(template.getId(), false);
|
||||
baseTemplateCustomFieldService.addCustomFieldByTemplateId(template.getId(), customFields);
|
||||
}
|
||||
if (systemFields != null) {
|
||||
// 系统字段
|
||||
baseTemplateCustomFieldService.deleteByTemplateIdAndSystem(template.getId(), true);
|
||||
baseTemplateCustomFieldService.addSystemFieldByTemplateId(template.getId(), parse2TemplateCustomFieldRequests(systemFields));
|
||||
}
|
||||
templateMapper.updateByPrimaryKeySelective(template);
|
||||
return template;
|
||||
}
|
||||
|
||||
private List<TemplateCustomFieldRequest> parse2TemplateCustomFieldRequests(List<TemplateSystemCustomFieldRequest> systemFields) {
|
||||
if (CollectionUtils.isEmpty(systemFields)) {
|
||||
return List.of();
|
||||
}
|
||||
List<TemplateCustomFieldRequest> templateCustomFieldRequests = systemFields.stream().map(systemFiled -> {
|
||||
TemplateCustomFieldRequest templateCustomFieldRequest = new TemplateCustomFieldRequest();
|
||||
BeanUtils.copyBean(templateCustomFieldRequest, systemFiled);
|
||||
templateCustomFieldRequest.setRequired(false);
|
||||
return templateCustomFieldRequest;
|
||||
}).toList();
|
||||
return templateCustomFieldRequests;
|
||||
}
|
||||
|
||||
public void delete(String id) {
|
||||
Template template = checkResourceExist(id);
|
||||
checkInternal(template);
|
||||
|
@ -182,6 +215,7 @@ public class BaseTemplateService {
|
|||
|
||||
/**
|
||||
* 校验时候是内置模板
|
||||
*
|
||||
* @param template
|
||||
*/
|
||||
protected void checkInternal(Template template) {
|
||||
|
@ -269,6 +303,7 @@ public class BaseTemplateService {
|
|||
* 初始化功能用例模板
|
||||
* 创建组织的时候调用初始化组织模板
|
||||
* 创建项目的时候调用初始化项目模板
|
||||
*
|
||||
* @param scopeId
|
||||
* @param scopeType
|
||||
*/
|
||||
|
@ -284,19 +319,21 @@ public class BaseTemplateService {
|
|||
templateCustomFieldRequest.setFieldId(customField.getId());
|
||||
return templateCustomFieldRequest;
|
||||
}).toList();
|
||||
baseTemplateCustomFieldService.addByTemplateId(template.getId(), templateCustomFieldRequests);
|
||||
baseTemplateCustomFieldService.addCustomFieldByTemplateId(template.getId(), templateCustomFieldRequests);
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化缺陷模板
|
||||
* 创建组织的时候调用初始化组织模板
|
||||
* 创建项目的时候调用初始化项目模板
|
||||
*
|
||||
* @param scopeId
|
||||
* @param scopeType
|
||||
*/
|
||||
public void initBugDefaultTemplate(String scopeId, TemplateScopeType scopeType) {
|
||||
this.initDefaultTemplate(scopeId, "bug_default", scopeType, TemplateScene.BUG);
|
||||
}
|
||||
|
||||
public void initApiDefaultTemplate(String scopeId, TemplateScopeType scopeType) {
|
||||
this.initDefaultTemplate(scopeId, "api_default", scopeType, TemplateScene.API);
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import io.metersphere.sdk.constants.TemplateScopeType;
|
|||
import io.metersphere.system.dto.sdk.request.TemplateCustomFieldRequest;
|
||||
import io.metersphere.sdk.util.BeanUtils;
|
||||
import io.metersphere.system.domain.*;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateSystemCustomFieldRequest;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
@ -107,7 +108,7 @@ public class CreateTemplateResourceService implements CreateProjectResourceServi
|
|||
List<TemplateCustomFieldRequest> templateCustomFieldRequests = templateCustomFields.stream()
|
||||
.map(templateCustomField -> BeanUtils.copyBean(new TemplateCustomFieldRequest(), templateCustomField))
|
||||
.toList();
|
||||
addRefProjectTemplate(projectId, template, templateCustomFieldRequests);
|
||||
addRefProjectTemplate(projectId, template, templateCustomFieldRequests, null);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -199,12 +200,13 @@ public class CreateTemplateResourceService implements CreateProjectResourceServi
|
|||
* @param orgTemplate
|
||||
* @param customFields
|
||||
*/
|
||||
public void addRefProjectTemplate(String projectId, Template orgTemplate, List<TemplateCustomFieldRequest> customFields) {
|
||||
public void addRefProjectTemplate(String projectId, Template orgTemplate, List<TemplateCustomFieldRequest> customFields,
|
||||
List<TemplateSystemCustomFieldRequest> systemCustomFields) {
|
||||
Template template = BeanUtils.copyBean(new Template(), orgTemplate);
|
||||
template.setScopeId(projectId);
|
||||
template.setRefId(orgTemplate.getId());
|
||||
template.setScopeType(TemplateScopeType.PROJECT.name());
|
||||
List<TemplateCustomFieldRequest> refCustomFields = baseTemplateService.getRefTemplateCustomFieldRequest(projectId, customFields);
|
||||
baseTemplateService.baseAdd(template, refCustomFields);
|
||||
baseTemplateService.baseAdd(template, refCustomFields, systemCustomFields);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,8 @@ import io.metersphere.sdk.util.SubListUtils;
|
|||
import io.metersphere.system.domain.OrganizationParameter;
|
||||
import io.metersphere.system.domain.Template;
|
||||
import io.metersphere.system.domain.TemplateExample;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateSystemCustomFieldRequest;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateUpdateRequest;
|
||||
import io.metersphere.system.mapper.BaseProjectMapper;
|
||||
import io.metersphere.system.mapper.ExtOrganizationTemplateMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
|
@ -52,15 +54,16 @@ public class OrganizationTemplateService extends BaseTemplateService {
|
|||
return super.getTemplateDTO(template);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Template add(Template template, List<TemplateCustomFieldRequest> customFields) {
|
||||
public Template add(TemplateUpdateRequest request, String creator) {
|
||||
Template template = BeanUtils.copyBean(new Template(), request);
|
||||
template.setCreateUser(creator);
|
||||
checkOrgResourceExist(template);
|
||||
checkOrganizationTemplateEnable(template.getScopeId(), template.getScene());
|
||||
template.setScopeType(TemplateScopeType.ORGANIZATION.name());
|
||||
template.setRefId(null);
|
||||
template = super.add(template, customFields);
|
||||
template = super.add(template, request.getCustomFields(), request.getSystemFields());
|
||||
// 同步创建项目级别模板
|
||||
addRefProjectTemplate(template, customFields);
|
||||
addRefProjectTemplate(template, request.getCustomFields(), request.getSystemFields());
|
||||
return template;
|
||||
}
|
||||
|
||||
|
@ -73,7 +76,7 @@ public class OrganizationTemplateService extends BaseTemplateService {
|
|||
* @param orgTemplate
|
||||
* @param customFields
|
||||
*/
|
||||
public void addRefProjectTemplate(Template orgTemplate, List<TemplateCustomFieldRequest> customFields) {
|
||||
public void addRefProjectTemplate(Template orgTemplate, List<TemplateCustomFieldRequest> customFields, List<TemplateSystemCustomFieldRequest> systemFields) {
|
||||
String orgId = orgTemplate.getScopeId();
|
||||
List<String> projectIds = baseProjectMapper.getProjectIdByOrgId(orgId);
|
||||
Template template = BeanUtils.copyBean(new Template(), orgTemplate);
|
||||
|
@ -82,7 +85,7 @@ public class OrganizationTemplateService extends BaseTemplateService {
|
|||
template.setRefId(orgTemplate.getId());
|
||||
template.setScopeType(TemplateScopeType.PROJECT.name());
|
||||
List<TemplateCustomFieldRequest> refCustomFields = getRefTemplateCustomFieldRequest(projectId, customFields);
|
||||
super.baseAdd(template, refCustomFields);
|
||||
super.baseAdd(template, refCustomFields, systemFields);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -90,15 +93,17 @@ public class OrganizationTemplateService extends BaseTemplateService {
|
|||
OrganizationService.checkResourceExist(template.getScopeId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Template update(Template template, List<TemplateCustomFieldRequest> customFields) {
|
||||
|
||||
public Template update(TemplateUpdateRequest request) {
|
||||
Template template = new Template();
|
||||
BeanUtils.copyBean(template, request);
|
||||
Template originTemplate = super.getWithCheck(template.getId());
|
||||
checkOrganizationTemplateEnable(originTemplate.getScopeId(), originTemplate.getScene());
|
||||
template.setScopeId(originTemplate.getScopeId());
|
||||
checkOrgResourceExist(originTemplate);
|
||||
updateRefProjectTemplate(template, customFields);
|
||||
updateRefProjectTemplate(template, request.getCustomFields(), request.getSystemFields());
|
||||
template.setRefId(null);
|
||||
return super.update(template, customFields);
|
||||
return super.update(template, request.getCustomFields(), request.getSystemFields());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -110,7 +115,7 @@ public class OrganizationTemplateService extends BaseTemplateService {
|
|||
* @param orgTemplate
|
||||
* @param customFields
|
||||
*/
|
||||
public void updateRefProjectTemplate(Template orgTemplate, List<TemplateCustomFieldRequest> customFields) {
|
||||
public void updateRefProjectTemplate(Template orgTemplate, List<TemplateCustomFieldRequest> customFields, List<TemplateSystemCustomFieldRequest> systemFields) {
|
||||
List<Template> projectTemplates = getByRefId(orgTemplate.getId());
|
||||
Template template = BeanUtils.copyBean(new Template(), orgTemplate);
|
||||
projectTemplates.forEach(projectTemplate -> {
|
||||
|
@ -118,7 +123,7 @@ public class OrganizationTemplateService extends BaseTemplateService {
|
|||
template.setScopeId(projectTemplate.getScopeId());
|
||||
template.setRefId(orgTemplate.getId());
|
||||
List<TemplateCustomFieldRequest> refCustomFields = getRefTemplateCustomFieldRequest(projectTemplate.getScopeId(), customFields);
|
||||
super.update(template, refCustomFields);
|
||||
super.update(template, refCustomFields, systemFields);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -4,9 +4,11 @@ import io.metersphere.sdk.constants.OrganizationParameterConstants;
|
|||
import io.metersphere.sdk.constants.PermissionConstants;
|
||||
import io.metersphere.sdk.constants.TemplateScene;
|
||||
import io.metersphere.sdk.constants.TemplateScopeType;
|
||||
import io.metersphere.sdk.util.CommonBeanFactory;
|
||||
import io.metersphere.system.dto.sdk.TemplateCustomFieldDTO;
|
||||
import io.metersphere.system.dto.sdk.TemplateDTO;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateCustomFieldRequest;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateSystemCustomFieldRequest;
|
||||
import io.metersphere.system.dto.sdk.request.TemplateUpdateRequest;
|
||||
import io.metersphere.sdk.util.BeanUtils;
|
||||
import io.metersphere.system.base.BaseCustomFieldTestService;
|
||||
|
@ -97,6 +99,7 @@ public class OrganizationTemplateControllerTests extends BaseTest {
|
|||
request.setEnableThirdPart(true);
|
||||
request.setScopeId(DEFAULT_ORGANIZATION_ID);
|
||||
request.setCustomFields(List.of(templateCustomFieldRequest));
|
||||
request.setSystemFields(getTemplateSystemCustomFieldRequests());
|
||||
|
||||
MvcResult mvcResult = this.requestPostWithOkAndReturn(DEFAULT_ADD, request);
|
||||
|
||||
|
@ -107,12 +110,13 @@ public class OrganizationTemplateControllerTests extends BaseTest {
|
|||
request.setId(template.getId());
|
||||
TemplateUpdateRequest copyRequest = BeanUtils.copyBean(new TemplateUpdateRequest(), request);
|
||||
copyRequest.setCustomFields(null);
|
||||
copyRequest.setSystemFields(null);
|
||||
Assertions.assertEquals(copyRequest, BeanUtils.copyBean(new TemplateUpdateRequest(), template));
|
||||
Assertions.assertEquals(template.getCreateUser(), ADMIN.getValue());
|
||||
Assertions.assertEquals(template.getInternal(), false);
|
||||
Assertions.assertEquals(template.getScopeType(), TemplateScopeType.ORGANIZATION.name());
|
||||
assertTemplateCustomFields(request, template);
|
||||
assertRefTemplate(template);
|
||||
assertRefTemplate(template, request);
|
||||
|
||||
// @@重名校验异常
|
||||
assertErrorCode(this.requestPost(DEFAULT_ADD, request), TEMPLATE_EXIST);
|
||||
|
@ -130,6 +134,8 @@ public class OrganizationTemplateControllerTests extends BaseTest {
|
|||
|
||||
// 插入另一条数据,用户更新时重名校验
|
||||
request.setScopeId(DEFAULT_ORGANIZATION_ID);
|
||||
request.setCustomFields(null);
|
||||
request.setSystemFields(null);
|
||||
MvcResult anotherMvcResult = this.requestPostWithOkAndReturn(DEFAULT_ADD, request);
|
||||
this.anotherTemplateField = templateMapper.selectByPrimaryKey(getResultData(anotherMvcResult, Template.class).getId());
|
||||
|
||||
|
@ -141,12 +147,25 @@ public class OrganizationTemplateControllerTests extends BaseTest {
|
|||
requestPostPermissionTest(PermissionConstants.ORGANIZATION_TEMPLATE_ADD, DEFAULT_ADD, request);
|
||||
}
|
||||
|
||||
public static List<TemplateSystemCustomFieldRequest> getTemplateSystemCustomFieldRequests() {
|
||||
TemplateSystemCustomFieldRequest nameField = new TemplateSystemCustomFieldRequest();
|
||||
nameField.setFieldId("name");
|
||||
nameField.setDefaultValue("name default");
|
||||
TemplateSystemCustomFieldRequest descriptionField = new TemplateSystemCustomFieldRequest();
|
||||
descriptionField.setFieldId("description");
|
||||
descriptionField.setDefaultValue("description default");
|
||||
List<TemplateSystemCustomFieldRequest> systemFields = new ArrayList<>();
|
||||
systemFields.add(nameField);
|
||||
systemFields.add(descriptionField);
|
||||
return systemFields;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验变更组织模板时,有没有同步变更项目模板
|
||||
*
|
||||
* @param template
|
||||
*/
|
||||
private void assertRefTemplate(Template template) {
|
||||
private void assertRefTemplate(Template template, TemplateUpdateRequest originRequest) {
|
||||
List<Template> refTemplates = organizationTemplateService.getByRefId(template.getId());
|
||||
refTemplates.forEach(refTemplate -> {
|
||||
Assertions.assertEquals(refTemplate.getEnableThirdPart(), template.getEnableThirdPart());
|
||||
|
@ -156,6 +175,15 @@ public class OrganizationTemplateControllerTests extends BaseTest {
|
|||
Assertions.assertEquals(refTemplate.getInternal(), template.getInternal());
|
||||
Assertions.assertEquals(refTemplate.getCreateUser(), template.getCreateUser());
|
||||
Assertions.assertEquals(refTemplate.getScopeType(), TemplateScopeType.PROJECT.name());
|
||||
|
||||
List<TemplateCustomField> templateCustomFields = baseTemplateCustomFieldService.getByTemplateId(template.getId());
|
||||
List<TemplateCustomField> systemFields = templateCustomFields.stream().filter(TemplateCustomField::getSystemField).toList();
|
||||
for (int i = 0; i < systemFields.size(); i++) {
|
||||
TemplateCustomField templateCustomField = systemFields.get(i);
|
||||
TemplateSystemCustomFieldRequest customFieldRequest = originRequest.getSystemFields().get(i);
|
||||
Assertions.assertEquals(templateCustomField.getFieldId(), customFieldRequest.getFieldId());
|
||||
Assertions.assertEquals(templateCustomField.getDefaultValue(), customFieldRequest.getDefaultValue());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -174,11 +202,14 @@ public class OrganizationTemplateControllerTests extends BaseTest {
|
|||
}
|
||||
}
|
||||
|
||||
private void assertTemplateCustomFields(TemplateUpdateRequest request, Template template) {
|
||||
public static void assertTemplateCustomFields(TemplateUpdateRequest request, Template template) {
|
||||
BaseTemplateCustomFieldService baseTemplateCustomFieldService = CommonBeanFactory.getBean(BaseTemplateCustomFieldService.class);
|
||||
List<TemplateCustomField> templateCustomFields = baseTemplateCustomFieldService.getByTemplateId(template.getId());
|
||||
Assertions.assertEquals(templateCustomFields.size(), request.getCustomFields().size());
|
||||
for (int i = 0; i < templateCustomFields.size(); i++) {
|
||||
TemplateCustomField templateCustomField = templateCustomFields.get(i);
|
||||
Assertions.assertEquals(templateCustomFields.size(), request.getCustomFields().size() + request.getSystemFields().size());
|
||||
List<TemplateCustomField> systemFields = templateCustomFields.stream().filter(TemplateCustomField::getSystemField).toList();
|
||||
List<TemplateCustomField> customFields = templateCustomFields.stream().filter(field -> !field.getSystemField()).toList();
|
||||
for (int i = 0; i < customFields.size(); i++) {
|
||||
TemplateCustomField templateCustomField = customFields.get(i);
|
||||
TemplateCustomFieldRequest customFieldRequest = request.getCustomFields().get(i);
|
||||
Assertions.assertEquals(templateCustomField.getFieldId(), customFieldRequest.getFieldId());
|
||||
Assertions.assertEquals(templateCustomField.getTemplateId(), template.getId());
|
||||
|
@ -186,6 +217,13 @@ public class OrganizationTemplateControllerTests extends BaseTest {
|
|||
Assertions.assertEquals(templateCustomField.getApiFieldId(), customFieldRequest.getApiFieldId());
|
||||
Assertions.assertEquals(templateCustomField.getDefaultValue(), customFieldRequest.getDefaultValue());
|
||||
}
|
||||
for (int i = 0; i < systemFields.size(); i++) {
|
||||
TemplateCustomField templateCustomField = systemFields.get(i);
|
||||
TemplateSystemCustomFieldRequest customFieldRequest = request.getSystemFields().get(i);
|
||||
Assertions.assertEquals(templateCustomField.getFieldId(), customFieldRequest.getFieldId());
|
||||
Assertions.assertEquals(templateCustomField.getTemplateId(), template.getId());
|
||||
Assertions.assertEquals(templateCustomField.getDefaultValue(), customFieldRequest.getDefaultValue());
|
||||
}
|
||||
}
|
||||
|
||||
private TemplateCustomFieldRequest getTemplateCustomFieldRequest(String scene) {
|
||||
|
@ -217,6 +255,8 @@ public class OrganizationTemplateControllerTests extends BaseTest {
|
|||
request.setScene(TemplateScene.UI.name());
|
||||
request.setEnableThirdPart(true);
|
||||
request.setCustomFields(new ArrayList<>(0));
|
||||
request.setSystemFields(getTemplateSystemCustomFieldRequests());
|
||||
request.getSystemFields().get(0).setDefaultValue("update");
|
||||
this.requestPostWithOk(DEFAULT_UPDATE, request);
|
||||
Template template = templateMapper.selectByPrimaryKey(request.getId());
|
||||
// 校验请求成功数据
|
||||
|
@ -229,7 +269,7 @@ public class OrganizationTemplateControllerTests extends BaseTest {
|
|||
Assertions.assertEquals(template.getScene(), scene);
|
||||
Assertions.assertEquals(template.getEnableThirdPart(), request.getEnableThirdPart());
|
||||
assertTemplateCustomFields(request, template);
|
||||
assertRefTemplate(template);
|
||||
assertRefTemplate(template, request);
|
||||
|
||||
// 带字段的更新
|
||||
TemplateCustomFieldRequest templateCustomFieldRequest = getTemplateCustomFieldRequest(scene);
|
||||
|
@ -240,7 +280,7 @@ public class OrganizationTemplateControllerTests extends BaseTest {
|
|||
// 不更新字段
|
||||
request.setCustomFields(null);
|
||||
this.requestPostWithOk(DEFAULT_UPDATE, request);
|
||||
Assertions.assertEquals(baseTemplateCustomFieldService.getByTemplateId(template.getId()).size(), 1);
|
||||
Assertions.assertEquals(baseTemplateCustomFieldService.getByTemplateId(template.getId()).size(), 3);
|
||||
|
||||
// @校验是否开启组织模板
|
||||
changeOrgTemplateEnable(false);
|
||||
|
@ -306,13 +346,21 @@ public class OrganizationTemplateControllerTests extends BaseTest {
|
|||
.andReturn();
|
||||
// 校验数据是否正确
|
||||
TemplateDTO templateDTO = getResultData(mvcResult, TemplateDTO.class);
|
||||
Template template = templateMapper.selectByPrimaryKey(templateDTO.getId());
|
||||
assertGetTemplateDTO(templateDTO);
|
||||
|
||||
// @@校验权限
|
||||
requestGetPermissionTest(PermissionConstants.ORGANIZATION_TEMPLATE_READ, DEFAULT_GET, templateDTO.getId());
|
||||
}
|
||||
|
||||
public static void assertGetTemplateDTO(TemplateDTO templateDTO) {
|
||||
Template template = CommonBeanFactory.getBean(TemplateMapper.class).selectByPrimaryKey(templateDTO.getId());
|
||||
Assertions.assertEquals(template, BeanUtils.copyBean(new Template(), templateDTO));
|
||||
List<TemplateCustomField> templateCustomFields = CommonBeanFactory.getBean(BaseTemplateCustomFieldService.class).getByTemplateId(template.getId());
|
||||
List<TemplateCustomFieldDTO> customFields = templateDTO.getCustomFields();
|
||||
List<TemplateCustomField> templateCustomFields = baseTemplateCustomFieldService.getByTemplateId(template.getId());
|
||||
List<TemplateCustomField> customTemplateFields = templateCustomFields.stream().filter(field -> !field.getSystemField()).toList();
|
||||
for (int i = 0; i < customFields.size(); i++) {
|
||||
TemplateCustomFieldDTO customFieldDTO = customFields.get(i);
|
||||
TemplateCustomField templateCustomField = templateCustomFields.get(i);
|
||||
TemplateCustomField templateCustomField = customTemplateFields.get(i);
|
||||
Assertions.assertEquals(customFieldDTO.getFieldId(), templateCustomField.getFieldId());
|
||||
Assertions.assertEquals(customFieldDTO.getApiFieldId(), templateCustomField.getApiFieldId());
|
||||
Assertions.assertEquals(customFieldDTO.getRequired(), templateCustomField.getRequired());
|
||||
|
@ -320,8 +368,14 @@ public class OrganizationTemplateControllerTests extends BaseTest {
|
|||
Assertions.assertEquals(customFieldDTO.getFieldName(), "用例等级");
|
||||
}
|
||||
|
||||
// @@校验权限
|
||||
requestGetPermissionTest(PermissionConstants.ORGANIZATION_TEMPLATE_READ, DEFAULT_GET, templateDTO.getId());
|
||||
List<TemplateCustomFieldDTO> systemFields = templateDTO.getSystemFields();
|
||||
List<TemplateCustomField> systemTemplateFields = templateCustomFields.stream().filter(TemplateCustomField::getSystemField).toList();
|
||||
for (int i = 0; i < systemFields.size(); i++) {
|
||||
TemplateCustomFieldDTO customFieldDTO = systemFields.get(i);
|
||||
TemplateCustomField templateCustomField = systemTemplateFields.get(i);
|
||||
Assertions.assertEquals(customFieldDTO.getFieldId(), templateCustomField.getFieldId());
|
||||
Assertions.assertEquals(customFieldDTO.getDefaultValue(), templateCustomField.getDefaultValue());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue