直接跳到内容

业务对象 服务接口

介绍

在本系统中,每一个业务对象都会存在默认的服务接口:保存、删除、获取数据。但在具体业务实施时,不同业务对象其实会有一些特殊的服务接口的。例如,一个货物的业务对象,除了默认的服务接口,还会有入库存、出库存等接口。这时候就可以在系统中给指定业务对象定义其特有的业务服务行为。

在线表单html

业务对象服务接口 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):获取字段值,取不到时用 defaultvalue
  • BizData.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)

默认服务接口说明

业务对象默认提供了三个服务接口

  • 保存接口: 业务对象保存时调用
  • 删除接口: 删除业务对象时调用
  • 获取数据接口: 获取业务对象时调用

如果业务对象持久化为数据库,当流程、表单涉及增删改查时 就会触发相关接口调用。

保存接口

在线表单html

  • 参数
    • 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();

业务对象 服务接口 has loaded