APP下载

地震监测台站档案管理系统开发与应用
——以太原基准地震台为例

2021-06-29许振鹏刘敏娟陈常俊张亮娥

山西地震 2021年2期
关键词:案卷批量台站

许振鹏,刘敏娟,陈常俊,范 磊,张亮娥

(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]。利用现代新技术开发设计档案管理系统,可实现档案管理的数字化,减轻工作量,提高工作效率,减少纸质档案的查阅,保护原始档案及提高档案的使用率。

猜你喜欢

案卷批量台站
中国科学院野外台站档案工作回顾
批量提交在配置分发中的应用
地震台站基础信息完善及应用分析
一种适用于高铁沿线的多台站快速地震预警方法
铁路无线电干扰监测和台站数据管理系统应用研究
采用经济数控车床批量车削孔类工件的再实践
山西省开展农业行政处罚案卷评查活动
2016—2017年草原执法案卷评查结果发布
多品种变批量数控生产中快速装夹应用技术
工作广角