1、后端调用
package com.landray.kmss.xp.integrate.tic.common.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.landray.kmss.tic.core.common.model.TicCoreFuncBase;
import com.landray.kmss.tic.core.common.service.ITicCoreFuncBaseService;
import com.landray.kmss.tic.core.middleware.TicMiddlewareService;
import com.landray.kmss.util.SpringBeanUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author liquid
*/
public class XpTicUtil {
private static final Logger logger = LoggerFactory.getLogger(XpTicUtil.class);
public static ITicCoreFuncBaseService ticCoreFuncBaseService;
public static TicMiddlewareService ticMiddlewareService;
public static ITicCoreFuncBaseService getTicCoreFuncBaseService() {
if (ticCoreFuncBaseService == null) {
ticCoreFuncBaseService = (ITicCoreFuncBaseService) SpringBeanUtil.getBean("ticCoreFuncBaseService");
}
return ticCoreFuncBaseService;
}
public static TicMiddlewareService getTicMiddlewareService() {
if (ticMiddlewareService == null) {
ticMiddlewareService = (TicMiddlewareService)SpringBeanUtil.getBean("ticMiddlewareService");
}
return ticMiddlewareService;
}
/**
* 调用集成函数(SOAP/REST/JDBC)
* 为了更好的可读性,建议使用callFuncByKey
* @author liquid
* @date 2023年5月3日
* @param funcId 函数fdId
* @param inParams 传入参数
* @return 调用结果
*/
public static JSONObject callFuncById(String funcId, JSONObject inParams) {
TicMiddlewareService ticMiddlewareService = getTicMiddlewareService();
String result;
/* 开始执行 */
try {
result = ticMiddlewareService.execute(inParams, funcId);
} catch (Exception e) {
throw new RuntimeException(e);
}
return JSON.parseObject(result);
}
/**
* 调用集成函数(SOAP/REST/JDBC)
* @author liquid
* @date 2023年5月3日
* @param funcKey 函数关键字
* @param inParams 传入参数
* @return 调用结果
*/
public static JSONObject callFuncByKey(String funcKey, JSONObject inParams) {
ITicCoreFuncBaseService ticCoreFuncBaseService = getTicCoreFuncBaseService();
TicCoreFuncBase funcBase;
JSONObject result = null;
/* 获取对应的函数实例 */
try {
funcBase = ticCoreFuncBaseService.findFuncByKey(funcKey);
} catch (Exception e) {
throw new RuntimeException(e);
}
/* 开始执行 */
if (funcBase == null) {
logger.error("不存在函数,关键字:" + funcKey);
} else {
result = callFuncById(funcBase.getFdId(), inParams);
}
return result;
}
}
2、前端调用(TIC函数需开启前端调用)
/**
* 调用第三方集成函数
* @author liquid
* @date 2022年4月25日
* @param {string} funcKey 函数关键字
* @param {object} inParam 传入json参数(无需序列化)
* @param {boolean} isAsync 异步(true)/同步(false)
* @param callbackObj 回调函数对象{success: function(res){}, error: function(res){}}
*/
function callFunction(funcKey, inParam, isAsync, callbackObj) {
$.ajax({
type: "POST",
url: Com_Parameter.ContextPath + "tic/core/common/ticCoreInvokeFunc.do?method=callFunc",
contentType:"application/json;charset=utf-8",
data: JSON.stringify({
funcKey: funcKey,
inParam: inParam
}),
dataType:"json",
async:isAsync,
success: callbackObj.success,
error: callbackObj.error
});
}
/**
* 调用第三方集成函数 - promise回调方式(需返回基本数据类型时,请使用非promise方式)
* @author liquid
* @date 2022年6月8日
* @param {string} funcKey 函数关键字
* @param {object} inParam 传入json参数(无需序列化)
* @return {Promise<unknown>}
*/
function callFunctionPms(funcKey, inParam) {
return new Promise((resolve, reject) => {
$.ajax({
type: "POST",
url: Com_Parameter.ContextPath + "tic/core/common/ticCoreInvokeFunc.do?method=callFunc",
contentType: "application/json;charset=utf-8",
data: JSON.stringify({
funcKey: funcKey,
inParam: inParam
}),
dataType: "json",
async: true,
success: (res)=>{resolve(res)},
error: (error)=>{reject(error)}
});
});
}