/** 关系模型 */
@importData
@extendData
@microServiceCore
@moduleName(metadata)
@extendAbstractAuditingEntity
@addCustomMethod(clientRoute-repository-rest-service-clientService-listComponent)
entity CommonTable {
	name String required maxlength(80)/** 名称 */
	entityName String required maxlength(80)/** 实体名称 */
	tableName String required maxlength(80)/** 数据库表名 */
	system Boolean /** 系统表 */
	clazzName String required maxlength(80)/** 类名 */
	@fieldConfig(hideInList-hideInForm)
	generated Boolean /** 是否生成 */
    creatAt ZonedDateTime /** 创建时间 */
    generateAt ZonedDateTime /** 生成表时间 */
    generateClassAt ZonedDateTime /** 编译时间 */
	@fieldConfig(hideInList)
	description String maxlength(200) /** 表说明 */
	treeTable Boolean /** 树形表 */
	baseTableId <%= databaseTypeSql ? 'Long' : 'String'%> /** 来源Id */
	recordActionWidth Integer /** 操作栏宽度 */
	@fieldConfig(hideInList-hideInForm)
	listConfig TextBlob /** 前端列表配置 */
	@fieldConfig(hideInList-hideInForm)
	formConfig TextBlob /** 前端表单配置 */
	editInModal Boolean /** 弹窗编辑 */
	searchForm Boolean /** 显示搜索表单 */
	//<% if (applicationType !== 'gateway' && applicationType !== 'monolith') { %>
	creatorId Long /** 创建者Id */
	creatorLogin String maxlength(40) /** 创建者登录名 */
	//<% } %>
	//<% if (applicationType !== 'gateway' && applicationType !== 'monolith') { %>
	businessTypeId Long /** 类型Id */
	businessTypeName String maxlength(40) /** 业务类型名称 */
	//<% } %>
}


/** 模型字段 */
@skipMenu
@importData
@extendData
@microServiceCore
@addCustomMethod(repository-service)
@replaceServiceMethod(save)
@moduleName(metadata)
entity CommonTableField {
	title String required maxlength(100)/** 标题 */
	entityFieldName String required maxlength(100)/** 属性名称 */
	type CommonFieldType required /** 数据类型 */
    tableColumnName String required maxlength(100)/** 字段名称 */
	columnWidth Integer min(0) max(1200)/** 列宽 */
	order Integer /** 显示顺序 */
	editInList Boolean /** 行内编辑 */
	hideInList Boolean /** 列表隐藏 */
	hideInForm Boolean /** 表单隐藏 */
	searchForm Boolean /** 表单搜索 */
	enableFilter Boolean /** 可过滤 */
	validateRules String maxlength(800)/** 验证规则 */
	showInFilterTree Boolean /** 显示在过滤树 */
	fixed FixedType /** 列固定 */
    @sortField(asc)
	sortable Boolean /** 可排序 */
	treeIndicator Boolean /** 树形标识 */
	clientReadOnly Boolean /** 前端只读 */
	fieldValues String  maxlength(2000)/** 值范围 */
	notNull Boolean /** 必填 */
	system Boolean /** 系统字段 */
	@fieldConfig(hideInList-hideInForm)
	help String maxlength(200)/** 字段说明 */
	@fieldConfig(hideInList-hideInForm)
	fontColor String maxlength(80)/** 字体颜色 */
	@fieldConfig(hideInList-hideInForm)
	backgroundColor String maxlength(80)/** 列背景色 */
	nullHideInForm Boolean /** 空值隐藏 */
	endUsed EndUsedType /** 前端用法 */
	@endUsed(codeEditor)
	options String /** 关系配置项 */
}

/** 模型关系 */
@skipMenu
@importData
@microServiceCore
@extendData
@addCustomMethod(repository-service)
@replaceServiceMethod(save)
@moduleName(metadata)
entity CommonTableRelationship {
	name String required maxlength(100) /** 名称 */
	relationshipType RelationshipType required /** 关系类型 */
	sourceType SourceType required /** 来源类型 */
	otherEntityField String maxlength(100) /** 关联表显示字段 */
	otherEntityName String required maxlength(100) /** 关联实体名称 */
	relationshipName String required maxlength(100) /** 关系属性名称 */
	otherEntityRelationshipName String maxlength(100) /** 对方属性名称 */
	columnWidth Integer /** 列宽 */
	order Integer /** 显示顺序 */
	fixed FixedType /** 列固定 */
	editInList Boolean /** 行内编辑 */
	enableFilter Boolean /** 可过滤 */
	hideInList Boolean /** 列表隐藏 */
	hideInForm Boolean /** 表单隐藏 */
	searchForm Boolean /** 显示在搜索表单 */
	system Boolean /** 系统定义 */
	fontColor String maxlength(80) /** 字体颜色 */
	backgroundColor String maxlength(80) /** 列背景色 */
	help String maxlength(200) /** 详细字段说明 */
	ownerSide Boolean /** 是否维护端 */
	dataName String required maxlength(100) /** 数据源名称 */
	webComponentType String maxlength(100) /** Web控件类型 */
	otherEntityIsTree Boolean /** 是否树形实体 */
	showInFilterTree Boolean /** 显示在过滤树 */
	dataDictionaryCode String maxlength(100) /** 字典表代码 */
	clientReadOnly Boolean /** 前端只读 */
	endUsed EndUsedType /** 前端用法 */
	@endUsed(codeEditor)
	options String /** 关系配置项 */
}

// <%_ if (ormTool === 'hibernate' && databaseTypeSql || !databaseTypeSql) { %>
/** 通用扩展数据 */
@skipClient
@skipMenu
@skipComponent(domain-restController-controllerTest)
@addCustomMethod(repository-service)
@moduleName(metadata)
entity CommonExtData {
	fieldName String required maxlength(100) /** 属性名 */
	commonFieldType String/** 通用字段类型 */
	commonFieldId Long /** 通用数据Id */
	ownerType String /** 宿主实体名称 */
	ownerId Long /** 宿主实体Id */
}

/**
 * 通用整数
 */
@skipClient
@skipMenu
@skipComponent(restController-controllerTest)
@commonField
@moduleName(metadata)
entity CommonInteger {
	ownerType String /** 宿主类别名称 */
	ownerId Long /** 宿主Id */
	fieldName String /** 对应属性名 */
	value Integer /** 值 */
}
/**
 * 通用长整
 *
 */
@skipClient
@skipMenu
@skipComponent(restController-controllerTest)
@commonField
@moduleName(metadata)
entity CommonLong {
	ownerType String /** 宿主类别名称 */
	ownerId Long /** 宿主Id */
	fieldName String /** 对应属性名 */
	value Long /** 值 */
}
/** 通用布尔
 * config: {"commonField": true}
*/
@skipClient
@skipMenu
@commonField
@skipComponent(restController-controllerTest)
@moduleName(metadata)
entity CommonBoolean {
	ownerType String /** 宿主类别名称 */
	ownerId Long /** 宿主Id */
	fieldName String /** 对应属性名 */
	value Boolean /** 值 */
}
/** 通用字符串
 * config: {"commonField": true}
*/
@skipClient
@commonField
@skipMenu
@skipComponent(restController-controllerTest)
@moduleName(metadata)
entity CommonString {
	ownerType String /** 宿主类别名称 */
	ownerId Long /** 宿主Id */
	fieldName String /** 对应属性名 */
	value String /** 值 */
}
/** 通用日期时间
 * config: {"commonField": true}
*/
@skipClient
@commonField
@skipMenu
@skipComponent(restController-controllerTest)
@moduleName(metadata)
entity CommonZonedDateTime {
	ownerType String /** 宿主类别名称 */
	ownerId Long /** 宿主Id */
	fieldName String /** 对应属性名 */
	value ZonedDateTime /** 值 */
}
/** 通用单精度
 * config: {"commonField": true}
*/
@skipClient
@commonField
@skipMenu
@skipComponent(restController-controllerTest)
@moduleName(metadata)
entity CommonFloat {
	ownerType String /** 宿主类别名称 */
	ownerId Long /** 宿主Id */
	fieldName String /** 对应属性名 */
	value Float /** 值 */
}
/** 通用双精度
 * config: {"commonField": true}
*/
@skipClient
@commonField
@skipMenu
@skipComponent(restController-controllerTest)
@moduleName(metadata)
entity CommonDouble {
	ownerType String /** 宿主类别名称 */
	ownerId Long /** 宿主Id */
	fieldName String /** 对应属性名 */
	value Double /** 值 */
}
/** 通用长文本
 * config: {"commonField": true}
*/
@skipClient
@commonField
@skipMenu
@skipComponent(restController-controllerTest)
@moduleName(metadata)
entity CommonTextBlob {
	ownerType String /** 宿主类别名称 */
	ownerId Long /** 宿主Id */
	fieldName String /** 对应属性名 */
	value TextBlob /** 值 */
}

/** 通用日期
 * config: {"commonField": true}
*/
@skipClient
@commonField
@skipMenu
@skipComponent(restController-controllerTest)
@moduleName(metadata)
entity CommonLocalDate {
	ownerType String /** 宿主类别名称 */
	ownerId Long /** 宿主Id */
	fieldName String /** 对应属性名 */
	value LocalDate /** 值 */
}

/** 通用大数
 * config: {"commonField": true}
*/
@skipClient
@commonField
@skipMenu
@skipComponent(restController-controllerTest)
@moduleName(metadata)
entity CommonBigDecimal {
	ownerType String /** 宿主类别名称 */
	ownerId Long /** 宿主Id */
	fieldName String /** 对应属性名 */
	value BigDecimal /** 值 */
}
//	<%_ } _%>

relationship ManyToOne {
	/** 关联实体 */
	CommonTableRelationship{relationEntity(name)}
	to
	CommonTable

	/** 字典表节点 */
	CommonTableRelationship{dataDictionaryNode(name)}
	to
	DataDictionary

	//<% if (applicationType === 'gateway' || applicationType === 'monolith') { %>

	/** 业务类型 */
    CommonTable{businessType(name)}
    to
    BusinessType
	//<% } %>
}
relationship OneToMany {
    @annotationOnSource(editInForm-editByTable-unidirectional)
	/** 字段 config: {"orderBy": "order asc"} */
	CommonTable{commonTableFields(title)}
	to
	/** 所属表 config: {"additionalShowFields": ["tableName"]}*/
	CommonTableField{commonTable(name)}

    @annotationOnSource(editInForm-editByTable-unidirectional)
	/** 关系 config: {"orderBy": "order asc"} */
	CommonTable{relationships(name)}
	to
	/** 所属表 config: {"additionalShowFields": ["entityName", "tableName"]} */
	CommonTableRelationship{commonTable(name)}

}

filter * except CommonBigDecimal, CommonLocalDate, CommonTextBlob, CommonDouble, CommonFloat, CommonZonedDateTime, CommonString, CommonBoolean, CommonLong, CommonInteger, CommonExtData
service all with serviceClass
clientRootFolder CommonTable, CommonTableField, CommonTableRelationship with modelConfig
dto CommonTable, CommonTableField, CommonTableRelationship with mapstruct
// <%_ if (ormTool === 'hibernate') { %>
dto CommonInteger, CommonLong, CommonBoolean, CommonString, CommonZonedDateTime, CommonFloat, CommonDouble, CommonExtData, CommonTextBlob, CommonLocalDate, CommonBigDecimal with mapstruct
paginate CommonInteger, CommonLong, CommonBoolean, CommonString, CommonZonedDateTime, CommonFloat, CommonDouble, CommonExtData, CommonTextBlob, CommonLocalDate, CommonBigDecimal with pagination
//	<%_ } %>
paginate CommonTable, CommonTableField, CommonTableRelationship with pagination
