許振鵬,劉敏娟,陳常俊,范 磊,張亮娥
(1.山西省地震局,山西 太原 030021;2.山西省地震局太原地震監測中心站,山西 太原 030025;3.太原大陸裂谷動力學國家野外科學觀測研究站,山西 太原 030025)
太原基準地震臺始建于1953年,屬于國家 Ⅰ 類地震基準臺(現更名為太原地震監測中心站),有四大學科觀測設備39臺(套),每年產出數據3.3億組,同時承擔全省流動地磁總場觀測。臺站經歷“九五”“十五”、模擬、數字地震監測不同階段,各個時期,儀器設備、觀測環境、人員變動等產出了許多檔案資料。現有檔案室共5個,收集自建臺以來66年的檔案文件約3萬件,內容包含原始觀測數據記錄、異常核實資料、儀器改造、臺站改造、人員調動等。
臺站曾有一套較老舊的檔案管理系統,運行中存在一些問題。如,電腦的更新換代,系統兼容性無法正常運行;界面、字體比較固化,使用不方便;不能批量導入數據;傳統的檔案管理采用實物對應密集架保管的方式,檔案資料的查閱和搬運極易導致資料的破損,甚至造成不可彌補的損失[1-2]。
隨著科技的發展,現在文件大多都以電子形式存在,部分檔案可以電子版、紙質版并存,使用時優先電子檔案,減少對紙質版檔案的損壞,同時也減少了相關人員的工作量。基于此,設計開發一款適用于地震監測臺站檔案管理的系統,實現檔案的電子化管理。
功能需求分析如下:第一,地震監測數據出現異常或者地震應急,臺站需要查閱大量相關資料,實現軟件可滿足業務查詢需求;第二,臺站檔案的變動情況需定期上報省地震局,信息傳送要便捷、一致;第三,系統需不同的用戶不同權限來管理維護。權限包括對歸檔單位、檔案類別及編號的管理;初始總登記號碼的設置;對檔案案卷及文件的管理(如案卷的增刪改查、批量導入,案卷文件的增刪改查、借閱、移交、銷毀、批量導入、批量導出等);用戶需分類,如臺站業務人員、檔案管理員、軟件維護人員;軟件平臺需有良好的人機界面,便于使用,支持多種方式的信息檢索;可以上傳及下載電子版的歸檔文件。
系統界面要求簡潔美觀、便于瀏覽信息;功能菜單分布清晰、明確,方便檢索,便于用戶快速查找;兼容性強,在普通計算機上也可以正常運行。
結合日常檔案管理工作的內容,檔案管理軟件的具體功能包括:用戶管理、檔案類別管理、歸檔單位管理、案卷管理、案卷文件管理、文件借閱管理、文件移交管理、文件銷毀管理八個模塊。
主要數據表設計:用戶管理表、歸檔單位管理表、歸檔單位log表、檔案類別表、檔案類別log表、案卷管理表、案卷管理log表、案卷文件管理表、案卷文件管理log表、借閱記錄表、檔案銷毀表、檔案移交表。
為實現方便、快捷、美觀的優越性,前端使用當前比較成熟和流行的vue框架作為頁面開發的方案,使用element-UI的UI布局展示。Vue用于構建交互式的Web界面庫,是一個構建數據驅動的Web界面漸進式框架,該框架遵循CMD規范,并且提供的設計模式為MVVM模式(Model->View->View-Model)和一個可組合的組合型組件系統,具有簡單的、靈活的API(接口)。該框架繼承React的虛擬DOM技術和Angular的雙向數據綁定技術,是一款較新的功能性框架。
后端使用與vue配合使用的node作為后端邏輯處理的技術。在檔案信息化管理系統中,主要由數據庫服務器對全部的檔案信息進行存儲和保存[2]。使用MongoDb作為數據存儲,MongoDB是專為可擴展性、高性能和高可用性而設計的數據庫,可以從單服務器部署擴展到大型、復雜的多數據中心架構。利用內存計算的優勢,MongoDB能夠提供高性能的數據讀寫操作。 MongoDB的本地復制和自動故障轉移功能,使應用程序具有企業級的可靠性和操作靈活性。
由于整個系統代碼較多,選取部分關鍵代碼進行描述。
(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
}
進入系統的首頁,左邊為導航欄,選擇不同的模塊操作;右邊為系統的總運行情況,分基本信息、借閱信息、其他信息、最近添加案卷、最近添加文件五部分(見圖1)。

圖1 系統首頁Fig.1 Home page of management system
案卷文件管理模塊頁面可以通過登記號碼、檔案序號、案卷名、文件名、是否借閱、是否銷毀、是否移交進行查詢,支持模糊查詢(見圖2);點擊“添加”,可以單個添加案卷文件到系統,也可以點擊“批量導入”,將案卷文件信息導入到系統;在操作過程中,可以對添加的案卷文件進行編輯、借閱、銷毀、移交和刪除(已借閱、銷毀、移交的文件不能操作);在“文件下載”欄,可以下載案卷文件的電子版,解決查找所有文件都必須到檔案室找紙質版的問題,也有利于保護紙質檔案。

圖2 案卷文件管理界面Fig.2 File management interface
檔案管理系統可以為檔案文件的管理建立統一的標準,對不同業務系統的文件數據進行規范化的有效管理[3]。利用現代新技術開發設計檔案管理系統,可實現檔案管理的數字化,減輕工作量,提高工作效率,減少紙質檔案的查閱,保護原始檔案及提高檔案的使用率。