单据开发-业务单据后台Bean代码(GUI端)
金蝶云社区-黒白
黒白
1人赞赏了该文章 495次浏览 未经作者许可,禁止转载编辑于2022年04月22日 13:22:08

关注公众号获取更多金蝶EAS开发方面的内容

公众号.jpg

因论坛版权要求,部分图片无法显示,可以直接方位微信公众号链接

https://mp.weixin.qq.com/s/iK0Mx3wu3BW6ZG-58r5-ig

本篇文档主要介绍实体所对应的后台能Bean的常用方法

01


关于后台Bean的说明


1、常用的实体(.entity)和功能(.facade)文件发布成功后,都会在相应的路径下面生成对应的bean文件,文件名称统一为:实体名/功能+ControllerBean

2、前端调用后台bean的方法通常为

    实体名/功能名Factory.getRemoteInstance().方法名

3、后台bean中调用其他实体/功能的后台方法通常为
    实体名/功能名Factory.getLocalInstance(ctx).方法名

02



保存

    /**
     * 保存
     */
    protected IObjectPK _save(Context ctx, IObjectValue model)
    		throws BOSException, EASBizException {
    	//保存前
    	return super._save(ctx, model);
    }

03



删除

    /**
     * 删除
     */
    protected void _delete(Context ctx, IObjectPK pk) throws BOSException,
    		EASBizException {
    	//删除前判断单据ID 是否被引用
    	String isDelete = FMIsqlFacadeFactory.getLocalInstance(ctx).wholeSearchs(pk.toString());
    	if(!BaseUtil.isEmpty(isDelete)){
    		throw new EASBizException(new NumericExceptionSubItem("21","单据已被引用,禁止删除!")); //抛出异常,前台报错提示
    	}
    	super._delete(ctx, pk);
    }

04



提交


    /**
     * 提交
     */
    protected IObjectPK _submit(Context ctx, IObjectValue model)
			throws BOSException, EASBizException {
    	//保存前
    	ExpenseBillInfo info= (ExpenseBillInfo)model;//获取单据对象
    	if(billStateEnum.AUDIT.equals(info.getBillState())){  //判断已审核的单据禁止重复提交
			throw new EASBizException(new NumericExceptionSubItem("21","已审核数据不允许提交!"));
		}
    	//此处可以写一些验证逻辑,如报销金额不能大于借款金额等
    	//
    	info.setBillState(billStateEnum.SUBMIT);// 更新单据状态为已提交
    	//这里不需要手动调用 update 来更新状态, 因为super._submit中会自动调用
		return super._submit(ctx, model);
	}

05



审核

    /**
     * 审核
     */
 
    protected void _passAudit(Context ctx, IObjectPK pk, IObjectValue model)
    		throws EASBizException, BOSException {
    	ExpenseBillInfo info= (ExpenseBillInfo)model;//获取单据对象
    	info.setAuditTime(new Date());  //设置审批时间
		info.setAuditor((UserInfo) ctx.get("UserInfo")); //设置审批人
		info.setBillState(billStateEnum.AUDIT); //设置状态为已审批
		update(ctx, pk, info);//更新单据对象
		//此处可以写一下其他业务逻辑,例如更新其他单据的状态,例如反写其他单据的金额等等
    }

06



反审核

    /**
     * 反审核
     */
    protected void _unpassAudit(Context ctx, IObjectPK pk, IObjectValue model)
    		throws EASBizException, BOSException {
    	ExpenseBillInfo info= (ExpenseBillInfo)model;//获取单据对象
    	info.setAuditTime(null);  //设置审批时间
		info.setAuditor(null); //设置审批人
		info.setBillState(billStateEnum.SAVE); //设置状态为已审批
		update(ctx, pk, info);//更新单据对象
		
    }

07



审批中

    /**
     * 设置审批中(自定义方法)
     * 注:主要在流程中调用,设置单据状态为审批中
     */
    public void setAuditing(Context ctx, String pk) throws BOSException {
    	try {
			ExpenseBillInfo info = getExpenseBillInfo(ctx, new ObjectUuidPK(pk)); // 通过ID获取单据对象
			info.setBillState(billStateEnum.AUDITING); //设置状态为已审批
			update(ctx, new ObjectUuidPK(pk), info); //更新单据对象
			
		} catch (EASBizException e) {
			e.printStackTrace();
		}
    	
    }


本文转载自:微信公众号

作者:黑白

原文链接:https://mp.weixin.qq.com/s/iK0Mx3wu3BW6ZG-58r5-ig

赞 1