add:erp调用工具类
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
package org.nl.wms.ext_manage.util;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.axis.client.Call;
|
||||
import org.apache.axis.client.Service;
|
||||
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
|
||||
import org.apache.axis.encoding.ser.BeanSerializerFactory;
|
||||
import org.apache.axis.message.SOAPHeaderElement;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.system_manage.enums.SysParamConstant;
|
||||
import org.nl.wms.system_manage.service.param.dao.Param;
|
||||
import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.rpc.ParameterMode;
|
||||
import javax.xml.rpc.ServiceException;
|
||||
import javax.xml.rpc.encoding.XMLType;
|
||||
|
||||
@Slf4j
|
||||
@Data
|
||||
public class ErpUtil {
|
||||
|
||||
private String loginUrl;
|
||||
private String auditUrl;
|
||||
private String userName;
|
||||
private String password;
|
||||
private String slnName;
|
||||
private String dcName;
|
||||
private String dbType;
|
||||
|
||||
private final Service service = new Service();
|
||||
|
||||
private String sessionId;
|
||||
|
||||
public static ErpUtil create(){
|
||||
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
|
||||
final Param erpLoginParam = sysParamService.findByCode(SysParamConstant.ERP_LOGIN_URL);
|
||||
final Param erpAuditParam = sysParamService.findByCode(SysParamConstant.ERP_AUDIT_URL);
|
||||
ErpUtil erpUtil = new ErpUtil();
|
||||
erpUtil.setLoginUrl(erpLoginParam.getValue());
|
||||
erpUtil.setAuditUrl(erpAuditParam.getValue());
|
||||
erpUtil.setUserName(SpringContextHolder.getProperties("erp.username"));
|
||||
erpUtil.setPassword(SpringContextHolder.getProperties("erp.password"));
|
||||
erpUtil.setSlnName(SpringContextHolder.getProperties("erp.slnName"));
|
||||
erpUtil.setDcName(SpringContextHolder.getProperties("erp.dcName"));
|
||||
erpUtil.setDbType(SpringContextHolder.getProperties("erp.dbType"));
|
||||
return new ErpUtil();
|
||||
}
|
||||
/**
|
||||
* 登录获取sessionId
|
||||
* @return
|
||||
*/
|
||||
public ErpUtil login(){
|
||||
try {
|
||||
Call call = (Call) service.createCall();
|
||||
call.setOperationName("login");
|
||||
call.setTargetEndpointAddress(loginUrl);
|
||||
call.setMaintainSession(true);
|
||||
call.setTimeout(60*1000);
|
||||
QName wsContextQName = new QName("urn:client", "WSContext");
|
||||
call.registerTypeMapping(
|
||||
WSContext.class,
|
||||
wsContextQName,
|
||||
BeanSerializerFactory.class,
|
||||
BeanDeserializerFactory.class
|
||||
);
|
||||
call.setReturnType(wsContextQName);
|
||||
call.setReturnClass(WSContext.class);
|
||||
call.addParameter(
|
||||
new QName("", "userName"), // 空命名空间
|
||||
XMLType.XSD_STRING,
|
||||
String.class,
|
||||
ParameterMode.IN
|
||||
);
|
||||
call.addParameter(
|
||||
new QName("", "password"), // 空命名空间
|
||||
XMLType.XSD_STRING,
|
||||
String.class,
|
||||
ParameterMode.IN
|
||||
);
|
||||
call.addParameter(
|
||||
new QName("", "slnName"), // 空命名空间
|
||||
XMLType.XSD_STRING,
|
||||
String.class,
|
||||
ParameterMode.IN
|
||||
);
|
||||
call.addParameter(
|
||||
new QName("", "dcName"), // 空命名空间
|
||||
XMLType.XSD_STRING,
|
||||
String.class,
|
||||
ParameterMode.IN
|
||||
);
|
||||
call.addParameter(
|
||||
new QName("", "dbType"), // 空命名空间
|
||||
XMLType.XSD_STRING,
|
||||
Integer.class,
|
||||
ParameterMode.IN
|
||||
);
|
||||
WSContext response = (WSContext)call.invoke(new Object[]{userName, password, slnName, dcName, dbType});
|
||||
if (StrUtil.isEmptyIfStr(response.getSessionId())){
|
||||
throw new BadRequestException("erp登录接口请求失败: 返回sessionId为空,请检查账户设置是否正确");
|
||||
}
|
||||
this.sessionId = response.getSessionId();
|
||||
log.info("ERP登录接口返回:{}", response);
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException("erp登录接口请求失败:" + e.getMessage());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* 审核接口请求
|
||||
*/
|
||||
public void audit(String json){
|
||||
try {
|
||||
Call call = (Call) service.createCall();
|
||||
call.setOperationName("dealTask");
|
||||
call.setTimeout(1000*60);
|
||||
call.setMaintainSession(true);
|
||||
call.setTargetEndpointAddress(auditUrl);
|
||||
call.setReturnQName(new QName("", "erpsyncReturn"));
|
||||
call.addHeader(new SOAPHeaderElement("http://login.webservice.bos.kingdee.com", "SessionId", sessionId));
|
||||
Object result = call.invoke(new Object[]{json});
|
||||
System.out.println(result);
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException("erp审核接口请求失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.nl.wms.ext_manage.util;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class WSContext {
|
||||
private Integer dbType;
|
||||
private String dcName;
|
||||
private String password;
|
||||
private String sessionId;
|
||||
private String slnName;
|
||||
private String userName;
|
||||
}
|
||||
Reference in New Issue
Block a user