程濤 魏榕馨 陳慧琴 吳優(yōu) 高薛揚(yáng) 朱思勇 趙明明
摘要:為了提高農(nóng)產(chǎn)品質(zhì)量安全監(jiān)管工作效率,根據(jù)泰州市農(nóng)產(chǎn)品質(zhì)量安全監(jiān)管機(jī)構(gòu)的實(shí)際需求,以泰州市農(nóng)產(chǎn)品質(zhì)量安全監(jiān)管平臺(tái)為系統(tǒng)支撐,通過(guò)功能分析和關(guān)鍵技術(shù)研究,設(shè)計(jì)和開發(fā)了基于Android的移動(dòng)智能終端軟件。終端軟件作為監(jiān)管平臺(tái)向移動(dòng)客戶端的延伸,監(jiān)管人員可以使用該軟件查看轄區(qū)內(nèi)生產(chǎn)基地信息和農(nóng)產(chǎn)品質(zhì)量檢測(cè)信息、實(shí)時(shí)登記監(jiān)管巡查情況、藍(lán)牙打印執(zhí)法文書等。
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)09-0234-03
Abstract:To improve the quality and safety supervision work efficiency of agricultural products, according to the actual needs of regulators and Taizhou agricultural products quality and safety supervision platform, we analyzed functions and research on the key technologies,then designed and developed the intelligent mobile terminal software based on the Android. Terminal software is the extension of monitoring platform to the mobile client, regulators could use the software to view production base information and agricultural products quality inspection information within the jurisdiction, register inspection timely, print law enforcement documents by Bluetooth,etc.
Key words:Android; mobile internet;agricultural products quality safety; software engineering; supervision; enforcement
農(nóng)產(chǎn)品質(zhì)量安全移動(dòng)監(jiān)管,是指農(nóng)產(chǎn)品質(zhì)量安全監(jiān)管機(jī)構(gòu)工作人員基于4G、WIFI、藍(lán)牙等移動(dòng)互聯(lián)網(wǎng)絡(luò),通過(guò)Android移動(dòng)智能終端,在任何時(shí)刻、任何地點(diǎn)準(zhǔn)確跟蹤掌握實(shí)時(shí)的農(nóng)產(chǎn)品質(zhì)量安全狀況,獲取和記錄相關(guān)信息,對(duì)生產(chǎn)經(jīng)銷過(guò)程、農(nóng)業(yè)投入品使用、農(nóng)藥殘留等進(jìn)行有效控制,完成對(duì)農(nóng)產(chǎn)品質(zhì)量安全的全面監(jiān)管和移動(dòng)執(zhí)法,從源頭上保障舌尖上的安全。
1 需求分析
根據(jù)實(shí)地調(diào)研和與目標(biāo)用戶交流討論,通過(guò)流程圖描述了監(jiān)管工作人員瀏覽基礎(chǔ)信息、巡查登記、執(zhí)法檢查、行政處罰、執(zhí)法文書藍(lán)牙打印的一系列過(guò)程,如圖1所示。
與業(yè)務(wù)流程相對(duì)應(yīng),系統(tǒng)需要包含下列功能:
1)基礎(chǔ)信息瀏覽。監(jiān)管工作人員登錄后,可以查看服務(wù)器端提供的所有的新聞動(dòng)態(tài)的詳細(xì)內(nèi)容;進(jìn)入通知公告可查看近期的公告標(biāo)題并可以點(diǎn)擊進(jìn)入查看詳細(xì)內(nèi)容;可以查看轄區(qū)內(nèi)生產(chǎn)基地的詳細(xì)信息;可以查看農(nóng)貿(mào)市場(chǎng)、批發(fā)市場(chǎng)、生產(chǎn)基地等受檢對(duì)象的詳細(xì)信息;可以查看轄區(qū)內(nèi)監(jiān)管工作隊(duì)伍的詳細(xì)信息。
2)檢測(cè)數(shù)據(jù)查詢:可以查看家庭農(nóng)場(chǎng)、專業(yè)合作社、農(nóng)產(chǎn)品公司等形式生產(chǎn)基地的農(nóng)藥殘留自檢數(shù)據(jù),同時(shí)可以查看到轄區(qū)內(nèi)本級(jí)監(jiān)管機(jī)構(gòu)和下級(jí)監(jiān)管機(jī)構(gòu)對(duì)生產(chǎn)基地、農(nóng)貿(mào)市場(chǎng)、批發(fā)市場(chǎng)進(jìn)行農(nóng)藥殘留抽檢的數(shù)據(jù),并且可以根據(jù)條件進(jìn)行查詢。
3)巡查登記:用于執(zhí)法人員執(zhí)法后輸入巡查對(duì)象、檢查員、檢查項(xiàng)目、檢查結(jié)果等信息以及可以拍照取證。照片功能可以用手機(jī)拍照立刻獲取或從手機(jī)相冊(cè)提取,GPS定位系統(tǒng)讓準(zhǔn)確定位到監(jiān)管工作的地址,提高監(jiān)管工作的準(zhǔn)確度。
4)行政執(zhí)法:包括執(zhí)法檢查和行政處罰。執(zhí)法對(duì)象包括了對(duì)農(nóng)業(yè)投入品企業(yè)、種植業(yè)、畜禽養(yǎng)殖業(yè)、水產(chǎn)養(yǎng)殖業(yè)等受檢對(duì)象的檢查,當(dāng)執(zhí)法檢查中發(fā)現(xiàn)違法問(wèn)題時(shí),進(jìn)行行政處罰登記。執(zhí)法檢查和行政處罰的內(nèi)容通過(guò)移動(dòng)終端登記到服務(wù)端的數(shù)據(jù)庫(kù)中。
5)藍(lán)牙打印:當(dāng)巡查登記、執(zhí)法檢查和行政處罰的工作內(nèi)容已經(jīng)寫入到服務(wù)器中,通過(guò)移動(dòng)終端可以瀏覽其工作列表和詳細(xì)信息,并且可以通過(guò)藍(lán)牙模塊連接到藍(lán)牙打印機(jī)實(shí)現(xiàn)實(shí)地快速打印執(zhí)法文書,有效地提高工作效率。
2 系統(tǒng)設(shè)計(jì)
2.1 功能模塊
根據(jù)需求分析,農(nóng)產(chǎn)品質(zhì)安全移動(dòng)監(jiān)管軟件里面是含有新聞動(dòng)態(tài)、通知公告、基地信息、被檢單位、基地自檢、監(jiān)測(cè)信息、監(jiān)管隊(duì)伍、巡查登記、行政執(zhí)法9個(gè)一級(jí)功能模塊,如圖2所示。為了滿足需求還添加系統(tǒng)登錄、掃碼功能,同時(shí)增加了執(zhí)法檢查、行政處罰、藍(lán)牙打印、電子地圖等二、三級(jí)模塊。
2.2 系統(tǒng)框架
整個(gè)系統(tǒng)采用Client/Server模式,其中Android客戶端軟件作為Client,采用JavaEE開發(fā)的泰州市農(nóng)產(chǎn)品質(zhì)量安全監(jiān)管平臺(tái)作為Server。Server面向Client開放接口,提供數(shù)據(jù)讀取和寫入服務(wù),采用Struts2框架設(shè)計(jì),分為控制器層、業(yè)務(wù)邏輯層、DAO層、持久化對(duì)象PO層。Android客戶端通過(guò)服務(wù)端的控制器層與服務(wù)端連接,當(dāng)有數(shù)據(jù)請(qǐng)求時(shí),首先通過(guò)控制器層,再依次通過(guò)業(yè)務(wù)邏輯層、DAO層、持久化對(duì)象PO,然后與數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)交互。
Android客戶端采用MVC模式進(jìn)行分層。其中Model層負(fù)責(zé)創(chuàng)建實(shí)體類,將網(wǎng)絡(luò)連接層傳輸?shù)臄?shù)據(jù)進(jìn)行封裝,實(shí)體類包括基地信息、市場(chǎng)自檢、監(jiān)管隊(duì)伍等;Logic層負(fù)責(zé)業(yè)務(wù)邏輯處理,作為MVC模式中的Controller層,獲取返回給調(diào)用者的對(duì)象,對(duì)其進(jìn)行賦值;UI層作為MVC模式中的View層,負(fù)責(zé)數(shù)據(jù)在界面上正確顯示,通過(guò)Activity加載UI界面和Logic層返回的數(shù)據(jù);在移動(dòng)互聯(lián)的網(wǎng)絡(luò)狀態(tài)下,網(wǎng)絡(luò)連接層通過(guò)Apache HttpClient和HttpURLConnection類向服務(wù)端發(fā)送數(shù)據(jù)請(qǐng)求和數(shù)據(jù)交互,數(shù)據(jù)交互格式是JSON格式。整個(gè)系統(tǒng)框架如圖3所示。
3 具體實(shí)現(xiàn)
3.1 服務(wù)端
以“通知公告”模塊里面的“通知公告列表”為例,通知公告列表接口面向Android客戶端的請(qǐng)求提供通知公告標(biāo)題和序號(hào),設(shè)計(jì)和開發(fā)步驟如下:
(1)在實(shí)體層創(chuàng)建PublicInfoVO類,表示通知公告內(nèi)容實(shí)體類,與數(shù)據(jù)表的字段一致;
(2)在PspIndexDao.xml文件中注冊(cè)訪問(wèn)數(shù)據(jù)庫(kù)中通知公告數(shù)據(jù)表的代碼,如下所示:
SELECT RowID, Title, Pub_Column, User_Name, Pub_Date, Pic_Pass, Top_flag, ROW_NUMBER() OVER (ORDER BY rowid) AS RowNumber from Info_Public
where (Pub_Column =$typeId$ AND public_info_status=1 AND CityId=20) Order by Top_flag DESC, Pub_Date DESC
(3)在DAO層創(chuàng)建List
(4)創(chuàng)建List
(5)在Serivce層創(chuàng)建List
(6)在Action層獲得List
3.2 Android客戶端
3.2.1 “通知公告”功能模塊
以“通知公告”模塊為例在Android端進(jìn)行設(shè)計(jì)和開發(fā):
(1)新建接口IbaseTraceLogic,用于有關(guān)農(nóng)產(chǎn)品質(zhì)量安全信息處理邏輯的接口,包含有讀取數(shù)據(jù)的所有抽象方法,用BaseTraceLogic類實(shí)現(xiàn)IbaseTraceLogic接口,并實(shí)現(xiàn)其中所有的方法。
(2)完善BaseTraceLogic的sendForNews( )方法,方法體是BaseTraceInfoManager類的sendForNews(IhttpListener iHttpListener)方法。同時(shí)采用匿名內(nèi)部類的方式實(shí)現(xiàn)IhttpListener接口,作為sendForNews的參數(shù),作用是HTTP監(jiān)聽器,服務(wù)器返回結(jié)果會(huì)組裝成Response對(duì)象并通過(guò)onResult()方法回調(diào)給調(diào)用者;
(3)BaseTraceInfoManager類sendForNews方法參數(shù)完成后,執(zhí)行其方法體,代碼如下:
HashMap
super.send(ACTION_NEWS, sendData, iHttpListener);
(4)調(diào)用BaseTraceInfoManager類的父類HttpManager的send(final int action, final HashMap
(5)在HttpConnector中,通過(guò)URL類的openConnection方法打開服務(wù)端提供的通知公告列表接口,賦給HttpURLConnection類型的對(duì)象httpConn,通過(guò)其getInputStream( )獲得InputStream對(duì)象,服務(wù)端返回?cái)?shù)據(jù);
(6)在HttpManager的parserResult(int action, Response response)中,對(duì)HttpConnector.connect(request)返回的Response進(jìn)行解析,其實(shí)質(zhì)為解析JSON數(shù)據(jù);
(7)在ServerDataParser類的parseNews方法中,將返回?cái)?shù)據(jù)根據(jù)字段進(jìn)行封裝成News類的對(duì)象,然后裝入到ArrayList
(8)在BaseTraceLogic類中,將集合數(shù)據(jù)賦給msg.obj,再通過(guò)sendMessage將msg對(duì)象賦給調(diào)用者的主線程;
(9)在調(diào)用者NewsActivity中,獲取到數(shù)據(jù)后轉(zhuǎn)換成通知公告列表數(shù)據(jù)適配器NewsAdapter,使用ListView獲取到布局文件中的顯示列表lv_base,界面顯示了通知公告列表;
(10)在通知公告列表上注冊(cè)setOnItemClickListener監(jiān)聽器,封裝意圖Intent對(duì)象,對(duì)象內(nèi)容中包括跳轉(zhuǎn)到的通知公告詳細(xì)內(nèi)容類NewsDetailActivity、通知公告列表的id;
(11)在NewsDetailActivity中,使用mIBaseTraceLogic.sendForNewsDetail(id)方法,獲得訪問(wèn)通知公告詳細(xì)內(nèi)容的數(shù)據(jù)并且顯示在布局文件上,其步驟跟上面類似。
3.2.2 “行政執(zhí)法”功能模塊
農(nóng)產(chǎn)品質(zhì)量安全監(jiān)管工作登記類模塊包括了巡查登記、行政執(zhí)法2個(gè)模塊,其中行政執(zhí)法又包括了執(zhí)法檢查和行政處罰2個(gè)子模塊。下面以執(zhí)法檢查模塊為例進(jìn)行開發(fā)。
(1)獲取activity_camera_trace.xml布局文件和里面的控件;
(2)為檢查對(duì)象的查詢按鈕注冊(cè)監(jiān)聽器,當(dāng)單擊時(shí)跳轉(zhuǎn)到CheckAddrActivity中,該Activity為顯示轄區(qū)內(nèi)所有的受檢單位,使用startActivityForResult方法回調(diào)獲取到的受檢單位;
(3)為巡檢員的查詢按鈕注冊(cè)監(jiān)聽器,當(dāng)單擊時(shí)跳轉(zhuǎn)到PersonNameActivity中,該Activity為顯示監(jiān)管機(jī)構(gòu)的執(zhí)法工作人員,使用startActivityForResult方法回調(diào)獲取到的巡檢員;
(4)為拍照按鈕注冊(cè)監(jiān)聽器,當(dāng)單擊時(shí)跳出對(duì)話框,可以選擇“拍攝”和“相冊(cè)”功能,構(gòu)造對(duì)話框極其點(diǎn)擊條目的效果實(shí)現(xiàn)代碼如下;
AlertDialog dlg = new AlertDialog.Builder(CameraTraceActivity.this).setTitle("選擇圖片").setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int item) {
if(item==1){ //使用手機(jī)即時(shí)拍照方式
Intent getImageByCamera= new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(getImageByCamera, CAMERA_SUCCESS); }
else{ //獲取手機(jī)相冊(cè)已有圖片
Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
getImage.addCategory(Intent.CATEGORY_OPENABLE);
getImage.setType("image/*");
startActivityForResult(getImage, PICTURE_SUCCESS);
} } }).create();
dlg.show( );
(5)采用子線程將獲取到的圖片先傳送到服務(wù)端,采用開源框架xUtils;
(6)在登記界面上手動(dòng)輸入檢查項(xiàng)目、檢查結(jié)果,獲取到GPS定位地址、服務(wù)端返回的圖片地址后,對(duì)提交按鈕注冊(cè)監(jiān)聽器,用來(lái)將這些數(shù)據(jù)提交給服務(wù)端。
4 軟件運(yùn)行和應(yīng)用情況
以泰州市農(nóng)產(chǎn)品質(zhì)量安全監(jiān)管平臺(tái)為系統(tǒng)支撐,采用了Struts2、iBatis等框架,提出了輕量級(jí)網(wǎng)絡(luò)傳輸JSON格式,研究了服務(wù)端數(shù)據(jù)交換接口的設(shè)計(jì)與實(shí)現(xiàn)方法,建立了MVC模式分層開發(fā)的方案,開發(fā)了泰州市農(nóng)產(chǎn)品質(zhì)量安全移動(dòng)監(jiān)管執(zhí)法智能終端軟件。泰州市農(nóng)產(chǎn)品質(zhì)量安全監(jiān)管機(jī)構(gòu)實(shí)際應(yīng)用效果表明,通過(guò)Android終端進(jìn)行移動(dòng)監(jiān)管,軟件獲得的農(nóng)產(chǎn)品質(zhì)量信息真實(shí)準(zhǔn)確,監(jiān)管執(zhí)法登記工作快速方便,有效地提高了監(jiān)管效率和效果。
參考文獻(xiàn):
[1] 陳長(zhǎng)喜,許曉華.基于物聯(lián)網(wǎng)的肉雞可追溯與監(jiān)管平臺(tái)設(shè)計(jì)與應(yīng)用[J].農(nóng)業(yè)工程學(xué)報(bào),2017(5):224-231.
[2] 陳熔,俞彤.基于APP的農(nóng)產(chǎn)品質(zhì)量安全監(jiān)管平臺(tái)的設(shè)計(jì)與開發(fā)[J].江蘇農(nóng)業(yè)科學(xué),2017(12):171-173.
[3] 白紅武,孫愛(ài)東,陳軍,等.基于物聯(lián)網(wǎng)的農(nóng)產(chǎn)品質(zhì)量安全溯源系統(tǒng)[J].江蘇農(nóng)業(yè)學(xué)報(bào),2013(02).