您的位置:首页 > 编程语言

eas bos常用代码-新增单据,参数传递

2012-03-09 14:13 288 查看
 
   

2.1 单据新增代码

如:新增一行付款单

//构造一条付款单信息(构造值对象)

PaymentBillInfo payInfo = new PaymentBillInfo();

payInfo.setNumber(“1001”);

//关联用户

UserInfo userInfo = new UserInfo();

userInfo.setId(BOSUuid.read("867d5df6-00f8-1000-e000-0009c0a81089sysu")); //通过BOSUuid建立实体对象

userInfo.setName(“John”);

userInfo.setNumber(“2000”);

BigDecimal ex = new BigDecimal("343434.445");//建立属性

BigDecimal ex2 = new BigDecimal(12345678901234567.8);//错误

payInfo.setExchangeRate(ex);

payInfo.setCreator(userInfo);

payInfo.setAuditDate(new Date(System.currentTimeMillis()));//时间属性

Timestamp createdate = new Timestamp(System.currentTimeMillis());

payInfo.setCreateDate(createdate);

payInfo.setBizState(BillBizState.create);//枚据属性

payInfo.setSave(true);//Boolean 属性

PaymentBillItemInfo itemInfo = new PaymentBillItemInfo();//建立分录

itemInfo.setLineNo(34);

itemInfo.setAmounts(ex2); 

payInfo.getEntries().add(itemInfo);//添加分录

payInfo.getEntries().add(new ErrandTaskItemInfo());//添加分录

调用新增方法进行保存

IPaymentBill iPayBill = PaymentBillFactory.getRemoteInstance();//获取实体

IObjectPK pk = iPayBill.addnew(payInfo);//保存值对象,返回逻辑键,可以通过逻辑键获取值对象(如下)

2.2 单据修改代码

修改一条付款单信息

IPaymentBill iPayBill = PaymentBillFactory.getRemoteInstance();

String id="8b35b903-00f8-1000-e000-0008c0a81089errt";

ObjectUuidPK pk = new ObjectUuidPK(BOSUuid.read(id));//建立逻辑键

PaymentBillInfo payInfo = iPayBill.getValue(pk);//获取值对象;

System.out.println("this:"+ payInfo.getExchangeRate());//获取属性

payInfo.setExchangeRate(ex);//修改属性属性

iPayBill.update(pk, payInfo);//更新数据

2.3 单据删除代码

iPayBill.remove(pk);//通过逻辑键删除单据内容获取集合

2.4 获取集合

CurrencyInfo cur = new CurrencyInfo();

ICurrency c = CurrencyFactory.getRemoteInstance();//建立实体对象

EntityViewInfo evi = new EntityViewInfo();//建立视图信息 

FilterInfo i = new FilterInfo();//建立过滤条件

i.getFilterItems().add(new FilterItemInfo("number", "ddff", CompareType.EQUELS));

i.getFilterItems().add(new FilterItemInfo("id", "ddff", CompareType.EQUELS));

i. setMaskString(" (#0 and #1)");

evi.setFilter(i);//添加过滤条件

evi.getSelector().add(new SelectorItemInfo("id"));//添加获取属性

evi.getSelector().add(new SelectorItemInfo("*"));

evi.getSelector().add(new SelectorItemInfo("company.id"));

evi.getSelector().add(new SelectorItemInfo("company.name"));

//三种获取集合方法

1. 获取所有数据:

CurrencyCollection co = c. getCurrencyCollection ();//获取集合

2. 获取满足上述条件的所有数据

CurrencyCollection co = c.getCurrencyCollection(evi);//获取集合

3. 获取满足oql所写的条件的所有数据

CurrencyCollection co = c. getCurrencyCollection (evi);//获取集合

2.5 获取值对象

CurrencyInfo cur = new CurrencyInfo();

ICurrency c = CurrencyFactory.getRemoteInstance();//建立实体对象

String id="8b35b903-00f8-1000-e000-0008c0a81089errt";

ObjectUuidPK pk = new ObjectUuidPK(BOSUuid.read(id));//建立逻辑键

c.getValue(pk); 或 : c.getCurrencyInfo(pk);

2.6 界面之间传递参数

1. 收集父界面要传递给子界面的参数集 HashMap map = new HashMap();

map.put("Owner", this); //必须。被启动UI的父UI对象

map.put("EASMode", new Integer(this.EASMode));

map.put("table", this.accountTablePrompBox.getData());

map.put("cu", currentCtrlUnit);

map.put("auxAccount", this.asstAccountPromptBox.getData());

IUIFactory uiFactory = null;

uiFactory = UIFactory.createUIFactory("com.kingdee.eas.base.uiframe.client.UIModelDialogFactory"); //以模态对话框方式启动

IUIWindow uiWindow = uiFactorycreate("com.kingdee.eas.basedata.master.auxacct.client.AccountSelectUI", /* 被启动对象的类名称 */

map);

uiWindow.show();

2. 在子界面获取传递下来的数据

private void loadContext()

{

int mode = ((Integer)this.getUIContext().get("EASMode")).intValue();

AccountTableInfo accountTableInfo = (AccountTableInfo) this.getUIContext().get("table");

CtrlUnitInfo cuInfo = (CtrlUnitInfo) this.getUIContext().get("cu");

AsstAccountInfo asstAccountInfo = (AsstAccountInfo) this.getUIContext().get("auxAccount");

AuxAccountEditUI ui = (AuxAccountEditUI) this.getUIContext().get("Owner");

}

2.7 给Query传过滤条件

EntityViewInfo evi = new EntityViewInfo();

FilterInfo filterInfo = new FilterInfo(); //建立过滤条件

filterInfo.getFilterItems().add(

new FilterItemInfo("typelink.id", info.getId(),

CompareType.EQUALS));

filterInfo.getFilterItems().add(

new FilterItemInfo("currencyCompany.id", companyID,

CompareType.EQUALS));

filterInfo.setMaskString("#0 and #1 ");

evi.setFilter(filterInfo);

if (mainQuery == null) {

mainQuery = new EntityViewInfo();

}

mainQuery.setFilter(filterInfo); //添加过滤条件

this.execQuery();

2.8 接口方法的访问方式

3. 客户端访问

CurrencyInfo cur = new CurrencyInfo();

ICurrency c = CurrencyFactory.getRemoteInstance();//建立实体对象

c. getCurrencyCollection();

4. 服务端访问

CurrencyInfo cur = new CurrencyInfo();

ICurrency c = CurrencyFactory. getLocalInstance (ctx);//建立实体对象

c. getCurrencyCollection();

2.9 控件的初始化

1.使用枚举给ComboBox控件赋值

public void setReceiveType()

{

this.kDComboBox2.removeAllItems();

List list = new List();

Iterator it = ReceiveType.iterator();

while (it.hasNext())

{

list.add(ReceiveType.getEnum(it.toString()).toString());

}

}

2.使用值对象集合给ComboBox控件赋值

// 获取结算方式列表

IAsstActTypeDefault iAsstActType = AsstActTypeDefaultFactory.getRemoteInstance();

AsstActTypeDefaultCollectioni asstActTypeColl = iAsstActType

.getAsstActTypeDefaultCollection(" where isAccountCussent = 1");

AsstActTypeDefaultInfo defaultVal = null;

int count = asstActTypeColl.size(); 

Object[] typeValue = new Object[count];

for (int i = 0; i < count; i++)

{

AsstActTypeDefaultInfo value = (AsstActTypeDefaultInfo) asstActTypeColl.get(i);

if (value.isIsDefaultAccountPayable())

{

defaultVal = value;

}

ObjectUuidPK pk = new ObjectUuidPK(BOSUuid.read(value.getAsstActType().getString("id")));

AsstActTypeInfo asstInfo = AsstActTypeFactory.getRemoteInstance().getAsstActTypeInfo(pk);

//cbi[i] = new ComBoxInfo(asstInfo, asstInfo.getName(), true);

String typeName = asstInfo.getName();

String typeId = asstInfo.getId().toString();

String typeQueryName = asstInfo.getDefaultQueryName();

String typeTableName = asstInfo.getRealtionDataObject();

int csType = 0; //asstActTypeInfo.getCsType().getValue();

asstActType = new AsstActTypeUtils(typeName, typeId, typeTableName, typeQueryName, csType);

typeValue[i] = (Object) asstActType;

}

///String strQueryName = "F7SupplierQuery";

this.kDComAccountCussentType.removeAllItems();

this.kDComAccountCussentType.addItems(typeValue);

this.kDComAccountCussentType.setSelectedIndex(0);

 2.10 F7赋值

ObjectUuidPK pk = new ObjectUuidPK(id);

IObjectValue objVal = DynamicObjectFactory.getRemoteInstance().getValue(pk.getObjectTypei(), pk);

bizPrompt.setData(objVal);

private void setCompanyF7()

{

//公司的F7的设置

OrgType[] CompanyType = { OrgType.Company };

//首先定义需要显示那些树,这里只显示财务树

//为F7控件指定PromptBox 

this.bizPromptCompany.setEditFormat("$number$");

this.bizPromptCompany.setDisplayFormat("$name$");

this.bizPromptCompany.setEditable(true);

this.bizPromptCompany.setCommitFormat("$number$");

OrgUnitTreePromptBox boxCompany = new OrgUnitTreePromptBox(this, CompanyType, null,

OrgSelect.OnlySelectCompanyEntity, false, false, false);

bizPromptCompany.setSelector(boxCompany);

bizPromptCompany.setData(currentCompany);

bizPromptCompany.setEnabled(false);

}

//设置币别

private void setCurrency() throws EASBizException, BOSException

{

ICurrency iCurrency = null;

CurrencyCollection con = null;

try

{

iCurrency = CurrencyFactory.getRemoteInstance();

con = iCurrency.getCurrencyCollection(true);

}
b97e

catch (Exception e)

{

// TODO 自动生成 catch 块

MsgBox.showError(this, EASResource.getString(resClassName, "currencyFail"));

SysUtil.abort();

}

if (con != null)

{

Object[] typeValue = new Object[con.size()];

int j = 0;

for (int i = 0; i < con.size(); i++)

{

CurrencyInfo currencyInfo = (CurrencyInfo) con.get(i);

String typeName = currencyInfo.getName();

String typeId = currencyInfo.getId().toString();

String typeQueryName = currencyInfo.getNumber();

asstActType = new AsstActTypeUtils(typeName, typeId, typeQueryName);

if (asstActType != null)

{

typeValue[i] = (Object) asstActType;

if(typeId.equalsIgnoreCase(((CurrencyInfo)currentCompany.getBaseCurrency()).getId().toString()

))

{

j = i;

}

}

}

this.bizPromptcurrency.removeAllItems();

this.bizPromptcurrency.addItems(typeValue);

//默认值为当前公司的本位币

this.bizPromptcurrency.setSelectedIndex(j);

}

else

{

MsgBox.showError(this, EASResource.getString(resClassName, "currencyFail"));

SysUtil.abort();

}

}

2.11 设置单据分录单元格格式

// 设置单据分录格式

getDetailTable().getColumn(TB_RELABILL).setWidth(100);

getDetailTable().getColumn(TB_ORGUNIT).setWidth(180);

getDetailTable().getColumn(TB_BIZMAN).setWidth(100);

getDetailTable().getColumn(TB_PAYAMOUNT).setEditor(number_CellEditor); getDetailTable().getColumn(TB_PAYAMOUNT).getStyleAttributes().setNumberFormat("%r-[=]{#.00}f"); getDetailTable().getColumn(TB_PAYAMOUNT).getStyleAttributes().setHorizontalAlign(HorizontalAlignment.RIGHT);

2.12 设置单元格可编辑

for (int i = 0; i < kdtEntrys.getRowCount(); i++)

{

kdtEntrys.getRow(i).getCell("orgUnit").getStyleAttributes().setLocked(false);

kdtEntrys.getRow(i).getCell("bizMan").getStyleAttributes().setLocked(false);



//如果折扣金额为null则初始化为0

if (kdtEntrys.getRow(i).getCell("discountAmount").getValue() == null)

{

kdtEntrys.getRow(i).getCell("discountAmount").setValue(new BigDecimal("0.0"));

}

//汇总分录行金额

BigDecimal amount = new BigDecimal("0");

for (int i = 0, n = kdtEntrys.getRowCount(); i < n; i++)

{

amount = amount.add(UIRuleUtil.getBigDecimal(UIRuleUtil.getBigDecimalValue

(kdtEntrys.getCell(i,TB_PAYAMOUNT).getValue())));

}

this.txtTotalAmounts.setText(null);

this.txtTotalAmounts.setEnable(false);

this.txtTotalAmounts.setText(amount);

//和零比较

if (amount.compareTo(new BigDecimal("0.00")) == 0)

2.13 删除行

public void actionDeleteLine_actionPerformed(ActionEvent e)throws Exception {

IRow row = getSelectedRow();

if (row != null) {

kDTable1.removeRow(row.getRowIndex());

}

}

2.14 F7专用选择界面的设置

public void setF7Selector() throws Exception

{

KDBizPromptBox bizPromptBox = new KDBizPromptBox();// 要绑定的F7控件

CoreUIObject ui = null;// 父界面对象

CompanyOrgUnitInfo companyInfo = null; // 当前财务组织

// 客户 

bizPromptBox.setSelector(new GeneralKDPromptSelectorAdaptor(bizPromptBox, new F7CustomerTreeDetailListUI(), ui));

// 供应商

bizPromptBox.setSelector(new GeneralKDPromptSelectorAdaptor(bizPromptBox, new F7SupplierTreeDetailListUI(), ui));

// 物料

bizPromptBox.setSelector(new GeneralKDPromptSelectorAdaptor(bizPromptBox, new F7MaterialTreeListUI(), ui));

// 职员

HashMap map = new HashMap();

map.put(PersonF7UI.ALL_ADMIN, "YES");

bizPromptBox.setSelector(new PersonPromptBox(ui, map));

// 公司

CompanyF7 org = new CompanyF7(ui);

org.setRootUnitID("");

bizPromptBox.setSelector(new CompanyF7(ui));

// 成本中心

bizPromptBox.setSelector(new CostCenterF7(ui));

// 行政组织

bizPromptBox.setSelector(new AdminF7(ui));

// 采购组织

bizPromptBox.setSelector(new PurchaseF7(ui));

// 库存组织

bizPromptBox.setSelector(new StorageF7(ui));

// 销售组织

bizPromptBox.setSelector(new SaleF7(ui));

// 利润中心组织

bizPromptBox.setSelector(new ProfitCenterF7(ui));

// 利润中心组织

bizPromptBox.setSelector(new ProfitCenterF7(ui));

// 科目

bizPromptBox.setSelector(new AccountPromptBox(ui, companyInfo, new FilterInfo())); 

}

2.15 获取各模块系统状态信息

public void getSystemStatue() throws EASBizException, BOSException

{

CompanyOrgUnitInfo companyInfo = null; // 当前财务组织

// SystemStatusCtrolUtils 工具类可获取各模块系统状态信息,如当前会计期间,系统是否启用或关闭等信息

SystemStatusCtrolUtils.getCurrentPeriod(null/* 上下文信息,如在客户端使用可为null */, SystemEnum.ACCOUNTSPAYABLE, companyInfo/**/);

}

2.16 获取当前登陆信息

public void getSystemInfo()

{

// SysContext工具类可获取当前登陆用户的信息,可根据需要进行调用。

// 举两例如下:

SysContext.getSysContext().getCurrentUserInfo();// 获取当前登陆用户信息

SysContext.getSysContext().getCurrentFIUnit();// 获取当前财务组织

}

2.17 获取参数平台参数设置的示例代码

public void getParam() throws EASBizException, BOSException

{

CompanyOrgUnitInfo companyInfo = null; // 当前财务组织

ObjectUuidPK orgPk = new ObjectUuidPK(companyInfo.getId());

// ParamManager工具类提供了不同的方法获取参数俱,可根据自己的需要进行调用,

// 示例如下:

ParamManager.getParamValue(null/* 上下文信息,客户端调用可以为null */, orgPk, "AR_INIT_CHECK_TYPE");



2.18 网络互斥功能示手工控制

public void doMutexService()

{

IMutexServiceControl mutex = MutexServiceControlFactory.getRemoteInstance();

UserInfo user = null; // 请求锁有用户

String billId = null; // 要锁定/解锁的单据Id

// 请求锁定

mutex.requestObjIDForUpdate(billId, user.getString("id"));

// 解除锁

mutex.releaseObjIDForUpdate(billId);

}

Tree:TreeBase(增加parentid级次)

Data:DataBase、BillBase(增加关联关系,对Tree的引用)

2.19 Tree- List实现方法1

protected ITreeBase getTreeInterface() throws Exception

{

return com.kingdee.eas.custom.TreeGroupTestTreeFactory.getRemoteInstance();

}

2.20 Tree-List点击树上结点时形成过滤条件时的字段

如:protected String getQueryFieldName()

{

return "treeid.id";

}

2.21 Tree-树形控件的初始化级次 [optional]

protected int getTreeInitialLevel() 

{

return TreeBuilderFactory.DEFAULT_INITIAL_LEVEL;

}

2.22 Tree-树形空间的默认展开级次 [optional]

protected int getTreeExpandLevel()

{

return TreeBuilderFactory.DEFAULT_EXPAND_LEVEL;

}

2.23 Tree-返回树形控件的根名称

protected String getRootName()

{

return "TreeGroupTest";

}

2.24 Tree-数据过滤(重载实现对树的过滤)

getDefaultFilterForTree()方法,是默认的cu过滤条件

2.25 Tree-控件基本使用

2.25.1 初始化树形控件

//treeMain控件名

protected void initTree() throws Exception



TreeSelectionListener[] listeners = treeMain.getTreeSelectionListeners();

TreeSelectionListener treeSelectionListener = listeners[0];

treeMain.removeTreeSelectionListener(treeSelectionListener);

ITreeBuilder treeBuilder

= TreeBuilderFactory.createTreeBuilder(getLNTreeNodeCtrl(),getTreeInitialLevel() , getTreeExpandLevel(),getDefaultFilterForTree());

if (getRootName() != null)

{

KDTreeNode rootNode = new KDTreeNode(getRootObject());

( (DefaultTreeModel) treeMain.getModel()).setRoot(rootNode);

}

else

{

( (DefaultTreeModel) treeMain.getModel()).setRoot(null);

}

//将数据填入控件中

treeBuilder.buildTree(treeMain);

//增加选择事件

treeMain.addTreeSelectionListener(treeSelectionListener);

}

2.25.2 返回选中的树结点

public KDTreeNode getSelectedTreeNode()

{

return (KDTreeNode) treeMain.getLastSelectedPathComponent();



2.25.3 返回树结点的值

return (TreeBaseInfo) ((KDTreeNode)

treeMain.getLastSelectedPathComponent()).getUserObject();

2.25.4 删除类别时刷新当前结点的父结点,并定位到当前结点的父结点。

KDTreeNode treeNode = (KDTreeNode) treeMain

.getLastSelectedPathComponent();

if (treeNode != null && treeNode.getParent() != null)

{

TreePath parentPath = treeMain.getSelectionPath().getParentPath();

KDTreeNode parentNode = (KDTreeNode) treeNode.getParent();

parentNode.remove(treeNode);

treeMain.updateUI();

treeMain.setSelectionPath(parentPath);

treeBuilder.refreshTreeNode(treeMain , parentNode ,this.getDefaultFilterForTree());

treeMain.expandPath(parentPath);

}

//刷新Query数据

CacheServiceFactory.getInstance().discardQuery(this.mainQueryPK);

 2.25.5 设置选中根结点

treeMain.setSelectionRow(0); 

2.25.6 类别新增与修改时,刷新当前选中结点

KDTreeNode treeNode = (KDTreeNode) treeMain

.getLastSelectedPathComponent();

if (treeNode != null && treeNode.getParent() == null)

{

TreePath oldPath = treeMain.getSelectionPath();

treeBuilder.refreshTreeNode(treeMain , treeNode,this.getDefaultFilterForTree());

treeMain.setSelectionPath(oldPath);

treeMain.expandPath(oldPath);

}

 

2.25.7 修改类别时刷新当前结点的父结点,并定位到当前结点

KDTreeNode treeNode = (KDTreeNode) treeMain.getLastSelectedPathComponent();

if (treeNode != null && treeNode.getParent() != null)

{

TreePath oldPath = treeMain.getSelectionPath();

TreePath parentPath = treeMain.getSelectionPath().getParentPath();

KDTreeNode parentNode = (KDTreeNode) treeNode.getParent();

treeBuilder.refreshTreeNode(treeMain , parentNode ,this.getDefaultFilterForTree());

treeMain.setSelectionPath(TreePathUtil.getNewTreePath(treeMain ,

treeMain.getModel() , oldPath));

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息