package com.jfok.cfcmms.util.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldDefine {
/**
* 字段的中文描述内容
*/
String title();
/**
* 字段的顺序号,在grid中显示字段列表的时候默认按照顺序号排序,生成模块的form和grid字段的时候也是按顺序号来确定顺序
*/
int number() default 0;
/**
* 字段的备注,可以显示在form中字段的label的tooltip上
*/
String remark() default "";
/**
* 是否是此模块的名称字段。名称字段即可以用此名称来描述此条记录的字段,例如一个合同的合同名称,或一份订单的订单号,
* 在对记录作某些操作的时候的堤示信息中会加入这个字段的信息,在form窗口中,会将名称字段的内容显示在title处;
* 在grid中会将选中的记录的名称字段内容显示在title中。
*/
boolean nameField() default false;
/**
* 是否是隐藏字段。如果是的话,在form中会创建一个hiddenfield,在grid和查询的时候都不会加入此字段。
*/
boolean hidden() default false;
/**
* 字段的分组。在生成默认的form和grid的时候,会根据fieldGroup来进行分组。
*/
String fieldGroup() default "默认组";
/**
* 如果定义了,将会在sql中使用相应的表达式(某些数据库不能使用计算字段,只能用这个代替了)
*/
String formula() default ""; // 如果是自定义的字段,将sql中能用的表达式写于此处
/**
* 此字段是否可以汇总,数值字段和有分子分母的除法的字段可以设置
*
* @return
*/
boolean allowSummary() default false;
/**
* 可以进行分组
*
* @return
*/
boolean allowGroup() default false;
/**
* 计量单位
*
* @return
*/
String unitText() default "";
/**
* 对字段值设置的一个tooltip的tpl表达式。例如 合同名称{agreementname},签订于{signDate:}
*
* @return
*/
String tooltipTpl() default "";
/**
* 如果是一个比率值,那么需要分子和分母,这样在分类汇总和总计的时候,分子分母分别相加再除,即为加权平均
*/
String divisor() default "";
String denominator() default "";
/**
* 是否可以用个,千,万,百万,亿的数值单位来显示在grid中,在form中显示原值
*
* @return
*/
boolean isMonetary() default false;
/**
* 一些附加设置,如
* formfield:{comboThisField:true},
* field : {searchCondOrder :41 }
* @return
*/
String otherSetting() default "";
}
字段类为_ModuleField.java,其部分定义如下:@TableDefine(group = "系统模块", id = 9903, title = "模块字段")
public class _ModuleField implements Serializable, _IModuleControlInterface {
@Id
@FieldDefine(title = "ID号", number = 10)
@Column(nullable = false)
private Integer tf_fieldId;
@JsonIgnore
@ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
@JoinColumn(name = "tf_moduleId", nullable = false)
@FieldDefine(title = "所属模块", number = 20)
private _Module tf_Module;
@JsonIgnore
@FieldDefine(title = "顺序号", number = 30)
private Integer tf_fieldOrder;
@FieldDefine(title = "字段内容", number = 40, nameField = true)
@Column(length = 50, nullable = false)
private String tf_title;
@FieldDefine(title = "字段名", number = 50)
@Column(length = 50, nullable = false)
private String tf_fieldName;
@FieldDefine(title = "类型", number = 60)
@Column(length = 50, nullable = false)
private String tf_fieldType;
@JsonProperty("l")
@FieldDefine(title = "长度", number = 70)
private Integer tf_fieldLen;
@FieldDefine(title = "字段分组", number = 75)
private String tf_fieldGroup;
// 字段的关联类型 ,ManyToOne,OneToOne,OneToMany
@JsonIgnore
@FieldDefine(title = "关联类型", number = 80)
@Column(length = 20)
private String tf_fieldRelation;
@JsonIgnore
@FieldDefine(title = "表字段实名", remark = "数据表中的实际字段名", number = 90)
@Column(length = 50)
private String tf_DBfieldName;
@JsonIgnore
@FieldDefine(title = "字段公式", remark = "公式字段的具体内容", number = 100)
private String tf_DBformula;
@JsonIgnore
@FieldDefine(title = "百分比分子", number = 105)
@Column(length = 50)
private String tf_divisor;
@JsonIgnore
@FieldDefine(title = "百分比分母", number = 106)
@Column(length = 50)
private String tf_denominator;
......
}版权声明:本文为博主原创文章,未经博主允许不得转载。
常规功能和模块自定义系统 (cfcmms)—016模块字段的定义
原文:http://blog.csdn.net/jfok/article/details/49863603