陳關(guān)清,李 逸,楊 群,胡 萍,方 標
(1.貴州省銅仁市氣象局,貴州 銅仁 554300;2.貴州省氣象局科技與預報處,貴州 貴陽 550002)
氣象事業(yè)是科技型、基礎(chǔ)型的社會公益事業(yè)[1]。科研是實現(xiàn)貴州氣象現(xiàn)代化的有力手段,是進一步提高業(yè)務(wù)人員業(yè)務(wù)能力和水平的途徑之一。近年來,貴州省氣象局大力推進科技項目研究,目的是提高全省業(yè)務(wù)服務(wù)水平。實踐證明,在大力推進科技項目研究支撐下,貴州省氣象局現(xiàn)代化指標和業(yè)務(wù)服務(wù)水平得到極大的提高。但是,在科技項目信息管理中仍處于人工管理方式,科技項目信息管理和科技項目管理需求出現(xiàn)了矛盾,已無法滿足當前的管理需求。為了加快科研項目信息管理的傳遞和反饋,向全省科技人員和科技信息管理提供統(tǒng)一的平臺,以達到科研項目管理自動化和標準化,從而提高管理的運行效率[2],促進全省氣象科技信息共享和科技進步,為此研發(fā)了該系統(tǒng)。
貴州省氣象科技信息共享系統(tǒng)基于B/S結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu)。之所以選擇B/S結(jié)構(gòu),一是用戶界面可完全通過WWW瀏覽器實現(xiàn),使整個過程形成所謂3-tier結(jié)構(gòu),實現(xiàn)了原來需要復雜專用軟件才能實現(xiàn)的強大功能,能夠節(jié)約開發(fā)成本。二是該系統(tǒng)架構(gòu)體系安全性更高,系統(tǒng)設(shè)計實現(xiàn)更為靈活,可擴展性更強,是一種主流的系統(tǒng)設(shè)計方式[3]。
服務(wù)端部署在Windows Server2008服務(wù)器系統(tǒng)下,基于.net framework4.0開發(fā)平臺,后端程序采用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)勢,第一,快速應用開發(fā)功能可以使開發(fā)人員的開發(fā)效率倍增,可以通過較少的代碼實現(xiàn)更強大的應用程序,避免錯誤發(fā)生;第二,C#語言的自由性,可以和其他.NET語言有著最好的協(xié)作;第三,強大的Web服務(wù)器端組件,可以很輕松的進行數(shù)據(jù)綁定;第四,C#支持跨平臺操作,客戶端不僅支持PC,也支持PDA、手機等裝置;第五,與XML的融合使得程序員在使用XML時有更多的自由和更好的性能;第六,C#繼承了C++類型安全的檢測和重載功能,進一步提高語言的類型安全等安全性。
該系統(tǒng)主界面(見圖1)由標題欄、首頁、狀態(tài)欄及導航菜單4部分組成,標題欄主要是修改密碼及退出功能鏈接。首頁欄主要顯示通知公告、規(guī)章制度、項目統(tǒng)計信息和年度項目信息等。狀態(tài)欄中主要顯示登錄用戶名字和時間。導航菜單主要顯示功能菜單。該系統(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ù)項目功能分為業(yè)務(wù)項目管理和業(yè)務(wù)項目審核。業(yè)務(wù)項目管理主要用于管理員管理所屬下一級用戶填報的業(yè)務(wù)項目和用戶管理自己業(yè)務(wù)項目。業(yè)務(wù)項目管理可實現(xiàn)業(yè)務(wù)項目搜索、新增入庫、編輯、刪除、導出、批量導入、查看導入記錄等功能。在搜索功能中可按相應關(guān)鍵字進行模糊搜索。批量導入和導出功能支持Excel模板。業(yè)務(wù)項目審核主要針對省級、市州級管理用戶對科研人員的業(yè)務(wù)項目事項進行審核,通過審核后正式入庫。
預備庫項目功能主要用于科研人員進行科研項目登記注冊,科研管理人員進行在線管理。注冊后的項目具備一定的研究成果并得到專家認可后,可通過該模塊轉(zhuǎn)為正式項目。該模塊主要有項目搜索、新增預備庫項目、輸入項目進行在線編輯修改、刪除預備庫項目、預備庫項目轉(zhuǎn)入正式項目、項目查詢等。
科研項目功能分為科研項目管理和科研項目審核??蒲许椖抗芾碇饕糜诠芾硭鶎傧乱患売脩籼顖蟮目蒲许椖亢陀脩艄芾碜约簶I(yè)務(wù)項目,可實現(xiàn)科研項目搜索、新增入庫、編輯、刪除、導出、批量導入、查看導入記錄等功能??砂错椖筷P(guān)鍵字進行模糊查詢。批量導入導出功能支持Excel模板。針對省級、市州級管理用戶具有審核權(quán)限,通過管理員審核后正式入庫。
橫向課題功能分為橫向課題管理和橫向課題審核,橫向課題管理主要用于管理所有橫向課題,可實現(xiàn)橫向課題搜索、新增入庫、編輯、刪除、導出、批量導入、查看導入記錄等功能。批量導入導出功能支持Excel模板。針對省級、市州級管理用戶具有審核權(quán)限,通過管理員審核后正式入庫。
軟件著作權(quán)管理主要用于管理所有軟件著作權(quán),可實現(xiàn)新增、編輯和刪除軟件著作權(quán)等??砂粗鳈?quán)名稱、獲得時間、持有人、著作權(quán)產(chǎn)生的科技成果情況等進行模糊查詢。
專利管理主要用于管理所有發(fā)明專利,可按專利名稱、獲得時間、持有人、發(fā)明專利產(chǎn)生的科技成果情況等進行模糊搜索。
科技論文管理主要用于科技人員及管理人員新增、編輯、刪除、搜索、導出科技論文等功能,為科技人員查詢文獻提供來源和渠道。
信息公開管理主要分為通知公告管理和規(guī)章制度管理,通知公告主要是管理員通過該功能發(fā)布、搜索、編輯和刪除公告信息。規(guī)章制度主要實現(xiàn)科研項目管理規(guī)章制度的搜索、發(fā)布、再次編輯和刪除等。為了方便使用和功能完善,以上兩個模塊功能的發(fā)布和編輯均采用ewebEditor在線編輯器。
數(shù)據(jù)查詢主要是方便科研項目管理人員對相關(guān)信息進行查詢,主要按科技成果查詢、獲獎情況查詢、專著查詢、論文查詢、軟件著作權(quán)查詢、專利查詢以及按成果、獲獎時間、認定水平、項目名稱、項目成員、人員職稱、年齡、學歷、年份、承擔單位等為條件的綜合查詢。
基礎(chǔ)數(shù)據(jù)設(shè)置功能主要是對系統(tǒng)中涉及到的業(yè)務(wù)項目類型、科研項目類型、橫向課題類型、業(yè)務(wù)項目科目、科研項目科目、橫向課題科目、項目級別、科技成果認定水平、獲獎情況獎勵級別、附件類型、論文專著等級、項目來源、專業(yè)類別、專利類別、學歷、職稱等進行定義、刪除和下級管理,便于管理人員可根據(jù)需要進行操作。
系統(tǒng)管理功能主要分為組織機構(gòu)管理和用戶管理,組織機構(gòu)管理主要用于管理所有用戶的組織機構(gòu),機構(gòu)分為貴州省氣象局及各業(yè)務(wù)單位、各市(州)氣象部門、各區(qū)(市、縣)氣象部門。管理人員可以根據(jù)用戶所屬機構(gòu)進行增加、修改和刪除機構(gòu)及子機構(gòu)。
用戶管理主要用于管理所有系統(tǒng)用戶信息,管理員可通過該模塊新增、編輯、刪除和授權(quán)用戶使用權(quán)限。管理權(quán)限按照省市縣三級逐級授權(quán)。不同的角色權(quán)限有差異,角色主要分為管理員、省局管理員、省局用戶、只讀用戶、市州用戶、市州管理員、區(qū)縣用戶、普通用戶等8個用戶角色,越往下權(quán)限越低。
功能是該系統(tǒng)程序設(shè)計的難點之一,之所以選擇Excel作為批量導入軟件,是因為利用Excel軟件便于對數(shù)據(jù)的修改、編輯及用戶打印輸出和SQL server在數(shù)據(jù)的查詢、安全等方面的優(yōu)勢[4]。在實現(xiàn)中首先需要管理員按照提供的模板填寫相應的數(shù)據(jù),然后再進行文件導入。其主要代碼如下:
protected DataTable GetDtByImport(HttpPostedFile oFile)
{
DataTable dt = new DataTable();//初始化表格
if (oFile != null && string.IsNullOrEmpty(oFile.FileName) == false)//判斷是否有導入的excel表格
{
string IsXls = Path.GetExtension(oFile.FileName);//獲取文件擴展名
DateTime date = DateTime.Today;//當前時間
string nn = date.Year.ToString() + date.Month.ToString() + date.Day.ToString() + new Random().Next(1000, 10000).ToString() + Path.GetExtension(oFile.FileName);//自定義文件名稱(當前時間+隨機數(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;//返回導入的文件
}
這是系統(tǒng)最重要的功能之一,本系統(tǒng)涉及到很多類型的文件資料的上傳,如可研報告、實施方案、任務(wù)書、審計報告、驗收材料、經(jīng)費決算表、申請書、驗收技術(shù)總結(jié)、驗收工作總結(jié)、延期材料、論文專著、專利軟著、科技成果、獲獎情況等。主要代碼如下:
public void Upload(HttpPostedFile fileUpload, string inputWebPath)
{
string uploadName = fileUpload.FileName;//上傳資料的名稱(標題)
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);//準備保存文件
while ((readByte = inputStream.Read(bt, 0, size)) > 0)
{
outputStream.Write(bt, 0, readByte);
readPos += readByte;
}//文件邊讀邊保存
outputStream.Flush();//文件上傳結(jié)束
}
這是本系統(tǒng)非常重要的功能之一,系統(tǒng)設(shè)計了多種檢索方式,可根據(jù)項目、承擔單位、參與人員、年份時間、項目類型、項目級別、預算金額、論文專著、專利軟著、科技成果、獲獎情況等精確或模糊搜索。其主要代碼如下:
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ù)項目名稱搜索
if (StartDate != "")
sql.Append(" and F_StartDate >= @StartDate+' 00:00:00' ");//根據(jù)項目開始時間搜索
if (EndDate != "")
sql.Append(" and F_StartDate <= @EndDate+' 23:59:59' ");//根據(jù)項目結(jié)束時間搜索
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);//返回數(shù)據(jù),前臺展示
}
基于B/S模式的貴州氣象科技信息共享系統(tǒng),應用了動態(tài)網(wǎng)頁設(shè)計C#技術(shù)以及JavaScript的技術(shù),建立用戶訪問模式,實現(xiàn)服務(wù)器端對科研業(yè)務(wù)項目信息的存儲和客戶端對相關(guān)信息的訪問,使得對信息訪問更加便捷,進一步提高科研業(yè)務(wù)管理人員的工作效率。