陳關(guān)清,李 逸,楊 群,胡 萍,方 標(biāo)
(1.貴州省銅仁市氣象局,貴州 銅仁 554300;2.貴州省氣象局科技與預(yù)報(bào)處,貴州 貴陽 550002)
氣象事業(yè)是科技型、基礎(chǔ)型的社會(huì)公益事業(yè)[1]??蒲惺菍?shí)現(xiàn)貴州氣象現(xiàn)代化的有力手段,是進(jìn)一步提高業(yè)務(wù)人員業(yè)務(wù)能力和水平的途徑之一。近年來,貴州省氣象局大力推進(jìn)科技項(xiàng)目研究,目的是提高全省業(yè)務(wù)服務(wù)水平。實(shí)踐證明,在大力推進(jìn)科技項(xiàng)目研究支撐下,貴州省氣象局現(xiàn)代化指標(biāo)和業(yè)務(wù)服務(wù)水平得到極大的提高。但是,在科技項(xiàng)目信息管理中仍處于人工管理方式,科技項(xiàng)目信息管理和科技項(xiàng)目管理需求出現(xiàn)了矛盾,已無法滿足當(dāng)前的管理需求。為了加快科研項(xiàng)目信息管理的傳遞和反饋,向全省科技人員和科技信息管理提供統(tǒng)一的平臺(tái),以達(dá)到科研項(xiàng)目管理自動(dòng)化和標(biāo)準(zhǔn)化,從而提高管理的運(yùn)行效率[2],促進(jìn)全省氣象科技信息共享和科技進(jìn)步,為此研發(fā)了該系統(tǒng)。
貴州省氣象科技信息共享系統(tǒng)基于B/S結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu)。之所以選擇B/S結(jié)構(gòu),一是用戶界面可完全通過WWW瀏覽器實(shí)現(xiàn),使整個(gè)過程形成所謂3-tier結(jié)構(gòu),實(shí)現(xiàn)了原來需要復(fù)雜專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,能夠節(jié)約開發(fā)成本。二是該系統(tǒng)架構(gòu)體系安全性更高,系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)更為靈活,可擴(kuò)展性更強(qiáng),是一種主流的系統(tǒng)設(shè)計(jì)方式[3]。
服務(wù)端部署在Windows Server2008服務(wù)器系統(tǒng)下,基于.net framework4.0開發(fā)平臺(tái),后端程序采用ASP.NET C#開發(fā)語言,前端使用html、JavaScript、css等網(wǎng)頁開發(fā)技術(shù),數(shù)據(jù)庫使用Sql server2005建設(shè),軟件系統(tǒng)使用visual studio 2013集成工具開發(fā)。選擇C#作為開發(fā)工具的原因主要是其在編程中的優(yōu)勢(shì),第一,快速應(yīng)用開發(fā)功能可以使開發(fā)人員的開發(fā)效率倍增,可以通過較少的代碼實(shí)現(xiàn)更強(qiáng)大的應(yīng)用程序,避免錯(cuò)誤發(fā)生;第二,C#語言的自由性,可以和其他.NET語言有著最好的協(xié)作;第三,強(qiáng)大的Web服務(wù)器端組件,可以很輕松的進(jìn)行數(shù)據(jù)綁定;第四,C#支持跨平臺(tái)操作,客戶端不僅支持PC,也支持PDA、手機(jī)等裝置;第五,與XML的融合使得程序員在使用XML時(shí)有更多的自由和更好的性能;第六,C#繼承了C++類型安全的檢測(cè)和重載功能,進(jìn)一步提高語言的類型安全等安全性。
該系統(tǒng)主界面(見圖1)由標(biāo)題欄、首頁、狀態(tài)欄及導(dǎo)航菜單4部分組成,標(biāo)題欄主要是修改密碼及退出功能鏈接。首頁欄主要顯示通知公告、規(guī)章制度、項(xiàng)目統(tǒng)計(jì)信息和年度項(xiàng)目信息等。狀態(tài)欄中主要顯示登錄用戶名字和時(shí)間。導(dǎo)航菜單主要顯示功能菜單。該系統(tǒng)的主要功能見圖2所示。
圖1 貴州氣象科技信息共享系統(tǒng)主界面Fig.1 Main interface of Guizhou meteorological science and technology information sharing system
圖2 貴州氣象科技信息共享系統(tǒng)結(jié)構(gòu)圖Fig.2 structure of Guizhou meteorological science and technology information sharing system
業(yè)務(wù)項(xiàng)目功能分為業(yè)務(wù)項(xiàng)目管理和業(yè)務(wù)項(xiàng)目審核。業(yè)務(wù)項(xiàng)目管理主要用于管理員管理所屬下一級(jí)用戶填報(bào)的業(yè)務(wù)項(xiàng)目和用戶管理自己業(yè)務(wù)項(xiàng)目。業(yè)務(wù)項(xiàng)目管理可實(shí)現(xiàn)業(yè)務(wù)項(xiàng)目搜索、新增入庫、編輯、刪除、導(dǎo)出、批量導(dǎo)入、查看導(dǎo)入記錄等功能。在搜索功能中可按相應(yīng)關(guān)鍵字進(jìn)行模糊搜索。批量導(dǎo)入和導(dǎo)出功能支持Excel模板。業(yè)務(wù)項(xiàng)目審核主要針對(duì)省級(jí)、市州級(jí)管理用戶對(duì)科研人員的業(yè)務(wù)項(xiàng)目事項(xiàng)進(jìn)行審核,通過審核后正式入庫。
預(yù)備庫項(xiàng)目功能主要用于科研人員進(jìn)行科研項(xiàng)目登記注冊(cè),科研管理人員進(jìn)行在線管理。注冊(cè)后的項(xiàng)目具備一定的研究成果并得到專家認(rèn)可后,可通過該模塊轉(zhuǎn)為正式項(xiàng)目。該模塊主要有項(xiàng)目搜索、新增預(yù)備庫項(xiàng)目、輸入項(xiàng)目進(jìn)行在線編輯修改、刪除預(yù)備庫項(xiàng)目、預(yù)備庫項(xiàng)目轉(zhuǎn)入正式項(xiàng)目、項(xiàng)目查詢等。
科研項(xiàng)目功能分為科研項(xiàng)目管理和科研項(xiàng)目審核??蒲许?xiàng)目管理主要用于管理所屬下一級(jí)用戶填報(bào)的科研項(xiàng)目和用戶管理自己業(yè)務(wù)項(xiàng)目,可實(shí)現(xiàn)科研項(xiàng)目搜索、新增入庫、編輯、刪除、導(dǎo)出、批量導(dǎo)入、查看導(dǎo)入記錄等功能??砂错?xiàng)目關(guān)鍵字進(jìn)行模糊查詢。批量導(dǎo)入導(dǎo)出功能支持Excel模板。針對(duì)省級(jí)、市州級(jí)管理用戶具有審核權(quán)限,通過管理員審核后正式入庫。
橫向課題功能分為橫向課題管理和橫向課題審核,橫向課題管理主要用于管理所有橫向課題,可實(shí)現(xiàn)橫向課題搜索、新增入庫、編輯、刪除、導(dǎo)出、批量導(dǎo)入、查看導(dǎo)入記錄等功能。批量導(dǎo)入導(dǎo)出功能支持Excel模板。針對(duì)省級(jí)、市州級(jí)管理用戶具有審核權(quán)限,通過管理員審核后正式入庫。
軟件著作權(quán)管理主要用于管理所有軟件著作權(quán),可實(shí)現(xiàn)新增、編輯和刪除軟件著作權(quán)等??砂粗鳈?quán)名稱、獲得時(shí)間、持有人、著作權(quán)產(chǎn)生的科技成果情況等進(jìn)行模糊查詢。
專利管理主要用于管理所有發(fā)明專利,可按專利名稱、獲得時(shí)間、持有人、發(fā)明專利產(chǎn)生的科技成果情況等進(jìn)行模糊搜索。
科技論文管理主要用于科技人員及管理人員新增、編輯、刪除、搜索、導(dǎo)出科技論文等功能,為科技人員查詢文獻(xiàn)提供來源和渠道。
信息公開管理主要分為通知公告管理和規(guī)章制度管理,通知公告主要是管理員通過該功能發(fā)布、搜索、編輯和刪除公告信息。規(guī)章制度主要實(shí)現(xiàn)科研項(xiàng)目管理規(guī)章制度的搜索、發(fā)布、再次編輯和刪除等。為了方便使用和功能完善,以上兩個(gè)模塊功能的發(fā)布和編輯均采用ewebEditor在線編輯器。
數(shù)據(jù)查詢主要是方便科研項(xiàng)目管理人員對(duì)相關(guān)信息進(jìn)行查詢,主要按科技成果查詢、獲獎(jiǎng)情況查詢、專著查詢、論文查詢、軟件著作權(quán)查詢、專利查詢以及按成果、獲獎(jiǎng)時(shí)間、認(rèn)定水平、項(xiàng)目名稱、項(xiàng)目成員、人員職稱、年齡、學(xué)歷、年份、承擔(dān)單位等為條件的綜合查詢。
基礎(chǔ)數(shù)據(jù)設(shè)置功能主要是對(duì)系統(tǒng)中涉及到的業(yè)務(wù)項(xiàng)目類型、科研項(xiàng)目類型、橫向課題類型、業(yè)務(wù)項(xiàng)目科目、科研項(xiàng)目科目、橫向課題科目、項(xiàng)目級(jí)別、科技成果認(rèn)定水平、獲獎(jiǎng)情況獎(jiǎng)勵(lì)級(jí)別、附件類型、論文專著等級(jí)、項(xiàng)目來源、專業(yè)類別、專利類別、學(xué)歷、職稱等進(jìn)行定義、刪除和下級(jí)管理,便于管理人員可根據(jù)需要進(jìn)行操作。
系統(tǒng)管理功能主要分為組織機(jī)構(gòu)管理和用戶管理,組織機(jī)構(gòu)管理主要用于管理所有用戶的組織機(jī)構(gòu),機(jī)構(gòu)分為貴州省氣象局及各業(yè)務(wù)單位、各市(州)氣象部門、各區(qū)(市、縣)氣象部門。管理人員可以根據(jù)用戶所屬機(jī)構(gòu)進(jìn)行增加、修改和刪除機(jī)構(gòu)及子機(jī)構(gòu)。
用戶管理主要用于管理所有系統(tǒng)用戶信息,管理員可通過該模塊新增、編輯、刪除和授權(quán)用戶使用權(quán)限。管理權(quán)限按照省市縣三級(jí)逐級(jí)授權(quán)。不同的角色權(quán)限有差異,角色主要分為管理員、省局管理員、省局用戶、只讀用戶、市州用戶、市州管理員、區(qū)縣用戶、普通用戶等8個(gè)用戶角色,越往下權(quán)限越低。
功能是該系統(tǒng)程序設(shè)計(jì)的難點(diǎn)之一,之所以選擇Excel作為批量導(dǎo)入軟件,是因?yàn)槔肊xcel軟件便于對(duì)數(shù)據(jù)的修改、編輯及用戶打印輸出和SQL server在數(shù)據(jù)的查詢、安全等方面的優(yōu)勢(shì)[4]。在實(shí)現(xiàn)中首先需要管理員按照提供的模板填寫相應(yīng)的數(shù)據(jù),然后再進(jìn)行文件導(dǎo)入。其主要代碼如下:
protected DataTable GetDtByImport(HttpPostedFile oFile)
{
DataTable dt = new DataTable();//初始化表格
if (oFile != null && string.IsNullOrEmpty(oFile.FileName) == false)//判斷是否有導(dǎo)入的excel表格
{
string IsXls = Path.GetExtension(oFile.FileName);//獲取文件擴(kuò)展名
DateTime date = DateTime.Today;//當(dāng)前時(shí)間
string nn = date.Year.ToString() + date.Month.ToString() + date.Day.ToString() + new Random().Next(1000, 10000).ToString() + Path.GetExtension(oFile.FileName);//自定義文件名稱(當(dāng)前時(shí)間+隨機(jī)數(shù))
oFile.SaveAs(Server.MapPath("/Photo/" + nn));//文件保存到服務(wù)器
DataSet ds = new DataSet();
ds = ExecleDs(Server.MapPath("/Photo/") + nn, "Sheet1"); ; //調(diào)用自定義方法,取excel數(shù)據(jù)保持到ds
dt = ds.Tables[0];
}
return dt;//返回導(dǎo)入的文件
}
這是系統(tǒng)最重要的功能之一,本系統(tǒng)涉及到很多類型的文件資料的上傳,如可研報(bào)告、實(shí)施方案、任務(wù)書、審計(jì)報(bào)告、驗(yàn)收材料、經(jīng)費(fèi)決算表、申請(qǐng)書、驗(yàn)收技術(shù)總結(jié)、驗(yàn)收工作總結(jié)、延期材料、論文專著、專利軟著、科技成果、獲獎(jiǎng)情況等。主要代碼如下:
public void Upload(HttpPostedFile fileUpload, string inputWebPath)
{
string uploadName = fileUpload.FileName;//上傳資料的名稱(標(biāo)題)
string extName = "";//獲取上傳資料的文件類型
if ((uploadName.IndexOf(".") > 0) && (uploadName.LastIndexOf(".") != uploadName.Length - 1))
extName = uploadName.Substring(uploadName.LastIndexOf(".") + 1).ToLower();
string strDateTime = ((decimal)((DateTime.Now - new DateTime(1970, 1, 1)).TotalMilliseconds * 1000)).ToString();//自定義文件名稱(避免文件重名)
FileStream outputStream = null;//初始化控件
byte[] arrBt = new byte[fileUpload.ContentLength];
inputStream.Read(arrBt, 0, fileUpload.ContentLength);//讀取文件
outputStream = new FileStream(fileDir + saveName, FileMode.OpenOrCreate);
inputStream.Seek(0, SeekOrigin.Begin);//準(zhǔn)備保存文件
while ((readByte = inputStream.Read(bt, 0, size)) > 0)
{
outputStream.Write(bt, 0, readByte);
readPos += readByte;
}//文件邊讀邊保存
outputStream.Flush();//文件上傳結(jié)束
}
這是本系統(tǒng)非常重要的功能之一,系統(tǒng)設(shè)計(jì)了多種檢索方式,可根據(jù)項(xiàng)目、承擔(dān)單位、參與人員、年份時(shí)間、項(xiàng)目類型、項(xiàng)目級(jí)別、預(yù)算金額、論文專著、專利軟著、科技成果、獲獎(jiǎng)情況等精確或模糊搜索。其主要代碼如下:
public JsonArrayCollection LoadData(int pageNo, int pageSize, string F_Name, string StartDate, string EndDate)
{
DataTable dtCode = new BaseCommon().GetSystemOrgan(M_Code);
DbAccessCommon DbAccessCommon = new Web.DbAccessCommon();//初始化數(shù)據(jù)集
DbAccess dba = DbAccessCommon.GetDbAccess(null);
StringBuilder sql = new StringBuilder();//定義查詢語句
IList
sql.Append("select top ");
sql.Append(pageNo * pageSize);
sql.Append("* ");
sql.Append("from T_ProjectBusiness a ");
sql.Append(" left join SYS_ORGAN o on a.F_Organ=o.ORGAN_ID ");
sql.Append(" where 1=1 ");
if (F_Name != "")
sql.Append(" and F_Name like '%'+@F_Name+'%' ");//根據(jù)項(xiàng)目名稱搜索
if (StartDate != "")
sql.Append(" and F_StartDate >= @StartDate+' 00:00:00' ");//根據(jù)項(xiàng)目開始時(shí)間搜索
if (EndDate != "")
sql.Append(" and F_StartDate <= @EndDate+' 23:59:59' ");//根據(jù)項(xiàng)目結(jié)束時(shí)間搜索
sql.Append("order by ID desc) x ");//搜索結(jié)果排序
sql.Append(") y where temp_row_number>");
sql.Append((pageNo - 1) * pageSize);//搜索結(jié)果分頁
DataTable dt;
dt = dba.ExecuteDataTable(sql.ToString(), parameters);//讀取數(shù)據(jù)庫,獲取數(shù)據(jù)
return JsonHelper.DtToJsonArray(dt);//返回?cái)?shù)據(jù),前臺(tái)展示
}
基于B/S模式的貴州氣象科技信息共享系統(tǒng),應(yīng)用了動(dòng)態(tài)網(wǎng)頁設(shè)計(jì)C#技術(shù)以及JavaScript的技術(shù),建立用戶訪問模式,實(shí)現(xiàn)服務(wù)器端對(duì)科研業(yè)務(wù)項(xiàng)目信息的存儲(chǔ)和客戶端對(duì)相關(guān)信息的訪問,使得對(duì)信息訪問更加便捷,進(jìn)一步提高科研業(yè)務(wù)管理人員的工作效率。