参照过滤工具类

 实现目标
按照单据类型和组织过滤交易类型。
 应用场景
存在单据类型的业务单据。
 前台动作

 后台处理
工具类:nc.ui.scmpub.ref.FilterTransTypeRefUtils
使用示例:

 功能扩展
A. 转单查询时根据业务流程和目标单据类型过滤

应用场景:上游单据所提供的查询服务中会使用到。
工具类:nc.vo.scmpub.util.FilterBillByBuzitypeUtil
功能:
1.filter(E[] bills, String destBilltype):通过检查业务流程中是否包含下游单据,来过滤出下游单据可见的单据

2.filter(E[] bills, String destBilltype,String destTranstype):通过检查业务流程中是否包含(指定交易类型的)下游单据,来过滤出下游单据可见的单据

参照多选处理

小编:此文为搬运
使用:V6系列

 实现目标
从某个参照选中多个值后,根据所选值新增多行,选择值放入每一行的参照字段。
 应用场景
根据业务需求,需要实现多选效果的单据。
 前台动作

 后台处理
工具类:
nc.ui.pubapp.uif2app.view.util.RefMoreSelectedUtils
方法:
主子表调用 refMoreSelected;
单表调用 refMoreSelectedForBillTable;
实现步骤:
1. 界面初始化时需要将参照(如物料)设置为多选;

2. 编辑后事件中调用工具类,设置按新增或复制来实现多选

第七章 V5 最新变化说明

1. 新增参照节点名称常量接口
nc.vo.bd.ref.RefNodeNameConst
参照初始化举例:

UIRefPane refPane = new UIRefPane();
//公司目录参照。
refPane.setRefNodeName (ref.RefNodeNameConst .CORP)

2. 会计期间默认参照的变化
关于会计期间参照的修改。

最新的需求:2006-08-07会计期间参照由表形改为树表形。

实现:左树为默认会计期间方案下的会计年度,右表为该会计年度下的会计月份。

存在的问题:

以前,会计期间参照的使用者通过设置参照的setWherePart来改变会计期间方案,现在改为树表,使用者要通过setClassWherePart来改变会计期间方案。对于只使用默认会计期间方案的地方不用修改。

修改方法:

((AbstractRefTreeModel)UIRefPane.getRefMole()).setClassWherePart(” PK_ACCPERIODSCHEME = ‘”+pk_accperiodscheme+”‘ “)

3. 控制参照某列数据的显示格式接口
如果要控制某列每行数据的显示格式,如控制数量列的显示精度。
可以实现nc.ui.bd.ref.IRefColDispConverter接口。已实现的例子可以参考nc.ui.bd.ref.busi.AccidDefaultRefModel
4. V5.3 新增功能
1、左树右表参照,支持左树分类可以选择
首先要构造分类VO: nc.vo.bd.ref.RefClassPropVO
然后通过nc.ui.bd.ref.AbstractRefGridTreeModel.setClassPropVOs(RefClassPropVO[] classPropVOs) 方法把VO数组注册到参照模型中即可。

2、 默认参照注册
V5.3 开始,系统默认参照要统一注册到 bd_refinfo表中,以便引用。

第六章 参照值返回与事件处理

在UIRefpane 中
i. 照编码:getRefCode和getRefCodes
ii. 参照名称:getRefName和getRefNames
iii. 参照主键:getPK和getPKs
iv. 参照VO:getVO和getVOs (必须实现convertToVO (Vector)方法才能获取,在参照model中实现)
v. 任意列:getValue(字段名)和getValues(字段名)(字段名必须在字段列表中)

参照支持属性变化事件。
i. 如果需要监听UIRefPane事件,需要实现ValueChangedListener接口,
ii. 加入监听addValueChangedListener(ValueChangedEvent)
iii. 值改变将触发ValueChangedEvent

第五章 参照客户化功能的设定

在初始化一个参照以后,即在本文三或四段落中的红色部分定义好后,无论是系统默认参照还是自定义参照,才可以定制参照的其他功能。
1. UIRefPane中的设置:
setToolTipText(String);//设置参照控件的toolTip
setMaxLength(int);//设置输入字符的最大长度,默认20;
setEditable(boolean);//设置参照是否可编辑
setEnabled(boolean);//设置参照是否可以使用
setDelStr(String);//设置参照输入框不能输入的字符串。
setColor(Color);//设置参照输入框的背景色。
setCacheEnabled(boolean);// 是否使用缓存
setMultiSelectedEnabled(boolean);//是否允许多选择
setAutoCheck(boolean);//是否自动解析输入的参照数据
setButtonFireEvent(boolean);//按钮选择数据后是否触发ValueChanged事件
setNotLeafSelectedEnabled(Boolean);//非末级节点是否可选择(对树参照有效)
setIsCustomDefined(boolean);//是否为用户自定义参照模型
setIncludeSubShow(boolean);//树型参照是否包含下级复选框是否显示
setMultiCorpRef(boolean);//树表参照是否显示公司选项(在参照中动态切换公司)
setTreeGridNodeMultiSelected(boolean);//树表参照是否允许选择不同树节点下的数据。

2. refModle中的设置

setUseDataPower(boolean) ;//设置参数是否自动关联基本档案数据权限
setSealedDataShow(boolean);//设置封存数据是否显示
setRefQueryDlgClaseName(String);//设置参照查询类名称(参照的查询功能)
setLocQueryEnable(boolean);//树表参照,在启用查询功能后,是否启用定位查询功能
setDynamicColClassName(String);//是否为动态列参照。
setFormulas(String[][] formulas);//设置公,用于参照内容转换;
setDispConvertor(java.util.Hashtable newDispConvertor);//用于参照内容转换的影射表
setMatchField(String);//设置参照setpk时匹配的字段
getRefVO_mlang();//为多语言添加此方法, 请覆盖此方法返回要翻译字段数组。详见DefaultRefModel_multiLang

addWherePart(String);参照在运行中动态添加过滤条件,每次在原始的WherePart上添加

对参照数据按指定主键数组过滤。
参数说明:newM_filterPks 要过滤的主键数组
filterStrategy 过滤策略
IFilterStrategy.INSECTION = 0; //参照数据集与过滤数据集的交集
IFilterStrategy. REFDATACOLLECT_MINUS_INSECTION = 1; //参照数据集减参照数据集与过滤数据集的交集
AbstractRefModel.setFilterPks(java.lang.String[] newM_filterPks, int filterStrategy)

3. 注意事项

1. 参数区分大小写。
2. 设置字段列表和字段时(主键、编码、名称等),注意保持一致。(同时加别名或不加别名)。
3. 设置公司主键(setPk_corp)后必须设置setWherePart语句。默认参照建议用setRefNodeName(参照名,公司主键),然后设置/追加where子句
4. where语句开头不要包含where短语。

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

参照支持自定义参照的定义。
自定义参照可以定义参照的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

第二章 参照总体结构图

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

1. 结构图

nc-v5-ref-2

2. 代码结构

2.1 nc.ui.bd.ref

定义接口IRefModel、IrefTreeModel、IrefGridTreeModel、IrefUI、IrefUINew、IrefQueryDlg、IrefQueryDlg2
AbstractRefModel implements IRefModel
AbstractRefTreeModel――>AbstractRefModel implements IRefTreeModel
AbstractRefGridTreeModel――>AbstractRefTreeModel implements IRefGridTreeModel
AccBankDefaulteRefModel――>AbstractRefModel
AreaclDefaultRefModel――>AbstractRefTreeModel
InvmandocDefaultRefModel――>AbstractRefGridTreeModel
UFRefColumnsDlg――>nc.ui.pub.beans.UIDialog
UFRefGridTreeUI――>nc.ui.pub.beans.UIDialog implements IRefUINew
AbstractRefDialog—〉nc.ui.pub.beans.UIDialog implements IRefUINew
UFRefGridUINew――> AbstractRefDialog
UFRefTreeUINew――> AbstractRefDialog
UFRefManage 参照控件控制参照对话框的中介类
nc.ui.bd.ref.IRefColDispConverter 参照列特殊显示格式装换接口类
IBusiType 参照业务信息定义

2.2 nc.ui.bd.ref.busi

具体业务参照,也是Uap默认提供的参照

2.3nc.ui.pub.beans

RefPaneIconFactory参照ImageIcon工厂
UIRefPane 参照控件类
UIRefPaneTextField 参照控件的组成部分,文本框

2.4      nc.vo.bd.ref

DocSealWherePartMng根据参照refNodeName取得参照的封存条件工具类
IFilterStrategy参照过滤数据策略。参照提供设置一些主键,参照的查询结果按策略过滤的功能
IRefAutoMatchMode参照模糊匹配模式
RefColumnDispConvertVO参照列数据特殊显示配置VO
RefcolumnVO参照栏目业务对象子对象
RefException参照异常类
RefIconConfigVO参照 树显示图标配置VO
RefNodeNameConst UAP默认参照常量
RefQueryResultVO参照数据,参照栏目信息复合查询VO
RefQueryVO参照查询数据信息VO
ReftableVO 参照栏目业务对象主对象
RefVO_mlang 参照多语言自动翻译配置对象

2.5 nc.vo.bd.refdatatemp

RefdatatempVO 参照临时表数据VO

2.6nc.bs.bd.ref

RefImpl参照数据查询实现类
ReftableImpl 参照栏目数据查询实现类

2.7nc.itf.uap.busibean

IRef 参照数据查询服务接口
IRefForTempTable  参照从临时表查询接口,需要支持事务处理
IReftable 参照栏目查询服务接口

第一章 前言(参照开发)

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

统一提供各种基础档案的参照录入。

•提供定位,过滤,模糊查询,高级查询等功能。

•提供自定义参照定义功能。

系统提供表型、树型、树表型参照。

表型:以表格形式显示。
树型:只能是有级次关系的档案,以树型显示。
树表型:对于有分类的档案,一般也是大数据量的档案例,如存货档案。左树是分类树,右表是该分类下的数据。