这是精工智能数字化工厂的系列作品——制造业online。我们公司拥有500多名员工,涵盖前后端程序员、实施工程师、测试工程师、售前工程师,这些多元角色的经验在此整合输出:一方面服务于内部知识库与项目数据库的沉淀,另一方面也为大家打破技术壁垒,提供一扇了解软件服务行业真实运作的窗口。今天这篇纪实,我们想用一次真实的生产领料功能开发,带大家走进工业软件程序员的日常战场——看一个看似简单的“呼叫AGV”按钮背后,如何牵引出仓储、制造执行、智能物流三大系统的深度咬合。
生产领料功能开发纪实
所属项目: 仓储管理系统(WMS)
涉及模块: PDA生产领料、MES系统对接、AGV智能物流
一、需求来源
本次功能开发源于制造业数字化转型提升项目。
目前车间生产线领料主要依靠人工纸质单据,存在以下问题:
领料数据无法实时反馈至仓储系统,库存数据滞后
工单与物料的对应关系不清晰,容易出现领错料、多领料的情况
领料完成后需要人工录入业务系统,工作量大且容易出错
缺乏有效的追溯机制,出现质量问题时难以定位物料来源
仓库到车间的物料搬运依赖人工调度,效率低下且容易出错
为此,精工智能信息化团队接到任务:开发一套基于工单和栈板维度的生产领料功能,实现PDA端和制造执行系统两种操作方式,集成AGV智能物流系统实现自动搬运,并自动完成与业务系统的数据同步。这不仅是一次功能开发,更是对数字化系统如何“软硬一体”落地的一次实战检验。
二、核心业务流程
2.1 呼叫AGV按钮开启流程(重点)
本流程是生产领料的核心触发机制,通过点击"呼叫AGV"按钮,系统自动完成从业务单据创建到AGV调度再到单据审核的完整闭环。

流程说明:
整个流程自动化完成,无需人工干预业务系统的单据创建和审核操作。
关键特点:先创建并呼叫AGV,待AGV完成任务后再审核单据,确保实物与账务同步。
2.2 产线叫料流程
AGV将物料送达车间备料区后,产线人员根据生产需要进行叫料操作:
产线人员在PDA或制造执行系统中输入工单号
扫描栈板码,系统自动展示该栈板上属于该工单的所有物料信息
核对物料信息(料号、品名、需求数量、缺料数量等)
确认领料,系统记录领料信息
2.3 上料作业流程
产线叫料完成后,进行实际的上料作业并回写生产领料单:
产线人员将物料从栈板取出,投放到生产线
在PDA或制造执行系统中确认上料
系统自动回写生产领料单,更新已领数量
系统自动计算缺料数量,若缺料则触发补料流程
上料完成后,系统更新相关单据状态为"已关闭"
2.4 完整流程串联示意
【完整业务流程图】

三、开发过程
第一阶段:需求分析与方案设计
信息化团队与生产管理部门、仓储部门、物流部门召开需求对齐会议,重点确认以下内容:
生产领料的核心业务场景和操作流程
工单、栈板、物料之间的关联关系
领料过账后需要同步的数据内容和同步时机
生产补料与生产领料的差异处理
AGV智能物流系统的集成方案和触发时机
直接调拨单的创建、提交、审核流程与AGV任务的协调机制
会议确定:系统需支持按工单号和栈板号两个维度进行领料操作,通过"呼叫AGV"按钮触发完整流程——先从生产订单下推生成直接调拨单并呼叫AGV,待AGV完成任务后再审核调拨单,确保实物搬运与账务处理同步。
第二阶段:AGV呼叫与调拨单功能开发
基于需求确认结果,精工智能的开发人员开始进行AGV呼叫和直接调拨单功能的设计与开发:
设计了"呼叫AGV"按钮的完整业务逻辑:点击后自动从生产用料清单下推生成直接调拨单
实现了直接调拨单的自动创建和提交功能,无需人工在业务系统中操作
开发了AGV智能物流系统的接口调用功能,自动发送调度指令,指定目的地为车间备料区
设计了AGV任务完成后的回调机制,自动触发直接调拨单的审核操作
实现了调拨单号、单据ID与本地仓储记录的关联存储,便于后续追溯
加入了严格的校验逻辑:栈板号必须与工单匹配、生产车间必须配置对应的库别编号
当日关键决策:采用"先创建调拨单并呼叫AGV,待AGV任务完成后再审核调拨单"的设计方案,确保实物已送达车间备料区后账务才正式生效,避免账实不符的情况。工业软件程序员常说的一句话在此刻得到印证——“好的接口设计,是让硬件感知不到软件的存在,也让软件不辜负硬件的每一次动作。”
第三阶段:查询与过账功能开发
AGV呼叫功能完成后,继续开发产线叫料查询和生产领料过账功能:
设计了多维度的数据查询策略,通过工单号、栈板号、单据类型三个条件精准定位领料数据
采用多表关联查询,一次性获取物料信息、需求数量、已领数量等完整数据
对查询结果进行聚合计算,自动汇总同一物料在不同记录中的数量
加入数据校验逻辑,确保一个栈板只对应一张领料单,避免数据混乱
整理并补充了PDA和制造执行系统展示所需的全部字段,确保操作人员能够全面了解领料信息
第四阶段:过账功能开发与联调
进入核心过账逻辑的开发阶段,团队内部讨论并确定了整体执行顺序:
先完成本地仓储数据更新,再同步至业务系统。
这一顺序的设计原因:领料操作首先需要确保本地仓储数据的准确性,包括物料状态更新、领料数量记录等;在本地数据更新成功后,再触发业务系统同步,若同步失败不影响本地操作的完成,支持后续重新同步。
针对生产领料和生产补料两种不同单据类型的处理方案:
生产领料单:直接根据栈板上的物料数量进行过账,过账成功后关闭相关单据
生产补料单:需要先查询已完成的业务系统过账记录,再进行审核确认,最后关闭相关单据
联调测试重点场景:
呼叫AGV完整流程测试——验证从点击按钮到AGV任务完成、单据审核的全流程
单栈板单工单领料测试——验证单条记录的正确性
单栈板多物料领料测试——验证批量展示及批量领料的正确性
生产补料单领料测试——验证补料流程的完整性
栈板号或工单号错误时的异常处理测试——验证错误提示的准确性
业务系统同步失败时的容错测试——验证系统能否保留本地记录并支持重新同步
AGV任务失败时的异常处理测试——验证系统能否正确提示并支持重新呼叫
四、遇到的问题及解决思路
问题一:如何确保直接调拨单、栈板、工单三者的准确匹配?
问题描述:由于实际业务中可能存在一个栈板上的物料分属不同工单,或者一个工单对应多个栈板的情况,如果匹配不准确,容易导致调拨单创建错误或领料数据混乱。
解决思路:团队设计了严格的校验机制。从生产用料清单下推生成直接调拨单时,以"工单号+栈板号"两个维度进行过滤,并对查询结果进行校验,若发现一个栈板对应多张领料单,立即提示数据异常,由人工介入处理,从源头避免数据错误。同时,在调拨单创建成功后,将调拨单号、单据ID与栈板记录进行关联存储,便于后续追溯。
问题二:AGV任务完成与调拨单审核如何协调?
问题描述:如果在呼叫AGV时就立即审核调拨单,但AGV任务失败或取消,会导致账务已生效但实物未送达的情况,造成账实不符。
解决思路:团队设计了分步处理机制:点击"呼叫AGV"按钮后,系统先从生产订单下推生成直接调拨单并提交,但此时不审核单据;然后呼叫AGV执行搬运任务;待AGV任务完成并返回成功状态后,系统再自动审核直接调拨单。这样确保了只有实物已送达车间备料区,账务才会正式生效,从根本上避免了账实不符的问题。
问题三:生产补料单与普通生产领料单的处理流程不同,如何统一操作入口?
问题描述:生产补料单在业务系统中需要先创建补料单并审核,然后才能在仓储系统中进行领料确认。两种单据的处理流程存在差异,但操作人员希望使用统一的操作入口。
解决思路:团队设计了分支处理逻辑:在用户提交领料请求后,系统自动识别单据类型,若是生产补料单,则先查询业务系统的过账记录,确认无误后再进行审核和关闭操作;若是普通生产领料单,则直接进行过账处理。对操作人员而言,操作入口和流程保持一致,系统内部自动区分处理。这正是数字化系统设计中“对外一致、对内差异化”的典型实践——用户不感知复杂度,复杂度被封装在代码深处。
问题四:领料数量如何准确计算?
问题描述:由于物料可能存在多次分批领料的情况,需要准确计算已领数量和缺料数量,以确保领料数据的准确性。
解决思路:团队确定了以"领料单需求数量减去已领数量"计算缺料数量的规则,并通过多表关联查询和聚合计算,自动汇总同一物料在不同记录中的已领数量,确保缺料数量计算准确。同时,本次领料数量使用栈板上的实际充单数量,避免人工输入错误。
五、业务规则汇总
只有处理中状态的生产领料单或生产补料单才能进行领料操作
栈板必须与工单匹配,系统会自动校验栈板上的物料是否属于指定工单
一个栈板在同一时间只能对应一张生产领料单,避免数据混淆
点击"呼叫AGV"按钮后,系统自动从生产订单下推生成直接调拨单
直接调拨单创建后立即提交,但需等待AGV任务完成后才进行审核
过账数量使用物料的实际充单数量,确保领料数据准确
过账成功后,系统自动将相关物料的状态更新为已关闭
领料过账完成后,系统自动将数据同步至业务系统
每次领料操作均自动生成操作日志,支持事后审计查询
AGV任务失败时,系统保留调拨单草稿状态,支持重新呼叫
六、成果总结
回看这次开发,从需求对接到最终联调上线,精工智能团队始终在回答同一个问题:数字化系统如何在不增加一线操作负担的前提下,让数据自己“说话”、让物流自己“跑动”?答案藏在那颗“呼叫AGV”按钮背后——它不是简单的接口调用,而是工业软件程序员对制造现场节奏的理解、对账实一致性的敬畏、对异常场景的周全预判。制造业数字化转型从来不是把线下流程照搬到线上,而是重新思考人与机器、系统与设备、数据与实物之间最朴素的信任关系。这份纪实,或许正是这种信任的注脚。










































































































