Extjs5开发学习33单个模块的设计1建立表和bean.docx
《Extjs5开发学习33单个模块的设计1建立表和bean.docx》由会员分享,可在线阅读,更多相关《Extjs5开发学习33单个模块的设计1建立表和bean.docx(25页珍藏版)》请在冰豆网上搜索。

Extjs5开发学习33单个模块的设计1建立表和bean
Extjs5开发学习-33-单个模块的设计[1建立表和bean]
现在开始进入这个系统的第一个核心部分,就是如何对模块的功能进行设计。
请看下图,一个最简单的模块包括的内容有:
模块属性,字段属性,列表定义和表单定义。
在上面的定义中,一个模块可以有n个字段组成,可以有若干个列表方案和表单方案;每一个列表和表单可以有若干个组组成,每个组下面又有若干个字段。
这样的设计也符合这个教程的前20节中设计出来的功能。
现在要做的就是把这些功能做成前后台交互的。
先开始模块字段和列表方案的定义。
以上各个方案的定义也都是放在数据库中的,因此先要建立好各个表和javabean。
建立模块字段的表_ModuleField。
[sql] viewplain copy
1.CREATE TABLE [dbo].[_ModuleField](
2. [tf_fieldId] [int] NOT NULL,
3. [tf_moduleId] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
4. [tf_fieldOrder] [int] NULL,
5. [tf_title] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
6. [tf_fieldName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
7. [tf_fieldType] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
8. [tf_fieldGroup] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
9. [tf_fieldLen] [int] NULL,
10. [tf_propertyTypeId] [int] NULL,
11. [tf_isHidden] [bit] NULL,
12. [tf_isReadonly] [bit] NULL,
13. [tf_isRequired] [bit] NULL,
14. [tf_isDisable] [bit] NULL,
15. [tf_isUserDefine] [bit] NULL,
16. [tf_userDefine] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL,
17. [tf_allowGroup] [bit] NULL,
18. [tf_allowSummary] [bit] NULL,
19. [tf_otherSetting] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL,
20. [tf_defaultValue] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
21. [tf_remark] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL,
22. [tf_fieldRelation] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
23. [tf_newNeedSelected] [bit] NULL,
24. [tf_showNavigatorTree] [bit] NULL,
25. [tf_DBFieldName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
26. [tf_DBformula] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL,
27. [tf_divisor] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
28. [tf_denominator] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
29. [tf_allowNew] [bit] NULL,
30. [tf_allowEdit] [bit] NULL,
31. [tf_allowInsertExcel] [bit] NULL,
32. [tf_allowEditExcel] [bit] NULL,
33. [tf_haveAttachment] [bit] NULL,
34. [tf_isChartCategory] [bit] NULL,
35. [tf_isChartNumeric] [bit] NULL,
36. CONSTRAINT [PK___ModuleField__4D94879B] PRIMARY KEY CLUSTERED
37.(
38. [tf_fieldId] ASC
39.)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY],
40. CONSTRAINT [_ModuleField_ix1] UNIQUE NONCLUSTERED
41.(
42. [tf_moduleId] ASC,
43. [tf_title] ASC,
44. [tf_fieldName] ASC
45.)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
46.) ON [PRIMARY]
模块字段的:
javabean
[java] viewplain copy
1.package com.jfok.server.hibernate.system;
2.
3.import java.io.Serializable;
4.import javax.persistence.CascadeType;
5.import javax.persistence.Column;
6.import javax.persistence.Entity;
7.import javax.persistence.FetchType;
8.import javax.persistence.Id;
9.import javax.persistence.JoinColumn;
10.import javax.persistence.ManyToOne;
11.import javax.persistence.Transient;
12.import org.codehaus.jackson.annotate.JsonIgnore;
13.import org.codehaus.jackson.annotate.JsonProperty;
14.import org.codehaus.jackson.map.annotate.JsonSerialize;
15.
16.import mon.annotation.FieldDefine;
17.import mon.annotation.TableDefine;
18.
19./**
20. * 每个模块的各个字段
21. *
22. * @author jfok
23. *
24. */
25.@JsonSerialize(include = JsonSerialize.Inclusion.NON_EMPTY)
26.@SuppressWarnings("serial")
27.@Entity
28.@org.hibernate.annotations.Entity(dynamicUpdate = true)
29.@TableDefine(group = "系统模块", id = 9903, title = "模块字段")
30.public class _ModuleField implements Serializable, _IModuleControlInterface {
31.
32. public static final String FIELDID = "tf_fieldId";
33. public static final String FIELDNAME = "tf_fieldName";
34. public static final String MANYTOONE = "ManyToOne";
35. public static final String ONETOONE = "OneToOne";
36. public static final String ONETOMANY = "OneToMany";
37.
38. @Id
39. @FieldDefine(title = "字段序号", number = 10)
40. @Column(nullable = false)
41. private Integer tf_fieldId;
42.
43. @JsonIgnore
44. @ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
45. @JoinColumn(name = "tf_moduleId", nullable = false)
46. @FieldDefine(title = "所属模块", number = 20)
47. private _Module tf_Module;
48.
49. @JsonIgnore
50. @FieldDefine(title = "顺序号", number = 30)
51. private Integer tf_fieldOrder;
52.
53. @FieldDefine(title = "字段描述", number = 40, nameField = true)
54. @Column(length = 50, nullable = false)
55. private String tf_title;
56.
57. @FieldDefine(title = "字段名", number = 50)
58. @Column(length = 50, nullable = false)
59. private String tf_fieldName;
60.
61. @FieldDefine(title = "类型", number = 60)
62. @Column(length = 50, nullable = false)
63. private String tf_fieldType;
64.
65. @JsonProperty("l")
66. @FieldDefine(title = "长度", number = 70)
67. private Integer tf_fieldLen;
68.
69. @FieldDefine(title = "字段分组", number = 75)
70. private String tf_fieldGroup;
71.
72. // 字段的关联类型 ,ManyToOne,OneToOne,OneToMany
73. @JsonIgnore
74. @FieldDefine(title = "关联类型", number = 80)
75. @Column(length = 20)
76. private String tf_fieldRelation;
77.
78. @JsonIgnore
79. @FieldDefine(title = "表字段实名", remark = "数据表中的实际字段名", number = 90)
80. @Column(length = 50)
81. private String tf_DBfieldName;
82.
83. @JsonIgnore
84. @FieldDefine(title = "字段公式", remark = "公式字段的具体内容", number = 100)
85. private String tf_DBformula;
86.
87. @JsonIgnore
88. @FieldDefine(title = "百分比分子", number = 105, remark = "如果这个字段是二个字段的比值,设置分子字段和分母字段,可以在汇总的时候也得出正确的比值")
89. @Column(length = 50)
90. private String tf_divisor;
91.
92. @JsonIgnore
93. @FieldDefine(title = "百分比分母", number = 106)
94. @Column(length = 50)
95. private String tf_denominator;
96.
97. @FieldDefine(title = "缺省值", number = 110)
98. @Column(length = 50)
99. private String tf_defaultValue;
100.
101. // @ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
102. // @JoinColumn(name = "tf_propertyTypeId")
103. // @FieldDefine(title = "字段列表属性", number = 120)
104. // private _PropertyType tf_PropertyType;
105.
106. @FieldDefine(title = "禁用", number = 130)
107. private Boolean tf_isDisable;
108.
109. @FieldDefine(title = "隐藏", number = 140)
110. private Boolean tf_isHidden;
111.
112. @JsonIgnore(false)
113. @FieldDefine(title = "必填", number = 150)
114. private Boolean tf_isRequired;
115.
116. @FieldDefine(title = "可新增", number = 160)
117. private Boolean tf_allowNew;
118.
119. @FieldDefine(title = "可修改", number = 170)
120. private Boolean tf_allowEdit;
121.
122. @JsonIgnore
123. @FieldDefine(title = "可导航", remark = "选中才可以在导航树中显示", number = 180)
124. private Boolean tf_showNavigatorTree;
125.
126. @FieldDefine(title = "可分组", number = 190)
127. private Boolean tf_allowGroup; // 是否允许分组
128.
129. @FieldDefine(title = "小计", number = 200)
130. private Boolean tf_allowSummary; // 是否可以小计及总计
131.
132. @FieldDefine(title = "新增选中", remark = "在新增一条记录时,是否必须在导航树中选择此字段的值", number = 210)
133. private Boolean tf_newNeedSelected;
134.
135. @FieldDefine(title = "字段附件", remark = "可以增加针对此字段的附件", number = 212)
136. private Boolean tf_haveAttachment;
137.
138. @JsonIgnore
139. @FieldDefine(title = "自定义", number = 220)
140. private Boolean tf_isUserDefine;
141.
142. @FieldDefine(title = "其他设置", number = 230)
143. private String tf_otherSetting;
144.
145. @JsonIgnore
146. @FieldDefine(title = "Excel导入", remark = "Excel导入新增时加入此字段可新增", number = 240)
147. private Boolean tf_allowInsertExcel;
148.
149. @JsonIgnore
150. @FieldDefine(title = "Excel修改", remark = "Excel修改后再导入时此字段可更新", number = 250)
151. private Boolean tf_allowEditExcel;
152.
153. @FieldDefine(title = "图表项目", remark = "此字段可以作为图表分析中的一个项目", number = 260)
154. private Boolean tf_isChartCategory;
155.
156. @FieldDefine(title = "图表数据", remark = "此字段可以作为图表分析中的一个数据", number = 270)
157. private Boolean tf_isChartNumeric;
158.
159. @FieldDefine(title = "备注", number = 800)
160. private String tf_remark;
161.
162. // 如果是一个manytoone的字段,那么显示实际ID的字段 _
163. @Transient
164. private String manytoone_IdName;
165.
166. // 如果是一个manytoone的字段,那么显示实际title的字段 _
167. @Transient
168. private String manytoone_TitleName;
169.
170. public _ModuleField() {
171.
172. }
173. //getter and setter
174.}
在上面的这个java类中,对模块字段设置了许多的属性可供定义,这个可以根据软件的扩充自己进行加入和处理。
在这个例子中,我只能讲一下最简单的一些属性的应用。
建立模块列表方案表,列表方案分组表和列表方案分组的字段表。
[sql] viewplain copy
1.CREATE TABLE [dbo].[_ModuleGridScheme](
2. [tf_gridSchemeId] [int] NOT NULL,
3. [tf_moduleId] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
4. [tf_schemeOrder] [int] NOT NULL,
5. [tf_schemeName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
6. [tf_isSystemScheme] [bit] NULL,
7. [tf_isAllowEditInGrid] [bit] NULL,
8. [tf_autoShowFilterEditor] [bit] NULL,
9. [tf_dblClickAction] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
10. [tf_defaultSort] [nvarchar](50) CO