工厂实例方法原创
金蝶云社区-一只小皮皮
一只小皮皮
8人赞赏了该文章 941次浏览 未经作者许可,禁止转载编辑于2021年06月30日 15:42:27

工厂应用代码示例

Ø  保存值对象:ProjectFactory.getLocalInstance(ctx).save(project)

Ø  获取值对象:ProjectInfo project = ProjectFactory.getRemoteInstance().getValue(pk)

Ø  删除记录:ProjectFactory.getLocalInstance(ctx).delete(pk)

Ø  提交值集合:ProjectFactory.getRemoteInstance().submit(ProjectCollection)

Ø  检查单据记录是否存在:ProjectFactory.getRemoteInstance().exists(pk)


Java代码生成ID

  •  id字符串转换为IObjectPK/ObjectUuidPK:ObjectUuid pk = new ObjectUuidPK(String);

  •  已有BOSObjectType,创建BOSUuid:info.setId(BOSUuid.create(BOSObjectType));

  •  已有BOSUuid转为IObjectPK:ObjectUuid pk = new ObjectUuidPK(BOSUuid.toString());

  •  已有IObjectPK转为BOSUuid:BOSUuid.read(IObjectPK.toString)


// IObjectPK samplePk= new ObjectUuidPK("Wrn79AblR+WT5rIfjdWgMoEQqrI=");

// DailyLoanBillInfo sampleBill = DailyLoanBillFactory.getLocalInstance(ctx).getDailyLoanBillInfo(samplePk);

// sampleBill.setDescription("ceshi0001");

// DailyLoanBillFactory.getLocalInstance(ctx).save(sampleBill);


开发中经常遇到从数据库直接Insert数据,这时候需要在数据库层创建EAS单据的ID,EAS在账套数据库中会自动创建一个专用于创建单据的函数:newbosid(BOSObjectType)  ,注意在SQL Server的查询分析器中需要限定owner,需要写成:dbo.newbosid(BOSObjectType)  

         使用示例:insert into table (FID,FNumber,FName_l2,……) values (newbosid('D8002BA9'), '001', '大型项目', ……)


1.1.1.  常见开发的框架方法

  • _save(Context ctx, IObjectValue model),对应单据的保存或者基础资料的暂存方法

  • _submit(Context ctx, IObjectValue model),对应单据的提交或者基础资料的保存方法

  • _submit(Context ctx, IObjectPK pk, IObjectValue model),工作流审批环节的提交操作,会调用对应单据的此方法

  • _delete(Context ctx, IObjectPK pk),对应单据和基础资料的删除操作

  • _cancel(Context ctx, IObjectPK pk, IObjectValue model) ,对应基础资料的禁用操作

  • _cancel Cancel (Context ctx, IObjectPK pk, IObjectValue model) ,对应基础资料的启用操作

 一般我们会为单据增加审核audit和反审核unAudit方法,参数为ObjectValue和ObjectPK,异常为EASBizException,这样我们还需要开发:

  • _audit(Context ctx, IObjectValue model)

  • _unAudit(Context ctx, IObjectValue model)

1.1.2.  常见开发内容

  • _save和_submit在保存前检查单据状态,检查单据字段,补充计算

  • _delete在删除前检查单据状态,检查单据是否在工作流中,检查是否已生成下游单据

  • _audit在执行前检查单据状态(不允许重复审核),检查单据字段;修改单据状态,记录操作人和操作时间;执行来源单据或其他关联数据的反写,执行上游业务检查控制逻辑

  • _unAudit在执行前检查单据状态(不允许重复反审核),检查单据无下游单据;修改单据状态,清除操作人和操作时间;执行来源单据或其他关联数据的反写,执行上游业务检查控制逻辑

         注意:检查单据状态应当以数据库中实时读取的单据状态为准,而不是以通过参数传递过来的IobjectValue对象中保存的状态字段值为准


赞 8