ESAP达摩院 思想有多远,我们就能走多远

ESAP高级教程|连续查询+图片上传到表单


本文展示一种基于es/ju/nx的全新的填报方式。

客户需求

客户1:我想通过微信对话式的录入单据。

客户2:我想通过微信把照片上传到已有的表单中。

客户3:我不想打字,只想点点点,扫扫扫,拍拍拍……

实现场景1

首先,制作一个【交互Demo】模板,里面包含4个字段:品名(文字),安全库存(数字),图片1和图片2(图形)。

接下来,在企业微信的应用中增加一个【建商品】菜单,ID=jsp

在esap查询中建立一组查询,这里有5个查询,其中第一个查询由菜单(ID=jsp)发起,模式=2,表示新建表单模式,设置下一步,后续查询将依次执行。

实际填报效果如下,在点击【建商品】菜单后,依次填写或传图即可。

同时,工作台也生成了相应表单,客户1的应用场景搞定了。

实现场景2

这次,仍然用【交互Demo】模板做示例,手工建立两个表单,保时捷兰博基尼,没有传图片。

接下来,在企业微信的应用中增加一个【扫品名】菜单,ID=spm

在esap查询中再建立一组查询,这里有3个查询,其中第一个查询由菜单(ID=spm)发起,设置下一步,后续查询将依次执行。

做一个兰博基尼文字二维码用于扫描,实际中可能是订单号之类的唯一ID:

实际填报效果如下,在点击【扫品名】菜单后,依次传图即可。

工作台相应表单也自动补齐了,客户2和客户3的应用场景一起搞定了。

难点解析

addpic函数

这是一个ESAP高级自定义sql函数,原型是DownloadPic(picUrl, tableName, fieldName, rcid, picNo)

Demo中的{ {if addpic .praw "交互Demo" "图片1" .rcid $pic} }

意思是从.praw下载图片到交互Demo表的图片1字段,praw参数类似于P参数,主要用于微信图片URL获取

gettablevalue函数

这是一个ESAP高级自定义sql函数,原型是GetTableValue(dbs, table, cond, ret, value)

sql模板中的{ {$rcid := (gettablevalue "nxt" "交互Demo" "品名" "recordid" .pf0)} }实际是执行了一个sql:

select recordid from nxt..交互Demo where 品名=.pf0,.pf0是第一次按钮扫描的值,也就是兰博基尼,代入后就是:

select recordid from nxt..交互Demo where 品名='兰博基尼',结果赋值给$rcid变量,用于后续数据处理。

小结

主要应用了连续查询,并使用了支持JU/NX/ES的ESAP高级自定义函数。

本文示例应用ESAP3.0.31+支持,本文涉及的JU/NX/ES数据库备份可在ESAP达摩院中下载。

PS:JUAP模式下,需要通过admin控制台重新打JU补丁。

2019-03-19


近似文章