资讯动态

从 Excel+微信群到全链路数字化:一套供应链 OMS 的 6 个月落地实录

发布时间:2026/10/1 15:27:12 来源:尧图企业网站定制
导语去年接了一个项目客户的供应链全靠 Excel 微信群管——接单靠群里喊库存靠人记对账靠翻聊天记录物流靠打电话问快递员。花了6个月从0到1搭了一套数字化系统包含订单归集、库存实时化、AI智能补货、自动对账、物流追踪。这篇文章拆开每个阶段做了什么、用了什么技术、踩了什么坑。封面图供应链OMS系统架构全景转型前的现状5 个漏钱的口子先说清楚客户的情况年营收几千万的贸易型企业淘宝、抖音、小程序、B2B 四个渠道卖货两个仓库200 多个 SKU。诊断下来有 5 个核心问题接单靠微信群。客户在群里喊一句给我发 50 箱 A 产品客服手动记到 Excel。淘宝、抖音、小程序各一份表格月底合并时经常漏单、重复发货。库存靠人记。仓库有多少货老板说大概还有吧。月底盘点才发现差异——有一次盘亏 3 万多块查不清是哪个环节丢的。对账靠翻聊天记录。月底和供应商对账两个人各拿一个 Excel 逐行核对一轮下来 3 天起步还经常对不上。物流靠打电话。客户问我的货到哪了客服打快递公司电话查再回微信告知。客服 60% 的工作时间在查物流。补货靠拍脑袋。老板凭经验补货大促前多备一点平时少备一点。结果大促经常断货断货率 12%淡季又积压周转天数 45 天。这 5 个问题每一个都是漏钱的口子。落地路径5 个阶段按优先级排我们按先救命、再造血的原则排了优先级6个月数字化转型落地路径第一阶段1-2月订单归一。所有渠道的订单进同一个系统消灭漏单和重复发货。这是生命线——没有订单就没有后续所有环节。第二阶段2-3月库存实时化。下单即锁库存多仓路由杜绝超卖。这是最容易出事故的地方。第三阶段3-4月AI赋能。智能补货建议 AI 信用评审。这是从数字化到智能化的跨越。第四阶段4-5月物流 售后自动化。快递追踪自动化、退款流程自动化。解放客服人力。第五阶段5-6月对账 监控。自动对账引擎 异常实时告警。这是财务安全的底线。下面逐个阶段拆开讲。---第一阶段订单归一——9 个平台适配器 Webhook 秒级入库核心问题是淘宝、抖音、小程序、B2B 四个渠道每个渠道的订单格式不同、状态码不同、退款规则不同。如果为每个渠道写一套独立的处理逻辑改一个 Bug 要改 4 个地方。我们用了Factory Strategy模式建了一个PlatformAdapter抽象层java// PlatformAdapter 接口——每个平台实现一个适配器public interface PlatformAdapter {String getPlatformName(); // 如 TAOBAO, DOUYINvoid pushStock(ListStockSyncItem items);ListStockInfo pullStock(ListString skuCodes);boolean testConnection();}PlatformAdapterFactory通过 Spring 自动发现所有PlatformAdapter实现类注册到一个 HashMap 里。加一个新平台只需要写一个 Adapter 实现类不需要改主流程代码。最终对接了 9 个平台淘宝/天猫、京东、拼多多、抖音、美团、今日头条、小红书、有赞、旺店通。订单入库用了双轨模式Webhook推送实时每个平台有独立的 Webhook 端点/oms/webhook/taobao、/oms/webhook/douyin等平台有新订单就主动推过来秒级入库。Webhook 端点还做了幂等校验——用订单号做去重防止平台重复推送导致重复创建订单。每个平台的回调响应格式不同淘宝要求返回success字符串拼多多要求{error_code:0}在各自的 Adapter 里处理。定时拉取兜底每 3 分钟跑一次autoRouteOrders()扫描所有已支付待路由的订单自动分配仓库。java// OmsAutoTask —— 核心定时任务Scheduled(cron 0/3?)public void autoRouteOrders() {// 扫描 status1已支付且 warehouseId IS NULL 的订单// 调用路由引擎分配仓库}Scheduled(cron 0/5?)public void autoPushOrders() {// 已路由的订单推送到数据中台}Scheduled(cron 0/30?)public void retryFailedPushOrders() {// 推送失败的订单重试最多 3 次}Scheduled(cron 0 0 * ?)public void monitorOrders() {// 每小时检查积压超阈值告警到企业微信群}这一步做完客服不再需要维护 4 份 Excel 了。所有渠道的订单在一个列表里状态统一用一套状态机0待支付 → 1已支付 → 2已路由 → 4已发货 → 5已签收 → 6已完成。一个有意思的细节B2B 渠道没有支付概念走的是信用账期。所以 B2B 的 Adapter 在创建订单时直接跳过待支付状态进入已支付同时设置settlementStatus CREDIT_OCCUPIED。这种渠道差异在 Adapter 层消化不污染内部逻辑。---第二阶段库存实时化——FIFO 锁定 乐观锁防超卖库存数字化的核心是两件事下单即锁库存防止超卖和多仓路由就近发货。库存锁定的流程是查询 BatchInfo批次信息→ 按 FIFO 顺序锁定批次 → 更新 Stock 表扣减可用量 → 72 小时未支付自动释放。并发控制用 Version 乐观锁。Stock 实体加了Version注解MyBatis-Plus 全局注册了OptimisticLockerInnerInterceptorjava// Stock.java —— 乐观锁保护Versionprivate Integer version; // 每次 update 自动 1冲突时重试// StockLockServiceImpl —— FIFO 批次锁定public boolean lockStock(Long productId, Integer quantity, Long warehouseId) {ListBatchInfo batches batchMapper.selectList(new LambdaQueryWrapperBatchInfo().eq(BatchInfo::getProductId, productId).eq(BatchInfo::getWarehouseId, warehouseId).gt(BatchInfo::getAvailableQuantity, 0).orderByAsc(BatchInfo::getProductionDate) // FIFO);// 按生产日期从早到晚逐批锁定直到满足数量}这里有一个容易忽略的前置工作仓库和物料的基础数据治理。系统里定义了 5 种仓库类型——成品库、原料库、中转库、前置仓、虚拟仓。前置仓专门用于就近发货评分路由里加分虚拟仓用于代发场景不实际持有库存。物料做了统一编码——15 位数字前 3 位是品类码中间 4 位是品牌码后 8 位是序列号三级分类体系大类 → 中类 → 小类。没有这套基础数据后面的库存锁定和多仓路由根本跑不起来。多仓路由用的是评分引擎——给每个候选仓库打分前置仓基础分 100、实体仓 60、虚拟仓 50Haversine 距离在服务半径内加 50 分库存满足全量需求加 20 分。选分数最高的仓库。有一个坑如果评分相同必须有一个确定性的 tiebreaker我们用仓库创建时间先创建的优先否则同一批订单会被分到不同仓库造成发货混乱。这一步做完库存准确率从之前的 ~85%月底盘点才知道提升到 99.5%实时可查。超卖事故归零。---第三阶段AI 赋能——智能补货 AI 信用评审这是从数字化到智能化的关键一步。智能补货系统有一个定时任务PurchaseSuggestionTask每天凌晨 2 点自动跑一遍全仓库的库存数据根据近 30 天销售速度和安全库存线自动生成每个 SKU 的补货建议java// PurchaseSuggestionTask —— 每日自动补货建议Scheduled(cron 0 0 2 ?)public void generatePurchaseSuggestions() {// 计算每个 SKU 的// - dailyAvgSale日均销量// - availableDays当前库存可售天数// - safeDays安全天数默认 14 天// - suggestQty (safeDays - availableDays) * dailyAvgSale// 结果推送到企业微信群采购员早上看手机就知道该补什么货}推送结果到企业微信群采购员早上打开手机就能看到A 仓库 SKU-001 可售 3 天建议补货 200 件。不用再凭经验拍脑袋。AI信用评审对于 B2B 客户系统集成了 AI 信用评估——把客户的信用指标额度、敞口、逾期天数、历史订单量打包发给 AI 模型以B2B 风控分析师角色给出授信建议。这个功能不替代人工决策而是给财务主管一个第二意见。这一步做完断货率从 12% 降到 3%库存周转天数从 45 天降到 28 天。---第四阶段物流 售后自动化——快递鸟双轨追踪客服 60% 的时间在查物流这个必须自动化。我们对接了快递鸟Kdniao聚合 API统一对接 8 家承运商顺丰、圆通、申通、中通、韵达、京东、百世、邮政。追踪用双轨模式推送订阅实时调用快递鸟的 1008 接口注册推送物流状态变更时快递鸟主动回调。轮询兜底每 4小时batchRefreshTracks()扫描所有未签收订单主动查询最新轨迹防止推送丢失。java// KdniaoApiServiceImpl —— MD5 签名 双轨追踪private String generateSign(String requestData) {String raw requestData apiKey eBusinessId;return DigestUtils.md5Hex(raw).toUpperCase();}// LogisticsTrackServiceImpl —— 轮询兜底public void batchRefreshTracks() {ListLogisticsTrack pending trackMapper.selectList(new LambdaQueryWrapperLogisticsTrack().ne(LogisticsTrack::getStatus, DELIVERED));for (LogisticsTrack track : pending) {// 查询快递鸟最新轨迹// 更新数据库Thread.sleep(1000); // 避免触发限流}}退款逆向用了一套 6 态状态机待审核 → 审核通过 → 退款中 → 退款成功/失败/已取消部分退款按行维度计算金额取消订单时 4 步级联回滚积分→优惠券→库存→信用额度。这一步做完客服只需处理异常单物流异常、退款争议常规查询全部自动化。客服工作量下降 65%。---第五阶段自动对账 异常监控最后一个阶段解决财务安全。自动对账采购对账用三单匹配引擎采购单 vs 入库单 vs 发票每 10 分钟跑一次 cron1% 容差内自动通过超差标红人工审核java// ThreeWayMatchEngineJob —— 三单匹配核心逻辑Scheduled(cron 0/10?)public void matchPurchaseOrders() {// 对每一行// 采购单价 vs 入库单价 → 差异 ≤ 1% → MATCHED// 采购数量 vs 入库数量 → 差异 ≤ 1% → MATCHED// 任一维度超差 → MISMATCH标红}异常监控四个核心告警——待路由订单积压 100、推送失败率 10%、库存差异率 5%、退款处理时长 2 小时。接入企业微信机器人超阈值直接推群消息。这一步做完对账从两个人对 3 天变成系统 10 分钟跑完财务只看差异行。---6 个月后的成果四个核心指标的变化库存准确率85% → 99.5%从月底盘点才知道到实时可查客服工作量下降 65%物流查询和退款流程全部自动化对账时间3 天 → 10 分钟AI 三单匹配1% 容差库存周转天数45 天 → 28 天AI 补货建议 安全库存线回看这 6 个月最大的教训是不要一上来就做AI先把基础数据搞定。订单和库存数据不准AI 预测再准也没用——垃圾进垃圾出。前 3 个月花在让数据准上面后 3 个月才开始做让数据有用。第二个教训是不要追求一步到位。我们的做法是先跑通主流程再逐步优化。比如订单归集第一版只做了淘宝一个渠道跑通了再加抖音、拼多多。库存锁定第一版只支持单仓后来才加多仓路由。每次只解决一个核心问题验证可行后再推进下一步——这比一次性搭一个完美架构然后推翻重来要快得多。你们的供应链数字化走到哪一步了哪个环节最头疼评论区聊聊。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑