地震监测台站档案管理系统开发与应用
——以太原基准地震台为例
2021-06-29许振鹏刘敏娟陈常俊张亮娥
许振鹏,刘敏娟,陈常俊,范 磊,张亮娥
(1.山西省地震局,山西 太原 030021;2.山西省地震局太原地震监测中心站,山西 太原 030025;3.太原大陆裂谷动力学国家野外科学观测研究站,山西 太原 030025)
0 引言
太原基准地震台始建于1953年,属于国家 Ⅰ 类地震基准台(现更名为太原地震监测中心站),有四大学科观测设备39台(套),每年产出数据3.3亿组,同时承担全省流动地磁总场观测。台站经历“九五”“十五”、模拟、数字地震监测不同阶段,各个时期,仪器设备、观测环境、人员变动等产出了许多档案资料。现有档案室共5个,收集自建台以来66年的档案文件约3万件,内容包含原始观测数据记录、异常核实资料、仪器改造、台站改造、人员调动等。
台站曾有一套较老旧的档案管理系统,运行中存在一些问题。如,电脑的更新换代,系统兼容性无法正常运行;界面、字体比较固化,使用不方便;不能批量导入数据;传统的档案管理采用实物对应密集架保管的方式,档案资料的查阅和搬运极易导致资料的破损,甚至造成不可弥补的损失[1-2]。
随着科技的发展,现在文件大多都以电子形式存在,部分档案可以电子版、纸质版并存,使用时优先电子档案,减少对纸质版档案的损坏,同时也减少了相关人员的工作量。基于此,设计开发一款适用于地震监测台站档案管理的系统,实现档案的电子化管理。
1 系统需求分析
1.1 功能性需求分析
功能需求分析如下:第一,地震监测数据出现异常或者地震应急,台站需要查阅大量相关资料,实现软件可满足业务查询需求;第二,台站档案的变动情况需定期上报省地震局,信息传送要便捷、一致;第三,系统需不同的用户不同权限来管理维护。权限包括对归档单位、档案类别及编号的管理;初始总登记号码的设置;对档案案卷及文件的管理(如案卷的增删改查、批量导入,案卷文件的增删改查、借阅、移交、销毁、批量导入、批量导出等);用户需分类,如台站业务人员、档案管理员、软件维护人员;软件平台需有良好的人机界面,便于使用,支持多种方式的信息检索;可以上传及下载电子版的归档文件。
1.2 非功能性需求分析
系统界面要求简洁美观、便于浏览信息;功能菜单分布清晰、明确,方便检索,便于用户快速查找;兼容性强,在普通计算机上也可以正常运行。
2 系统设计
2.1 功能模块设计
结合日常档案管理工作的内容,档案管理软件的具体功能包括:用户管理、档案类别管理、归档单位管理、案卷管理、案卷文件管理、文件借阅管理、文件移交管理、文件销毁管理八个模块。
2.2 数据库设计
主要数据表设计:用户管理表、归档单位管理表、归档单位log表、档案类别表、档案类别log表、案卷管理表、案卷管理log表、案卷文件管理表、案卷文件管理log表、借阅记录表、档案销毁表、档案移交表。
3 系统实现
3.1 开发平台
为实现方便、快捷、美观的优越性,前端使用当前比较成熟和流行的vue框架作为页面开发的方案,使用element-UI的UI布局展示。Vue用于构建交互式的Web界面库,是一个构建数据驱动的Web界面渐进式框架,该框架遵循CMD规范,并且提供的设计模式为MVVM模式(Model->View->View-Model)和一个可组合的组合型组件系统,具有简单的、灵活的API(接口)。该框架继承React的虚拟DOM技术和Angular的双向数据绑定技术,是一款较新的功能性框架。
后端使用与vue配合使用的node作为后端逻辑处理的技术。在档案信息化管理系统中,主要由数据库服务器对全部的档案信息进行存储和保存[2]。使用MongoDb作为数据存储,MongoDB是专为可扩展性、高性能和高可用性而设计的数据库,可以从单服务器部署扩展到大型、复杂的多数据中心架构。利用内存计算的优势,MongoDB能够提供高性能的数据读写操作。 MongoDB的本地复制和自动故障转移功能,使应用程序具有企业级的可靠性和操作灵活性。
3.2 代码实现
由于整个系统代码较多,选取部分关键代码进行描述。
(1) 通过列表获取录入归档文件的信息,存储以进行增删改查的操作。
const list = async data => {
let { pageSize = config.pageSize, page = config.page } = data
const query = formatQuery(data)
const archiveFileList = await ArchiveFile.find(query)
const count = archiveFileList.length
if (count === 0) {
page = 1
} else if (count <= (page - 1) * pageSize) {
page = page - 1
}
const resultList = archiveFileList.length
? await ArchiveFile.find(query)
.sort({ _id: -1 })
.limit(pageSize)
.skip((page - 1) * pageSize)
.populate('archive')
: []
result.errCode = 0
result.msg = 'success'
result.data = {
page: page,
pageSize: pageSize,
total: count,
list: resultList
}
return result
}
(2) 上传电子版的档案文件并存储待用。
const uploadFile = async (data, ctx) => {
const file = ctx.request.files.file
const name = file.name
var filePath = file.path
const typeList = file.name.split('.')
let type = typeList[typeList.length - 1]
let url = Date.now() + '.' + type
let newPath = path.join(__dirname, '../../files/', url)
// fs.renameSync(filePath, newPath)
let readStream = fs.createReadStream(filePath)
let writeStream = fs.createWriteStream(newPath)
readStream.pipe(writeStream)
readStream.on('end', () => {
fs.unlinkSync(filePath)
})
return {
url,
name
}
(3) 归档文件信息的批量导入。
const excelTitle = ['文件号', '文件名', '归属档案', '备注']
const uploadExcel = async (data, ctx) => {
const file = ctx.request.files.file
const workbook = await xlsx.parse(file.path)
if (!workbook.length) {
result.errCode = 7
result.msg = '上传格式错误'
result.data = null
return result
}
let uploadList = []
const sheetNames = workbook[0].data
let titles = sheetNames[0]
if (JSON.stringify(titles) !== JSON.stringify(excelTitle)) {
result.errCode = 7
result.msg = '上传格式错误'
result.data = null
return result
}
let uploadData = sheetNames.slice(1)
for (const sheetName of uploadData) {
let item = {
registerCode: sheetName[0],
archiveFileName: sheetName[1],
archiveName: sheetName[2],
remark: sheetName[3]
}
let msg = await batchAdd.archiveFile(item)
if (msg !== true) {
item.result = msg
uploadList.push(item)
}
}
result.errCode = 0
result.msg = 'success'
result.data = uploadList
return result
}
3.3 系统运行
进入系统的首页,左边为导航栏,选择不同的模块操作;右边为系统的总运行情况,分基本信息、借阅信息、其他信息、最近添加案卷、最近添加文件五部分(见图1)。
图1 系统首页Fig.1 Home page of management system
案卷文件管理模块页面可以通过登记号码、档案序号、案卷名、文件名、是否借阅、是否销毁、是否移交进行查询,支持模糊查询(见图2);点击“添加”,可以单个添加案卷文件到系统,也可以点击“批量导入”,将案卷文件信息导入到系统;在操作过程中,可以对添加的案卷文件进行编辑、借阅、销毁、移交和删除(已借阅、销毁、移交的文件不能操作);在“文件下载”栏,可以下载案卷文件的电子版,解决查找所有文件都必须到档案室找纸质版的问题,也有利于保护纸质档案。
图2 案卷文件管理界面Fig.2 File management interface
4 结论
档案管理系统可以为档案文件的管理建立统一的标准,对不同业务系统的文件数据进行规范化的有效管理[3]。利用现代新技术开发设计档案管理系统,可实现档案管理的数字化,减轻工作量,提高工作效率,减少纸质档案的查阅,保护原始档案及提高档案的使用率。