培训day10(新增保存校验还款编号字段不能重复)

培训day10(新增保存校验还款编号字段不能重复)
1.业务需求:

2.代码实现
InsertBeforeRule.java

	/*新增保存时,校验还款编号字段不能重复,如果重复,提示哪行和哪行重复*/
	private void saveCheckRepeatHkno(AggYhlypxhtfkdVO aggvo) throws BusinessException{
		YhlypxhtfkBVO[] bvos = (YhlypxhtfkBVO[]) aggvo.getChildren(YhlypxhtfkBVO.class);
		if(bvos != null && bvos.length > 0){
			Map<String, List<String>> map = new HashMap<String, List<String>>();
			//往map中存值,往list中存值
			for(int i = 0; i < bvos.length; i++){
				if(bvos[i].getHkno() != null && !bvos[i].getHkno().equals("")){
					String rowno = bvos[i].getRowno();
					String hkno = bvos[i].getHkno();
					if(map.containsKey(hkno)){
						List<String> list = map.get(hkno);
						list.add(rowno);
					}else{
						List<String> list = new ArrayList<>();
						list.add(rowno);
						map.put(hkno, list);
					}
				}
			}
			//遍历map,遍历list
			StringBuilder sb = new StringBuilder();
			for (String hkno : map.keySet()) {
				List<String> list = map.get(hkno);
				if(list != null && list.size() > 1){
					Collections.sort(list);//对list进行升序排序
					for (String str : list) {
						sb.append(str).append(",");
					}
					sb.delete(sb.length() - 1, sb.length());
					sb.append(";");
				}
			}
			if(sb != null && sb.length() > 0){
				throw new BusinessException(sb + "行号还款编号对应值重复;");
			}
		}
		
	}

2.代码实现
InvoiceAction.java

	/*点击开票按钮时,表体数量和数量(开票)必须相同,如果不相同,提示哪些行不相同*/
	private void CheakSlSlkp(SaleInvoiceBVO[] bvos) throws BusinessException {
		if(bvos != null && bvos.length > 0){
			List<String> list = new ArrayList<>();
			for(int i = 0; i < bvos.length; i++){
				//依次获取各行行号
				String rowno = bvos[i].getCrowno();
				//依次获取各行数量
				UFDouble num = NullValueUtils.getNullUFdoubleValue(bvos[i].getNastnum());
				//数量(开票)
				UFDouble numkp = NullValueUtils.getNullUFdoubleValue(bvos[i].getVbdef5());
				//如果表体数量和数量开票不相等时,将主键和对应行号的List集合存入map
				if(num.sub(numkp).compareTo(UFDouble.ZERO_DBL) != 0){
					list.add(rowno);
				}
			}
			if(list != null && list.size() > 1){
				Collections.sort(list);//对list进行升序排序
				StringBuilder sb = new StringBuilder();
				for(String rowno : list){
					sb.append(rowno).append(",");
				}
				sb.delete(sb.length()-1, sb.length());;
				throw new BusinessException("第" + sb.toString() + "行的数量和数量(开票)不相等,请检查!");
			}
		}	
	}
  • 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、付费专栏及课程。

余额充值