AIDOP-MES&WMS相关信息.md 7.3 KB

AIDOP-MES&WMS 相关信息

1. 文档目的

本文说明 Ai-DOP 数据中台与 MES/WMS APP 所使用 SQL Server 的连接配置、同步实体配置、运行时建连方式及与 T8 数据源配置的区别。

安全约束:本文不记录数据库密码、令牌等敏感凭据。密码必须通过带外方式注入,不得写入 Git。

2. 对接对象

项目 内容
数据中台业务库 MySQL aidopdev
MES/WMS SQL Server 数据库 dopdemorq
数据源编码 DOPDEMORQ_SQLSERVER
初始登记状态 status=0,默认停用
主要用途 MES/WMS 业务表入站同步、实时回读,以及经 Outbox 执行获准的业务回写

MES 与 WMS APP 共用的业务数据位于 dopdemorq。数据中台不是通过 appsettings.json 或 Database.json 中的固定连接串访问该库,而是从 MySQL 配置表 mdp_source 读取连接信息并动态创建 SQL Server 连接。

3. 配置存放位置

3.1 数据源连接配置:mdp_source

实际生效的连接信息存放在 aidopdev.mdp_source:

字段 含义
source_code 数据源唯一编码,MES/WMS 使用 DOPDEMORQ_SQLSERVER
source_type DB
status 1 表示启用,0 表示停用
db_type SQLSERVER
db_host / db_port SQL Server 地址和端口
db_name 数据库名 dopdemorq
db_user 数据库账号
db_password_enc 数据库密码或系统密文,必须带外注入
db_extra_params 连接串附加参数

初始登记脚本:

server/Admin.NET.Web.Entry/UpdateScripts/1.0.268.sql

该脚本登记 DOPDEMORQ_SQLSERVER,但默认将数据源设为停用,并将 db_password_enc 留空,避免凭据进入代码仓库。

当前环境是否已经启用,应以数据库实时配置为准:

SELECT source_code, source_name, source_type, status,
       db_type, db_host, db_port, db_name, db_user,
       health_status, last_health_check, health_msg
  FROM mdp_source
 WHERE source_code = 'DOPDEMORQ_SQLSERVER';

不得在查询结果、日志或文档中输出 db_password_enc。

3.2 同步实体配置:mdp_entity

同步哪些源表、写入哪些贴源表、采用全量还是增量同步,均由 aidopdev.mdp_entity 配置。主要字段如下:

字段 含义
source_id 关联 mdp_source.id
entity_code 同步实体编码,SQL Server 实体通常以 _SQLSERVER 结尾
source_table_name MES/WMS SQL Server 源表
target_table_name Ai-DOP 数据中台贴源表
sync_mode FULL 或 INCR
incr_column 增量水位字段,如 UpdateTime、CreateTime
batch_size 单批抽取数量
biz_key_expr 业务去重键
status 当前实体是否启用
last_sync_to 最近成功推进的同步水位

MES/WMS 扩展实体的主要登记脚本:

server/Admin.NET.Web.Entry/UpdateScripts/1.0.300.sql

其中包括标签、库存、库位、物料、供应商等 SQL Server 入站实体。例如:

实体编码 SQL Server 源表 数据中台贴源表
S5_LABEL_MISSEDPRINT_SQLSERVER MissedPrint mdp_stg_label
S5_INV_MASTER_SQLSERVER InvMaster mdp_stg_inventory
S5_INV_TRANS_HIST_SQLSERVER InvTransHist mdp_stg_inv_trans
S5_LOCATION_DETAIL_SQLSERVER LocationDetail mdp_stg_inventory
S5_LOCATION_MASTER_SQLSERVER LocationMaster mdp_stg_location
S3_ITEM_MASTER_SQLSERVER ItemMaster mdp_stg_item
S3_SUPPLIER_SQLSERVER SuppMaster mdp_stg_supplier

查看当前已登记实体:

SELECT e.entity_code, e.entity_name, e.status,
       e.source_table_name, e.target_table_name,
       e.sync_mode, e.incr_column, e.batch_size,
       e.last_cursor, e.last_sync_to
  FROM mdp_entity e
  JOIN mdp_source s ON s.id = e.source_id
 WHERE s.source_code = 'DOPDEMORQ_SQLSERVER'
 ORDER BY e.entity_code;

4. 运行时连接机制

动态连接工厂位于:

server/Plugins/Admin.NET.Plugin.AiDOP/DataPlatform/MdpSourceScopeFactory.cs

处理过程为:

  1. 业务代码以 DOPDEMORQ_SQLSERVER 请求连接;
  2. 工厂查询状态为启用的 mdp_source 记录;
  3. 根据 db_type、主机、端口、库名、账号和密码组装连接串;
  4. 以 mdp-src-DOPDEMORQ_SQLSERVER 为 ConfigId 注册 SqlSugar 连接;
  5. 入站抽取、实时回读或获准的回写服务复用该连接。

数据源不存在或 status!=1 时,工厂会直接报错,不会自动回落到其他数据库。

5. 数据同步链路

5.1 SQL Server 入站

MES/WMS SQL Server(dopdemorq)
    → MdpSourceScopeFactory 动态建连
    → MdpDbPullExecutor 分页/增量抽取
    → MdpStagingWriter 写入 mdp_stg_*
    → 转换服务生成 mdp_std_* / dwd_* 等读模型
    → Ai-DOP 页面、业务服务和指标消费

主要执行器:

  • DataPlatform/Executors/MdpDbPullExecutor.cs
  • DataPlatform/Executors/MdpStagingWriter.cs
  • DataPlatform/Executors/MdpModuleStagingPuller.cs

5.2 SQL Server 回写

获准的业务回写通常采用以下链路:

Ai-DOP 业务操作
    → mdp_outbox
    → MdpTargetPushDispatcher
    → MdpDbPushExecutor
    → MES/WMS SQL Server

回写不得绕过 Outbox 直接散落在业务服务中。只读抽数账号与回写账号应按最小权限原则分离;若使用独立写账号,应登记独立数据源编码。

6. 与 Database.json 的区别

文件:

server/Admin.NET.Application/Configuration/Database.json

其中固定登记的 SQL Server ConfigId=t8_v5 是 T8 ERP 源库,用于 S5/S6/S7 KPI 等 T8 数据贴源同步,不是 MES/WMS APP 的 dopdemorq 连接配置。

数据源 配置方式 用途
DOPDEMORQ_SQLSERVER aidopdev.mdp_source 动态配置 MES/WMS APP 业务库
t8_v5 / T8_V5_SQLSERVER Database.json 固定连接兼容动态源 T8 ERP/KPI 数据
WMS_API mdp_source API 类型配置 WMS API/Mock 双模式链路

因此,调整 MES/WMS SQL Server 连接时,不应修改 Database.json 中的 T8 连接项。

7. 启用与排查检查项

  1. mdp_source.DOPDEMORQ_SQLSERVER 是否存在且 status=1;
  2. source_type 是否为 DB、db_type 是否为 SQLSERVER;
  3. 主机、端口、数据库名和账号是否正确;
  4. db_password_enc 是否已通过安全方式注入;
  5. 健康检查是否正常,health_msg 是否有连接或权限错误;
  6. 对应 mdp_entity 是否为 status=1;
  7. last_sync_to 是否持续推进;
  8. 账号是否仅具备该链路所需的最小权限;
  9. 增量实体的 incr_column 是否存在且水位语义可靠;
  10. 多实例环境是否避免同一实体并发推进同一水位。

8. 相关资料

  • server/Admin.NET.Web.Entry/UpdateScripts/1.0.268.sql
  • server/Admin.NET.Web.Entry/UpdateScripts/1.0.300.sql
  • server/Plugins/Admin.NET.Plugin.AiDOP/DataPlatform/MdpSourceScopeFactory.cs
  • server/Plugins/Admin.NET.Plugin.AiDOP/Entity/DataPlatform/MdpSource.cs
  • doc/plan/旧DOP-MES-WMS/README.md
  • doc/plan/旧DOP-MES-WMS/对接任务书/README.md
  • doc/plan/旧DOP-MES-WMS/对接任务书/WP1-入站抽数补齐.md
  • doc/plan/旧DOP-MES-WMS/对接任务书/WP3-回写执行器.md