培训day08(修改保存和删除回写)

培训day08(修改保存和删除回写)
1.修改保存
UpdateSaveWriteBackRule.java

public class UpdateSaveWriteBackRule implements ICompareRule<AggYhlypxhtfkdVO>{

	@Override
	public void process(AggYhlypxhtfkdVO[] afterAggvos, AggYhlypxhtfkdVO[] beforeAggvos) {
		// TODO 自动生成的方法存根
		for (int i = 0; i < beforeAggvos.length; i++) {
			try {
				updateWriteBackBefore(beforeAggvos[i]);
				updateWriteBackAfter(afterAggvos[i]);
			} catch (BusinessException e) {
				// TODO: handle exception
				ExceptionUtils.wrappBusinessException("放款单修改保存后写回合同" + e.getMessage());
			}

		}
	}

	//修改前
	private void updateWriteBackBefore(AggYhlypxhtfkdVO beforeAggvo) throws BusinessException{
		//通过合同号获取主表主键
		String pk_dkht = NullValueUtils.getNullStringValue(beforeAggvo.getParentVO().getHth());
		//判断合同主表主键是否为空
		if(!pk_dkht.equals("")){
			//获取放款单表体
			YhlypxhtfkBVO[] bvos = (YhlypxhtfkBVO[])beforeAggvo.getChildren(YhlypxhtfkBVO.class);
			//如果放款单表体有数据
			if(bvos != null && bvos.length > 0){
				//获取放款单子表来源单据主表主键
				//创建HashMap集合对象并指定泛型为String
				Map<String, UFDouble> map = new HashMap<String, UFDouble>();
				//循环遍历放款单子表
				for (int i = 0; i < bvos.length; i++) {
					//key存来源单据子表主键 ,value存数量
					map.put(bvos[i].getCsrcbid(), bvos[i].getNnum());
				}
				//创建billQuery查询合同对象
				BillQuery<AggYhlypxdkhtVO> billQuery = new BillQuery<AggYhlypxdkhtVO> (AggYhlypxdkhtVO.class);
				//根据放款单来源单据主表主键查询合同Aggvo
				AggYhlypxdkhtVO[] aggvos = billQuery.query(new String[] { pk_dkht });
				//克隆aggvo
				AggYhlypxdkhtVO clonevo =   (AggYhlypxdkhtVO) aggvos[0].clone();
				//获取合同子表
				YhlypxdkhtBVO[] itemvos = (YhlypxdkhtBVO[]) clonevo.getChildren(YhlypxdkhtBVO .class);
				//循环遍历合同子表
				for (int i = 0; i < itemvos.length; i++) {
					//判断Map集合对象中是否包含指定的键名
					if(map.containsKey(itemvos[i].getPk_dkht_b())){
						//给合同子表所有行的合同累计数量字段赋值      itemvos[i].getDef1():获取合同累计放款单数量的值      map.get(itemvos[i].getPk_dkht_b()):获取合同子表主键所映射的值
						itemvos[i].setDef1(NullValueUtils.getNullStringValue(NullValueUtils.getNullUFdoubleValue(itemvos[i].getDef1()).sub(map.get(itemvos[i].getPk_dkht_b()))));
						//将合同子表所有行的VOStatus的状态赋值为更新态
						itemvos[i].setStatus(VOStatus.UPDATED);
					}
				}
				//调用合同修改接口
				getService().update(new AggYhlypxdkhtVO[]{clonevo}, aggvos);
			}
		}

	}

	//修改后
	private void updateWriteBackAfter(AggYhlypxhtfkdVO afterAggvo) throws BusinessException{
		//通过合同号获取主表主键
		String pk_dkht = NullValueUtils.getNullStringValue(afterAggvo.getParentVO().getHth());
		//判断合同主表主键是否为空
		if(!pk_dkht.equals("")){
			//获取放款单表体
			YhlypxhtfkBVO[] bvos = (YhlypxhtfkBVO[])afterAggvo.getChildren(YhlypxhtfkBVO.class);
			//如果放款单表体有数据
			if(bvos != null && bvos.length > 0){
				//创建HashMap集合对象并指定泛型为String
				Map<String, UFDouble> map = new HashMap<String, UFDouble>();
				//循环遍历放款单子表
				for (int i = 0; i < bvos.length; i++) {
					//key存来源单据子表主键 ,value存数量
					map.put(bvos[i].getCsrcbid(), bvos[i].getNnum());
				}
				//创建billQuery查询合同对象
				BillQuery<AggYhlypxdkhtVO> billQuery = new BillQuery<AggYhlypxdkhtVO> (AggYhlypxdkhtVO.class);
				//根据放款单来源单据主表主键查询合同Aggvo
				AggYhlypxdkhtVO[] aggvos = billQuery.query(new String[] { pk_dkht });
				//克隆aggvo
				AggYhlypxdkhtVO clonevo =   (AggYhlypxdkhtVO) aggvos[0].clone();
				//获取合同子表
				YhlypxdkhtBVO[] itemvos = (YhlypxdkhtBVO[]) clonevo.getChildren(YhlypxdkhtBVO .class);
				//循环遍历合同子表
				for (int i = 0; i < itemvos.length; i++) {
					//判断Map集合对象中是否包含指定的键名
					if(map.containsKey(itemvos[i].getPk_dkht_b())){
						//给合同子表所有行的合同累计数量字段赋值      itemvos[i].getDef1():获取合同累计放款单数量的值      map.get(itemvos[i].getPk_dkht_b()):获取合同子表主键所映射的值
						itemvos[i].setDef1(NullValueUtils.getNullStringValue(NullValueUtils.getNullUFdoubleValue(itemvos[i].getDef1()).add(map.get(itemvos[i].getPk_dkht_b()))));
						//将合同子表所有行的VOStatus的状态赋值为更新态
						itemvos[i].setStatus(VOStatus.UPDATED);
					}
				}
				//调用合同修改接口
				getService().update(new AggYhlypxdkhtVO[]{clonevo}, aggvos);
			}
		}

	}

	//要修改哪个单子调哪个单子的接口
	private IYhlypxdkhtMaintain service;
	private IYhlypxdkhtMaintain getService(){
		if (service == null) {
			service = NCLocator.getInstance().lookup(IYhlypxdkhtMaintain.class);
		}
		return service;

	}

}

2.修改修改引用规则(AceYhlypxfkdUpdateBP.java)
在修改前规则中加上processer.addBeforeRule(new UpdateSaveWriteBackRule());

3.删除回写
DeleteSaveWriteBackRule.java

public class DeleteSaveWriteBackRule implements IRule<AggYhlypxhtfkdVO>{

	@Override
	public void process(AggYhlypxhtfkdVO[] aggvos) {
		// TODO 自动生成的方法存根
		for (int i = 0; i < aggvos.length; i++) {
			try {
				deleteWrite(aggvos[i]);
			} catch (BusinessException e) {
				// TODO: handle exception
				ExceptionUtils.wrappBusinessException("删除回写出错:" + e.getMessage());
			}

		}
	}

	private void deleteWrite(AggYhlypxhtfkdVO aggvo) throws BusinessException{
		//通过合同号获取主表主键
		String pk_dkht = NullValueUtils.getNullStringValue(aggvo.getParentVO().getHth());
		//判断合同主表主键是否为空
		if(!pk_dkht.equals("")){
			//获取放款单表体
			YhlypxhtfkBVO[] bvos = (YhlypxhtfkBVO[])aggvo.getChildren(YhlypxhtfkBVO.class);
			//如果放款单表体有数据
			if(bvos != null && bvos.length > 0){
				//创建HashMap集合对象并指定泛型为String
				Map<String, UFDouble> map = new HashMap<String, UFDouble>();
				//循环遍历放款单子表
				for (int i = 0; i < bvos.length; i++) {
					//key存来源单据子表主键 ,value存数量
					map.put(bvos[i].getCsrcbid(), bvos[i].getNnum());
				}
				//创建billQuery查询合同对象
				BillQuery<AggYhlypxdkhtVO> billQuery = new BillQuery<AggYhlypxdkhtVO> (AggYhlypxdkhtVO.class);
				//根据放款单来源单据主表主键查询合同Aggvo
				AggYhlypxdkhtVO[] aggvos = billQuery.query(new String[] { pk_dkht });
				//克隆aggvo
				AggYhlypxdkhtVO clonevo =   (AggYhlypxdkhtVO) aggvos[0].clone();
				//获取合同子表
				YhlypxdkhtBVO[] itemvos = (YhlypxdkhtBVO[]) clonevo.getChildren(YhlypxdkhtBVO .class);
				//循环遍历合同子表
				for (int i = 0; i < itemvos.length; i++) {
					//判断Map集合对象中是否包含指定的键名
					if(map.containsKey(itemvos[i].getPk_dkht_b())){
						//给合同子表所有行的合同累计数量字段赋值      itemvos[i].getDef1():获取合同累计放款单数量的值      map.get(itemvos[i].getPk_dkht_b()):获取合同子表主键所映射的值
						itemvos[i].setDef1(NullValueUtils.getNullStringValue(NullValueUtils.getNullUFdoubleValue(itemvos[i].getDef1()).sub(map.get(itemvos[i].getPk_dkht_b()))));
						//将合同子表所有行的VOStatus的状态赋值为更新态
						itemvos[i].setStatus(VOStatus.UPDATED);
					}
				}
				//调用合同修改接口
				getService().update(new AggYhlypxdkhtVO[]{clonevo}, aggvos);
			}
		}
	}

	//要修改哪个单子调哪个单子的接口
	private IYhlypxdkhtMaintain service;
	private IYhlypxdkhtMaintain getService(){
		if (service == null) {
			service = NCLocator.getInstance().lookup(IYhlypxdkhtMaintain.class);
		}
		return service;
	}

}

4.修改删除引用规则(AceYhlypxfkdDeleteBP.java)
在修改后规则中加上processer.addBeforeRule(new DeleteSaveWriteBackRule());

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和安韩Pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值