其他分享
首页 > 其他分享> > CRM调用接口在OA创建流程的过程中,如果将浏览按钮的字段传过来

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