亀JBI
匚飲BHAkFkU
3KP-JIH2l&;«?
§住孔aclkte
I'Si
LfiOZLftSSrd*
2iUT-]c-i-asg
j]|EfirrCod]i*g>iLC14E1
IE
<50CLA53IlU
ZSEF-ZIT-WD
.fiit加"学节tin史口」
CodingRule.properties
文件结构为:
#BF0C040E元数据BOStype
#当设置为true时则使用多适用条件false或者为空时使用单适用条件
BF0C040E=true
业务组建在getNumber和readNumber时需要传入ParmCodingRule参数对象获取多适用条件编码。
通过ParmCodingRule.setBindingPropertyExtendlnfo设置多适用条件。
可参考以下代码
BindingPropertylnfobindingPropertylnfo=newBindingPropertyInfo();
new
BindingPropertyExtendlnfobindingPropertyExtendlnfo
BindingPropertyExtendlnfo();
bindingPropertyInfo.setProName("effectedStatus");
bindingPropertylnfo.setProValue("EFFECTED");
Listlist=newArrayList();
list.add(bindingPropertyInfo);
bindingPropertyExtendlnfo.setList(list);
pcr.setBindingPropertyExtendlnfo(bindingPropertyExtendlnfo);
this.kDLabel5.setText(CodingRuleManagerFactory.getRemoteInstance().getNumber(info,org
pcr));
详见第5章checkMoreAdapt方法
3.8多应用字段
功能描述:
支持在编码之外的字段使用编码规则,例如名称字段、批号批次字段、出货号等
等字段都可能需要采用一定的规则产生编码。
主要应用于预算表的名称,支持获取组织名称、
会计期间还有固定值来产生名称的编码规则。
该预算表的编码和名称同时应用编码规则。
房
地产的合同号也有相同需求。
默认支持应用字段为编码(number)
需要业务和编码规则共同集成。
关于编码规则多应用字段集成
修改配置文件codingruleadape.prperties
放入实体的实现类全路径
BF0C040E=com.kingdee.eas.base.codingrule.util.Test接口ICodingRuleAdapt
publicinterfaceICodingRuleAdapt{
*获取多应用字段
*@return
*/publicListgetAdaptltemList();接口返回的list中必须为多应用itempublicclassAdaptItem{
privateStringnumber;
privateStringname_l1;
privateStringname_l2;
privateStringname_l3;
publicStringgetName_l1(){
returnname_l1;
}
publicvoidsetName_l1(Stringname_l1){this.name_l1=name_l1;
}
publicStringgetName_l2(){
returnname_l2;
}
publicvoidsetName_l2(Stringname_l2){this.name_l2=name_l2;
}
publicStringgetName_l3(){
returnname_l3;
}
publicvoidsetName_l3(Stringname_l3){this.name_l3=name_l3;
}
publicStringgetNumber(){
returnnumber;
}
publicvoidsetNumber(Stringnumber){this.number=number;
测试类写法
publicclassTestimplementsICodingRuleAdapt{
publicListgetAdaptItemList(){AdaptItemitem=newAdaptltem();
item.setNumber(”name");item.setName」2("简体名称");item.setName」3("繁体名称");
Listlist=newArrayList();list.add(item);
returnlist;
}
}
效果图
业务组建在getNumber和readNumber时需要传入ParmCodingRule参数对象,获取自定义字段编码。
可参考以下代码
ParmCodingRuleper=newParmCodingRule();
pcr.setCustomProperty(”name");
this.kDLabel5.setText(CodingRuleManagerFactory.getRemoteInstance().getNumber(info,org
pcr));
可参考第五章controlCustomProperty方法。
新增一条凭证新增显示的编码规则,执行凭证的增删改操作
新增一条凭证不允许断号的编码规则,执行凭证的增删改操作
第一步:
实体定义时定义扩展属性:
codingRuleEnabled,将值设为true,然后再构建输
出后就能在规则定义的子系统树中定义规则。
第二步:
如果实体的属性要参与编码,需要设置该属性的扩展属性:
islnCode,将值设为true
即可。
第三步:
如果要定义某个属性作为编码规则的过滤属性,需要设置该属性的扩展属性isBindingProperty,将值设为true即可。
km1-HTfiPrrWrtbri*i|]FEE口细
审饰口HI壶口河巴理・程■&窖询冃0匚说即运厅'I出1F口監歹航;
,二331"
>-o-册■电.
.■”
•,.#*:
”
■
主hFraW^UJlHgK
£pCd4^HukOfl£idvc
人田tg如
話塾-s
ji
研3
■S
'Khtw«±1
UMiSQlMtit.i*■■r«wr-1"|11.I'jfiifl譚-
public(CQL&EaselnfdinfQj
S+rinjconipsnylD)-thro-vsCodineKuLeExceptiorL,EASB1sEucapticm,BOSEKceptian
Str-null:
ICodingRuleManageriCqdln^Ruleltana^er=CodingRuleManagerFactory
g:
etdemoteInstqnce();
i£(i匚odingRuleManager.isEKist(info,com.panyID))
ID)
ifIiCodingEuleMarLager.isUseIntermitJhimbEizfiLrLf□,campaiivID))"此处的□唧出步骡1)的"汀d时一報的,判断审户昱否启鼬鸟支薛功第
//启阳了断号強持助能,此时只是读取当前就新编碑,宜止前枪号在保存
sysNumber=i.CcdingRulcWIarLaeer・1:
亡adNwnhur(info』
companyID):
else
"没有启用断芳支挿功餾此时荻取了编码规则*生的编码sysNiunber二iCcdingltiileManag&r・getNumber(info.
couiipanylD)
returnFysNumber:
;
服务端调用,见框架的DataBaseControllerBean的setNumberFromCodingRule方法
Mj|(
*主応编码B/尽删擾畫量终编码的方法
*筍jamctz
“细电rascaller
x虫td*or^Id
*^throwsBOSException
y^ttirovsEASBizExc:
eptian
*/
protectedvoidsetttunib^rFrOJiCodingRule(CentctSjD^taBaselnfqcaller;,StTinsnrgId)throwsBOSExceniierbEASBizExceirticn
{
ICodir^RuleHarLassriCcdinjRuleMarLager=CodirgRuleMana^er?
actory
if(argld==null||argil.trimO*Len^thO==0)
{
return:
if(iCftdingRiileKarLager.isEKi^itcaller,orgld))
{
iftiCodingRuleManager.1sUseIntermitNumber(cal1er3orgld)數孔(!
iCodingRileMinager.isEserSelect(calleijorgld)))
{
calLer^setHunt&r(iCodin岂RuLeMariager”getNumber(calletjargTd)):
}
else
{|
if(iCodinffR'jleMsna£ei.1sAddVrew(caller.orald))
{^、
if.lCodinaREleManager.isModifiabLe'caller,orgld))
//炎断是否修改了編陽是否改大7:
顺序号
iCodLTLgRuleWar,ajer.checkHodifiedNumber(caLlerjor^Idj
caller.getNumberO,toString()):
else
{
//供么都汝选』斯增不显丞九诗断僉.业务诗空rumbEi■直在此吸置numbercallttrsttNumaer(iCDdingRul&MarLager
.gp+MimhpT1*»r,nrgTd))
}
}
StringaddNew(CodingRulelnfocodingRulelnfo)
增加一个新的编码规则对象,参数为待插入的编码规则对象
StringgetNumber(IObjectValuebizObject,Stringorg,
ParmCodingRulecustomProperty)
获取编码
Booleanupdate(CodingRuleInfocodingRuleInfo)
更新一个编码规则对象,参数为待插入的编码规则对象
Booleandelete(CodingRulelnfocodingRuleInfo)
删除一个编码规则对象,参数为待插入的编码规则对象
BooleandeleteByNumber(Stringnumber)
删除指定number的编码规则
CodingRulelnfogetCodingRule(IObiectValuebizObject,Stringorg)
获取编码规则对象
CodingRuleInfogetCodingRuleByNumber(Stringnumber)
获取指定number的
编码规则对象
CodingRulelnfogetCodingRuleByName(Stringname)
获取指定name的编码规则对象
String[]getBatchNumber(IObjectValuebizObject,CodingRulelnfo
codingrule,intcount)
用满足指定条件的编码规则对象生成指定的数量的编码返回
String[]getBatchNumberFromlnitialValue(IObjectValuebizObject,
Stringorg,Stringbindingproperty,StringcustomString,intcount)
从初始值开始批量
取一组编码-
StringgetSimulateNumber(CodingRulelnfocodingruleinfo)
获取满足指定条件的编码规则对象生成的模拟编码
StringsumLength(CodingRuleInfocodingruleinfo)
获取满足指定条件的编码规则对象的编码长度
StringreadNumber(IObjectValuebizObject,Stringorg,String
bindingproperty,StringcustomString)
读取满足指定条件的编码规则对象的生成编码只读
booleanhasCuscomString(IObjectValuebizObject,Stringorg)
满足指定条件的编码规则对象中是否包含有自定义段
StringgetNonbreakNumber(IObjectValuebizObject,Stringorg)
获取非中断的编码即不允许断号存在的编码
booleanisUserSelect(CodingRuleInfocr)
是否用户选择
booleanisExist(CodingRulelnfocr)
是否存在指定条件的编码规则对象
RuleStatusgetRuleStatus(IObjectValuebizObject,Stringorg,Stringbindingproperty,ParmCodingRulecustomPro)
获取规则的各种状态
booleanisUselntermitNumber(CodingRulelnfocr)
指定的编码规则是否启用断号支持功能
booleanisUseIntermitNumber(IObjectValuebizObject,Stringorg,
Stringbin