1. 系统概述 “机务通”是一套面向民航维修领域的工单管理 + 航材管理 一体化系统,覆盖从故障上报、调度派单、维修执行、航材领用、质量验收到适航归档的全流程闭环。系统以六大角色为核心,支撑维修单位日常运营与适航合规要求。
1.1 系统定位 维度 说明 系统名称 机务通 业务领域 民航飞机维修(MRO) 核心模块 工单管理、航材管理、质量适航、机队档案 用户角色 6 类(技术员/调度/航材/质量/档案/管理员) 部署形态 B/S 架构,可选移动端 H5
1.2 系统架构图 2. 六大角色功能矩阵 系统按业务职责划分为六大角色,各角色功能模块如下:
角色 核心职责 主要功能模块 关键操作 维修技术员 一线维修执行 工单执行、航材工具、知识支持 接单、领料、完工提交 调度员/班组长 工单调度与管控 工单调度、进度管控、报表 派单、改派、超时预警 航材管理员 航材全生命周期 库存、采购、追溯 入库、出库、盘点 质量/适航人员 质量审核与合规 工单审核、适航合规、质量分析 验收、归档、AD跟踪 档案管理员 机队档案管理 飞机档案、使用监控 履历维护、状态跟踪 系统管理员 系统运维 用户权限、基础数据、运维 账号管理、日志审计
2.1 角色功能占比 20% 18% 18% 16% 16% 12% 六大角色功能模块占比 维修技术员 调度员/班组长 航材管理员 质量/适航人员 档案管理员 系统管理员
3. 核心业务闭环设计 3.1 工单全流程闭环 3.2 航材联动闭环 3.3 适航追溯闭环(四维追溯) 追溯维度 追溯内容 关联实体 飞机档案 飞机履历、维修历史 飞机注册号 工单记录 维修过程、验收结果 工单编号 航材批次 件号、批次、效期 航材批次号 人员资质 执照、机型签署 技术员ID
4. 数据库核心表设计 4.1 核心数据表清单 表名 说明 关键字段 work_order 工单主表 id, aircraft_id, fault_type, priority, status work_order_step 工单步骤记录 id, order_id, step_desc, images material_stock 航材库存表 id, part_no, batch_no, qty, expiry_date material_inout 航材出入库流水 id, material_id, type, qty, order_id purchase_order 采购订单表 id, supplier_id, status, amount aircraft_info 飞机档案表 id, reg_no, model, status user_info 用户表 id, username, role, license_no quality_audit 质量审核表 id, order_id, result, comment
4.2 工单状态流转表 状态 说明 可流转至 待派单 新建工单待调度 进行中 进行中 技术员已接单 挂起/待验收 挂起 缺件或等待 进行中 待验收 完工待质量审核 已完成/退回整改 已完成 验收通过归档 无
5. 核心功能代码实现 5.1 工单状态机实现 public enum WorkOrderStatus { PENDING ( "待派单" ) , IN_PROGRESS ( "进行中" ) , SUSPENDED ( "挂起" ) , PENDING_ACCEPT ( "待验收" ) , COMPLETED ( "已完成" ) , REJECTED ( "退回整改" ) ; private final String desc; WorkOrderStatus ( String desc) { this . desc= desc; } public static boolean canTransit ( WorkOrderStatus from, WorkOrderStatus to ) { switch ( from) { case PENDING : return to == IN_PROGRESS ; case IN_PROGRESS : return to == SUSPENDED || to == PENDING_ACCEPT ; case SUSPENDED : return to == IN_PROGRESS ; case PENDING_ACCEPT : return to == COMPLETED || to == REJECTED ; default : return false ; } } } 5.2 航材库存扣减(事务控制) @Service public class MaterialService { @Transactional public void deductStock ( Long materialId, int qty, Long orderId) { MaterialStock stock= stockMapper. selectByIdForUpdate ( materialId) ; if ( stock. getQty ( ) < qty) { throw new BusinessException ( "库存不足" ) ; } stock. setQty ( stock. getQty ( ) - qty) ; stockMapper. updateById ( stock) ; // 记录出入库流水 MaterialInout inout= new MaterialInout ( ) ; inout. setMaterialId ( materialId) ; inout. setType ( "OUT" ) ; inout. setQty ( qty) ; inout. setOrderId ( orderId) ; inoutMapper. insert ( inout) ; // 低库存预警 if ( stock. getQty ( ) <= stock. getMinQty ( ) ) { alertService. sendLowStockAlert ( stock) ; } } } 5.3 低库存自动触发采购 @Component public class PurchaseTrigger { @Scheduled ( cron= "0 0 8 * * ?" ) public void autoCreatePurchase ( ) { List < MaterialStock > lowStocks= stockMapper. findLowStock ( ) ; for ( MaterialStock stock: lowStocks) { PurchaseOrder order= new PurchaseOrder ( ) ; order. setPartNo ( stock. getPartNo ( ) ) ; order. setQty ( stock. getMinQty ( ) * 2 - stock. getQty ( ) ) ; order. setStatus ( "PENDING" ) ; purchaseMapper. insert ( order) ; notifyService. sendToPurchaser ( order) ; } } } 5.4 重复故障预警 @Service public class FaultAlertService { public void checkRepeatFault ( String aircraftRegNo, String faultType) { int count= workOrderMapper. countByAircraftAndType ( aircraftRegNo, faultType, LocalDate . now ( ) . minusMonths ( 3 ) ) ; if ( count>= 3 ) { alertService. sendRepeatFaultAlert ( aircraftRegNo, faultType, count) ; } } } 5.5 人员资质匹配校验 public class QualificationChecker { public boolean checkQualification ( Long technicianId, String aircraftModel, String orderType) { UserInfo user= userMapper. selectById ( technicianId) ; if ( user. getLicenseNo ( ) == null ) return false ; // 校验机型签署 List < ModelAuth > auths= authMapper. findByUserId ( technicianId) ; return auths. stream ( ) . anyMatch ( a-> a. getModel ( ) . equals ( aircraftModel) ) ; } } 5.6 工单看板统计 SQL SELECT status , COUNT ( * ) AS order_count, ROUND ( COUNT ( * ) * 100.0 / SUM ( COUNT ( * ) ) OVER ( ) , 2 ) AS pctFROM work_orderWHERE create_time>= DATE_SUB( NOW ( ) , INTERVAL 7 DAY ) GROUP BY status ORDER BY order_countDESC ; 6. 数据看板与统计 6.1 工单状态分布(示例数据) 状态 数量 占比 待派单 12 15% 进行中 28 35% 挂起 8 10% 待验收 16 20% 已完成 16 20%
6.2 故障类型 TOP5 故障类型 数量 占比 发动机系统 32 28% 航电系统 25 22% 起落架系统 18 16% 液压系统 15 13% 其他 24 21%
6.3 航材库存预警表 件号 名称 当前库存 最低阈值 状态 P/N-1001 液压密封圈 5 10 预警 P/N-1002 传感器模块 3 8 预警 P/N-1003 滤芯组件 20 15 正常 P/N-1004 刹车片 2 5 预警
7. 技术栈选型 层级 技术选型 说明 前端 Vue3 + Element Plus 组件化开发 图表 ECharts 看板/统计图 后端 Spring Boot + MyBatis-Plus 主流稳定 数据库 MySQL 主数据存储 缓存 Redis(可选) 会话/消息缓存 鉴权 JWT 登录认证 文件存储 本地/MinIO 维修照片附件 消息通知 站内信/邮件 预警提醒
8. 亮点功能总结 亮点功能 核心价值 实现要点 AOG 工单专项管理 保障飞机尽快恢复 红色标识、最高优先级、超时逐级告警 航材-工单双向追溯 全链路可查 工单↔航材双向关联 重复故障预警 提前发现隐患 3个月内同机型同故障≥3次自动提醒 人员资质匹配 合规派单 派单时校验机型签署 状态看板可视化 实时掌握全局 ECharts 多维度看板
9. 总结 “机务通”系统通过工单、航材、质量、档案 四大核心模块的联动,实现了维修业务的全流程数字化管理。系统不仅覆盖日常维修运营,更通过四维追溯 机制满足适航合规要求,是民航维修单位数字化转型的可靠选择。