找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 5548|回复: 3

[经验] 单据校验

[复制链接]
发表于 2009-10-14 12:26:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
方式一 直接在前台写SQL进行查询
方式二 写类的方式
1.UI 工厂定义了 IBDGetCheckClass 接口来获得后台校验类的信息,该
接口只有一个方法 getCheckClass ,它返回后台校验类的名称。我们定义类
CardGetCheck,实现该接口,如下:
import java.io.Serializable;
import nc.vo.trade.pub.IBDGetCheckClass;
public class CardGetCheck implements Serializable,IBDGetCheckClass{
        public String getCheckClass() {
                // TODO Auto-generated method stub
                return "nc.ui.zx.zx01.BusiCheck"; //全类名
        }
}
2.在UI类中,重载getUserObject方法:
public Object getUserObject() {
        return new CardGetCheck();
}
3.BS 端的 SampleBusiCheck 类就是后台校验的执行类。后台校
验执行类的接口是 IBDBusiCheck ,所有后台校验执行类都应该实现这
个接口。假设我们的单据要保证文具名不和数据库中重复,
BusiCheck类如下:
package nc.ui.zx.zx01;
import nc.bs.trade.business.IBDBusiCheck;
import nc.bs.trade.comcheckunique.BillIsUnique;
import nc.vo.pub.AggregatedValueObject;
import nc.vo.pub.BusinessException;
import nc.vo.trade.pub.IBDACTION;
public class BusiCheck implements IBDACTION, IBDBusiCheck {
        public void check(int intBDAction, AggregatedValueObject vo, Object userObj)
                        throws Exception {
                // 对保存进行验证
                if (intBDAction == this.SAVE) {
                        this.onCheckSave(vo);
                }
        }
        public void dealAfter(int arg0, AggregatedValueObject arg1, Object arg2)
                        throws Exception {
                // TODO Auto-generated method stub
        }
        private void onCheckSave(AggregatedValueObject vo) throws Exception {
                // 唯一校验工具类
                BillIsUnique check = new BillIsUnique();
                java.util.ArrayList unilist = new java.util.ArrayList();
                unilist.add(new String[] {"name"});
                try {
                        check.checkBillIsUnique(vo, unilist);
                } catch (BusinessException e) {
                        throw new BusinessException("该文具已经存在");
                }
        }
}

方式一
在ClientEH中的onBoSave()中调用如下代码
1.非空的有效性判断
         getBillCardPanelWrapper().getBillCardPanel().getBillData().dataNotNullValidate();
2.表体不能为空校验
         BillModel model = getBillCardPanelWrapper().getBillCardPanel().getBillModel();
         if (model != null) {
             int rowCount = model.getRowCount();
             if (rowCount < 1) {
                     getBillUI().showErrorMessage("表体行不能为空!");
                 return;
             }
         }
3.表体不重复验证
BillModel model = getBillCardPanelWrapper().getBillCardPanel().getBillModel();
int res1 = uniqueCheck(model, new String[]{"pk_task"});
         if(res1 == 1){
             getBillUI().showErrorMessage("任务分类有重复,不允许保存!");
             return;
         }
下面代码可以下载Toolkits类中
public int uniqueCheck(BillModel bm,String[] code){
                int res=0;
                HashMap hm=new HashMap();
                for(int i=0;i<bm.getRowCount();i++){
                    String key="key";
                    for(int j=0;j<code.length;j++){
                        key+=bm.getValueAt(i,code[j])==null?"":bm.getValueAt(i,code[j]).toString();
                    }
                    if(hm.containsKey(key)){
                        return 1;
                    }
                    hm.put(key, i+"");
                }
                return res;
            }
发表于 2009-10-14 13:45:55 | 显示全部楼层
学习了,十分感谢楼主!
发表于 2011-10-28 13:08:10 | 显示全部楼层
学习了,十分感谢楼主!
发表于 2013-5-13 10:31:36 | 显示全部楼层

学习了,十分感谢楼主!
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-5-10 17:31 , Processed in 0.028089 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表