【EAS工作流】工作流脚本案例--修改单据表数据原创
金蝶云社区-汪伟康
汪伟康
19人赞赏了该文章 328次浏览 未经作者许可,禁止转载编辑于2024年03月14日 09:38:32

问题背景:客户想要在流程中配置自动节点(如:XX单据-审核通过)实现XX单据数据的更新,这里可以选范围是业务的function元数据,业务如果没有开发对应功能那么就选不到。


根本解决方法:提需求到业务模块开发对应操作的function即可。


临时变通处理:通过工作流脚本执行sql来更新单据数据


配置案例如下(实现功能:修改单据的状态为已审核,单据的审核人为流程中某个审批人,审核时间为当前时间)

1、定义内码类型流程变量billId和sprId


注:billId用来接收单据id的值,sprId用来接收某个节点审批人id的值,最终将这两个变量用来拼接到sql中。

image.png


2、在 【单据提交】节点 -【任务】中将单据id字段输出到billId中

image.png



3、在 某个审批节点(你需要谁来作为单据的审核人就找那个人对应的审批节点)- 【任务】- 将审批人内码输出到 sprId中

image.png



4、添加一个脚本节点 到流程中,用连接弧连接好之后,将脚本维护到任务中

image.png


由于涉及到日期字段,如果是oracle数据库,脚本参考如下:

//update脚本模板
var Sql = new java.lang.StringBuffer();
var dateFormat =new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
var date = dateFormat.format(new java.util.Date());

//要执行的sql,具体sql需要对应业务模块老师指导编写
Sql.append ("UPDATE T_CAS_PaymentBill SET FBillStatus  =8 ,FApproverID  = '"+sprId
+"', FApproveDate  = {ts'"+date+"'}  WHERE FID = '"+billId+"'");

//执行sql
com.kingdee.eas.util.app.DbUtil.execute(__bosContext,Sql.toString());


由于涉及到日期字段,如果是sql server 数据库,脚本参考如下:

//update脚本模板
var Sql = new java.lang.StringBuffer();
var dateFormat =new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
var date = dateFormat.format(new java.util.Date());

//要执行的sql,具体sql需要对应业务模块老师指导编写
Sql.append ("UPDATE T_CAS_PaymentBill SET FBillStatus  =8 ,FApproverID  = '"+sprId
+"', FApproveDate  = '"+date+"'  WHERE FID = '"+billId+"'");

//执行sql
com.kingdee.eas.util.app.DbUtil.execute(__bosContext,Sql.toString());


5、保存,发布无问题就可以测试验证。


结束语

该方案为临时变通处理,由于脚本是人为编写,可能会有错误,不方便维护,因此不能作为长期方案。

有需要请提需求到业务模块开发对应操作的function。

赞 19