外观
业务对象 服务接口
介绍
在本系统中,每一个业务对象都会存在默认的服务接口:保存、删除、获取数据。但在具体业务实施时,不同业务对象其实会有一些特殊的服务接口的。例如,一个货物的业务对象,除了默认的服务接口,还会有入库存、出库存等接口。这时候就可以在系统中给指定业务对象定义其特有的业务服务行为。
业务对象服务接口 BizDataService
针对业务对象增删改查等服务接口
业务对象删除接口
bizDataService.removeData(BizData bizData)
抛出业务消息
bizDataService.throwMsg("订单库存不足")
则前端提示 “业务异常:库存数量不足,请重新下单!”
业务对象 BizData
内置方法
脚本使用前须引入 import com.dstz.biz.object.persistence.BizData
BizData.save()
:执行当前业务对象保存操作BizData.put('key',value)
:设置实体字段属性BizData.get('key')
:获取字段值BizData.get('key',defaultvalue)
:获取字段值,取不到时用 defaultvalueBizData.remove()
:删除自身new BizData("boCode",id)
:初始化一个业务对象BizData.getChildren("subCode")
: 获取子表的数组List<BizData>
获取业务对象
bizDataService.queryOne(String boCode, String columnCode, Object value)
- 参数
- boCode : 业务对象 CODE
- columnCode:字段编码
- value:字段值
- 示例
groovy
// 通过订单编号查询订单
BizData orderBo = bizDataService.queryOne("orderBo","oderNo",'ST-1230012')
根据条件获取业务对象列表
bizDataService.query(String boCode, Map<String, Object> param)
- 参数
- boCode : 业务对象 CODE
- param:条件参数,Map<字段编码,值>
- 示例
groovy
// 通过客户编号查询所有订单
def params = [custNo: '32'] as HashMap
List<BizData> orderList = bizDataService.query("orderBo",params)
批量删除业务对象
bizDataService.delete(String boCode, String columnCode, Object value, int maxNum)
- 参数
- boCode : 业务对象 CODE
- columnCode:字段编码
- value:字段值
- maxNum: 最大删除数量,阈值,防止异常场景
- 示例
groovy
// 通过客户编号删除他所有订单
List<BizData> orderList = bizDataService.delete("orderBo","custNo",'32',10000)
批量删除业务对象
bizDataService.delete(String boCode, Map<String, Object> param, int maxNum)
- 参数
- boCode : 业务对象 CODE
- param:条件参数,Map<字段编码,值>
- maxNum: 最大删除数量,阈值,防止异常场景
- 示例
groovy
// 通过客户编号删除他所有订单
def params = [custNo: '32'] as HashMap
List<BizData> orderList = bizDataService.delete("orderBo",params,10000)
默认服务接口说明
业务对象默认提供了三个服务接口
- 保存接口: 业务对象保存时调用
- 删除接口: 删除业务对象时调用
- 获取数据接口: 获取业务对象时调用
如果业务对象持久化为数据库,当流程、表单涉及增删改查时 就会触发相关接口调用。
保存接口
- 参数
- data : 业务对象
- 二开示例
groovy
//修改状态为1
data.put('status','1');
//调用业务保存
data.save();
删除接口
- 参数
- id : 主键
- 二开示例
groovy
import com.dstz.biz.object.persistence.BizData
def orderBo = new BizData("order",id)
//调用业务删除
orderBo.remove();
获取接口
- 参数
- id : 主键
- 二开示例
groovy
import com.dstz.biz.object.persistence.BizData
// 构造一个bo
def orderBo = new BizData("order",id)
// 对部分字段设置默认值
orderBo.put("status",123)
return orderBo;
注意
一旦修改了 保存、删除、获取数据 服务接口的配置,那么业务对象默认的保存等逻辑将不会执行!所以需要自行调用保存删除等操作。
接口实现示例(伪代码)
假设 订单服务 新增一个 出库的服务(该操作事务是一致的)
- 参数
- id : 采购订单 ID
- Groovy 脚本示例(伪代码)
groovy
import com.dstz.biz.object.persistence.BizData
// 获取采购对象
BizData caiGouBo = new BizData("cgsq",id);
// 对子表进行遍历
for(BizData item : caiGouBo.getChildren("erpCgwl")){
// 通过物料编码获取 物料库存
def wlBo = bizDataService.queryOne("wl","wlbm",item.get('code'))
if(wlBo == null){
bizDataService.throwMsg("系统异常,库存查找失败!")
}
// 冻结 = 冻结 - 物料数量
wlBo.put('djsl',wlBo.get("djsl")- item.get("sl"));
// 保存库存
wlBo.save();
}
// 订单状态改为出库
caiGouBo.put("status",3);
caiGouBo.save();