NC65 AggVO

NC文档

json数据处理

JSONObject jsonObject = JSONObject.parseObject(json);//json字符串获得json对象

jsonObject.put(key, value);//添加json数据的值

getJSONObject("");//获得json数据的值

Iterator<String> it = jsonObject.keySet().iterator();//获取json数据的键

jsonArray.getJSONObject(i);//jsonArray转JSONObject

JSONObject jsonObject2 = jsonObject.discard("name1");//删除一个字段

SuperVO

//所有VO都要继承他,用于保存数据,其中的数据放在valueIndex变量
 private transient Map<String, Object> valueIndex = new HashMap();
//分别用setAttributeValue/getAttributeValue方法去添加获取
public void setAttributeValue(String name, Object value);
public void getAttributeValue(String name, Object value);
//SuperVO就是一个Map结构的对象
//getAttributeNames获取Map的中的name
 public String[] getAttributeNames();


注意事项:对于一些特殊数据,如时间,其他对象等等,valueIndex中保存的是NC内部的时间对象,在获取转换成文本时要toString();

如果自动获取要用instanceof判断,先判断String再判断Object

getAttributeValue(string) instanceof String?getAttributeValue(string):(getAttributeValue(string) instanceof Object ? getAttributeValue(string).toString():getAttributeValue(string))

AggVO

//所有AggVO都要继承AbstractBill,他主要由ISuperVO,实现其中SuperVO就实现了ISuperVO

//AggVO存在于主子表关系中,他的作用存放主子表的VO,所以一个AggVO对应一张单据(一个表头和一个或多个表头)
//AggVO中分别用parent接收表头children接收表体,
private ISuperVO[][] children;
private ISuperVO parent;

//获取表体的数据,返回一个ISuperVO[]数组对象
getAllChildrenVO();//要强转

//获取表头的数据,返回一个ISuperVO对象
getParentVO();//这个是AggVO帮我们实习的,本质是调用AbstractBill的getParent()然后强转

关于Aggvo规则前后理解

//以新增为例
//其中有这几行代码
InsertBPTemplate<AggDocumentnoeHVO> bp = new InsertBPTemplate<AggDocumentnoeHVO>(DagPluginPoint.INSERT);

this.addBeforeRule(bp.getAroundProcesser());
this.addAfterRule(bp.getAroundProcesser());
	
return bp.insert(bills);

//以规则后为例,下面的图是规则前,两个只是调用的方法不同
//在图中可以看出,不管是规则前,还是规则后,都有一个IRule对象的参数,而且规则只接收IRule

IRule<AggDocumentnoeHVO> rule = null;//在addBeforeRule()\addAfterRule()两个方法中都有他,那他是干嘛的
//结合图片
addBeforeRule(bp.getAroundProcesser());//在这个方法中的参数是AroundProcesser对象
//在这个对象当中有两个RuleCollection<Object>变量,分别是before、after,对应规则前和规则后;
//我们只需要调用不同规则就好,调用时要在对应的方法中如this.addBeforeRule()、this.addAfterRule()

//我们写一个我们自己的规则
......
public  class Test implements IRule{
	@Override
	public void process(Object[] bills) {
		// TODO 自动生成的方法存根
		String bill= bills[0].toString();
		
		System.out.println(bill);
	}
}
......
    //再添规则
    rule=new Test()//这样我们就得到了IRule的子类
processer.addAfterRule(rule);//添加规则,这里的addAfterRule()和上面的this.addAfterRule()完全不同,只是名字相同
//这里的addAfterRule()是AroundProcesser对象的,这个是规则后的
//到这了一个规则就添加好了

//继续深入学习
//其实我们添加的规则都在RuleCollection中的List集合中
//从代码顺序来看是添加规则在调用
//最后是调用用了CommonOperatorTempale对象的operatr()方法
//在operatr()方法中,调用了三个方法分别为processer.before(vos)、operaor.operate(returnVOs)、processer.after(returnVOs)。
//我们只看第一个和第三个
//这两个都是调用AroundProcesser中的方法,这俩个方法的实现几乎是一模一样的,唯一不同的是取不同的RuleCollection实例第一个取before
//

思维导图

IArapPayableBillPubService

IArapPayableBillPubService ia = NCLocator.getInstance().lookup(IArapPayableBillPubService.class);//获取数据库操作的对象

// IArapPayableBillPubService可以直接操作VO对象,不需要写sql语句

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值