山西测震台网台站及设备运行维护管理系统的设计与实现

2018-06-25 02:59王鹏伟
山西地震 2018年2期
关键词:测震台网台站

梁 艳,王鹏伟

(1.山西省地震局,山西 太原 030021;2.太原大陆裂谷动力学国家野外科学观测研究站,山西 太原 030025)

0 引言

目前,山西测震台网有57个固定台站,监测信息中心技术保障室负责监管并汇总每月的维护记录,台站设备由各个维护中心负责。维护人员需手动将各维护中心的各类Excel表进行整理汇总,通过邮箱报送。由于统计表种类繁多,导致测震台网工作效率低下;有时对每个台站各种仪器的信息及更换未进行详细的统计,对各种异常不能及时判定是仪器故障还是其他原因引起,需进行现场调查与分析[1]。借鉴山西前兆台网日常运行管理软件,大大降低维护人员的工作量,提高工作效率[2]。根据工作实际,设计一款测震台网台站及设备运行维护管理系统,包括测震台站及设备基本信息的数据库。系统模块主要包括用户管理、台站基本信息、台站维护记录、设备维护记录和报表统计等,实现统计和查询台站基本信息、维护记录及仪器更换记录等,上报台站及设备的故障原因及处理情况,根据需要导出报表。

1 系统主要内容

系统主要任务是实现山西台网台站及设备运行维护管理业务流程,主要包括设计山西台网台站及设备运行维护管理系统的功能模块图、功能模块内容和数据库。系统按照软件工程的思路来进行Windows程序的开发,分别进行需求分析、数据库设计、系统架构设计、主窗体设计、用户管理功能、台站及设备管理功能、台站及设备维护记录功能、查询及报表导出功能[3]。系统主要内容鱼骨图如第35页图1所示。

2 系统设计

2.1 系统架构

(1) 结合UML建模方式对实例进行分析,利用UML进行系统分析和设计,将应用程序设计和数据库设计统一起来,提高数据库设计的效率和质量。

(2) 采用C#进行开发。C#语言是微软公司专门为使用.NET平台而创建的,.NET 技术为 EXE 程序提供新的开发技术和开发工具。

(3) 系统采用C/S结构(客户端/服务器模式)。这种结构的基本原则是“功能分布”,即将一个大的计算机任务分解为多个子任务。客户端完成数据处理、实现应用接口等相关功能,服务端基于SQL Server数据库完成数据库的管理。

2.2 系统功能设计

系统功能包括用户管理、台站基本信息、设备基本信息、台站维护记录、设备维护记录、查询及报表导出六部分,流程图、功能模块图如第35页图2、第36页图3所示。系统采用UML用例图描述系统的功能和行为(见第36页图4)。

(1) 用户管理主要包括新建,查询,修改用户名、密码、权限等。

图1 系统主要内容鱼骨图Fig.1 The main content of the system

图2 系统流程图Fig.2 The system flow

(2) 台站基本信息管理主要包括新建和修改台站名称、代码、类别、台基、地震计、数据采集器、运行时间、看护人、信息节点、故障记录等。

(3) 设备基本信息管理主要包括新建和修改设备名称、型号、序列号、类别、IP、网关、端口、参数、维修记录等。

(4) 台站维护记录管理主要包括新建、修改台站故障及处理记录,包括台站名称、代码、故障时间、恢复时间、故障原因、处理办法、设备更换记录等。

(5) 设备维护记录管理主要包括新建、修改设备维修更换记录,包括设备名称、型号、序列号、所属台站、故障时间、维修返回时间、维修接受单位、接收人、寄件人等。

(6) 查询及报表导出管理主要包括查询台站和设备信息,导出台网台站维修记录表、设备维修记录表及维护巡检表等。

2.3 系统数据库设计

系统采用SQL Server 2012数据库。数据库包括:用户信息表、台站信息表、设备信息表、台站维护记录表、设备维护记录表、维护巡检表。各表的含义如第37页表1所示。

3 系统功能流程及实现

3.1 系统功能流程

(1) 用户管理。包括对用户名、密码、权限等的管理。用户管理界面中,显示所有用户信息列表,在每条信息后面加“修改”“删除”按钮,页面顶端加“新建”按钮,将相应的修改更新至数据库tb_User表。用户登录流程、用户管理流程、用户登录界面、系统主界面、用户管理界面分别如第37页图5至图9所示。

(2) 台站管理。台站信息管理界面中,显示所有台站信息列表,在每条信息后面加“修改”“删除”按钮,页面底端加“新建”按钮,将相应的修改更新至数据库tb_Sta表(见图7)。

(3) 设备管理。设备信息管理界面中,显示所有设备信息列表,在每条信息后面加“修改”“删除”按钮,页面底端加“新建”按钮,将相应的修改更新至数据库tb_Equ表(见图8)。

(4) 台站维护记录。台站维护管理界面中,显示所有台站维护信息列表,在每条信息后面加“修改”“删除”按钮,页面底端加“新建”按钮,将相应的修改更新至数据库tb_StaMain表(见图9)。

图3 系统功能模块图Fig.3 System function module

图4 系统用例图Fig.4 System use case

表名说明用户信息表(tb_User)姓名、用户名、密码、权限、单位、联系电话等台站信息表(tb_Sta)台站名称、代码、类别、台基、仪器、运行时间、看护人、信息节点等设备信息表(tb_Equ)名称、型号、序列号、类别、所属台站、IP、网关、端口、参数、维修记录等台站维护记录表(tb_StaMain)台站名称、代码、故障时间、恢复时间、断记时长、故障原因、处理办法、设备更换记录等设备维护记录表(tb_EquMain)设备名称、型号、序列号、所属台站、故障时间、维修返回时间、维修接受单位、接收人、寄件人等维护巡检表(tb_MainInspection)台站名称、维护日期、故障时间、恢复时间、断记时长、故障描述、处理办法、维护记录(设备、供电、通信)、巡检记录(避雷、观测室情况)、维护人员、负责人、填报日期等

图5 用户登录流程图Fig.5 User login flow

图6 用户管理流程图Fig.6 User management flow

图7 台站管理流程图Fig.7 Station management flow

图8 设备管理流程图Fig.8 Equipment management flow

图9 台站维护流程图Fig.9 Station maintenance flow

(5) 设备维护记录。设备维护管理界面中,显示所有设备维护信息列表,在每条信息后面加“修改”“删除”按钮,页面底端加“新建”按钮,将相应的修改更新至数据库tb_EquMain表(见图10)。

(6) 查询及报表导出。根据所选内容,调用相关数据表,显示查询内容或导出所需内容(见图11)。导出文件为excel格式。

3.2 系统功能实现关键代码

(1) 同步更新。

当维护人员新增一条台站维护记录时,系统自动生成一条维护巡检记录,并将有关内容自动填写。实现的部分代码如下:

//连接数据库

SqlConnection con = new SqlConnection();

con.ConnectionString = "server=" + ConfigHelper.GetAppConfig("ServerIP") + ";database=" + ConfigHelper.GetAppConfig("DataBase") + ";uid=" + ConfigHelper.GetAppConfig("user") + ";pwd=" + ConfigHelper.GetAppConfig("password");

con.Open();

//新增一条维护记录

string strSQL = string.Format("insert into tb_StaMain(StaName,StaCode,StaBreakTime,StaRecoveryTime,StaDownTime,Reson,Handle,EquRepRec,Maintainer,DateSta,GUID) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')", comboBox1.Text, comboBox2.Text, dt2, dt1, tm, textBox7.Text, textBox2.Text, textBox3.Text, textBox4.Text, dateTimePicker4.Value, strGUID);

图11 查询及报表导出流程图Fig.11 Query and report flow

//向维护巡检表tb_MainInspection添加一条维护记录

string strSQL2 = string.Format("insert into tb_MainInspection(StaName,StaBreakTime,StaRecoveryTime,StaDownTime,Reson,Handle,SeiGeoModel,SeiGeoSerial,DataCollModel,DataCollSerial,ComUnitModel,ComUnitSerial,GPSModel,GPSSerial,EnviMonitorModel,EnviMonitorSerial,VideoMonitorModel,VideoMonitorSerial,IntelPowerModel,BatteryModel,BatteryNum,LinkType,LinkEqu,LinkPowerType,ArresterModel,GroundResisValue,Lighting,Door,Environment,RoomLength,RoomWidth,RoomHeight,BlockLength,BlockWidth,SeiGeoCoverModel,Azimuth) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}',"+"'{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','{23}','{24}','{25}','{26}','{27}','{28}','{29}','{30}','{31}','{32}','{33}','{34}','{35}')", comboBox1.Text, dt2, dt1, tm, textBox7.Text, textBox2.Text, SeiGeoModel, SeiGeoSerial, DataCollModel, DataCollSerial, ComUnitModel, ComUnitSerial, GPSModel, GPSSerial, EnviMonitorModel, EnviMonitorSerial, VideoMonitorModel, VideoMonitorSerial, IntelPowerModel, BatteryModel, BatteryNum, LinkType, LinkEqu, LinkPowerType, ArresterModel, GroundResisValue, Lighting, Door, Environments, RoomLength, RoomWidth, RoomHeight, BlockLength, BlockWidth, SeiGeoCoverModel, Azimuth);

(2) 报表导出。

山西测震台网台站日常维护的月评比报表中重要的一项工作是填报维护巡检记录表。系统根据维护记录,按照设计模板,自动生成维护巡检记录的Excel文件。该功能实现主要是借助Aspose.Cells电子表格组件,对Excel文件的单元进行操作。具体代码如下:

//首先需在命名空间中声明

using Aspose.Cells;

//获得数据库信息,并将有关信息写入Excel模板文件

SqlConnection con = new SqlConnection();

con.ConnectionString = "server=" + ConfigHelper.GetAppConfig("ServerIP") + ";database=" + ConfigHelper.GetAppConfig("DataBase") + ";uid=" + ConfigHelper.GetAppConfig("user") + ";pwd=" + ConfigHelper.GetAppConfig("password");

string strSQL = "select * from tb_MainInspection";

SqlDataAdapter da = new SqlDataAdapter(strSQL, con);

DataSet ds = new DataSet();

da.Fill(ds, "B_sp_dalei");

string dataDir = Path.GetFullPath("E:/temp/");

Workbook workbook = new Workbook(dataDir + "temp.xls");

Worksheet worksheet = workbook.Worksheets[0];

worksheet.Cells["B2"].PutValue(ds.Tables[0].Rows[e.RowIndex]["StaName"].ToString());

worksheet.Cells["D2"].PutValue(ds.Tables[0].Rows[e.RowIndex]["MainDate"].ToString());

worksheet.Cells["B3"].PutValue(ds.Tables[0].Rows[e.RowIndex]["StaBreakTime"].ToString());

……

worksheet.Cells["A27"].PutValue(ds.Tables[0].Rows[e.RowIndex]["ChangeEqu2"].ToString());

worksheet.Cells["D27"].PutValue(ds.Tables[0].Rows[e.RowIndex]["ChangeSeiBe2"].ToString());

worksheet.Cells["G27"].PutValue(ds.Tables[0].Rows[e.RowIndex]["ChangeSeiAf2"].ToString());

MessageBox.Show("导出成功");

4 结语

目前,系统已经设计完成,初步实现对山西测震台网台站及设备信息的统计、查询及各类报表导出功能,提高维护人员的工作效率,做好测震台站的运维工作。今后,设计人员还需对系统进行技术完善,进一步提高系统的实用性及操作性。

参考文献:

[1] 吕芳,张淑亮,胡玉良,等.山西静乐井水位异常调查与分析[J].山西地震,2013(3):28-31.

[2] 程冬焱,胡玉良,穆慧敏,等. 山西地震前兆台网日常运行管理软件[J]. 地震地磁观测与研究,2016,37(4):181-186.

[3] 李莹. Windows程序开发——基于Visual Studio 2013[M].北京:清华大学出版社,2015.

猜你喜欢
测震台网台站
中国科学院野外台站档案工作回顾
基于信号精度分析的高速铁路沿线测震井地震动力反应研究
钟祥台测震观测质量影响浅析
地球物理台网仪器维修信息管理的研究与实现
一种适用于高铁沿线的多台站快速地震预警方法
推进报台网深度融合 做强区级融媒体中心
测震波形数据存储和管理系统设计与实现
西藏地震应急流动台网浅析
辽宁省地震速报质量评比软件
MRG9000媒资卫士在市级电视台全台网的应用