CRM调用接口在OA创建流程的过程中,如果将浏览按钮的字段传过来
作者:互联网
1. 问题描述
销售在CRM里面填写销售合同审批流,审批通过后会执行回调事件,请求CRM中间服务,CRM中间服务请求CRM服务器获取该条销售合同数据,然后调用OA提供的接口在OA里面创建对应的流程。
OA合同审批流程有一个项目号(xmh)字段,是浏览按钮,关联的是项目信息表(Prj_ProjectInfo),文本值(显示值)是Prj_ProjectInfo的name,在数据库里面的值是Prj_ProjectInfo的id。
那么CRM中间服务需要把项目号的id传过来才行,那再写个接口给CRM中间服务,根据项目号查询id吗?答案是不需要
2. 问题解决
在OA合同审批表单加上项目号文本(xmhwb)字段,类型是单行文本,用于接收CRM传过来的项目号字段。由于CRM中间服务触发的OA流程默认流转到第二节点,所以在第二节点上加个节点前附加操作,根据项目号文本查询项目号id,然后更新当前合同表单的xmh字段为这个项目号id即可。
package weaver.interfaces.workflow.action.javacode;
import weaver.interfaces.workflow.action.Action;
import weaver.general.BaseBean;
import weaver.general.BaseBean;
import weaver.soa.workflow.request.RequestInfo;
import weaver.conn.RecordSet;
/**
* 在线自定义action接口
*/
public class Action20220511031834 extends BaseBean implements Action{
/**
* 流程路径节点后选择aciton后,会在节点提交后执行此方法。
*/
public String execute(RequestInfo request) {
// 请求id
String requestId = request.getRequestid();
writeLog("请求id:" + requestId);
// 主表名称
String tablename = request.getRequestManager().getBillTableName();
writeLog("主表名称:" + tablename);
// 查询主表信息
RecordSet rs = new RecordSet();
rs.execute("select * from " + tablename + " where requestid = " + requestId);
rs.next();
// 主表id
String id = rs.getString("id");
writeLog("主表id:" + id);
// 项目号文本
String xmhwb = rs.getString("xmhwb");
writeLog("项目号文本:" + xmhwb);
writeLog("从项目表查询信息");
rs.execute("select id from Prj_ProjectInfo where name = '" + xmhwb + "'");
rs.next();
// 项目号id
String xmhid = rs.getString("id");
writeLog("项目号id:" + xmhid);
rs.execute("update " + tablename + " set xmh = " + xmhid + " where id = " + id);
return Action.SUCCESS;
}
}
3. 测试
标签:String,rs,OA,按钮,weaver,id,CRM 来源: https://www.cnblogs.com/yddwinter/p/16259063.html