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