录井审核信息统计软件的设计开发
2022-10-24王重云
王 重 云
(中国石油长城钻探工程有限公司录井公司)
0 引 言
在油气勘探开发领域,录井现场采集的数据具有参数种类多、内容详细、可靠性高等特点,是勘探开发过程中重要的信息来源[1]。完井后,施工中形成的各种录井数据由公司的资料审核组收集整理并汇总成报表存档,不仅便于结算和领导审阅,也可以为后续其他井的施工提供参考,具有重要价值。依托多个录井资料数据库,审核组需要填写的各类报表达数十张,由于报表数量众多,许多表中数据又涉及统计和计算操作,填写报表的工作量很大,迫切需要一款能够实现各类报表数据自动提取、计算和导出的软件。
针对上述需求,设计开发了录井审核信息统计软件,软件支持A 8系统、质量和检验共3类25张报表。通过将各种数据的统计和计算过程算法化,利用控件复用和多重载技术,软件允许用户对选定井在报表输出过程中实现从井号选择、数据提取、统计计算到数据存储、报表导出的连续操作,从而提升报表生成速度和数据准确性,减少人工计算量,达到以信息化手段“降本增效”的目的。
1 业务现状与需求分析
随着信息化水平的快速发展,越来越多的业务系统陆续上线并投入使用,录井数据存档资料审核的工作方式也在发生变化[2]。不仅需要存档的报表数量持续增加,而且由于各系统往往只专注于自己的业务流程,导致了在需要全局资料时因数据来源和计算方法的分散造成数据资源不整合。
1.1 业务现状及存在问题
目前,各类存档报表的整理工作仍以人工统计为主,每张报表都由专人负责填写。报表的填写过程基本可以归纳为以下步骤:
(1)准备完井后需要做存档报表的井号,在纸质报表上填写。
(2)利用“录井资料处理系统”查找并填写井的基本信息等能够直接查到的字段,如完井日期等。
(3)利用“录井资料网上验收管理系统”和其他信息系统以及SQL查询分析器等工具统计计算某些字段值,如统计综合解释表里结论不为空的记录条数。
(4)在岩屑录井图中逐层计算全井总层数等数据。
(5)对于系统不能计算的字段要进行人工计算,如设计符合率等。
(6)将填写完成的纸质报表录入到Excel和系统数据库中。
每口井需要填写的报表数量从十几张到二十几张不等。完整的报表清单如表1所示。从表1中可以看出,在报表整理工作中,不仅报表和报表字段的数据量多,而且数据分散在不同的数据库里,有些数据计算过程复杂,只能由特定的系统提供计算结果,人工计算易出现错误。为了填好这些报表,审核员经常需要在不同的系统间来回切换,整个填表过程需要消耗审核员大量的时间和精力。
表1 完井后需要填写的报表清单
1.2 需求分析
针对现有问题,迫切需要开发一款录井审核信息统计软件,实现对这些报表数据的填写和导出功能,具体需求如下:
(1)实现数据的跨库提取,软件能够从多个生产数据库中提取数据。
(2)整合数据统计和计算方法,实现一次提取即可尽量多地填充数据,不再需要从多个信息系统中复制数据。
(3)为人工计算的数据编写算法,对于只能人工录入且参与计算的数据(如差错率的计算依赖人工录入的差错点数),在报表导出前提供计算功能。
(4)操作尽量便利化。
(5)软件对计算机的硬件配置不能要求过高。
2 软件架构与运行流程设计
2.1 软件架构
录井审核信息统计软件的架构自下向上分为5层(图1)。最底层是数据层,由作为数据来源的各个数据库组成;第2层是接口层,由管理数据库和文件的各种Helper类组成,负责实现数据库和文件的连接(打开)、读取、写入、关闭等底层操作;第3层是基础应用层,由集中在一个基类里的6类职能函数和一些其他用于公共运算的函数组成,对应软件的报表选择、载入数据、自动计算、保存数据和导出报表等操作步骤,每类职能函数又有多个重载,负责不同报表下的具体运算;第4层是应用层,在应用层中每张报表都有一个对应基础应用层基类的继承类,基础应用层中各职能函数的重载就在这些继承类里实现;第5层是界面层,是用户与软件的交互接口,通过各种控件向用户提供可视化的友好人机界面。
图1 录井审核信息统计软件架构
基础应用层的6类职能函数及其在应用层中的重载是软件实现报表数据提取、计算和导出操作的核心。初始化报表函数实现根据报表的列对一个内存中的虚拟表(DataTable)进行初始化,确定虚拟表列数、列名、数据类型、来源字段等;初始化显示控件函数实现界面上的物理表(DataGridView控件)对虚拟表的绑定并对控件样式进行设置;载入数据函数根据选定的井号通过接口层从数据库中获取和计算数据,并利用这些数据填充虚拟表,由于物理表已经绑定虚拟表,数据将同步显示到物理表上。此操作完成后,可以在界面上输入必须人工录入的数据。自动计算函数将根据人工录入和载入数据函数得到的数据进行计算(如利用不符合层数和总层数计算剖面符合率),用计算结果填充报表的剩余部分;保存数据函数通过接口层将虚拟表的数据写入数据库中保存;导出报表函数将虚拟表的数据导出为Excel或者Word文件。
2.2 运行流程
通过对用户的业务流程进行梳理,结合用户提出的需求,技术人员为录井审核信息统计软件设计了运行流程,如图2所示。
图2 软件运行流程
软件首次运行时需要设置数据层使用的各种远程数据库信息,检查通过后这些信息作为软件配置的一部分保存在本地的SQLite数据库里,后续操作中接口层将利用这些信息与数据库服务器交互。下一步,用户需要选择井号和报表样式,再选择载入数据的来源。这里有两个数据来源,对于从未保存过报表数据的井,软件需要从数据库中提取各项数据,然后进行汇总、统计和计算,再由人工录入必要数据,软件的自动计算功能计算出剩余数据,最后执行保存数据和导出报表操作;对于已经保存过报表数据的井,软件可以从数据库中直接提取出这些数据,由用户决定是否对这些数据进行修改和保存,并可以再次导出报表。
3 软件功能的实现与特点
3.1 实现技术
由于存档报表数据种类繁多、计算量大,录井审核信息统计软件采用C#语言基于.NET Framework平台开发,以SQLite数据库存储配置信息。支持多井次同步导出和报表数量扩展。同时在运行过程中对消耗的系统资源进行控制,及时清除和释放不需要的资源,确保在低配置电脑上进行多井连续操作时程序也能稳定运行。报表导出所需要的Word与Excel文件生成采用DocX与EPPlus文档操作组件开发,这两个组件可以在运行计算机不安装Office产品的情况下,软件仍然可以创建和处理Word与Excel文件。软件通过调用组件的ExcelPackage、Worksheet、Style、ExcelRange、Drawing等自动化对象实现报表模板加载、工作表设置、样式设置、工作区选择和绘图等功能[3-4],在内存中完成报表的编辑过程后,最终输出为用户需要的报表文件。软件主界面如图3所示。
图3 软件的主界面
3.2 软件特点
3.2.1 界面显示效果与原始报表格式的一致性
以A 8系统报表为例,报表格式较为复杂,开发工具本身提供的控件并不支持合并单元格等功能,如果要实现相同的显示格式,通常需要借助第三方控件。常用的控件如DevExpress会显著增加程序的体积,降低响应速度,部分老旧机型甚至可能无法正常运行。对此,技术人员采用开发工具自带的DataGridView控件,对表格控件的CellPainting等数个底层事件进行重写[5],最终实现了完整显示A 8系统报表格式的效果,方便了用户的使用。
3.2.2 虚拟表与物理表协同配合的工作模式
软件在运行中会根据选择的报表样式初始化内存中虚拟表的格式,通过初始化显示控件函数将虚拟表与物理表绑定,并设置物理表的显示区域和效果,生成相应的报表样式并在界面上显示[6]。软件将数据填入虚拟表,显示界面会自动更新,同样,修改界面上的数据,虚拟表的数据也会更新,实现了两者数据显示和修改的一致性。不仅便于用户在软件界面上直接录入数据,而且在执行保存操作前,这种修改也不会影响数据库里的数据。
3.2.3 对部分数据的容错处理
由于有的数据是系统生成的,有的是人工录入的,部分关联数据会存在不标准或不一致的情况,往往会导致计算过程出错。如某井的目的层被标注为延长组2段等3层,但在分层表中录入的地层既有全名也有缩写,这样软件无法直接根据其目的层提取出井段的深度数据。此时可以在该井所在行上右击打开“设置目的层井段”界面,根据目的层从左边分层表列表中选择相应的地层添加到右侧列表,单击“生成目标层井段数值”按钮,软件即可根据所选层位计算出目的层井段的深度,如图4所示。
图4 设置目的层井段界面
3.2.4 便利化的操作方式
例如:在查找井号过程中,软件不仅具有按资料上报日期区间筛选的功能,而且还提供了键入井号的一部分待选井号列表会自动查询并更新、双击待选井号列表中的井号可以将该井号加入已选井号列表、双击已选井号列表中的井号则可以将其从列表中删除等快捷操作方式,从而最大限度方便使用(图5)。
图5 井筛选界面
4 结束语
录井审核信息统计软件目前已经通过审核组的测试井数据验证并投入使用,软件的各项数据提取功能正常,统计和计算结果准确,导出报表格式符合相关标准。单井报表生成平均时间从原来的3 h缩减至6 min。在多井报表生成过程中,每增加一口井生成时间仅需增加2 min左右,因而利用软件进行多井报表生成的优势更加明显。另外,利用软件导出存档报表也解决了人工填写报表所存在的计算量大、容易出错、记录涂改甚至字迹难以辨识等问题,实现了报告填写的规范化和自动化,在资料管理和降本增效方面具有较好的应用价值。