add:erp调用工具类

This commit is contained in:
zhaoyf
2026-06-24 15:21:08 +08:00
parent e0d0669dae
commit 3787c99726
2 changed files with 146 additions and 0 deletions

View File

@@ -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());
}
}
}

View File

@@ -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;
}