金蝶EAS,分录表格数据唯一性校验,不允许录入重复值

本文介绍了一种针对业务单据中的分录表进行数据校验的方法,确保同一列数据不重复,通过使用集合来检查并标记重复项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业务场景:业务单据包含分录,单据编辑界面上有分录表格,分录表格录入数据时,校验其中的某一列数据不允许出现重复。

本例中,单据实体名称为ReverseBill,分录实体名称为ReverseBillEntry。

业务校验verifyInput时,界面控件数据已经封装到界面所绑定的数据对象editData。

分录表格中每行数据为一条分录对象ReverseBillEntryInfo、多行数据为分录集合ReverseBillEntryCollection。

/**
 * 业务逻辑校验
 */
@Override
protected void verifyInput(ActionEvent e) throws Exception {
	
	ReverseBillEntryCollection coll = editData.getEntry(); //分录集合
	if(coll.isEmpty()){
		MsgBox.showWarning("分录不能为空!");
		abort(); //中断程序
	}	
	Set ids = new HashSet(); //利用集合元素唯一性
	StringBuffer msg = new StringBuffer(); //反馈信息
	for(int i = 0; i < coll.size(); i++){
		ReverseBillEntryInfo entry = coll.get(i); //得到一条分录对象
		String personId = entry.getPerson().getId().toString(); //人员ID
		if(ids.contains(personId)){
			msg.append("分录中第" + (i + 1) + "行人员存在重复!\n");
		} else {
			ids.add(personId); //人员信息缓存
		}
	}
	
	if(msg.length() > 0){
		msg.append("请检查并修改数据,然后重新保存。");
		MsgBox.showWarning(msg.toString());
		abort(); //中断程序
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值