# 外部系统集成 **本文引用的文件** - [application.yml](file://nflg-wms-admin/src/main/resources/application.yml) - [application-dev.yml](file://nflg-wms-admin/src/main/resources/application-dev.yml) - [application-prod.yml](file://nflg-wms-admin/src/main/resources/application-prod.yml) - [SAPConfig.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java) - [SAPConfig.java](file://nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/config/SAPConfig.java) - [SAPException.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/SAPException.java) - [EmailService.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/EmailService.java) - [EmailConfigDTO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/EmailConfigDTO.java) - [LdapConfig.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java) - [LdapUserDTO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/LdapUserDTO.java) - [LDAPSyncProcessor.java](file://nflg-wms-scheduled/src/main/java/com/nflg/wms/scheduled/processor/LDAPSyncProcessor.java) - [AliyunOSSConfig.java](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java) - [OSSFileUploadServiceImpl.java](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/OSSFileUploadServiceImpl.java) - [RustFSConfig.java](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RustFSConfig.java) - [RustFSServiceImpl.java](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/RustFSServiceImpl.java) - [SRMQualityInspectionResultDTO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMQualityInspectionResultDTO.java) - [SRMOrderReceiveDTO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMOrderReceiveDTO.java) - [Constant.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java) ## 目录 1. [简介](#简介) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构总览](#架构总览) 5. [详细组件分析](#详细组件分析) 6. [依赖分析](#依赖分析) 7. [性能考虑](#性能考虑) 8. [故障排查指南](#故障排查指南) 9. [结论](#结论) 10. [附录](#附录) ## 简介 本文件面向NFLG WMS系统与外部系统集成的综合文档,覆盖以下方面: - SAP系统集成:RFC调用配置、连接池与仓库缓存、异常处理策略 - SRM系统对接:采购订单接收、质量检验结果数据交换 - LDAP集成:用户认证、权限同步、组织架构管理 - 文件存储集成:OSS、RustFS(兼容S3)等对象存储配置与使用 - 邮件服务集成:通知发送、报告生成的自动化能力 - 配置参数、接口规范与数据格式说明 - 常见问题与解决方案 - 系统管理员部署与监控指南 ## 项目结构 围绕外部系统集成的关键模块与文件分布如下: - 配置与启动 - 应用配置:application.yml、application-dev.yml、application-prod.yml - SAP集成 - 配置类:nflg-wms-admin与nflg-wms-srm-receive下的SAPConfig - 异常定义:SAPException - SRM对接 - DTO模型:SRMOrderReceiveDTO、SRMQualityInspectionResultDTO - LDAP集成 - 配置类:LdapConfig - 同步处理器:LDAPSyncProcessor - DTO模型:LdapUserDTO - 文件存储 - OSS配置与上传:AliyunOSSConfig、OSSFileUploadServiceImpl - RustFS配置与上传:RustFSConfig、RustFSServiceImpl - 邮件服务 - 邮件发送:EmailService - 配置模型:EmailConfigDTO - 通用常量 - 字典项与常量:Constant ```mermaid graph TB subgraph "应用配置" A1["application.yml"] A2["application-dev.yml"] A3["application-prod.yml"] end subgraph "SAP集成" S1["admin/SAPConfig.java"] S2["srm-receive/SAPConfig.java"] S3["SAPException.java"] end subgraph "SRM对接" R1["SRMOrderReceiveDTO.java"] R2["SRMQualityInspectionResultDTO.java"] end subgraph "LDAP集成" L1["LdapConfig.java"] L2["LDAPSyncProcessor.java"] L3["LdapUserDTO.java"] end subgraph "文件存储" F1["AliyunOSSConfig.java"] F2["OSSFileUploadServiceImpl.java"] F3["RustFSConfig.java"] F4["RustFSServiceImpl.java"] end subgraph "邮件服务" E1["EmailService.java"] E2["EmailConfigDTO.java"] end subgraph "通用" U1["Constant.java"] end A1 --> S1 A1 --> S2 A1 --> L1 A1 --> F1 A1 --> F3 A1 --> E1 S1 --> S3 S2 --> S3 L2 --> L1 L2 --> L3 F2 --> F1 F4 --> F3 E1 --> E2 A1 --> U1 ``` 图表来源 - [application.yml:1-48](file://nflg-wms-admin/src/main/resources/application.yml#L1-L48) - [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120) - [SAPConfig.java:1-120](file://nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/config/SAPConfig.java#L1-L120) - [SAPException.java:1-17](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/SAPException.java#L1-L17) - [SRMOrderReceiveDTO.java:1-54](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMOrderReceiveDTO.java#L1-L54) - [SRMQualityInspectionResultDTO.java:1-82](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMQualityInspectionResultDTO.java#L1-L82) - [LdapConfig.java:1-42](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L42) - [LDAPSyncProcessor.java:35-179](file://nflg-wms-scheduled/src/main/java/com/nflg/wms/scheduled/processor/LDAPSyncProcessor.java#L35-L179) - [LdapUserDTO.java:1-28](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/LdapUserDTO.java#L1-L28) - [AliyunOSSConfig.java:1-56](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java#L1-L56) - [OSSFileUploadServiceImpl.java:1-44](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/OSSFileUploadServiceImpl.java#L1-L44) - [RustFSConfig.java:1-40](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RustFSConfig.java#L1-L40) - [RustFSServiceImpl.java:1-38](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/RustFSServiceImpl.java#L1-L38) - [EmailService.java:1-68](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/EmailService.java#L1-L68) - [EmailConfigDTO.java:1-21](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/EmailConfigDTO.java#L1-L21) - [Constant.java:1-43](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java#L1-L43) 章节来源 - [application.yml:1-48](file://nflg-wms-admin/src/main/resources/application.yml#L1-L48) - [application-dev.yml:1-34](file://nflg-wms-admin/src/main/resources/application-dev.yml#L1-L34) - [application-prod.yml:1-30](file://nflg-wms-admin/src/main/resources/application-prod.yml#L1-L30) ## 核心组件 - SAP RFC集成 - 通过自定义DestinationDataProvider注册JCo目的地,支持连接池容量与峰值校验,提供JCoRepository以供RFC调用 - 异常封装为SAPException,便于统一处理 - SRM对接 - 使用SRMOrderReceiveDTO与SRMQualityInspectionResultDTO承载采购订单接收与质量检验结果的数据结构 - LDAP集成 - LdapConfig提供上下文源配置;LDAPSyncProcessor负责周期性拉取组织树与用户信息并落库 - 文件存储 - OSS与RustFS(兼容S3)双实现,基于条件注解按配置选择具体实现 - 邮件服务 - EmailService读取参数配置表,构建SMTP会话并发送HTML邮件 章节来源 - [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120) - [SAPConfig.java:1-120](file://nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/config/SAPConfig.java#L1-L120) - [SAPException.java:1-17](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/SAPException.java#L1-L17) - [SRMOrderReceiveDTO.java:1-54](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMOrderReceiveDTO.java#L1-L54) - [SRMQualityInspectionResultDTO.java:1-82](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMQualityInspectionResultDTO.java#L1-L82) - [LdapConfig.java:1-42](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L42) - [LDAPSyncProcessor.java:35-179](file://nflg-wms-scheduled/src/main/java/com/nflg/wms/scheduled/processor/LDAPSyncProcessor.java#L35-L179) - [LdapUserDTO.java:1-28](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/LdapUserDTO.java#L1-L28) - [AliyunOSSConfig.java:1-56](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java#L1-L56) - [OSSFileUploadServiceImpl.java:1-44](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/OSSFileUploadServiceImpl.java#L1-L44) - [RustFSConfig.java:1-40](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RustFSConfig.java#L1-L40) - [RustFSServiceImpl.java:1-38](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/RustFSServiceImpl.java#L1-L38) - [EmailService.java:1-68](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/EmailService.java#L1-L68) - [EmailConfigDTO.java:1-21](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/EmailConfigDTO.java#L1-L21) ## 架构总览 下图展示WMS与外部系统的主要交互路径:SAP(RFC)、SRM(订单/质检数据)、LDAP(目录服务)、文件存储(OSS/RustFS)、邮件服务。 ```mermaid graph TB WMS["WMS应用"] SAP["SAP系统"] SRM["SRM系统"] LDAP["LDAP目录服务"] OSS["阿里云OSS"] RFS["RustFS(S3兼容)"] MAIL["邮件服务"] WMS --> |RFC调用| SAP WMS --> |订单/质检| SRM WMS --> |组织/用户| LDAP WMS --> |文件上传| OSS WMS --> |文件上传| RFS WMS --> |通知/报告| MAIL ``` 图表来源 - [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120) - [SAPConfig.java:1-120](file://nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/config/SAPConfig.java#L1-L120) - [SRMOrderReceiveDTO.java:1-54](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMOrderReceiveDTO.java#L1-L54) - [SRMQualityInspectionResultDTO.java:1-82](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMQualityInspectionResultDTO.java#L1-L82) - [LdapConfig.java:1-42](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L42) - [AliyunOSSConfig.java:1-56](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java#L1-L56) - [RustFSConfig.java:1-40](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RustFSConfig.java#L1-L40) - [EmailService.java:1-68](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/EmailService.java#L1-L68) ## 详细组件分析 ### SAP系统集成方案 - 配置要点 - 通过Environment注册DestinationDataProvider,避免文件IO,直接在内存中提供JCo属性 - 属性包括:主机、系统号、客户端、用户名、密码、语言、连接池容量、峰值限制 - 初始化时进行峰值与池容量的数值校验,确保峰值不小于池容量 - 提供JCoDestination与JCoRepository Bean,供后续RFC调用使用 - 错误处理 - 初始化失败抛出IllegalStateException - 业务异常封装为SAPException,便于上层捕获与统一处理 - 数据同步机制 - 通过JCoRepository加载RFC函数元数据,结合JCoDestination执行RFC调用 - 建议在调用层对RFC执行进行重试与超时控制,避免阻塞线程池 ```mermaid classDiagram class SAPConfig { +initDestination() +jcoDestination() +getJCoRepository() -validatePoolConfig() -buildConnectionProperties() } class SimpleDestinationDataProvider { +getDestinationProperties() +supportsEvents() } class SAPException { +state +msg } SAPConfig --> SimpleDestinationDataProvider : "注册目的地" SAPConfig --> SAPException : "异常封装" ``` 图表来源 - [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120) - [SAPConfig.java:1-120](file://nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/config/SAPConfig.java#L1-L120) - [SAPException.java:1-17](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/SAPException.java#L1-L17) 章节来源 - [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120) - [SAPConfig.java:1-120](file://nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/config/SAPConfig.java#L1-L120) - [SAPException.java:1-17](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/SAPException.java#L1-L17) ### SRM系统对接功能 - 采购订单处理 - 使用SRMOrderReceiveDTO承载订单头与明细集合,字段包含公司、工厂、采购组、发货时间、运单号、供应商信息等 - 建议在接收后进行幂等校验(如订单号唯一性)与基础字段校验 - 质量检验数据交换 - 使用SRMQualityInspectionResultDTO承载检验单号、工厂、送货数量、检验结果、物料号、供应商代码、检验类型、行号、检验数量、物料描述、单位、收货库存地、不合格原因、采购订单号、物料凭证等 - 建议在入库或质检流程中,依据检验结果与不合格原因进行后续处置(如拒收、挑选、让步接收) ```mermaid classDiagram class SRMOrderReceiveDTO { +noteNum +ouCode +iuCode +purchaseGroup +deliveryNoteDate +waybillNum +supplierNum +supplierName +ResultSet } class SRMQualityInspectionResultDTO { +inspectionNum +factory +deliveryQty +inspectionResult +itemCode +supplierNum +inspectionType +poLineNumber +inspectionQty +itemName +unit +receivedWarehouse +unqualifiedReason +poNum +materialDocument } ``` 图表来源 - [SRMOrderReceiveDTO.java:1-54](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMOrderReceiveDTO.java#L1-L54) - [SRMQualityInspectionResultDTO.java:1-82](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMQualityInspectionResultDTO.java#L1-L82) 章节来源 - [SRMOrderReceiveDTO.java:1-54](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMOrderReceiveDTO.java#L1-L54) - [SRMQualityInspectionResultDTO.java:1-82](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMQualityInspectionResultDTO.java#L1-L82) ### LDAP集成方案 - 用户认证与目录访问 - LdapConfig提供LdapContextSource,设置URL、Base DN、用户DN与密码,并开启二进制属性支持 - 组织架构与用户同步 - LDAPSyncProcessor周期性拉取组织树与用户列表,根据配置决定映射策略(全量或增量) - 将LDAP用户与部门信息写入本地数据库,建立来源标识与映射关系 - 权限与角色 - 可结合用户与部门来源ID在权限体系中进行授权映射(需配合权限模块) ```mermaid sequenceDiagram participant Sch as "调度器" participant Proc as "LDAPSyncProcessor" participant Ldap as "LDAP服务" participant Dept as "部门服务" participant User as "用户服务" Sch->>Proc : 触发同步任务 Proc->>Ldap : 获取组织树/用户列表 Ldap-->>Proc : 返回组织与用户数据 Proc->>Dept : 保存/更新部门 Proc->>User : 保存/更新用户 Proc-->>Sch : 同步完成 ``` 图表来源 - [LDAPSyncProcessor.java:35-179](file://nflg-wms-scheduled/src/main/java/com/nflg/wms/scheduled/processor/LDAPSyncProcessor.java#L35-L179) - [LdapConfig.java:1-42](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L42) - [LdapUserDTO.java:1-28](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/LdapUserDTO.java#L1-L28) 章节来源 - [LdapConfig.java:1-42](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L42) - [LDAPSyncProcessor.java:35-179](file://nflg-wms-scheduled/src/main/java/com/nflg/wms/scheduled/processor/LDAPSyncProcessor.java#L35-L179) - [LdapUserDTO.java:1-28](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/LdapUserDTO.java#L1-L28) ### 文件存储集成 - OSS(阿里云) - AliyunOSSConfig按配置构建OSSClient,设置连接/读取超时与区域 - OSSFileUploadServiceImpl基于PutObjectRequest上传文件,返回访问域名+路径 - RustFS(S3兼容) - RustFSConfig基于S3Client,支持endpoint override与path-style访问 - RustFSServiceImpl上传文件并返回访问地址 - 配置选择 - 通过file.upload.type切换实现(oss/rustfs),确保仅启用一种实现 ```mermaid flowchart TD Start(["开始"]) --> Choose["读取file.upload.type"] Choose --> |oss| OSS["AliyunOSSConfig构建OSSClient"] Choose --> |rustfs| S3["RustFSConfig构建S3Client"] OSS --> UploadOSS["OSSFileUploadServiceImpl上传"] S3 --> UploadS3["RustFSServiceImpl上传"] UploadOSS --> Done(["结束"]) UploadS3 --> Done ``` 图表来源 - [AliyunOSSConfig.java:1-56](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java#L1-L56) - [OSSFileUploadServiceImpl.java:1-44](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/OSSFileUploadServiceImpl.java#L1-L44) - [RustFSConfig.java:1-40](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RustFSConfig.java#L1-L40) - [RustFSServiceImpl.java:1-38](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/RustFSServiceImpl.java#L1-L38) 章节来源 - [AliyunOSSConfig.java:1-56](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java#L1-L56) - [OSSFileUploadServiceImpl.java:1-44](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/OSSFileUploadServiceImpl.java#L1-L44) - [RustFSConfig.java:1-40](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RustFSConfig.java#L1-L40) - [RustFSServiceImpl.java:1-38](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/RustFSServiceImpl.java#L1-L38) ### 邮件服务集成 - 参数配置 - 从参数配置表读取EmailSet分组的host/port/username/password - 发送流程 - 构建SMTP属性(SSL、超时),使用Authenticator认证 - 创建MimeMessage并发送HTML内容 - 通知与报告 - 可用于密码重置通知、业务事件提醒、报告生成后的通知等场景 ```mermaid sequenceDiagram participant Caller as "调用方" participant Mail as "EmailService" participant Store as "参数配置存储" participant SMTP as "SMTP服务器" Caller->>Mail : 发送邮件(收件人, 主题, HTML内容) Mail->>Store : 查询EmailSet配置 Store-->>Mail : 返回host/port/username/password Mail->>SMTP : 建立会话并发送 SMTP-->>Mail : 发送成功 Mail-->>Caller : 返回结果 ``` 图表来源 - [EmailService.java:1-68](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/EmailService.java#L1-L68) - [EmailConfigDTO.java:1-21](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/EmailConfigDTO.java#L1-L21) - [Constant.java:1-43](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java#L1-L43) 章节来源 - [EmailService.java:1-68](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/EmailService.java#L1-L68) - [EmailConfigDTO.java:1-21](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/EmailConfigDTO.java#L1-L21) - [Constant.java:1-43](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java#L1-L43) ## 依赖分析 - 组件耦合 - SAPConfig在admin与srm-receive模块重复出现,职责一致,建议抽取公共模块或共享配置 - LDAPSyncProcessor依赖LdapConfig与多个业务服务(部门/用户/内部用户),关注跨模块调用边界 - 文件存储实现通过条件注解隔离,避免多实现冲突 - 外部依赖 - SAP JCo、Spring LDAP、JavaMail、OSS SDK、AWS S3 SDK - 循环依赖 - 当前未发现明显循环依赖;注意在新增服务时避免互相注入 ```mermaid graph LR AdminSAP["admin/SAPConfig"] --> CommonSAPEx["SAPException"] SRMSAP["srm-receive/SAPConfig"] --> CommonSAPEx LDAPProc["LDAPSyncProcessor"] --> LdapCfg["LdapConfig"] OSSUp["OSSFileUploadServiceImpl"] --> OSSCfg["AliyunOSSConfig"] S3Up["RustFSServiceImpl"] --> S3Cfg["RustFSConfig"] Mail["EmailService"] --> MailDTO["EmailConfigDTO"] ``` 图表来源 - [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120) - [SAPConfig.java:1-120](file://nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/config/SAPConfig.java#L1-L120) - [SAPException.java:1-17](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/SAPException.java#L1-L17) - [LDAPSyncProcessor.java:35-179](file://nflg-wms-scheduled/src/main/java/com/nflg/wms/scheduled/processor/LDAPSyncProcessor.java#L35-L179) - [LdapConfig.java:1-42](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L42) - [OSSFileUploadServiceImpl.java:1-44](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/OSSFileUploadServiceImpl.java#L1-L44) - [AliyunOSSConfig.java:1-56](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java#L1-L56) - [RustFSServiceImpl.java:1-38](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/RustFSServiceImpl.java#L1-L38) - [RustFSConfig.java:1-40](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RustFSConfig.java#L1-L40) - [EmailService.java:1-68](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/EmailService.java#L1-L68) - [EmailConfigDTO.java:1-21](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/EmailConfigDTO.java#L1-L21) 章节来源 - [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120) - [SAPConfig.java:1-120](file://nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/config/SAPConfig.java#L1-L120) - [SAPException.java:1-17](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/SAPException.java#L1-L17) - [LDAPSyncProcessor.java:35-179](file://nflg-wms-scheduled/src/main/java/com/nflg/wms/scheduled/processor/LDAPSyncProcessor.java#L35-L179) - [LdapConfig.java:1-42](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L42) - [OSSFileUploadServiceImpl.java:1-44](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/OSSFileUploadServiceImpl.java#L1-L44) - [AliyunOSSConfig.java:1-56](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java#L1-L56) - [RustFSServiceImpl.java:1-38](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/RustFSServiceImpl.java#L1-L38) - [RustFSConfig.java:1-40](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RustFSConfig.java#L1-L40) - [EmailService.java:1-68](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/EmailService.java#L1-L68) - [EmailConfigDTO.java:1-21](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/EmailConfigDTO.java#L1-L21) ## 性能考虑 - SAP连接池 - 确保峰值与池容量合理配置,避免频繁创建销毁连接 - 对RFC调用增加超时与重试策略,防止阻塞线程池 - LDAP同步 - 控制同步频率与批量大小,避免对LDAP服务器造成压力 - 对大部门树采用分页/分批处理 - 文件存储 - OSS/RustFS上传设置合理的超时与断点续传策略(如需要) - 控制并发度,避免带宽与连接数瓶颈 - 邮件服务 - SMTP连接复用,避免频繁建立/关闭会话 - 批量发送时注意队列与速率限制 ## 故障排查指南 - SAP初始化失败 - 检查连接池配置是否为数字且峰值不小于池容量 - 核对主机、系统号、客户端、用户名、密码、语言等属性是否正确 - RFC调用异常 - 捕获SAPException,查看状态码与消息,结合SAP日志定位问题 - LDAP同步失败 - 检查LdapConfig的URL、Base DN、用户DN与密码 - 确认LDAP服务器可达与网络策略放行 - 文件上传失败 - OSS:检查endpoint、region、access key与bucket权限 - RustFS:确认endpoint、access-key/secret-key与path-style配置 - 邮件发送失败 - 核对参数配置表中EmailSet的host/port/username/password - 检查SMTP SSL与超时设置 章节来源 - [SAPConfig.java:79-91](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L79-L91) - [SAPException.java:1-17](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/SAPException.java#L1-L17) - [LdapConfig.java:27-41](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L27-L41) - [AliyunOSSConfig.java:34-47](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java#L34-L47) - [RustFSConfig.java:30-39](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RustFSConfig.java#L30-L39) - [EmailService.java:27-67](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/EmailService.java#L27-L67) ## 结论 本集成方案以模块化方式实现了与SAP、SRM、LDAP、文件存储与邮件服务的对接。通过集中配置与条件装配,系统具备良好的可扩展性与可维护性。建议在生产环境中完善监控与告警,持续优化连接池与同步策略,确保高可用与高性能。 ## 附录 ### 配置参数清单 - SAP(admin/srm-receive) - custom.sap.host - custom.sap.sysnr - custom.sap.client - custom.sap.username - custom.sap.password - custom.sap.lang - custom.sap.pool - custom.sap.peak - 邮件(EmailService) - 参数配置表分组:EmailSet - 字段:host、port、username、password - LDAP(LdapConfig) - spring.ldap.urls[0] - spring.ldap.base - spring.ldap.username - spring.ldap.password - 文件存储(OSS) - file.upload.type=oss - aliyun.oss.endpoint - aliyun.oss.region - aliyun.oss.accessKeyId - aliyun.oss.accessKeySecret - aliyun.oss.bucketName - aliyun.oss.domain - 文件存储(RustFS) - file.upload.type=rustfs - rustfs.endpoint - rustfs.access-key - rustfs.secret-key - rustfs.bucket-name - rustfs.domain 章节来源 - [SAPConfig.java:34-51](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L34-L51) - [SAPConfig.java:34-51](file://nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/config/SAPConfig.java#L34-L51) - [EmailService.java:27-44](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/EmailService.java#L27-L44) - [LdapConfig.java:15-25](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L15-L25) - [AliyunOSSConfig.java:19-29](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java#L19-L29) - [OSSFileUploadServiceImpl.java:26-30](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/OSSFileUploadServiceImpl.java#L26-L30) - [RustFSConfig.java:21-28](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RustFSConfig.java#L21-L28) - [RustFSServiceImpl.java:25-29](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/RustFSServiceImpl.java#L25-L29) ### 接口规范与数据格式 - SRM订单接收 - 头字段:送货单号、公司、工厂、采购组、发货时间、运单号、供应商编号、供应商名称 - 明细字段:ResultSet(由SRMOrderReceiveItemQO定义) - SRM质量检验结果 - 字段:检验单号、工厂、送货数量、检验结果、物料号、供应商代码、检验类型、行号、检验数量、物料描述、单位、收货库存地、不合格原因、采购订单号、物料凭证 章节来源 - [SRMOrderReceiveDTO.java:10-53](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMOrderReceiveDTO.java#L10-L53) - [SRMQualityInspectionResultDTO.java:8-82](file://nflg-wms-common/src/main/java/com/nflg/wms/common/vo/SRMQualityInspectionResultDTO.java#L8-L82) ### 部署与监控指南 - 部署 - 使用Nacos作为配置中心,按环境激活对应配置组 - 启动时加载application.yml,按profiles.active选择配置 - 监控 - 开启Actuator端点与健康检查 - 配置OTLP链路追踪与Loki日志推送 - 关注SAP连接池、LDAP查询延迟、文件上传耗时与邮件发送成功率 章节来源 - [application.yml:13-19](file://nflg-wms-admin/src/main/resources/application.yml#L13-L19) - [application-dev.yml:21-34](file://nflg-wms-admin/src/main/resources/application-dev.yml#L21-L34) - [application-prod.yml:27-30](file://nflg-wms-admin/src/main/resources/application-prod.yml#L27-L30)