博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
eas之服务端常用代码
阅读量:5238 次
发布时间:2019-06-14

本文共 4938 字,大约阅读时间需要 16 分钟。

服务端代码的编写主要针对App目录下的 PurOrderControllerBean 实现类,典型的代码有新增、修改、检验等操作

1.提交控制

用户在编辑界面上点击‘保存’按钮时应用框架会调用 PurOrderControllerBean的submit方法,通过重载PurOrderControllerBean父类的submit方法,
可以对要新增、修改的数据进行校验、修正或做一些相关的判断:
protected IObjectPK _submit(Context ctx, IObjectValue model)throws BOSException, EASBizException
{
PurOrderInfo purOrderInfo = (PurOrderInfo) model;
//记录是否是新增,false表示是修改,据此可以作相关操作
boolean isAddNew = true;
if(purOrderInfo.getId()!=null&&_exists(ctx,new ObjectUuidPK(purOrderInfo.getId())))
{isAddNew = false;}
//检查是否设置number
//checkNumber(ctx, otherBillInfo);
//调用父类的方法检查是否有重号
//super._checkNumberDup(ctx, null, purOrderInfo );
//设置值对象中的一些默认值
setDefaultValue(ctx, purOrderInfo);
//校验值对象中的属性是否合法
checkValid(purOrderInfo);
//调用框架的提交方法
return super._submit(ctx, purOrderInfo);
}
对于用户编辑界面上点击'暂存'按钮时调用 protected IObjectPK _save(Context ctx, IObjectValue model){}方法,其操作过程与调用_submit方法类似.

对于服务端的submit方法在实际应用中对应新增addNew或修改update,所以在服务端的架构中submit方法是根据pk是否为空进一步调用update方法,然后在服务端的

实现类中可以重载addNew及update来做具体的处理.例如CoreBaseControllerBean类中的submit方法实现:
protected void _submit(Context ctx,IObjectPK pk,IObjectValue model)throws BOSException,EASBizException{
CoreBaseInfo coreBaseInfo=(CoreBaseInfo)model;
if(isExistPropertyName(ctx,coreBaseInfo,IFWStatus.effectedStatus)){
coreBaseInfo.setInt(IFWStatus.effectedStatus,EffectedStatusEnum.EFFECTED_VALUE);
}
ServiceStateManager.getInstance().enableNextCallServices();
if(coreBaseInfo.getId()!=null&&this.exists(ctx,pk)){
super.update(ctx,pk,coreBaseInfo);
}else{
super.addNew(ctx,pk,coreBaseInfo);
}
}

protected IObjectPK _submit(Context ctx,IObjecrtValue model)throws BOSException,EASBizException{

CoreBaseInfo coreBaseInfo=(CoreBaseInfo)model;
if(isExistPropertyName(ctx,coreBaseInfo,IFWStatus,effectedStatus)){
coreBaseInfo.setInt(IFWStatus.effectedStatus,EffectedStatusEnum.EFFECTED_VALUE);
}
IObjectPK retValue;
ServiceStateManager.getInstance().enableNextCallService();
if(coreBaseInfo.getId!null && this.exists(ctx,new ObjectUuidPK(coreBaseInfo.getId()))){
retValue=new ObjectUuidPK(coreBaseInfo.getId()){
super.update(ctx,retValue,coreBaseInfo);
return retValue;
}
}else{
retValue=super.addNew(ctx,coreBaseInfo);
return retValue;
}
}

在用户的服务端的实现类中的代码如下:

protected void _addNew(Context ctx,IObject pk,IObjectValue model)BizeException{
PurOrderInfp purOrderInfo=(PurOrderInfo)model;
//检查是否设置number
checkNumber(ctx,otherBillInfo);
//检查是否有重号;
checkNumberDup(ctx,null,purOrerInfo);
//设置值对象中的一些默认值
setDefaultValue(ctx,purOrderInfo);
//校验值对象中的属性是否合法
checkValid(purOrderInfo);
//调用框架的提交方法
return super.addNew(ctx,pk,purOrderInfo);
}

2.

3.生成凭证前的控制
通过重载父类的createVoucher方法实现其他控制
protected void createVoucher(Context ctx,String billId)throws BOSException,EASBizException{
IPurOrder purOrder=PurOrderFactory.getLocalInstance(ctx);
//创建pk对象
ObjectUuiPK pk=new ObjectUuidPK(billId);
//在客户端获取用户信息
UserInfo currentUser=(UserInfo)ctx.get(SysContextConstant.USERINFO);
//根据ID返回当前的值对象
PurOrderInfo purOrderInfo;
purOrderInfo=getPurOrderInfo(ctx,pk);
//作相关判断
if(purOrderInfo!=null){
Date billDate=purOrderInfo.getBillDate();
if(billDate!=null){
//作相应处理
}
}

//已生成凭证,不能重复生成凭证

if(purOrderInfo.isFiVouchered()){
throw new IBizException("..............");
}
if(BillStatusEnum.AUDITED.equals(purOrderInfo.getBillStatus())){
//此过程中自动生成凭证
purOrderInfo.setFiVouchered(true);
purOrderInfo.update(pk,otherBillInfo);
}
}

4.生成凭证

protected IObjectValue _genVoucher(Context ctx,String billId)throws BOSException,EASBizException{
//生成凭证 并返回集合
IOjectCollection tmpCollection=null;
//dep动态会计平台
IDAPTransformer iDAPTransformer=DAPTransformerFactory.getLocalInstance(ctx);
CoreBaseInfooCollection coreTransCollection =new CoreBillBaseCollection();
ObjectUuidPK pk=new ObjectUuidPK(billId);
//获取值对象
PurOrderInfo model=(PurOrderInfo)this.getValue(ctx,pk);
coreTransCollection.add(model);

//获取转换后的凭证值对象

tmpCollection=iDAPTransformer.transformAuto(coreTransCollection,DAPVoucherTypeEnum.FIVoucher);
//创建凭证实体对象接口
IVoucher vchCtrl=(IVoucher)VoucherFactory.getLocalInstance(ctx);
//从集合中取出转换后的凭证值对象
VoucherInfo vch=(VoucherInfo)tmpCollection.getObject(0);
VoucherInfo vch1=new VoucherInfo();
vch1=vchCtrl.exteriorLazyLoad(vch,VoucherInfo.getDefaultSelector());
return vch1;
}

5.审核操作

重载父类的_audit方法实现审核控制
protected void _audit(Context ctx,IObjectPK pk)throws BOSException,EASBizException{
//对参数的常用判断
if(pk==null){
throw new IllegalArgumentException();
}
//当前用户
UserInfo currentUser=(UserInfo)ctx.get(SysContextConstant.USERINFO);
//当前日期
Date currentDate=new Date();
//检查单据是否存在, PurOrderBizException 是用户定义的异常类 BillStatusEnum自定义枚举项
boolean exist=exists(ctx,pk);
if(!exist){
throw new PurOrderBizException(PurOrderBizException.BILL_NOTEXIST);
}
PurOrderInfo purOrderInfo=getPurOrderInfo(ctx,pk);
//设置审核人
purOrderInfo.setAuditor(currentUser);
//设置审核日期
purOrderInfo.setAuditDate(currentDate);
//设置单据的状态为--己审核
purOrderInfo.setBillStatus(BillStatusEnum.AUDITD);
//更新实体
完成审核标记
update(ctx,pk,purOrderInfo);
}

转载于:https://www.cnblogs.com/luojiabao/p/11091512.html

你可能感兴趣的文章
如何破解域管理员密码
查看>>
Windows Server 2008 R2忘记管理员密码后的解决方法
查看>>
IE11兼容IE8的设置
查看>>
windows server 2008 R2 怎么集成USB3.0驱动
查看>>
Foxmail:导入联系人
查看>>
vue:axios二次封装,接口统一存放
查看>>
vue中router与route的区别
查看>>
js 时间对象方法
查看>>
网络请求返回HTTP状态码(404,400,500)
查看>>
Spring的JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate
查看>>
Mac下使用crontab来实现定时任务
查看>>
303. Range Sum Query - Immutable
查看>>
图片加载失败显示默认图片占位符
查看>>
【★】浅谈计算机与随机数
查看>>
解决 sublime text3 运行python文件无法input的问题
查看>>
javascript面相对象编程,封装与继承
查看>>
Atlas命名空间Sys.Data下控件介绍——DataColumn,DataRow和DataTable
查看>>
Java中正则表达式的使用
查看>>
算法之搜索篇
查看>>
新的开始
查看>>