巡检工单系统基于yii框架构建,围绕“任务生成—派发—执行—反馈—闭环”主线,通过inspectionplan、template、task、record四模型精准建模,结合状态机、权限控制、移动端离线支持及数据预警联动实现高可用闭环管理。

巡检工单是巡检管理系统的核心业务模块,Yii框架凭借其MVC结构、数据库抽象层(ActiveRecord)和灵活的扩展能力,非常适合构建高可维护、易扩展的巡检工单系统。关键在于围绕“任务生成—派发—执行—反馈—闭环”主线,结合企业实际巡检规则(如周期、点位、标准、责任人)做精准建模与流程控制。
工单模型设计:贴合巡检实体逻辑
避免简单套用通用“Order”或“Ticket”命名,应体现巡检领域语义:
- InspectionPlan:定义巡检计划(设备/区域、周期、模板ID、生效时间、是否启用)
- InspectionTemplate:结构化巡检项(检查点名称、标准值/范围、检测方式、是否必填、关联图片要求)
- InspectionTask:由计划自动生成的待执行工单(计划ID、执行人ID、开始/截止时间、状态、生成时间)
- InspectionRecord:执行后的结果记录(任务ID、检查项ID、实测值、异常标记、现场照片、备注、操作人、提交时间)
在Yii中用ActiveRecord实现,配合rules()方法约束字段(如Task状态仅限draft/assigned/in_progress/done/rejected),用relations()声明关联(如Task belongsTo Plan,Record hasOne Task)。
工单生命周期管理:状态驱动 + 权限隔离
巡检工单不是静态数据,需通过状态机控制流转,并按角色限制操作权限:
- 计划生成Task时,自动计算下次执行时间(如每月5日 → 下次为下月5日),调用
InspectionPlan::generateNextTask() - 调度员可将Task分配给具体人员(更新
assignee_id、状态设为assigned),普通巡检员仅能看到自己名下assigned或in_progress的工单 - 执行页加载时校验:当前时间是否在工单有效期内、是否已超期、是否已被他人领取,防止重复操作
- 提交Record前校验必填项、数值范围(如温度应在-20℃~80℃)、图片格式及数量(如“电机温度”项必须上传1张红外图)
移动端适配与离线支持(关键落地环节)
一线巡检员常在无网或弱网环境作业,Yii后端需提供轻量API支撑前端离线能力:
- 提供
/api/v1/tasks/pending接口,返回带完整模板结构的待办工单(含检查项定义),供APP缓存 - Record提交接口
/api/v1/records支持批量提交,接收JSON数组,服务端做幂等处理(根据task_id+item_id去重) - 对图片上传单独设计
/api/v1/uploads,返回CDN临时URL,APP本地先存base64,联网后异步上传并绑定到Record - 后台增加“离线补录审核”菜单,供管理员查看延迟提交的工单,确认是否认可其时效性
数据闭环与预警联动
工单不能只停留在“完成”,要驱动管理动作:
- Record中任一检查项标记“异常”,自动触发:生成缺陷工单(DefectTicket),关联原始Task和设备信息,推送给维修班组
- 按周/月统计各班组工单完成率、超期率、异常率,用Yii的
yii\grid\GridView快速搭建报表页,导出Excel支持phpoffice/phpspreadsheet - 对接企业微信/钉钉,Task超期2小时未领取、Record超时未提交、缺陷未响应,自动发送提醒消息(通过Yii事件机制解耦,如
Event::on(InspectionTask::class, InspectionTask::EVENT_OVERDUE, [...]))











