NC5单据开发详细步骤

时间:2024-03-18 14:29:44

NC5单据开发步骤

1. 数据模型设计

1.1 数据设计规范

NC5系列大部分使用PowerDesigner进行数据模型设计,也有使用元数据设计数据模型。本文暂时介绍PowerDesigner的设计方法。
NC中的常用的数据类型大致为:

类型 数据库类型 备注
档案主键 Char(20)
公司主键 Char(4) 字段名称为pk_corp
日期 Char(10) 2013-08-22
日期时间 Char(19) 2013-08-22 13:19:09
逻辑型 Char(1) Y,N
整数 int
数字、金额型 Decimal(20,4 长度为20,小数占4位
文本型 Varchar(20)
大文本 Varchar(20)
短文本 Varchar/Char 视长度而定

在设计数据模型的时候每张表都必须设计ts{Char(19)}、dr{int}、pk_corp{char(4)}三个字段,分别表示记录的最后操作时间、删除标记、公司标记。
如果单据需要走审批流或业务流推式、拉式生成单据,则必须加上如下几个字段(如原单据已经考虑到则不需要添加):

编码 名称 类型 备注
pk_corp 公司主键 char(4) 审批流单据必须字段
pk_billtype 单据类型 varchar(10) 审批流单据必须字段
vbillstatus 单据状态 int 审批流单据必须字段
vapproveid 审批人ID char(20) 审批流单据必须字段
dapprovedate 审批日期 char(10) 审批流单据必须字段
voperatorid 操作人id char(20) 审批流单据必须字段
doperatdate 制单日期 char(10) 审批流单据必须字段
vapprovenote 审批批语 varchar(300) 审批流单据必须字段
vbillno 单据号 varchar(50) 审批流单据必须字段
pk_busitype 业务类型 varchar(50)
vbusicode 业务编码 varchar(50)
vlastbilltype 下游单据类型 char(20)
vlastbillid 下游单据ID char(20)
vlastbillrowid 下游行ID char(20)
vsourcebilltype 源头单据类型 char(20)
vsourcebillid 源头单据 char(20)
vsourcebillrowid 源头单据行ID char(20)

1.2 数据模型

课程信息(bd_course)

编码 名称 类型 备注
pk_courseid 课程主键 char(20)
coursecode 课程编码 varchar(100)
coursename 课程名称 varchar(100)
maxstunum 最大选修人数 int
memo 课程简介 varchar(300)
classroom 教室 varchar(100)
campus 所属校区 varchar(100)
major 限定专业 varchar(100)
credit 学分 int
creditcour 学时 int
pk_corp 公司 char(4)
ts 时间戳 char(19)
dr 删除标记 int

学生信息(bd_student)

编码 名称 类型 备注
pk_student 主键 char(20)
stuno 学号 varchar(20)
stuname 姓名 varchar(20)
age 年龄 int
stuid 身份证号 varchar(20)
birthplace 户口所在地 varchar(20)
address 现住址 varchar(50)
sex 性别 char(1)
telephone 联系电话 varchar(20)
email 邮箱 varchar(20)
birthday 出生日期 char(10)
classname 班级名称 varchar(50)
indate 入学时间 char(10)
isgraduate 是否毕业 char(1) Y、N
outdate 毕业时间 char(10)
voperatorid 创建人 char(20)
doperatdate 创建日期 char(10)
vmodifierid 修改人 char(20)
dmodifytime 修改时间 char(19)
pk_corp pk_corp char(4)
ts ts char(19)
dr dr int

学生信息子表~紧急联系人(bd_contact)

编码 名称 类型 备注
pk_contact 主键 char(20)
pk_student 学生主键 char(20)
name 姓名 varchar(20)
mobile 电话 varchar(20)
phone 家庭电话 varchar(20)
unitname 联系人单位 varchar(50)
address 联系人地址 varchar(50)
relation 关系 int 父亲、母亲、配偶、亲人、朋友、同事、同学
ts ts char(19)
dr dr int

选修课程申请(st_courseapply)

编码 名称 类型 备注
pk_courseapply 主键 char(20)
classname 所属班级 varchar(50)
pk_student 申请学生 char(20)
teacher 班主任 varchar(50)
voperatorid 申请人 char(20)
doperatdate 申请日期 char(10)
vmodifierid 修改人 char(20)
dmodifydate 修改时间 char(19)
vapproveid 审批人 char(20)
vapprovenote 审批批语 Char(100)
dapprovedate 审批日期 char(10)
pk_billtype 单据类型 varchar(10)
vbillstatus 单据状态 int
vbillno 申请单号 varchar(50)
pk_corp pk_corp char(4)
ts ts char(19)
dr dr int

选修课程(st_courseapply_b)

编码 名称 类型 备注
pk_courseapply_b 主键 char(20)
pk_courseapply 申请单主键 char(20)
pk_cours 课程ID char(20)
credit 学分 int
memo 备注 varchar(300)
ts ts char(19)
dr dr int

1.3 PowerDesigner 建模

1) 使用PowerDesigner 新建物理数据模型,点击菜单栏新建按键,弹出如下界面:
NC5单据开发详细步骤
红圈处DBMS选择你所使用的数据库类型

2) 在Palette中选择表格后在空白区域点击,创建一个表对象,之后点击指针切换回鼠标界面。
NC5单据开发详细步骤

3) 双击table会打开详细设计界面,在界面中填写对象中文名称与表名称
NC5单据开发详细步骤

4) 点击旁边的Columns 页签,在该页签下添加详细的字段信息,如当前表有主键,请参考红框处设置表主键。
NC5单据开发详细步骤

5) 以此类推完成其他几张表的设计工作。完成后注意保存模型文件,后缀为.pdm。

6) 导入数据字典,进入NC,客户化》二次开发工具》数据字典管理, 打开后新建一个文件夹,可以命名为:开发培训
NC5单据开发详细步骤

7) 使用工具下面的导入数据字典进行数据导入,详见下图
NC5单据开发详细步骤

2. 单据开发向导

2.1 开发前准备

1) 启动Eclipse,点击菜单栏 Window》 Preferenecs 》MDE Development ,在该界面中选择NC相关环境。(配置仅作参考,具体视情况而定)
NC5单据开发详细步骤

2) 选择后,DriverList中会默认生成一个design的数据源,在列表中选择一个你配置的数据源,点击As design 即可。注意:请保证该列表的数据中

3) 点击菜单栏新建,弹出窗口选择 Module Project。
NC5单据开发详细步骤

4) 确定后在在界面中输入Java工程名称及在NC中的模型名称,完成后Finish即可。
NC5单据开发详细步骤

5) 在工程下创建一个文件夹,命名为pdm,将设计好的PDM文件拷贝到该目录。
NC5单据开发详细步骤

6) 双击打开PDM,在弹出的界面点击右上角的小人,解析表结构,检查一下表名有没有正常解析,选择左下解的Oracle选项,然后导出建表脚本。
NC5单据开发详细步骤

7) 导出建表脚本后,需要选择工程右键刷新,可以看到工程下存在ncscript 目录,该目录中包含Oracle、sqlserver的建表脚本。使用相应的SQL脚本在数据库中创建表。
NC5单据开发详细步骤

2.2 列表型档案界面(课程信息维护)

2.2.1 生成单据VO

1) 双击打开PDM文件,解析数据后,选择要生成VO的表,点击右方向箭头,将其移运到主表名称中,在包名称中输入包路径,点击生成VO即可。
NC5单据开发详细步骤

2) 生成完成后,选择工程右键刷新,即可在Public目录下看到刚刚生成的代码。
NC5单据开发详细步骤

2.2.2 创建UI代码

1) 工程右键 选择NC Plugin》单据开发。
NC5单据开发详细步骤

2) 在弹出界面中填写生成代码的包路径、单据类型、界面模型等。包路径最少为4层,单据类型编码为4个字符长度,代码模板选择列表界面。
NC5单据开发详细步骤

3) 完成后点击Next确认要生成的文件,点击Finish完成即可生成代码,生成代码后请右键刷新工程,即可显示刚刚生成的代码。
NC5单据开发详细步骤

4) 生成的文件大致会有三个,功能描述如下:

类名称 备注
ClientCtrl 负责配置界面
ClientEventHandler 负责管理界面的按钮事件
ClientUI 负责提供统一入口,同时管理界面字段的修改事件

5) 打开ClientCtrl类文件,列表界面需要在实现一个接口:nc.ui.trade.bill.ISingleController,并修改其生成的方法isSingleDetail() 返回值为true。

6) 设置单据使用的VO对象,修改CilentCtrl的getBillVoName() 方法,将返回值改为:return new String[]{HYBillVO.class.getName(),CourseVO.class.getName(),CourseVO.class.getName()};
nc.vo.trade.pub.HYBillVO 为NC产品使用的通用聚合VO对象,这个结构可以理解成:【聚合VO,表头VO,表体VO1,表体VO2】

7) 为界面添加按钮,实现public int[] getCardButtonAry()方法,该方法为卡片界面下的按钮数据

8) 查看一下生成的几个类中的方法,部分有注释,也可以从字面意思上猜出一部分。

2.2.3 功能注册

1) 在开发环境中启动NC服务端,右键工程》Run as》NC Middleware。等控制台打出Server startup in XXXX ms 的时候说明服务器端已经启动成功。现在就可以启动客户端程序了, 启动客户端使用:Run As》NC Client。
NC5单据开发详细步骤

2) 进入到NC 集团下。打开功能注册的节点:客户化》二次开发工具》系统管理工具》功能注册。 选择左边树形的根目录(功能注册)点击增加,右边的数据参考下图。
NC5单据开发详细步骤

左边选择刚刚添加的【开发培训】,点击增加,增加一个二级目录【学生管理系统】
NC5单据开发详细步骤

选择【学生管理系统】增加可执行的功能节点,也就就是刚刚生成的ClientUI类名称全路径。可以在Eclipse中打开类文件,选择类的名称,然后右键选择Copy Qualified Name即可拷贝全路径。
NC5单据开发详细步骤

3) 注意在NC中二次开发出来的功能,为了逃避授权的限制,默认第3位为H,否则部署到客户机会提示超过最大授权数。

4) 功能注册完成后需要注册一下模块信息、平台信息等,打开客户化》二次开发工具》UAP集成开发工具,点击第一个图标 会弹出一个界面,左边树形菜单选择业务组件,点击上方的 ‘ + ’按钮,增加模块信息。模块分类信息为刚刚在功能注册添加的一级模块名称。 选中子模块 添加子模块信息,注意子模块的名称在右边的下拉菜单中选择,下拉菜单中列出的为 NC Modules下的模块信息,也就是我们创建工程时填写的模块信息。
NC5单据开发详细步骤

模块信息注册完毕后,还需要在系统类型定义中添加模块的信息。
NC5单据开发详细步骤

5) 注意新增加模块还需要在sm_codetocode表中添加一条记录,否则无法将功能分配到公司下。
INSERT INTO sm_codetocode
(DISPCODE, DR, FUNCCODE, ISLEAF, MODULETYPE, PK_CODETOCODE, SUBFUNCCODE, TS)
VALUES
(NULL, 0, ‘HZ’, ‘Y’, 1, ‘demo’, NULL, ‘2013-08-23 17:16:00’)

FUNCCODE:为刚刚新增加的一级菜单名。
PK_CODETOCODE:为功能下主模块名称。

6) 模块信息在将来的开发过程中,不会频繁增加,大部分项目只需要注册了功能节点就可以了。

2.2.4 模板配置

1) 打开客户化》二次开发工具》模板管理 下的单据模板初始化,在该功能下添加单据模板
NC5单据开发详细步骤

2) 在单据类型框中填入刚刚生成类文件时填写的单据类型,此处为“ST01”,点击显示模板,由于系统中不存在ST01的单据,所以右边的增加按钮变成可点击状态。选择左边的表前缀过滤,在文本框中输入也查找的表名称,点击列表显示,即可过滤出我们要使用的表数据,这里选择课程信息表,此处添加到主表。添加完成后点击增加。
NC5单据开发详细步骤

3) 将表对象拖到中间的栏位中
NC5单据开发详细步骤

最终结果为:
NC5单据开发详细步骤

4) 完成后点击菜单栏的模板操作》保存模板,会弹出如下对话框,在框中输入标题与节点号(刚刚注册的功能节点号),点击确定即可
NC5单据开发详细步骤

5) 在菜单栏点击生成查询模板,在弹出框中选择生成到的功能节点。
NC5单据开发详细步骤

6) 完成后点击确定,在弹出的对话框中输入查询模板的名称。
NC5单据开发详细步骤

7) 关联单据的默认模板。在二次开发工具下的功能节点默认模板设置,找到对应的功能节点,添加单据模板、查询模板。
NC5单据开发详细步骤

8) 点击分配按钮,选择单据模板复选框,点击下面的添加,在弹出界面的左边找到刚刚添加的单据模板,右边选择默认模板,模板选择点击放大镜,选择默认模板,确定即可。
NC5单据开发详细步骤

9) 在点击查询模板,点击添加弹出查询模板的分配界面,左边找到该功能节点,右边选择模板后,确定即可。
NC5单据开发详细步骤

10) 最终分配完成后的界面如下图,完成后注意保存数据。
NC5单据开发详细步骤

11) 以上操作完成后,分配一下功能权限就可以看到界面了。
NC5单据开发详细步骤

2.2.5 深入了解

1) 在单据模板初始化中输入单据模板编码,点击显示模板,在点击下方修改按钮,进入到界面修改状态。

2) 选择表体框架,右键弹出菜单栏中点击【页签项目编辑】
NC5单据开发详细步骤

3) 弹出的界面为表体字段的详细配置界面。
NC5单据开发详细步骤

4) 可以通过点击表体的某个字段,在右边的属性页签中配置。
NC5单据开发详细步骤
NC5单据开发详细步骤

5) 不同的数据类型,可以进行不同的类型设置。
整数类型:可以设置最大最小值、字体颜色、千分位等。
NC5单据开发详细步骤
小数类型:可以设置小数的精度,其余跟整数类型一致。
NC5单据开发详细步骤
参照类型:可以设置参照的界面对象
NC5单据开发详细步骤
下拉类型:可以设置下拉列表的显示值及选中后的存储值。
NC5单据开发详细步骤
自定义项档案类型:可以参照到自定义档案列表中的东西。
NC5单据开发详细步骤
6) 在模板块中右键,选择“项目重新排序”,可以变更项目的顺序,也可以使用拖拽。

7) 单据模板中的 主键、外键、pk_corp、ts、dr 等字段,必须设置为卡片列表不显示、不可编辑、非必输项

8) 了解编辑公式与显示公司的作用。

9) 在查询模板初始化中调整默认生成的查询模板
NC5单据开发详细步骤
操作符编码与名称为查询对话框中显示用的字符及生成SQL时使用的操作符号,需要适当调整一下,如果日期型、数字型的,不建议使用包含操作符。字符型的,则不建议使用大于等于、小于等于这样的操作符号。
是否缺省显示为是否默认显示到查询模板的对话框中,一般缺省显示的会列在中间,是否使用的会列在左边的树形中。
调整后的界面,如图:
NC5单据开发详细步骤

2.3 管理型档案界面(学生信息维护)

2.3.1 生成单据VO

生成单据VO,解析完PDM文件,将主表选择到主表,子表选择到子表框中。添加一个包名称,如有需要可以修改一下主子表VO名称。
NC5单据开发详细步骤
点击生成VO,刷新一下工作空间即可。

2.3.2 创建UI代码

右键工程,创建UI代码,注意该代码模板选择管理界面
NC5单据开发详细步骤

2.3.3 功能注册

NC5单据开发详细步骤

2.3.4 模板配置

输入要增加的模板类型,点击显示显示模板,左边选择学生信息主表、与联系人子表,点击增加。
NC5单据开发详细步骤
NC5单据开发详细步骤
将创建日期、创建人、修改人、修改日期移动到表尾,操作是在字段上右键,选择移动项目到表尾,移动完成后的效果如下图。
NC5单据开发详细步骤
NC5单据开发详细步骤
操作人、创建人的数据类型改为参照,类型设置中选择参照的数据为:操作员,并配置显示公式。getColValue(sm_user, user_name, cuserid, voperatorid),主要在列表状态下翻译创建人,将创建人由主键转换为名称。 修改人按上述规则调整,注意显示公式规则不同。
NC5单据开发详细步骤
性别字段修改成下拉类型,数据类型设置成下拉,类型设置点击浏览,弹出界面中录入下图所示的东西。
NC5单据开发详细步骤
NC5单据开发详细步骤
表体的关系字段同样修改成下拉,在类型设置中按下图结构增加。
NC5单据开发详细步骤
NC5单据开发详细步骤
模板修改完成后,生成一下查询模板,然后将两个模板分配到功能节点上。
NC5单据开发详细步骤

2.3.5 深入了解

1) 模板中配置缺省值
在单据模板中,选中性别字段,从下拉列表中选择“男”,保存即可。则新增单据时性别默认为“男”。
NC5单据开发详细步骤
删除标记:0为未删除、1为删除,则可以在删除标记字段默认填写0 。
NC5单据开发详细步骤
NC的逻辑型字段,有两个值:Y、N,未勾选时为N。实际上,如果未编辑过模板上的字段,则保存的时候该值为空,我们可以在模板上点击勾选,在点击取消,这样后台存储的时候就为N了。

2) 代码中填写缺省值
如果是表头表尾,则可以写到ClientUI中 setDefaultData()。
getBillCardPanel().getHeadItem(“pk_corp”).setValue(_getCorp().getPrimaryKey());//设置公司主键
getBillCardPanel().getTailItem(“voperatorid”).setValue(_getOperator());//为表尾的创建人赋值。

可以通过这种方式,为公司、创建人、创建时间 等字段赋上当前登录公司、操作人等信息。

如果是表体的字段,则必须重写ClientEventHandler下的onboAddline()方法,在增行的时候赋上值(仅适用于单表体)。
getBillCardPanelWrapper().getBillCardPanel().getBillModel().setValueAt(“缺省值”),
getBillCardPanelWrapper().getBillCardPanel().getRowCount()-1, “字段”);

2.4 管理型审批单据(选修课程审批单)

2.4.1 生成单据VO

NC5单据开发详细步骤

2.4.2 创建UI代码

NC5单据开发详细步骤
生成完代码需要刷新工作空间,此单据生成的代码如下图:
NC5单据开发详细步骤
完成后需要修改Ctrl类的 getBillVOName()方法,添加刚刚生成的两个VO类。
NC5单据开发详细步骤
Ctrl类的getBusinessActionType()返回值为IBusinessActionType.PLATFORM ,表示该单据是走审批流的,与上面讲的两个单据返回值是不同的,需要注意。
NC5单据开发详细步骤
注意审批流单据需要将public boolean isExistBillStatus() 的返回值设置为true。

2.4.3 功能注册

NC5单据开发详细步骤

2.4.4 单据信息注册

1) 在客户化》二次开发工具》单据管理》单据类型管理 节点注册单据信息,选择左边的开发培训节点,新增单据类型。
 类型代码:创建UI类时填写的单据类型,此处为“ST03”。
 类型名称:单据的名称,
 功能节点编号:HZH103,该单据对应的功能节点。
 审批节点编号: +功能节点编码HZH103,注意一定要以“”打头,否则会出错。
 审批流检查类:默认使用:nc.bs.trade.business.HYSuperDMO,如需修改请参考该类。
填完保存即可。
NC5单据开发详细步骤

2.4.5 对照注册

在VO对照管理中配置单据界面的信息,打开客户化》二次开发工具》单据管理》单据类型管理,在单据类型中输入刚刚注册的单据类型编码,然后回车,在界面中填写与单据相关的数据。

主表需要填写的信息为:
 主子VO类名称:主表VO的全路径,对应Ctrl类getBillVOName() 数组的第二个字符串。
 单据VO类名称:聚合VO的全路径,对应Ctrl类getBillVOName() 数组的第一个字符串。
 主表的关键字段:主表VO的主键。
 审批人:主表VO中设计的审批人字段
 制单人:主表VO中设计的制单人字段
 单据ID:主表VO的主键
 对应数据库表:主表对应的表结构
 单据编号:主表设计的单据号字段
 单据类型:主表设计的单据类型字段
埴写完成后注意点击保存,详细参考下图:
NC5单据开发详细步骤
点击子表单选框,该界面需要填写的内容为:
主子VO类名称:子表的VO全路径,对应Ctrl类getBillVOName() 数组的第3个字符串
单据VO类名称:聚合VO类全路径, 对应Ctrl类getBillVOName() 数组的第1个字符串
主表在子表的字段:子表VO的public String getParentPKFieldName() 返回的值,一般为主表的主键
 对应数据库表:子表VO的表名称。
配置完成后注意点击保存,详细情况,参考下图:
NC5单据开发详细步骤

2.4.6 动作脚本注册

复制动作脚本类中注释的SQL脚本,执行SQL语句(一共6个类,12行SQL语句)。
NC5单据开发详细步骤
打开客户化》二次开发工具》单据管理》单据动作执行脚本 在树形中找到ST03 可以看到多出6个脚本。
NC5单据开发详细步骤
打开客户化》二次开发工具》单据管理》单据动作管理 可以看到有6个动作
NC5单据开发详细步骤

2.4.7 模板配置

增加模板单据,命名为“ST03”
NC5单据开发详细步骤
NC5单据开发详细步骤
调整一下模板
NC5单据开发详细步骤
保存模板
NC5单据开发详细步骤

2.4.8 审批流定义

NC5单据开发详细步骤
审批过程中,如上图所示,测试2是审批者,所以当测试1提交单据之后,要审批测试1的单据就必须登录测试2的账号去审批,提交单据消息和审批单据消息都会出现在首页消息中心
NC5单据开发详细步骤

2.4.8 单据号管理

单据号是自动生成的,这里相当于给单据号定一个规格标准
NC5单据开发详细步骤

2.4.9 权限分配

NC5单据开发详细步骤
NC5单据开发详细步骤
当你在功能节点默认模板设置那里对应的目录下找不到你的节点时,先别紧张,因为很可能他跑到其他节点下面去了!