某钻探公司井队分散在多个野外现场,设备种类繁杂,每日检查与定期保养标准难以统一。传统方式靠人工记忆、纸质记录,极易出现漏检、迟保,且管理层无法实时掌握执行状况。该系统通过提前录入的检查与保养规则,每日自动生成并推送检查保养工单,督促现场人员及时填写,杜绝遗忘与延误。
点击空白处退出提示
某钻探公司井队分散在多个野外现场,设备种类繁杂,每日检查与定期保养标准难以统一。传统方式靠人工记忆、纸质记录,极易出现漏检、迟保,且管理层无法实时掌握执行状况。该系统通过提前录入的检查与保养规则,每日自动生成并推送检查保养工单,督促现场人员及时填写,杜绝遗忘与延误。
这是一款面向野外钻探现场作业的桌面客户端,支持中英俄文,核心围绕设备全生命周期管理,目前已在生产环境运行,覆盖 7 大业务域、31 个业务模块。
主要功能如下:
① 设备管理:设备台账、设备种类、设备厂商、设备调拨、封存启用、设备初始化、设备变更
② 设备维保:维保标准项、维保职责、维保班次、设备检查、设备保养
③ 设备维修:设备内修记录、设备外修记录、维修标准参考、维修周期说明
④ 设备检测:检测计划、检测标准
⑤ 设备故障:故障登记、设备事件追溯
⑥ 配件管理:配件库存、配件申请、配件入库、配件出库
⑦ 系统管理:组织机构、数据同步管理
用户通过登录页输入账号密码后进入主界面,左侧采用树形导航按业务域分组展开,点击具体模块进入对应页面。页面结构统一,包含搜索区、记录数展示、新增/编辑/删除工具栏及数据表格。新增或编辑时,系统会根据业务字段配置动态生成表单,支持文本、数字、日期时间、下拉、关联等多种控件类型。
在数据存储方面,保存时会优先写入本地 SQLite,确保离线环境正常可用。后台每 5 分钟自动触发一次双向同步,用户也可手动发起全量或增量同步,将本地变更上传至服务端,并拉取服务端最新数据。
团队共 3 人,我负责业务调研与整体设计,同时承担通用组件和整体架构的开发;另外两位成员基于我搭建的通用组件,分别负责具体业务模块的功能实现和同步功能开发。
项目周期约 45 天,完成桌面端搭建,31 个业务模块全部落地。我的职责包括技术选型、整体架构设计、通用组件开发,以及编码规范和开发文档的输出。
技术栈采用纯 Qt 5.15 + C++17 + 标准库,未引入任何第三方依赖,因此打包体积很小,部署简单。架构分为五层:UI 层(基于 QWidget 和 QStackedWidget 实现侧边栏导航)、Model 层、DB 层(SQLite)、Sync 层和 API 层。层间通过 Qt 的信号与槽通信,UI 与业务逻辑互不干扰。
项目的核心特点在于,31 个业务模块被抽象为一张统一的 module_records 表,配合 ModuleConfig 字段注册表管理。新增业务模块时,只需在一个文件中添加约 10 行 COL 宏即可,无需改动数据库、UI 或同步逻辑,表单、表格列和字段类型均可自动生成,显著降低了开发成本。网络方面,由于 Qt 的网络 API 均为异步回调,多模块并发同步时状态难以追踪,我们通过计数器和 Phase 闭包对完成状态进行集中管控。
最终客户端代码约 6,000 行,覆盖 31 个业务模块和 26 张数据表。系统实现了离线状态下数据随时可用,网络恢复后支持零冲突自动同步。






评论