制作简单单表模块员工管理第4节.docx
- 文档编号:27244451
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:40
- 大小:6.41MB
制作简单单表模块员工管理第4节.docx
《制作简单单表模块员工管理第4节.docx》由会员分享,可在线阅读,更多相关《制作简单单表模块员工管理第4节.docx(40页珍藏版)》请在冰豆网上搜索。
制作简单单表模块员工管理第4节
制作简单单表模块—员工管理
1、创建数据库
字段名
字段类型
可以为空
字段说明
ID
VARCHAR2(32)
否
表主健
EMPLOYEE_NO
VARCHAR2(16)
是
员工编号
NAME
VARCHAR2(30)
是
员工姓名
GENDER
VARCHAR2
(1)
是
员工性别,取值为F:
女,M:
男,N:
不确定
DATE_OF_BIRTH
DATE
是
员工出生日期,格式为YYYYMMDD
ADDRESS_OF_BIRTH
VARCHAR2(50)
是
籍贯,只填入省份即可
VARCHAR2(50)
是
电子邮件
ADDRESS
VARCHAR2(100)
是
家庭住址
CELL_PHONE
NUMBER(11)
是
移动电话
JOB_TITLE
VARCHAR2(50)
是
工作职位
DEPT_ID
VARCHAR2(32)
是
员工所属部门
CREATED_BY
VARCHAR2(32)
是
创建人
CREATION_DATE
DATE
是
创建时间
LAST_UPDATED_BY
VARCHAR2(32)
是
最后修改人
LAST_UPDATE_DATE
DATE
是
最后更改时间
LAST_UPDATE_IP
VARCHAR2(20)
是
最后更改IP
VERSION
NUMBER(16)
是
版本
ATTRIBUTE_01
VARCHAR2(255)
是
预留字段1
ATTRIBUTE_02
VARCHAR2(255)
是
预留字段2
ATTRIBUTE_03
VARCHAR2(255)
是
预留字段3
ATTRIBUTE_04
VARCHAR2(255)
是
预留字段4
ATTRIBUTE_05
VARCHAR2(255)
是
预留字段5
ATTRIBUTE_06
VARCHAR2(255)
是
预留字段6
ATTRIBUTE_07
VARCHAR2(255)
是
预留字段7
ATTRIBUTE_08
VARCHAR2(255)
是
预留字段8
ATTRIBUTE_09
VARCHAR2(255)
是
预留字段9
ATTRIBUTE_10
VARCHAR2(255)
是
预留字段10
1、数据库名:
ex_employee,用OA用户在PL/SQL中创建,可以现在表中的SQL语句来修改,创
建好以后,必须在apps用户下创建同义词(synonyms),否则在前台链接模块时会出错。
2、利用代码生产器生成模块基本框架
平台代码生产器是MYECLIPSE的一个插件(com.avicit.platform.codegeneration_5.4.1.jar)。
(1)使用代码生产器
在项目LIYANG上点击右健—>NEW—>OTHER—>自动代码生产,点击“NEXT”,在工程选择界面直接点击“NEXT”到生产业务对象界面。
如果此界面出现乱码,需要修改E:
\MyEclipse6.0\eclipse下的eclipse.ini文件中Duser.language=en为Duser.language=zh,并重启MyEclipse。
配置正确的数据库地址、用户OA和密码,点击载入表,选择生产成业务对象的表EX_EMPLOYEE,勾选仅生产POJO和Hibernate配置文件,并指定业务对象路径,点击完成。
生成如下文件:
再重新启动代码生产器,到工程选择窗口。
这时勾选“根据现有hbm文件新建模块”,选择刚才新建的hbm文件,点击“NEXT”。
到生成业务模块界面。
选择业务模块路径和JSP文件路径,以及模板类型,并勾先用于查询的字段,点击完成。
这样一个简单的单表模块就已经完成了。
我们看生产的文件:
1、在/LIYANG/src/avicit/oa/module/tp/exemployee下生成:
action下包含页面控制层的类,configuration下包含模块的配置文件,domain下包含业务处理层,view下包含dorado的view配置文件,Orm下是业务对象。
2、在/LIYANG/web/oa/module/tp/exemployee下生成:
web下是模块的jsp对象。
生产模块后需要重启tomcat。
重启完后重新登录系统,将该模块挂入平台的菜单。
1、打开“系统管理”—“权限管理”—“菜单结构维护”—“添加子项菜单”,填写菜单标题,设定好路径,然后单击保存。
2、接下来进行角色的授权,将该菜单授权给一般用户,接着点“重新加载缓存”,刷新页面就可以见到刚才的菜单,点击打开该模块。
3、功能完善
1、管理主页面的上方区域是一个模块的查询区,查询区是用dorado的form组件来展现的。
打开exEmployeeManager.view.xml文件,查询区的dataset是一个formdataset,查询区的lable属性对应dataset的fields的lable属性,更改lable然后保存,再刷新页面,就可以看到修改后的效果。
同样,下面table的描述也对应dataset中fields的描述,更改相应的描述后保存。
接下将table中不用的字段先移除,控件table中的字段是显示给用户看的,因此不想显示给用户看的字段可以直接在控件table中删除即可。
2、接下来看一下添加功能。
在OverView中打开buttonadd,在command中邦定了一个添加command,打开commandadd,在path下设置添加页ex_employee_add.jsp,查看添加页面的高,添加页面的宽和打开方式。
点击添加按钮,执行requstcommand,打开一个新的添加页,同样在exEmployeeAdd.view.xml添加页的dataset中修改相应的fields属性。
3、平台通用代码的使用
是用来辅助制作常用下拉列表的,例如“性别”下拉列表,要制作这样的下拉列表,首先在平台的系统管理—配置管理—通用代码管理中维护好相应的通用代码,如性别、有效标识、人员密级等代码平台已经存在,我们只需要查找到相应的通用代码值,记住性别的通用代码值。
接下来,在add.view的DATASET中插入DATASETREFERENCE,选择DATASETLOCKUP点击确定。
接下来新建一个参数,这里要注意参数名称一定叫lookupType,填入相应的通用代码值“GENDER”,并保存。
按照规范为你的DATASET命名,那么这个DATASET就会根据你设定的通用代码值“GENDER”去通用代码表中加载下拉列表中的选项,这里LOOKUPCODE对应系统代码值,LOOKUPNAME对应系统代码名称,接下在Controls下创建一个DATASETDROPDOWN,如下:
点击完成。
最后将性别下拉列表绑定到“GENDER”字段上,保存。
回到前台刷新页面,就可以看到性别下拉列表的效果。
接下来利用hql查询制作下拉列表。
首先创建一个DATASETREFRENCE,选择DATASETLOOKUPHQL,创建一个参数,名称为hql,同样参数的命名必须为hql,在value中未填入hql查询语句“selectid,positionNamefromHrPosition”,然后保存。
接下创建一个DataSetDropDrown。
点击完成。
最后将职位的下拉列表与职位的字段绑定,保存。
重新刷新页面就出以下效果。
接下来是平台公共选部门页使用。
用来进行员工部门的选取,一般情况下利用dorado的CustomDropdown来实现这个功能,首先新一个CustomDropDown,设定好弹出页的路径path为../../../platform/module/system/commonpopup/dept_tree_popup.jsp,也就是公共选部门页的路径,要根据页面所处的层级正确的维护相对路径,fix设定true,点击完成。
进行一些属性的更改。
readfields是指从公共弹出页读取的字段,我们这里读取部门的ID以及部门的名称DEPT_NAME,这里要注意要读取的ID,DEPT_NAME是在弹出页上已经设定好的,因此字段的命名不能随意更改。
Writefields是指将读取到的字段写入哪些字段,那么当然我们是将读取到的部门ID存入到本页面上DATASET的部门ID字段中,将读取到的部门名称DEPT_NAME存入到本页面上DATASET的部门名称字段中,而在数据库设计时我们一般只存储ID,而不存储部门名称,也就是说员工表中只有一个部门ID的字段,那么部门名称我们就要借助虚拟字段来完成,虚拟字段是DATASET中一种虚拟的字段类型。
它并不对应数据库表的真实字段,一般情况下我们将从表中加载到的数据经过一些转换处理得到另一种数据展现给用户看的时候会使用到虚拟字段,如下:
接下来设定好writefields,将读取到的部门ID放到DATASET的DEPT_ID中,读取到的部门名称DEPT_NAME放到DATASET的DEPT_NAME虚拟字段中。
最后将部门下来列表绑定到部门字段上,这里需要注意的是部门ID对应的是数据库的真实字段,是用来存储数据的,而部门名称DEPT_NAME虽然是一个虚拟字段,但是确是用来显示给用户看的,因此要将部门的下拉列表绑定到部门名称DEPT_NAME上。
还要将FORM中显示的部门ID更改为部门名称。
这样所属部门就正确地关联上了部门下拉列表。
刷新前台页面,点击所属部门效果如下:
接下来介绍dorado的常用Validator,就是我们平时说的校验,是在dataset的fields上设置的,常用的有如下。
第一个是必填校验,第二个是长度校验,可以根据数据库的表设计或者业务逻辑在非空字段上添加必填校验,页面lable前面的红星代表必填校验,同样可以添加长度校验,指的是该字段最多能输入的字符数,根据数据库表中该字段的长度来设定,超过长度时将无法输入。
还有一种校验叫做validator-pattern格式校验,一般情况下我们这种校验进行邮箱、手机、邮政编码等这样的字段的格式校验,如在pattern中填入邮箱格式的正则表达式,在errormessage中给出错误提示,这样在填写不正确的邮箱格式之后系统会给出提醒。
在设定好添加页的validator,绑定好下拉列表之后,我们就可以进行数据的添加操作。
那么我们现在来看一下这个提交操作是如何执行的,提交按钮绑定了提交commandsave。
提交commandSave指定了Resolver,以及Resolver中的method方法
当按钮被按下的时候commandsave就会将commandsave所配置的dataset中符合提交方式的那些数据,在这里是当前数据(current)。
带到后台去执行resolver中的method方法,这里的resolver(exEmployeeAction)在/LIYANG/src/avicit/oa/module/tp/exemployee/configuration/spring-module.xml配置文件中所配置的Action的beanid,它对应了一个Action类(avicit.oa.module.tp.exemployee.action.ExEmployeeAction)。
我们找到这个Action类(在LIYANG/src/avicit/oa/module/tp/exemployee/action/ExEmployeeAction.java中),找到其中的insertRecord方法,这个方法就是数据的保存方法。
这里MarmotUpdatecommand(commandsave)所对应的Action方法,它的参数是固定的(MapdataSetMap,Objectparameter),一个是dataSetMap(datasetinfos),一个是parameters。
Action层是页面控制层,只做简单的数据处理与传递,这里面通过dataset(datasetExEmployee)的名字获取到dataset,然后将dataset做为参数传入exEmployeeService方法,Service层(/LIYANG/src/avicit/oa/module/tp/exemployee/domain/impl/ExEmployeeServiceImpl.java)是业务处理层,所有复杂的业务逻辑都在Service层中处理。
首先获取到dataset的记录集(collection),去到当差record的map对象,接下来new一个业务对象,然后调用平台map2Bo的Map2Pojo方法,将dataset的record对象映射到业务对象中(exEmployee),这一步一共做了两个操作。
第一个操作是将用户输入的信息映射到对应的数据库表的字段中,这里需要强调的是象员工性别和工作职位的下拉列表映射到数据库表中的是vluefiled,那么对于性别来说存入数据库表的是系统代码值,对于工作职位这样的下拉列表来说存入数据库表中的是hql查询中的id字段,而所属部门这样的字段映射到数据库表中是部门id(dept_id)这样的真实字段,而我们看到的所属部门仅仅是利用了dorpdown的回写功能写回到部门名称中展示给我们看的。
第二个操作是将数据库表中创建人、修改人等五个字段进行了填充,根据当前登录人的信息填充了这五个字段。
执行完Map2Pojo之后业务对象(exEmployee)中已经装满了用户所输入的信息,接下来调用HibernateDAO()的insertByRecord方法,就可以将业务对象写入数据库,也就是说在数据库表中插入了一条记录,此外,insert方法会自动地将ID以及VERSION这两个字段进行填充,最后调用插日志的方法(insertLog)插入日志,第一个参数是业务对象(exEmployee),第二个参数是方法名("insertRecord"),关于平台的日志还有一点需要注意,为了能准确地记录日志的内容,我们还需要修改一下对应业务对象的方法(/LIYANG/src/avicit/oa/orm/tp/ExEmployee.java)。
首先我们需要修改一下getTitle()方法的返回值,这里的返回值对应了日志的内容,在这个模块我们可以设置为员工姓名(name),这样在记录日志的时候日志的操作内容就是我们设定的Title的返回值,此外我们还需要新添一个方法。
方法名称为getFromName,这个方法的返回值对应了日志的模块名称。
这是数据的添加操作,当添加操作的command执行成功之后,会自动的回调onSuccess事件。
执行onSuccess中的代码
首先刷新父页面中的dataset,这样我们新添加的数据马上就能看得见,然后调用dorado的API将添加页关闭。
添加页的重置按钮的onClick事件中调用dorado的clearDataAPI,将dataset的数据清除。
返回按钮的点击事件中调用hideParentAPI将添加页关闭。
那么数据的更改操作以及删除操作与添加操作类似,都是先获取到dataset的record,然后调用map2pojo方法将record对象映射到业务对象中,最后调用相应的update方法及delete方法将数据的更改以及删除,最后插入相应的日志。
接下来我们介绍一下唯一性校验的做法。
唯一性校验针对的是数据库表中的唯一键,在数据插入之前需要做一下唯一性校验。
首先定义一个查询的Sql,从员工表(ex_employee)中查询员工编号毛等于当前表中员工编号的数据,调用DAO中的findCountBySql()方法进行数据的查询,当count>0,也就是员工表中已经存在该员工编号,此时提醒用户该员工编号已经存在,请重新输入,抛出一个DAO的DaoException();如果count不大于零,也就是说该员工编号还未存在,这时候向表中插入数据,并写入日志,这是添加操作的唯一性校验。
对于更改操作,唯一性校验有一点不同,它的查询条件是查看员工表中是否有这样的一条数据,它的员工编号是当前表中的员工编号,而它的ID不是当前正在编辑的那一条数据的ID,也就是说要排除当前中正在编辑的那条数据。
同样调用findCountBySql()方法进行数据的查询,当count>0的时候提示该员工编号已经存在,请重新输入;当count不大于零的时候,进行数据的更新操作,并写入日志。
我们看一下唯一性校验的效果。
输入重复的员工编号,点击提交,它会提示你该员工编号已经存在,请重新输入。
接下来我们介绍一下LINKBUTTON的实现。
Linkbutton并不是一个普通的button,而是一个超链接形式的button,一般情况下我们的编辑功能全部以Linkbutton的形式来实现。
要做一个Linkbutton,首先要在dataset中添加一个虚拟字段,维护字段的lable(编辑)。
接下来在tableExEmployee中添加一个Column-DataTable与该虚拟字段绑定,设置居中属性。
回到前台刷新,table中出现“编辑”这样的一个列。
接下来设置你的超链接值,也就是给虚拟字段(edit)指定一个defaultValue(编辑),defaultValue是字段的默认值,当dataset加载到的record所对应的field的值为空时,dataset会自动地根据defaultValue给field一个默认值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 制作 简单 模块 员工 管理