调用单据转换规则,将一个vo转换为另一个vo

AggregatedValueObject[] vos = PfUtilTools.runChangeDataAry("30", "F2", SaleOrderVOs);

获取一组VO的一列值,同时保证值不重复,排除null值

String[] nc.vo.ic.pub.util.VOEntityUtil.getVOsNotRepeatValue(CircularlyAccessibleValueObject[] vos, String field)

或者 String[] sources = (String[]) AggVOUtil.getDistinctFieldArray(mvos,"pk_planitem", String.class);

将VO数组转换为Map

Map<String, MaterialVO> map = CollectionUtils.hashVOArray(MaterialVO.CODE, materialVOQuery);

差异VO传递框架 可以参考

1.传到后台前

// data为当前model缓存中的数据,object为当前界面上的数据

// 如果是新增保存调用constructInsert方法

Object serverBill = new ClientBillToServer().construct(new IBill[] { data }, new IBill[] { (IBill) object })[0];

//传递处理后的差异VO到后台

Object obj = getService().update(serverBill);

2.后台处理

使用BillTransferTool 类:

//参数是前台传递到后台的差异VO

BillTransferTool transferTool = new BillTransferTool(new AggSalequotationHVO[]{serverBill });



//原始VO,即数据库中的数据

AggSalequotationHVO[] originBills = transferTool.getOriginBills();

//数据库中数据和前台传递过来的差异VO合并后的结果

AggSalequotationHVO[]fullBills = transferTool.getClientFullInfoBill();



// 更新之后返回出删除行VO之外的全VO,TS已经被更新过

AggSalequotationHVO[] bills = updateAction.update(fullBills,originBills);



//向前台返回只发生了改变的轻量vo

return transferTool.getBillForToClient(bills)[0];

3.后台返回后

// object为界面上的数据,obj为后台返回的差异数据

new ClientBillCombinServer().combine(new IBill[] { (IBill) object },new IBill[] { (IBill) obj });

//合并之后用object刷model缓存和界面

return object;

将拉平的viewvo转换为aggvo的方法

AggEiplContractHVO[] queryVos = new CombineViewToAggUtil<AggEiplContractHVO>(AggEiplContractHVO.class, EiplContractHVO.class,EiplContractFVO.class).combineViewToAgg(views, "pk_elpcontract");