NC-鎬荤粨 - 鐧惧害鏂囧簱 联系客服

发布时间 : 星期一 文章NC-鎬荤粨 - 鐧惧害鏂囧簱更新完毕开始阅读74f7aecfaa00b52acfc7ca45

上一封 下一封 开发

1.1关于参照

1.1.1系统参照

当要传入带条件的SQL语句时就必须修改系统的参照,如:参照“存货管理档案”,

只参照参数“产品对应的顶级存货分类”所定义的存货分类及其下属分类的存货档案。如该参数为空,则参照所有存货档案。

在UI中的setDefaultData类中添加对参照传入条件的修改,如: // 参照查询条件重写

// 获得要修改的表格项目,此处为要修改表头的产品编码

UIRefPane pane = (UIRefPane) getBillCardPanel().getHeadItem(

HpCostcardVO.PK_INVMANDOC).getComponent();

// 获得该参照的父类,以便修改getClassWherePart方法

AbstractRefGridTreeModel model = (AbstractRefGridTreeModel) pane.getRefModel();

// 获得该项目的PK值

if (SysInitBO_Client.getPkValue(this._getCorp().getPk_corp(), \) != null) {

// 通过

P值查询需要的内容K

String sPkValue = SysInitBO_Client.getPkValue(this._getCorp().getPk_corp(), \); String sWhere = model.getClassWherePart(); if (!sPkValue.equals(\)) { // 查询出大类的编码

SuperVO vo = HYPubBO_Client.queryByPrimaryKey(InvclVO.class,sPkValue);

}

}

sWhere = sWhere + \

+ vo.getAttributeValue(\).toString()+ \;

// 将新的WHERE条件传入setClassWherePart方法

model.setClassWherePart(sWhere);

1.1.2自定义参照

当系统提供的参照不能满足需求的时候就需要进行自定义参照. 自定义参照一般分为详情见自定义参照文件夹下。

2. 查询问题

2.1 查询模版中的自定义项

如果在查询模版中添加了一些自定义项,但是该单据的主表或者子表中都没有该项对应的字段时,就需要修改查询模版的查询方法.

在MyDelegator.java中修改queryByCondition()方法,涉及到多表,所以要加条

件“dr”改为“表名+dr”如下:

public SuperVO[] queryByCondition(Class voClass, String strWhere)

throws Exception {

strWhere = strWhere.replace(\, \); strWhere = strWhere + \ +ClientEnvironment.getInstance().getCorporation().getPk_corp()

+ \;SuperVO[] queryVos = nc.ui.hp.pub.ServiceFactory.getIHPPubService()

.queryCostgather(strWhere);

// return super.queryByCondition(voClass, strWhere);

return queryVos; }

如果在条件中需要加入其他的条件,比如加入本公司,需要在MyEventHandler.java中重载onBoQuery()方法

protected void onBoQuery() throws Exception { }

StringBuffer strWhere = new StringBuffer(); if (askForQueryCondition(strWhere) == false)

return;// 用户放弃了查询

// SuperVO[] queryVos = queryHeadVOs(strWhere.toString()); getBufferData().clear(); // 增加数据到Buffer // addDataToBuffer(queryVos);

strWhere.append(\ + strWhere + \

+ getUI()._getCorp().getPk_corp() + \);

doBodyQuery(strWhere.toString()); updateBuffer();

getUI().getBillCardPanel().setEnabled(true);

同时将查询模版中的所有项目都改为:表名+项目名。 如:将pk_costcard修改为hp_costcard. pk_costcard。

2.2 保存后刷新自定义项

如果添加页面上有自定义的项目,保存时不保存到数据库,那么保存完成后默认是不加载这些项的,想要加载就必须重载AbstractMyDelegator()方法

/**

* 根据条件进行数据查询(重写) 张建辉

*/

public SuperVO[] queryHeadAllData(Class headClass, String strBillType,

String strWhere) throws Exception {

BilltypeVO billVo = PfUIDataCache.getBillType(strBillType); if (billVo.getWherestring() != null }

&& billVo.getWherestring().length() != 0) {

if (strWhere != null)

strWhere = strWhere + \ + billVo.getWherestring() + \;

else

strWhere = billVo.getWherestring();

SuperVO[] vo = HYPubBO_Client.queryByCondition(headClass, strWhere); // 此处的vo对象是系统按照表查询出来的vo, 需要将此vo进行处理, // Getcostcardother是处理此vo的方法

vo = nc.ui.hp.pub.ServiceFactory.getIHPPubService()

.Getcostcardother(vo);

return vo; }

并在MyEventHandler.java中重载onBoSave()方法,在里面的最后加上下面一句话

super.onBoRefresh();

Getcostcardother(vo)代码参考CostCardDAO.java。

注:UI中不允许直接引用BS段的类,需要建立接口从而进行引用。

3. 保存问题

3.1 保存时报单据类型错误