From 3787c99726fffab69ca45f78613971b3ebbd139b Mon Sep 17 00:00:00 2001 From: zhaoyf <1783123481@qq.com> Date: Wed, 24 Jun 2026 15:21:08 +0800 Subject: [PATCH] =?UTF-8?q?add:erp=E8=B0=83=E7=94=A8=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/wms/ext_manage/util/ErpUtil.java | 133 ++++++++++++++++++ .../org/nl/wms/ext_manage/util/WSContext.java | 13 ++ 2 files changed, 146 insertions(+) create mode 100644 nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/ErpUtil.java create mode 100644 nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/WSContext.java diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/ErpUtil.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/ErpUtil.java new file mode 100644 index 0000000..6986dd1 --- /dev/null +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/ErpUtil.java @@ -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()); + } + } + +} diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/WSContext.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/WSContext.java new file mode 100644 index 0000000..f9557be --- /dev/null +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/WSContext.java @@ -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; +}