第四章 自定义参照开发规范

参照支持自定义参照的定义。
自定义参照可以定义参照的UI界面,也可以只定义参照的Model
1. 参照界面的定义:
参照分为表型、树型、树表型参照三种。继承了UIDialog并实现了IRefUINew接口。
程序员可自定义参照界面,最好也继承UIDialog,须实现IrefUINew接口。
2. 参照Model的定义
对应与3种类型的参照,Model也有3个抽象类:
表型: AbstrarctRefModel
树型 AbstractRefTreeModel
树表型 AbstractRefGridTreeModel
要自定义不同类型参照Model ,请继承相关的抽象类。并设置如下属性:
2.1 表型参照
(黑体为必设项)
i. .如果需要distinct短语,或其他断语:
setStrPatch(“distinct”);
如果需要公司主键(一定在setWherePart前执行,对于默认参照在设置pk_corp后,还须重新设定setWherePart):
setPk_corp(公司主键) ;
setWherePort(……);
设置参照名( 弹出窗口标题),可以和RefNodeName不同:
setRefTitle(参照名)
ii. 设置select子句:
//可显示字段
setFieldCode(new String[] { “bd_psndoc.psncode”, “bd_psndoc.psnname”,”bd_deptdoc.deptname” });
//不可显示字段――如主键
setHiddenFieldCode(new String[]{“pk_corp”});
iii. 中文名称――表头和栏目用
setFieldName(new String[](“人员代码”,”姓名”,”部门名称”));
iv. 设置from子句:
setTableName(“bd_psndoc left outer join bd_deptdoc on bd_psndoc.pk_deptdoc=bd_deptdoc.pk_deptdoc “);
v. 设置where子句:
setWherePart(” bd_psndoc.pk_corp='” + getPk_corp() + “‘”);
注:需要根据不同的公司返回查询,参数中用getPk_corp()方法。
在原setWherPart的基础上追加where子句:
addWherePart();
注:每次都从原where中追加,不允许连续追加where子句。
vi. 设置group子句:(默认为空)
setGroupPart(“”);
vii. 设置order子句:(默认为第一列)
setOrderPart(“”);
viii. 前几列在表中显示:(默认前2列)
setDefaultFieldCount(2);
ix. 设定主键字段:主键字段必须在setHiddenFieldCode或setFieldCode已设定
setPkFieldCode(“bd_psndoc.pk_psndoc”);
x. 设定界面输入字段:(默认为第一列)
setBlurField(字段名);
xi. 设定参照代码字段:(默认为第一列)
setRefCodeField(字段名);
xii. 设定参照名称字段:(默认为第二列)
setRefNameField(字段名);
xiii. 设置助记码字段名:
setMnecode(字段名数组)
xiv. 设置组织类型和组织主键,对于主体账簿类型的档案适用如(会计科目)
setPk_GlOrgBook(组织类型, 组织)

2.2 树型参照设置
(同表型参照的设置,表型参照的必输部分一定要输入。树形设置group子句无效)
指定编码规则(如果为空,则按上下级关系构造树必须指定父字段,子字段):
setCodingRule(“222222”);
指定父字段名:
setFatherField(字段名)
必输一项,否则没有分级规则。
指定子字段名:
setChildField(字段名)
指定根名(默认和参照名相同):
setRootName(根名);
2.3 树表型参照
(黑体为必设项)
设置树数据
i. setClassFieldCode(字段名数组);
ii. setClassFieldName(表名)
iii. setClassWherePart(where子句)
iv. SetOrderPart(Order子句)
v. SetClassJoinField(要和表关联的字段名)
vi. SetClassDefaultFieldCount(数值)(树节点显示字段默认为2)
vii. 指定定编码规则:如果为空,按上下级关系
setCodingRule(“222222”);
viii. 指定父字段名
setFatherField(字段名)
ix. 指定子字段名
setChildField(字段名)
10.指定根名
setRootName(根名);

设置表数据
(同表型参照的设置,表型参照的必输部分一定要输入。下面只列出不同的属性)
i. 设定和树节点数据关联的字段
setDocJoinField(字段名)
ii. 设置精确匹配:默认精确匹配(树上选择一个节点后,查询表数据是否为精确匹配。)
setExactOn(boolean)
iii. 设定读表的树节点最小级次:默认1(末级节点一定会读表数据,其他情况要大于等于该值是才读数据)
setExpandLevel(int)

如果你已经定义好了UI和Model部分,恭喜你,自定义参照已基本定义完成。

使用时在进行如下设置即可:
UIRefPane ref = new UIRefPane();
Ref.setRefUI(自定义界面,一般不需定义用系统默认的);
Ref.setRefModel(自定义参照模型)

3. 覆盖参照抽象Model中的方法的注意事项

nc.ui.bd.ref.AbstractRefModel.getData()
参照默认是按照设定好的Sql语句到后台查询数据,如果想自定义取数,可以覆盖getData() 方法。返回自定义数据即可。但要注意,参照的数据默认情况下是有内存级缓存的,缓存的key为AbstractRefModel.getRefSql()的值,如果该值为null,那参照系统将不会缓存数据。如果要使用参照内存缓存,getRefSql()要有非null的值。

第三章 系统默认参照使用介绍

小编:此文是搬运,将小编收集的资料分享到这,是为了和像我一样的开发人能更快速、更轻松地解决问题,欢迎大家分享自己的内容。
使用对象:NC-V5系列

NC系统中存在大量的基本档案,与之对应,每种基本档案都配置了相应的参照。
使用方法:
UIRefPane是一个控件

这样就定义好了一个部门档案参照。

系统提供的RefNodeName请参见nc.vo.bd.ref.RefNodeNameConst

附录(参数设置平台)

1. 参数设置升级
1) 新增参数
请在升级程序中调用:
void nc.itf.uap.busibean.ISysInitUpdate.insertAllDataFromSysinittemp()

2) 修改、删除参数
请在升级脚本中用update(delete) 语句修改pub_sysinit,pub_sysinittemp中的数据。
例如: delete from pub_sysinit where initcode=’参数编码’
Delete from pub_sysinittemp where initcode=’参数编码’

2. 可能遇到的问题及解决方法
1) 对于产品组程序员在参数输入界面:
i. 进行设置时,参数代码是唯一的,不能重复。
ii. 互斥值与组主参数值相同的参数,在用户参数设置界面可编辑,否则不可编辑。
iii. 对于默认java类的参数,一定将“是否显示”项设为显示,Dialog中的其他参数一定是不显示的。
iv. 对于默认java类的参数,在默认值处输入类全名,包括全路径。
2) 对于用户和实施人员看到的参数设置界面:
i. 输入参数值时不能超过参数范围。
ii. 对于不存在或不启用的模块,将不会显示在用户的参数设置界面。
iii. 对于选择了控制下级的参数,将成为其下级公司(主体账簿)的上级参数,下级公司(主体账簿)对于这些参数是不能修改的。

3. 多语言资源注册说明
新增的参数,要进行多语化。 参数是基于规则进行多语化的。

具体需要多语化的属性有:参数名称,组名称,参数说明,参数范围。
具体字段为:

pub_sysinittemp : initname列、groupname列、remark列、valuelist列

具体规则参见 sysinit 子目录文件。 业务组的文件名请保持唯一。
4. 常见问题
1) 添加参数是否自己编写SQL脚本运行?
pub_sysinittemp脚本可以自己编写,也可以通过二次开发工具下的参数设置来添加参数(集团登录 )
pub_sysinit脚本要自己编写(如果是集团级参数)

2) 是否只需要对pub_sysinit以及pub_sysinittemp表各插入记录即可?
公司级参数只需提供pub_sysinittemp脚本
集团级参数要提供pub_sysinit,pub_sysinittemp脚本
新增的参数,如果是升级环境,还要进行升级处理,调用Uap提供的接口,给已建账公司添加新增的参数。
接口如下:nc.itf.uap.busibean.ISysInitUpdate.insertAllDataFromSysinittemp()

第四章 API

小编:此文是搬运,将小编收集的资料分享到这,是为了和像我一样的开发人能更快速、更轻松地解决问题,欢迎大家分享自己的内容。
使用对象:NC-V5系列

(介绍本功能模块的插件注册与开发技术方案,如有多个插件可按照章节展开)
1. 参数平台对外提供的需实现的接口说明
1) 默认Java类实现接口nc.ui.pub.para.IsysInitPanel
默认值为Java类需要实现nc.ui.pub.para.IsysInitPanel接口
接口有两个方法:
nc.ui.pub.para.ISysInitPanel.getPanel()
产品组设置参数的Panel
nc.ui.pub.para.ISysInitPanel.getSysInitVOs()
用户设置完参数后,按确定按钮,参数设置平台需要调用此方法返回参数VO数组。
注意:产品组得到参数VO数组的方法:
nc.ui.pub.para.SysInitBO_Client.querySysInit(String corpID, String groupCode)

2) 初始化参数值编辑对话框的数据接口nc.ui.pub.para.ICbbData
初始化参数值编辑对话框的数据,用于有特殊要求的业务组。如果编辑对话框的数据是动态变化的,不能把编辑对话框的数据静态地写入数据库。
nc.ui.pub.para.ICbbDataExample.getCbbData() 返回String[]

3) 业务组检查参数是否可编辑、参数是否合法的接口nc.ui.pub.para.ICheckPara
修改参数前,参数是否可编辑;参数保存时,检查参数是否合法。
接口有两个方法:
nc.ui.pub.para.ICheckPara.checkPara(String corpPK,String paraID,String paraValue)
参数保存时,检查参数是否合法:合法返回True;不合法返回False。
nc.ui.pub.para.ICheckPara.editPara editPara(String corpPK,String paraID,String paraValue)
修改参数前,参数是否可编辑:可编辑True;不可编辑False

4) 业务组检查参数是否可编辑、参数是否合法的接口2 nc.ui.pub.para.ICheckPara2
修改参数前,参数是否可编辑;参数保存时,检查参数是否合法。
接口有两个方法:
nc.ui.pub.para.ICheckPara2.checkPara(SysInitVO vo, java.awt.Container parent, SysInitVO[] compvo)
参数保存时,检查参数是否合法:合法返回True;不合法返回False。
nc.ui.pub.para.ICheckPara2.editPara(SysInitVO vo, java.awt.Container parent, SysInitVO[] compvo)
修改参数前,参数是否可编辑:可编辑True;不可编辑False

5) 参数保存前调用的接口nc.bs.pub.para.IBeforSaveSysinit
参数保存后,调用的接口。必须在服务器端实现
void beforSaveSysinit(String pk_org,String initcode,String paraValue,String pkValue)

6) 参数保存后调用的接口nc.bs.pub.para.IAfterSaveSysinit:
参数保存后,调用的接口。必须在服务器端实现
接口方法:
afterSaveSysinit(String corpPk,String initcode, String paraValue, String pkValue)

7) 保存后调用的接口 IAfterSaveSysinit1
参数保存后,调用的接口。继承nc.bs.pub.para.IafterSaveSysinit,新增方法,
void afterSaveSysinit(SysInitVO vo,PkNameVO[] subOrgs,Object obj);

8) 关于参数编辑类型为参照的参数,如何修改参照的一些属性
A、实现 IParaEditComponentCtrl 接口,参数初始化时会传给接口方法当前编辑的参照(UIRefPane)
public void initComponentProp(Object component,Object parameter);
其中 component 请造型为 (UIRefPane)进行参照各种属性的修改.
parameter 为当前的pk_org.
B、注册实现类的全路径到pub_sysinittemp表,editcomponentctrlclass列

2. 参数平台对外提供的调用接口说明

参数的读取可以在UI层,也可以在BS层,视您程序的需要。
前后同一为一个调用接口SysInitBO_Client的静态方法。注意必须调用这个接口,否则可能无法利用到参数缓存的数据。

接口详细见SysInitBO_Client的javadoc

第三章 参数设置

1.节点描述及功能

参数设置可以对所有参数值进行设置,并可以设置参数之间的各种控制条件。
根据多账簿多主体需求内容的要求,参数设置要支持原来的集团/公司的模式,还支持主体/账簿的模式。
根据多账簿多主体需求内容,参数设置功能可以在集团、公司下进行设置。按照参数作用域的不同,将参数分为集团、核算账簿、公司、会计主体、主体账簿五种类型。在集团设置集团、核算账簿类型参数;在公司设置公司、会计主体、主体账簿类型参数。
在公司登录时,可以设置以当前公司为主体或者当前公司部门为二级核算主体的会计主体类型参数;也可以设置以当前公司为主体的各个账簿或者当前公司部门为二级核算主体的各个账簿的主体账簿类型参数。
在公司(主体)可以将某个公司(主体)参数设置成是否控制下级的方式,如果控制下级,则下级必须遵守该参数设置的条件或者规则,如果不控制下级,则下级公司(主体)可以根据需要设置该参数的值。

2. 操作说明

首先选择参数类型和业务模块。
注:集团登陆,参数类型只有集团(核算账簿类型的参数暂无);以公司登陆参数类型只有公司和主体账簿(会计主体级参数暂无)。
单击“修改”,可以修改该系统下任何参数。
进入修改状态,单击“默认值”,可以将该参数值恢复为系统初始化时的参数值。
项目说明:
参数名称:仅作显示,不能修改。
参数值:可以修改。
是否控制下级:勾选此项,则该参数在当前公司的下级公司被设置为受控参数,即该参数在下级公司参数设置界面中,无法在“本级参数”页签显示,而是显示在“上级参数”页签,且该参数值不能修改,只能使用上级公司(或上级主体账簿)设定的参数值。控制下级的参数,其下级的参数值可以与控制下级的上级参数不同,设置方法用[编辑下级参数]按钮实现.
图 3-1(集团登陆)
nc-v5-param-31
图 3-2(公司登陆)
nc-v5-param-32
如果该参数选择控制下级参数,在参数保存时,会弹出对话框,询问控制下级的参数,保存时是否同时修改下级参数,选OK,同时设置下级参数的值,选Cancel,只修改当前参数的值.
编辑下级参数; 选择一条控制下级的参数,点编辑下级参数按钮,弹出属于该公司或该下级主体账簿的所有参数,修改参数值,保存.

第二章 参数模板注册

小编:此文是搬运,将小编收集的资料分享到这,是为了和像我一样的开发人能更快速、更轻松地解决问题,欢迎大家分享自己的内容。
使用对象:NC-V5系列

1. 参数模板管理
1.1 节点描述及功能
参数模版设置提供给各产品组进行参照模版的设置。参数模版设置由各产品组的程序员进行设置后,用户才能在参数设置界面看到这些参数。
1.2 基本功能操作说明
选择左侧系统节点,单击“增加”,可以增加一条参数。编辑后单击“保存”,保存该参数。
选择一条已注册的参数,单击“修改”,可以修改已注册的参数信息。
选择一条已注册的参数,单击“删除”,可以删除已注册的参数。
在参数注册编辑状态时,单击“作用范围”,弹出选择作用范围编辑框,可以选择当前参数作用的功能模块。
项目说明:
序号:手工输入,必输项。
组编码:对于互相有制约关系的参数分组,输入代码。互相有制约关系的参数指A参数选择某值,就不能输入B参数,或者A参数选择某值,B参数必须输入等等这些情况都叫做互相制约。对于不互相制约的参数不用分组。还有一种需要进行分组的参数就是复杂参数,定义为默认java类的参数,其整个界面和界面里的参数定义为一组。
组名称:手工输入,显示名称
参数代码:不能重复,必输项。
参数名称:参数显示名称。
参数值类型:有四个类型:日期、逻辑、字符和整型、Double型,根据参数的实际情况选择。
默认值:根据选择的参数值类型预置参数的值,主要为了防止实施人员或用户由于误操作设错了某个值无法恢复,所以在这里设了默认值,可以恢复为默认值。
默认值为Java类对于一些复杂参数流程配置中很难表示的则调用产品组的参数设置界面。对于这样的参数在“默认值是Java类”项上打勾,代表选中,那么在“默认值”这一项中输入完整的类名称(包括路径)。在用户的参数设置界面,双击这个参数的“参数值”项即可进入产品组的参数设置界面。对于界面中的其他参数也要在下面输入,但是“是否显示”项置为不显示。
【例子】 对于下面的设置个人信息界面,采用界面切入到参数设置中的方式,每个参数如何设置?
nc-v5-param-1

这个界面将存为4个参数,整个界面存为一个参数比如将参数名设为个人信息,姓名为一个参数,年龄为一个参数,文化为一个参数,一共四个。确定了有这么多参数后我们就要逐个定义了,首先定义个人信息这个参数,选中“默认Java类”项,在默认值中输入完整的类名,是否显示项为显示;然后定义姓名,不选“默认Java类”项,是否显示项为不显示;同理其他两个参数的设置与姓名参数相同。各项值如下图:

组名 参数名 默认值 编辑样式 默认java类 显示
Group2 个人信息设置 nc.ui.pub.para.sysinituidialogexample 文本框
Group2 姓名 张三
Group2 年龄 20
Group2 文化程度 大学

这样设置以后,在用户的参数设置界面,只能看到一个参数就是个人信息设置参数,在“参数值”下显示“参数对象,请双击”,双击鼠标将弹出产品组的参数设置界面,用户逐项输入即可。
组名 参数名 参数值
Group2 个人信息设置 参数对象,请双击

组名 参数名 参数值
Group2 个人信息设置 参数对象,请双击

取值范围:指参数输入范围或选择范围。对于整型和DOUBLE型的参数,取值范围的编辑形式是m-n,m为最小值,n为最大值,必需用 “-” 分割,选择的范围为包含m、n的集合;对于选择框的参数,取值范围的编辑形式为:x,y,z,该参数在进行参数值设置时表现为有x,y,z三个选项的下拉列表,必需用“,”分割。
编辑样式:参数的编辑控件。注意要和参数类型配合。编辑样式中,系统预制了集中参照类型。如果要选择的参照类型,在编辑样式中不存在,可以在“参照”栏目中选择,这里包含所有的系统默认参照。
参数说明:参数的注释。
作用域:参数所属功能节点。只起到按作用域显示的功能,和参数实际控制的范围无关。本栏目不可编辑。系统默认为当前选中的功能节点。
是否组主参数:对于某个参数组定义一个主参数,在设置界面,该项打上勾即为组主参数,一个参数组可以没有主参数。被定义为主参数的参数其编辑样式必须为选择框,取值范围必须输入。
nc-v5-param-2
图 2-1
互斥值:即与主参数的互斥关系。在一个组中将其他参数的互斥值与主参数值的选项进行比较,互斥值与主参数选项顺序值相同的参数,在用户界面可以编辑,证明与主参数不互斥;互斥值与主参数值选项顺序值不同的参数,在用户界面就不能编辑,证明与主参数互斥。
检查类:在参数模版中只能对参数进行数据校验,但是有的参数还需要业务校验,用以检验这个参数是否能保存,因此我们提供了检查类项,对于这种参数,产品组可以在此处输入检查类的完整路径。该参数在进行编辑后进行保存时,系统会调用该检查类检查输入参数值的合法性,如不合法,则不允许保存。
编辑类:与检查类类似,有的参数需要业务校验,用以检验这个参数是否能编辑,因此我们提供了编辑类项,在此处输入编辑类的完整路径。用户修改该参数前,系统会调用编辑类检查该参数是否允许编辑,如检查未通过,则该参数不能编辑。
参数类型: 参数按所属组织不同,分为5种类型。集团、核算账簿、公司、会计主体、主体账簿。
集团级参数,集团只有一份,由脚本提供。
账簿级参数,账簿只有一份,由脚本提供。
公司级参数,每个公司一份,新建公司账时自动从参数模版Copy。
会计主体级参数,每个会计主体一份,新建会计主体时,自动从参数模版Copy。
主体账簿级参数,每个主体账簿一份,主体账簿启用时,自动从参数模版Copy。

参照:“参照”栏目为V5.3新增功能。可以选择系统默认的参照。如果编辑样式选择了某参照,这里也选择的参照。本栏目下的选择优先。
参照属性修改控制类。参照栏目中选择了参照,如果产品组要控制参照(如WherePart),注册控制类。参照初始化后会调用此类定制参照。

1.3 其他功能说明

[公司按钮]:点击公司按钮,系统检测是否有新增的参数模版记录,如有自动分配到所有已建账的公司。
[总账参数调整]:包含2个子按钮[主体账簿参数调整为公司参数][ 公司参数参数调整为主体账簿] V31新增功能 只能调整总账参数的参数类型,其他业务子系统没有此功能
[主体账簿参数调整为公司参数] :把选中的主体账簿参数调整为公司级参数。
[公司参数参数调整为主体账簿]:把选中的公司级参数调整为主体账簿参数。

第一章 前言(参数设置平台)

小编:此文是搬运,将小编收集的资料分享到这,是为了和像我一样的开发人能更快速、更轻松地解决问题,欢迎大家分享自己的内容。
使用对象:NC-V5系列
NC管理软件为了企业在软件应用过程中能够有效达成管理控制的效果,专门开发了参数设置平台。参数设置平台中输入和设置系统所有的参数,实现参数的逐级分配,使上级可以控制一些重要参数,不允许下级公司修改,只能够使用。
参数设置在V3.1 增加了对多账簿、多主体、多语言的支持。
参数设置平台由两部门组成:参数模板管理和参数设置。参数模板管理为程序员提供注册系统参数的平台,注册的参数将在参数设置中供实施人员使用。