Garage Repair Order Sync
SaaS / DGJ / GRSPROD 订单同步对照页
把这次排查里最常用的销售单操作、事件落表、明细匹配规则和当前同步策略收成一页,方便后面沟通、评审和继续迭代时直接对着看。
覆盖 DGJ2.0 / SaaS / GRSPROD
聚焦销售单主链路
适合方案评审与联调说明
当前同步策略
DGJ updated
- 允许 replace 明细。
- 原因是 DGJ 的销售单追加/改单本身就存在删明细再重建的业务实现。
- 但不是无条件 replace,已出库或已退款订单要降级成保守同步。
GRSPROD updated
- 优先按商品业务键增量同步,不做纯 replace。
- 当前协议以
invId 作为明细匹配主键。
- 如果将来协议再次允许一单多行同
invId,这块需要重新升级匹配规则。
DGJ2.0 销售单主操作清单
| 操作 |
典型方法 |
说明 |
同步关注点 |
| 创建销售单 |
SaOrderSer::saCreate2() |
创建销售单主表、明细、来源关联和接单记录。 |
对应 GARAGE_REPAIR_ORDER_CREATED。 |
| 追加商品 / 改单 |
SaOrderSer::saAppend() |
先删旧明细,再重建新明细,并重算数量与金额。 |
是 DGJ updated 支持 replace 明细的关键依据。 |
| 未发货关闭 |
SaOrderSer::returnOrderNoOut()
InvSaService::closeSaleOr(type=1) |
关闭未发货销售单,更新销售单状态并作废接单。 |
对应取消类同步。 |
| 销售单结单 / 完成 |
InvSaService::closeSaleOr(type=2) |
更新销售单完成状态,并联动收款相关状态。 |
适合归到 COMPLETED 或纯状态更新。 |
| 出库生成 |
SaOrderSer::saOrderOut()
SaInvoiceSer::outBound() |
按销售单生成出库单,推动销售单出库状态变化。 |
走出库单同步事件,不完全属于订单更新消息。 |
| 撤销出库 |
出库撤销流程 + MQ |
回滚销售单的出库数量和状态。 |
对应 GARAGE_REPAIR_OUTBOUND_CANCELLED。 |
| 退货 / 售后 |
retOrder2()
returnChargeOrder() |
围绕出库后逆向流程,可能影响数量、金额和可见状态。 |
是否同步给另外两端,需要按业务边界再定。 |
事件与落表对照
DGJ2.0 侧:销售单相关操作会更新哪些表
| 事件 / 操作 |
更新表 |
主要字段 |
| 创建销售单 |
sa_order
sa_order_info
sass_order_rel
sa_order_info_ext
sa_order_take |
billNo、totalQty、amount、sourceType、srcOrderId、vin、carModel 等。 |
| 追加商品 / 改单 |
sa_order_info
sa_order |
先硬删旧明细再重插;主表重算 totalQty、totalAmount、amount。 |
| 未发货关闭 / 取消 |
apply_return_order
sa_order
sa_order_log
sa_order_take |
billStatus = 3、modifyTime、接单状态失效。 |
| 结单 / 完成 |
sa_order 收款相关表
sa_order_log
sa_order_take |
billStatus = 2、modifyTime,并触发收款状态联动。 |
| 出库单创建 / 撤销 |
sa_invoice
sa_invoice_info |
通过出库单维度影响销售单履约进度,并发 MQ 给 SaaS。 |
SaaS 侧:消费这些事件后会更新哪些表
| 事件 |
更新表 |
主要字段 |
GARAGE_REPAIR_ORDER_CREATED |
t_order
t_order_detail
t_order_ext
t_order_summary |
站点、客户、金额、数量、状态、支付方式、地址、明细商品、VIN/车型、汇总展示。 |
GARAGE_REPAIR_ORDER_UPDATED / MODIFIED / COMPLETED |
t_order
t_order_detail
t_order_ext
t_order_summary |
订单表头更新、明细同步、扩展信息更新、汇总恢复或刷新。 |
GARAGE_REPAIR_ORDER_CANCELLED |
t_order
t_order_detail |
order_status、cancel_time,以及整单明细状态。 |
| 老出库同步事件 |
t_order
t_order_detail
t_order_outflow
t_order_summary |
出库数量、出库状态、出库流水、汇总展示。 |
| 老撤销出库事件 |
t_order
t_order_detail
t_order_outflow |
回滚出库数量和状态,并删除对应出库流水。 |
明细匹配规则对照
| 来源类型 / 场景 |
典型场景 |
当前匹配主键 |
说明 |
| 纯线下开单 |
站管家本地直接建销售单 |
invId |
当前协议没有源订单行字段,线下消息按商品维度对齐。 |
| 线上订单初次落销售单 |
E站商城、E站维修、E站活动、E站 IM、机器人订单 |
invId |
创建与修改消息里不再传 srcOrderEntryId,由消费端按商品主键匹配。 |
| 线上单在 DGJ 后续追加商品 |
人工加行、补料 |
invId |
DGJ 更新允许 replace 明细,前提是订单还没有履约痕迹。 |
| 内部派生单 / 出库维度派生单 |
线下转线上、履约派生 |
不依赖创建/修改消息 |
更多通过出库单事件补仓库、库区和履约维度信息。 |
| 历史迁移单 |
老数据补齐 |
invId |
如果只有结果单据,没有行级来源信息,也按商品主键兜底。 |
当前重点关注点
需要继续盯的风险
- 当前消息里去掉了
storageId 和 areaId,这两个维度应由出库单消息补齐。
DGJ COMPLETED 如果只是纯状态消息,不该误走明细 replace。
- 已出库、已退款订单不能再被粗暴删明细,否则会影响
t_order_outflow 等关联。
比较稳的共识
DGJ updated 允许 replace 明细,但要加履约保护。
GRSPROD updated 现在按 invId 做增量同步,不做纯 replace。
- 取消、完成、出库、撤销出库仍然应该维持各自独立事件,不要全部挤进 updated。