maxThreads="150"minSpareThreads="25"maxSpareThreads="75"
enableLookups="false"redirectPort="8443"acceptCount="100"
connectionTimeout="20000"disableUploadTimeout="true"/>
二、配置eclipse开发工具
1、配置MDEDevelopment(Window->Preferences->MDEDevelopment)
选择nchome所在位置、检查数据库连接是否通过、设置数据源为默认数据源、点击ok设置完成。
设置端口(与nchome\bin文件夹下ncSysConfig.bat配置端口一致)
2、配置InstalledJERs
注意:
nchome\ufjdk\jre\lib\plugin.jar和nchome\ufjdk\lib\tools.jar为必选插件,不然启动客户端的时候会报错。
点击确定,完成配置(最好留下当前在用的JERs,其他全部Remove掉)
3、建立ModuleProject(选择ModuleProject->填写ProjectName->ModuleName->点击Finish)
工程建立完成后如下图:
4、配置eclipse内存
-Dnc.exclude.modules=${FIELD_EX_MODULES}
-Dnc.runMode=develop
-Dnc.server.location=${FIELD_NC_HOME}
-DEJBConfigDir=${FIELD_NC_HOME}/ejbXMLDExtServiceConfigDir=${FIELD_NC_HOME}/ejbXMLs
-Xms768m-Xmx768m
表设计(PowerDesigner建模)
建表
tschar(19)nulldefaultconvert(char(19),getdate(),20),特别注意建表时必须加ts和dr
drsmallintnulldefault0
主表建表脚本:
createtabledj_loan(
pk_loanchar(20)notnull,
pk_corpchar(4)null,
pk_busitypechar(20)null,
pk_billtypevarchar(4)null,
vbillstatussmallintnull,
vbillnovarchar(30)null,
dbilldatechar(10)null,
voperatoridchar(20)null,
dmakedatechar(10)null,
vapproveidchar(20)null,
dapprovedatechar(10)null,
vapprovenotevarchar(512)null,
vdealeridchar(20)null,
vdeptidchar(20)null,
vmemovarchar(2048)null,
vdef1varchar(100)null,
vdef2varchar(100)null,
vdef3varchar(100)null,
vdef4varchar(100)null,
vdef5varchar(100)null,
vdef6varchar(100)null,
vdef7varchar(100)null,
vdef8varchar(100)null,
vdef9varchar(100)null,
vdef10varchar(100)null,
vreserve1varchar(100)null,
vreserve2varchar(100)null,
vreserve3varchar(100)null,
vreserve4varchar(100)null,
vreserve5varchar(100)null,
vreserve6varchar(100)null,
vreserve7varchar(100)null,
vreserve8varchar(100)null,
vreserve9varchar(100)null,
vreserve10varchar(100)null,
pk_accountchar(20)null,
pk_hallchar(20)null,
vmknovarchar(30)null,
nloanmnydecimal(20,8)null,
dloandatechar(10)null,
nloanquotadecimal(20,8)null,
nsignquotadecimal(20,8)null,
drepaydatechar(10)null,
vmarkernamevarchar(40)null,
vrepaynamevarchar(40)null,
nrepaymnydecimal(20,8)null,
nrepayinterestmnydecimal(20,8)null,
vsecurityvarchar(40)null,
dtrdatechar(10)null,
iloantypevarchar(20)null,
vhandpersonvarchar(40)null,
iscountchar
(1)null,
isusechar
(1)null,
constraintpkpm_noncontfeeprimarykeynonclustered(pk_loan),
tschar(19)nulldefaultconvert(char(19),getdate(),20),特别注意建表时必须加ts和dr
drsmallintnulldefault0
)
Go
子表建表脚本:
createtabledj_loan_b(
pk_loan_bchar(20)notnull,
pk_loanchar(20)null,
vmemovarchar(100)null,
vdef1varchar(100)null,
vdef2varchar(100)null,
vdef3varchar(100)null,
vdef4varchar(100)null,
vdef5varchar(100)null,
vdef6varchar(100)null,
vdef7varchar(100)null,
vdef8varchar(100)null,
vdef9varchar(100)null,
vdef10varchar(100)null,
vreserve1varchar(100)null,
vreserve2varchar(100)null,
vreserve3varchar(100)null,
vreserve4varchar(100)null,
vreserve5varchar(100)null,
vreserve6varchar(100)null,
vreserve7varchar(100)null,
vreserve8varchar(100)null,
vreserve9varchar(100)null,
vreserve10varchar(100)null,
vsourcebilltypevarchar(4)null,
vsourcebillidchar(20)null,
vsourcebillrowidchar(20)null,
inumberintnull,
vrepaypersonvarchar(40)null,
nrepaymnydecimal(20,8)null,
nrepayinterestdecimal(20,8)null,
nsurplusmnydecimal(20,8)null,
drepaydatechar(10)null,
dtrdatechar(10)null,
isshareholderchar
(1)null,
pk_mkrepaychar(20)null,
constraintpkpm_costbill_bprimarykeynonclustered(pk_loan_b),
tschar(19)nulldefaultconvert(char(19),getdate(),20),特别注意建表时必须加ts和dr
drsmallintnulldefault0
)
go
导入数据字典
VO生成
第一步:
二次开发工具->UAP集成开发工具->UAP集成开发工具
第二步:
工具和选项->根据数据源生成VO
第三步:
选择数据库表->把主子表拉到相应位置->点击确定
第四步:
把生成的VO拷贝到eclipse开发工具中(src/public文件夹下)
功能注册
说明:
nc.ui.study.h101.ClientUI为客户端入口类,ClientUI名字一般都是写成这个,nc.ui.study.h101.为每个功能节点对应的包名。
自定义菜单
说明:
新建的节点,系统一般都会把它归纳在其他节点上面去,这样分配权限的时候就找不到对应的节点进行分配权限,所以一般需要在自定义菜单这里点击恢复默认结构,这样在分配权限的时候才能看到对应的节点。
分配权限
说明:
权限管理->权限分配->保存
单据类型注册
说明:
二次开发工具->单据管理->单据类型管理
单据模板生成
说明:
二次开发工具->模板管理->单据模板初始化
第一步:
填写单据模板类型(如果第一次则需要填写,一般跟单据类型一致)、选择主表和子表、点击增加按钮(如果是第一次则点击增加,否则点击修改按钮)
第二步:
选择主表和子表
修改页签项目编辑和项目重新排序
Ctrl+S保存(第一次保存需要填写模板标题和节点号)
查询模板生成
生成查询模板
单据分配查询模板
VO对照
主表
子表
动作脚本
执行动作脚本sql语句
InsertintoPUB_BUSICLASS
(ACTIONTYPE,CLASSNAME,DR,ISBEFORE,PK_BILLTYPE,PK_BUSICLASS,PK_BUSINESSTYPE,PK_CORP,TS)
Values('APPROVE','N_H101_APPROVE',0,'N','H101','0001AA000000000H1011',null,null,'2011-09-0910:
01:
05');
InsertintoPUB_BUSICLASS
(ACTIONTYPE,CLASSNAME,DR,ISBEFORE,PK_BILLTYPE,PK_BUSICLASS,PK_BUSINESSTYPE,PK_CORP,TS)
Values('DELETE','N_H101_DELETE',0,'N','H101','0001AA000000000H1012',null,null,'2011-03-2111:
10:
02');
InsertintoPUB_BUSICLASS
(ACTIONTYPE,CLASSNAME,DR,ISBEFORE,PK_BILLTYPE,PK_BUSICLASS,PK_BUSINESSTYPE,PK_CORP,TS)
Values('UNAPPROVE','N_H101_UNAPPROVE',0,'N','H101','0001AA000000000H1013',null,null,'2011-03-2111:
09:
32');
InsertintoPUB_BUSICLASS
(ACTIONTYPE,CLASSNAME,DR,ISBEFORE,PK_BILLTYPE,PK_BUSICLASS,PK_BUSINESSTYPE,PK_CORP,TS)
Values('EDIT','N_H101_EDIT',0,'N','H101','0001AA000000000H1014',null,null,'2011-03-2111:
09:
53');
InsertintoPUB_BUSICLASS
(ACTIONTYPE,CLASSNAME,DR,ISBEFORE,PK_BILLTYPE,PK_BUSICLASS,PK_BUSINESSTYPE,PK_CORP,TS)
Values('WRITE','N_H101_WRITE',0,'N','H101','0001AA000000000H1015',null,null,'2011-03-2111:
09:
22');
InsertintoPUB_BUSICLASS
(ACTIONTYPE,CLASSNAME,DR,ISBEFORE,PK_BILLTYPE,PK_BUSICLASS,PK_BUSINESSTYPE,PK_CORP,TS)
Values('SAVE','N_H101_SAVE',0,'N','H101','0001AA000000000H1016',null,null,'2011-03-2111:
09:
22');
代码修改
代码copy
聚合VO修改
类名:
nc.vo.ps.bz1002.MyBillVO
publicvoidsetChildrenVO(CircularlyAccessibleValueObject[]children){
if(children==null||children.length==0){
super.setChildrenVO(null);
}else{
//super.setChildrenVO(children);//单表
super.setChildrenVO((StockItemsVO[])children);//主子表
}
}
修改ClientUICtrl
单据类型
publicStringgetBillType(){
return“H101";
}
获取单据VO信息
publicString[]getBillVoName(){
returnnewString[]{
MyBillVO.class.getName(),
StockVO.class.getName(),
StockItemsVO.class.getName()
};
}
子表PK
publicStringgetChildPkField(){
return"pk_stock_id";
}
没子表时返回null
保存主子表
单表头或单表体
publicclassClientUICtrlextendsAbstractManageControllerimplements
ISingleController{
}
主子表
publicclassClientUICtrlextendsAbstractManageController{
}
实现了implementsISingleController接口,只保存单表头或单表体
设置默认值
publicvoidsetDefaultData()throwsException
{
BillFieldfileDef=BillField.getInstance();
UFDatedmakedate=ClientEnvironment.getInstance().getDate();
Stringbilltype=getUIControl().getBillType();
StringpkCorp=ClientEnvironment.getInstance().getCorporation().getPrimaryKey();
fileDef.getField_BillStatus();
//取操作员
Stringpk_manager=ClientEnvironment.getInstance().getUser().getPrimaryKey();
getBillCardPanel().setHeadItem("pk_corp",pkCorp);//公司主键
getBillCardPanel().setHeadItem("vbillstatus",newInteger(IBillStatus.FREE).toString());//单据状态默认为自由态
getBillCardPanel().setHeadItem("voperatorid",pk_manager);//制单人
getBillCardPanel().setHeadItem("dmakedate",dmakedate);//制单日期
getBillCardPanel().setHeadItem("pk_billtype",billtype);//单据类型
}
设置单据号
到这个阶段,单据的增删改查功能操作基本完成。
中级开发
增加自定义按钮
按钮ID
packagenc.ui.ps.bz.button;
/*****************************************************************
*@功能:
公共自定义按钮接口
*
*@创建日期:
2010-6-4创建人:
赖利荣
*
*@修改日期:
*
*@修改内容:
*
*@单位:
珠海用友软件有限公司版本1.0V
*/
publicinterfaceUserDefButton{
/**
*导入按钮2010-6-4
*/
publicfinalstaticintfileInt=510;
/**
*导出按钮2010-6-4
*/
publicfinalstaticintfileOut=511;
/**
*文件管理
*/
publicfinalstaticintfileIO=512;
}
按钮VO
packagenc.ui.ps.bz.button;
importnc.vo.trade.button.ButtonVO;
/*******************************************************************************
*@功能:
*
*@创建日期:
2010-6-4创建人:
赖利荣
*
*@修改日期:
*
*@修改内容:
*
*@单位:
珠海用友软件有限公司版本1.0V
*/
publicclassUserDefButtonVO{
/***************************************************************************
*@功能:
导入按钮
*
*@创建日期:
2010-6-4创建人:
赖利荣
*
*@修改日期:
*
*@修改内容:
*
*@return
*/
publicButtonVOgetFileInt(){
ButtonVObtVO=newButtonVO();
btVO.setBtnNo(UserDefButton.fileInt);
btVO.setBtnCode("导入");
btVO.setBtnName("导入");
btVO.setHintStr("导入");
btVO.setBtnChinaName("导入");
btVO
.setOperateStatus(newint[]{nc.ui.trade.base.IBillOperate.OP_ALL});
btVO.setBusinessStatus(newint[]{nc.vo.trade.pub.IBillStatus.ALL});
returnbtVO;
}
/**
*@功能:
导出按钮
*@创建日期:
2010-6-4创建人:
赖利荣
*@修改日期:
*@修改内容:
*@return
*/
publicButtonVOgetFileOut(){
ButtonVObtVO=newButtonVO();
btVO.setBtnNo(UserDefButton.fileOut);
btVO.setBtnCode("导出");
btVO.setBtnName("导出");
btVO.setHintStr("导出");
btVO.setBtnChinaName("导出");
btVO
.setOperateStatus(newint[]{nc.ui.trade.base.IBillOperate.OP_ALL});
btVO.setBusinessStatus(newint[]{nc.vo.trade.pub.IBillStatus.ALL});
returnbtVO;
}
/**
*@功能:
文件管理按钮
*@创建日期:
2010-6-4创建人:
赖利荣
*@修改日期:
*@修改内容:
*@return
*/
publicButtonVOgetFileIntOut(){
ButtonVObtVO=newButtonVO();
btVO.setBtnNo(UserDefButton.fileIO);
btVO.setChildAry(newint[]{UserDefButton.fileIn