《基于Android系统的烟草配送路径监控系统的设计.docx》由会员分享,可在线阅读,更多相关《基于Android系统的烟草配送路径监控系统的设计.docx(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 基于Android系统的烟草配送监控系统的设计摘 要本软件的开发是为地图类配送路线以及地点显示采集,为配送技术人员提供一个有力的地点采集和路线分析工具。根据客户的需求,对其需要的功能通过程序实现,并实现客户人机交互的良好体验。在烟草物流配送部门电子信息化管理制度条约中,需要将烟草配送员以及配送车辆实施情况展示于地图上,作为省局统一化管理以及考核,系统多方面提供了JavaScript、IOS、Android、Flex等开发框架进行第二次开发、Android移动端配置GIS和GPS一体化平台的搭建与操作。数据提供了客户(点)、仓库(面)、道路(线)、以及各省区人口经济气象等信息的查询以及修改.目
2、录1 绪论11.1 项目背景及软件运行11.2 软件用途11.3 关于GIS/GPS12 APP需求以及设计32.1系统功能32.2需求分析32.2.1需求及应用场景32.2.2业务操作流程42.3设计52.3.1界面注册记录52.3.2界面设计73 项目app端界面设计方案73.1 设计方案一 -登陆界面73.2 设计方案二 -主界面83.3 设计方案三 -送货界面93.4 设计方案四 -路网采集界面103.5 设计方案五 -配送进度界面144 项目APP端软件主要代码174.1 登陆界面(LoginActivity)174.2 主页面(MainActivity)174.3 主界面功能按键说
3、明204.4 ARCGIS相关说明244.5 网络请求(http)254.6 定时器(timer)254.7 Arcgis 点线面的绘制264.8 流程图285系统功能测试与总结295.1 引言295.2 测试范围305.3 测试指标要求305.3.1 功能测试305.3.2 性能测试305.4 测试环境315.5 测试前提交文档315.6 测试方法325.6.1 功能测试325.6.2 用户界面(UI)测试325.6.3 性能测试325.7.1 测试时间和地点335.7.2 参加测试人员335.7.3 测试工具335.7.4 性能测试计划进度安排335.8.1 系统登录355.8.2 客户数
4、据采集355.8.3 路网数据采集365.8.4 仓库数据采集375.8.5 配送进度查看376 结论38参考文献39致谢40附录41 第52页 共41页1 绪论1.1 项目背景及软件运行本软件的开发是为地图类配送路线以及地点显示采集,为配送技术人员提供一个有力的地点采集和路线分析工具。根据客户的需求,对其需要的功能通过程序实现,并实现客户人机交互的良好体验。利用javascript、ios、android、 Flex等开发框架进行第二次开发、andorid移动端配置GIS和GPS一体化平台的搭建与操作。提供客户(点)、仓库(面)、道路(线)、以及各省区人口经济气象等信息的查询以及修改。运行:
5、本软件运行于安卓手机及虚拟机上,使用的是android 手机操作系统,在软件安装后,直接点击相应的图示,就可以运行此软件。1.2 软件用途本软件的开发是为地图类配送路线以及地点显示采集,为配送技术人员提供一个有力的地点采集和路线分析工具。1.3 关于GIS/GPSGPS:(Global Positioning System)全球定位系统它是一个中距离圆形轨道卫星定位系统,该系统可以为地球上大部分地区提供十分准确的定位和高精度的时间基准。该系统是通过太空中的24颗GPS卫星来完成的。最少需要其中3颗卫星,就能迅速确定您在地球上的位置。所能接收到的卫星数越多,译码出来的位置就越精确。GIS:Geo
6、graphic Information System,地理信息系统 是一种基于计算机的工具,它可以对在地球上存在的东西和发生的事件进行成图和分析。 GIS技术把地图这种独特的视觉化效果和地理分析功能与一般的数据库操作集成在一起。这种能力使 GIS与其他信息系统相区别,从而使其在广泛的公众和个人企事业单位中解释事件、预测结果、规划战略等中具有实用价值。2 APP需求以及设计2.1系统功能空间数据采集:空间数据采集分客户数据采集,集结点数据采集,路网数据采集,仓库数据采集和用户认证。其中空间数据采集包括配送客户查询展示(业务员当天配送客户清单),送货路线展示(业务员当天配送的规划线路),客户位置采
7、集(客户取货位置的经纬度),客户位置修正(客户取货位置的经纬度),客户属性信息维护(客户的卸货方式);集结点数据采集包括集结点数据采集(在客户清单中体现),创建集结点(在客户清单中点击创建),打散集结点(删除集结点,清除客户与集结点关系),归入移出(客户归入集结点,客户移出集结点);路网数据采集包括路网匹配(匹配当前客户所在道路信息),路网采集(利用gps记录轨迹);仓库数据采集包括仓库数据查询展示(仓库数据清单,查询),仓库面坐标维护(修正原仓库面数据),仓库面坐标采集(采集仓库面坐标,gps轨迹记录);用户认证包括角色认证(单点登录进入App,系统进行角色判断,加载自定义),权限菜单加载(
8、加载用户权限的菜单),系统初始化(默认加载角色权限数据)。GIS数据管理:配送线路管理配送线路查询;配送线路查询包括配送线路客户清单(按固定线路进行查询),配送规划线路轨迹(当天配送规划的路线),配送实际行驶轨迹(当天实际形势的路线),配送取货位置信息(当天送货取货产生的过程数据),路网信息(加载最新路网),卸货方式修改(单边、双边)。2.2需求分析2.2.1需求及应用场景物流配送:物流配送主要包括零售客户销售点,配送集结点,路网,物流设置等,如下表所示:业务领域数据分类业务采集需求采集角色采集要求采集场景与作业流程物流配送零售客户取货点1、 坐标采集、修正2、 卸货方式采集、修改站长送货员1
9、、 初始化采集:一个周期的全采;2、 人工计算机核对3、 偏差校正任务采集4、 审核1、 初始化 送货员采用App进行为期一段时间的全面校准工作; 送货员与站长在计算机上对App采集和修正位置进行确认2、 更新 站长跟踪配送工作发现取货位置存在偏差,手动修正,如果无法判断则下达采集任务。 任务采集 对下达任务的采集进行审核配送集结点1、 创建、打散集结点2、 修改集结点位置3、 客户归属集结点管理站长送货员1、 初始化采集:一次性进行归集 2、 更新1、 初始化:客户位置准确的前提下,站长与送货员在计算机上一同对客户进行集结点归集;2、 更新:业务员通过App进行客户归集点归属操作路网1、 增
10、加道路路线和属性2、 编辑属性:路名、限高、行驶速度、路宽、是否单行送货员、奥格工程师1、初始化,全市路网的查漏补缺2、更新1、通过一个周期的gps轨迹记录,上线前对道路的缺失情况进行补充;2、通过App对路网属性进行更新维护物流设施物流中心、中转站、仓库的坐标采集物流中心调度员1、 初始化2、 更新1、 站长通过App实地进行面对象采集2、 通过app进行面维护2.2.2业务操作流程业务员:客户位置采集、修正,集结点维护,路网维护站长、中心调度员:仓库信息维护2.3设计2.3.1界面注册记录序号界面名地址是否注册注册时间1全省基础地图http:/xx.xx.xx.xxx:6080/arcgi
11、s/rest/services/map_v1/MapServer已注册2016-12-202衡阳市基础地图http:/xx.xx.xx.xxx:/arcgis/rest/services/BaseTile_HY/MapServer未注册3App登录http:/xx.xx.xx.xxx:8080/agsupport/rest/user/checkuser已注册2016-12-204获取配送信息http:/xx.xx.xx.xxx:8080/agsupport/rest/gistyperest/getCustInfoByCarId已注册2016-12-205客户信息修改http:/xx.xx.xx
12、.xxx:8080/agsupport/rest/gistyperest/updateCustPosInfo已注册2016-12-206客户卸货方式http:/xx.xx.xx.xxx:8080/agsupport/rest/gistyperest/setOffloadMode未注册7客户归属集结点http:/xx.xx.xx.xxx:8080/agsupport/rest/gistyperest/addCustToJJD未注册8集结点创建http:/xx.xx.xx.xxx:8080/agsupport/rest/gistyperest/addJJD未注册9集结点修改http:/xx.xx.
13、xx.xxx:8080/agsupport/rest/gistyperest/uploadJcxxJJD已注册2016-12-2010集结点删除http:/xx.xx.xx.xxx:8080/agsupport/rest/gistyperest/deleteJJD未注册11数据采集图层http:/1xx.xx.xx.xxx:8080/agsupport/rest/projectLayerRest/getCollLayersInfo未注册12图层字段http:/xx.xx.xx.xxx:8080/agsupport/rest/system/getMISLayerField/6未注册13图层数据h
14、ttp:/xx.xx.xx.xxx:8080/agsupport/rest/projectLayerRest/getListByMisLayerId未注册14保存数据http:/xx.xx.xx.xxx:8080/agsupport/rest/projectLayerRest/saveLayerInfo未注册15获取道路信息http:/xx.xx.xx.xxx:8080/agsupport/rest/gistyperest/getSpatialRouteInfo未注册16保存道路空间信息http:/xx.xx.xx.xxx:8080/agsupport/rest/gistyperest/sav
15、eSpatialRouteInfo未注册更新道路属性的信息http:/xx.xx.xx.xxx:8080/agsupport/rest/gistyperest/updateSpatialRouteInfo未注册2.3.2界面设计界面设计分APP前端的UI框架和结构,和后台数据结合还有网络请求设计出来的。前端UI框架和控件相当于家里的电视机。而后台数据相当于一个一个的电视节目,网络请求相当于电视信号,这三者是组成整个APP的基本元素,三者同样重要缺一不可。网络请求是将后台的数据拿到的工具,本项目所使用的网络请求是使用的第三方框架Retrofit。Retrofit能减少解耦,降低耦合,让我的接口开
16、发灵活,不同api之间互相不干扰,具有使用注解方式,代码简洁,易懂,易上手等优点,采用建造者模式,开发构建简便!2.3.2.1数据返回 数据由负责后台服务器的开发人员由java语言写好,部分存入数据库中。数据返回的格式为JSON格式;我根据网络请求的数据解析并将数据显示在APP界面上。数据请求状态:message(请求结果描述),status(请求结果状态,0:失败,1:成功)data(界面返回的数据)。如(data:,message:查询结果为空,status:1)。2.3.2.2其他数据采集2.3.2.2.1查询数据类型点线面:http:/10.72.59.137:8080/agsuppo
17、rt/rest/system/getLayerInfoByProjectLayerId/4112.3.2.2.2 MIS图层查询界面名称采集图层清单界面描述查询待采集的MIS图层地址10.72.59.137:8080/agsupport/rest/projectLayerRest/getCollLayersInfo?UserId=1133输入参数UserId输出结果Id:mislayerIdmisTable:MIS的表名misTableFields:业务表主键projectLayerAlias:空间图层名称projectLayerId:空间图层IDlayerFields:空间图层表主键rela
18、tionName:表关联2.3.2.2.3图层字段查询界面名称采集图层清单,非标准返回格式,没有datamessagestatus界面描述查询待采集的MIS图层地址10.72.59.137:8080/ agsupport/rest/system/getMISLayerField/mislayerId输入参数mislayerId输出结果private Long id;private String owner;/所有者private String fieldName;/ 字段名private String fieldAlias;/ 字段中文名private String fieldType;/ 字
19、段类型private int fieldOrder;/ 字段的显示顺序private String showInResult;/ 查询结果中是否显示private String showInTitle;/ 快速查看时是否显示private String editable;/ 是否可编辑该字段private String nullable;/ 字段是否可为空private String uploadable;/private String searchable;/ 模糊查询时是否查询该字段2.3.2.2.4图层数据查询界面名称采集图层清单界面描述查询待采集的MIS图层地址http:/10.72.
20、59.137:8080/agsupport/rest/projectLayerRest/getListByMisLayerId?layerMisId=6输入参数UserId输出结果返回图层的信息与图层字段设置中 showInResult =1的对应2.3.2.2.5图层数据保存1、MisId:id2、Mistable:B_ZC_CK_HY3、misTableFields:CKDM,4、CKDM 的value5、坐标:LNGLAT2.3.2.3路网维护2.3.2.3.1路网空间信息查询界面名称 获取空间路线信息 GETUrl/rest/gistyperest/getSpatialRouteInf
21、o参数loginName 登录用户名carId 车辆编码Lng 经度Lat 纬度返回值”WIDTH”:100,”DIRECTION”:”n”,“PATHNAME”:”xxxx”,”OBJECTID”:112003 界面说明http:/10.72.48.11:8080/agsupport/rest/gistyperest/getSpatialRouteInfo?loginName=wangsj1hy&carId=400000124090305&lng=112.5821&lat=26.89292.3.2.3.2 路网数据更新描述界面名称保存空间路线信息 GETUrl/rest/gistyperes
22、t/saveSpatialRouteInfo参数loginName 登录用户名carId 车辆编码routexy 路线坐标数据x:112.658198,y:26.776161,x:112.658192,y:26.776162property 路线属性 PATHNAME:vvvv,DIRECTION:n返回值“result”:true,”msg”:”xxxx”,“data”:”idxxxxx” 界面说明例:http:/192.168.98.243:8080/agsupport/rest/gistyperest/saveSpatialRouteInfo?loginName=wangsj1hy&ca
23、rId=400000124090305&route=x:112.658198,y:26.776161,x:112.658192,y:26.776162&property=“PATHNAME”:”vvvv”,”UNLOAD”:”0”,”SPEED”:”30”,”HEIGHT”:”2”2.3.2.3.3路网采集描述界面名称 获取空间路线信息 GETUrl/rest/gistyperest/updateSpatialRouteInfo参数loginName 登录用户名carId 车辆编码objectid 路线编码property 路线属性 “PATHNAME”:”vvvv”,”UNLOAD”:”0”
24、,”SPEED”:”30”,”HEIGHT”:”2”返回值“result”:true,”msg”:”xxxx”,“data”:”idxxxxx” 界面说明例:http:/192.168.98.243:8080/agsupport/rest/gistyperest/updateSpatialRouteInfo?loginName=wangsj1hy&carId=400000124090305&objectid=123650&property=“PATHNAME”:”vvvv”,”UNLOAD”:”0”,”SPEED”:”30”,”HEIGHT”:”2”2.3.2.4公共界面2.3.2.4.1系统
25、登录界面名称系统登录界面描述系统登录地址http:/10.72.48.11:8080/agsupport/rest/user/checkuser输入参数Name:登录名Passwd:密码输出结果输入:http:/10.72.48.11:8080/agsupport/rest/user/checkuser?name=aosadmin&passwd=202cb962ac59075b964b07152d234b70输出:result:true,msg:”xxxx”,data:“userid:xxxx,usertype:dist carname:xxxxx,username:小王备注:1. usert
26、ype: 用户类型 值是 dist 表示 配送人员 sale 表示 销售人员修改记录: 1. 20151120 增加用户类型 2. 20160405 返回登录的用户名描述界面名称登入验证 POSTUrl/rest/user/checkuser参数用户名name密码passwd (密文)返回值result:true,msg:”xxxx”,data:“userid:xxxx,usertype:dist carname:xxxxx,username:小王界面说明例:http:/127.0.0.1:8080/agsupport/rest/user/checkuser?name=aosadmin&pas
27、swd=202cb962ac59075b964b07152d234b70eg. name=0102552.3.2.4.2获取城市短码界面名称采集图层清单界面描述查询待采集的MIS图层地址10.72.59.137:8080/agsupport/rest/cityConfig/getShortName?loginName=hejhy输入参数loginName输出结果data输入:http:/10.72.59.137:8080/agsupport/rest/cityConfig/getShortName?loginName=hejhy输出:data:HY,message:,status:12.3.2
28、.4.3查询图层layerid界面名称采集图层清单界面描述查询待采集的MIS图层地址输入参数输出结果2.3.2.5零售客户2.3.2.5.1配送客户信息修改记录: 1. 20150919 增加返回 xlbm 2. 20151118 增加日期参数 date 3. 20151119 修改返回值格式 4. 20160331 修改返回值格式, 增加manager, COLL_type描述界面名称业务查询界面 GETUrl/rest/gistyperest/getCustInfoByCarId参数carId 登录用户名 yanbhydate 获取此日期对应的数据 格式 yyyy-mm-dd界面说明例:h
29、ttp:/127.0.0.1:8080/agsupport/rest/gistyperest/getCustInfoByCarId?carId=yanbhy&date=2015-09-22http:/10.72.59.137:8088/agsupport/rest/gistyperest/getCustInfoByCarId?carId=weikkhy&date=2015-09-22http:/10.72.59.137:8088/agsupport/rest/gistyperest/getCustInfoByCarId?carId=yanbhy&date=2015-09-22http:/192
30、.168.98.201:8080/agsupport/rest/gistyperest/getCustInfoByCarId?carId=yanbhy&date=2015-09-22 2.3.2.5.2更改客户坐标界面名称更改坐标 GETUrl/rest/gistyperest/updateCustPosInfo参数xlbm 线路编码userid 登录用户的idcustid 客户idlng 经度lat 纬度返回值“result”:true,”msg”:”xxxx”,“data”:”ok”3 项目app端界面设计方案3.1 设计方案一 -登陆界面 图2.1 方案一设计流程图3.2 设计方案二 -
31、主界面图所显示的数字点,为此用户所需送的客户点,列:长按客户点可以移动客户所点客户位置,移动后更新客户点位置。显示界面如下:图2.2 方案二设计流程图3.3 设计方案三 -送货界面点击主界面图片 便可进入送货界面,界面如下:此为修正标记点击进入显示所点击项的位置信息长按进入编辑所选单双边卸货信息3.4 设计方案四 -路网采集界面主页面点击右上角“+”号进入路网采集界面,效果如下图:此处为显示路网采集所有项为当前路段信息,已经对路网的采集所选项,新建,清单,取消,可点击,进入后页面下图详细描叙进入之后,地图会跳转至当前位置,此点为自己所在位置新建:点击及开始采集位置路线,效果图如下: 注:点击开
32、始之后,便显示自己所在位置点,便可以拿手机进行采集,采集路线会随手机移动出现一条所移动过的线于地图上,等待采集结束,按下结束按钮,便可进入到采集线路处理。调整路线属性采集的路线选择保存此段路线或取消返回清单:显示所有已采集所有清单,点击后进入清单属性3.5 设计方案五 -配送进度界面点击配送进度即可进入车辆信息查看管理 上述所为配送进度查看信息,具体操作如下图:车组基本信息,点击即可查看详细信息中转站选择项,选择之后即可更换对应的车组刷新按钮,点击即可刷新车辆配送进度 点击车辆后,即可查看此车辆详细信息。 效果图如下:此车辆配送量,点击即可查看具体客户。此车辆详细配送信息此车辆当前配送位置此车
33、辆配送客户点此车辆配送线路4 项目app端软件主要代码4.1 登陆界面(LoginActivity)主要对送货员账号以及密码的管理主要逻辑代码类:LoginActivity登陆按键对应ID: btn_login登陆方法: login();密码使用MD5加密,将账号密码通过网络请求服务器认证,根据服务器返回数据判断,关键代码如下:如果成功则可以登陆。如果异常则弹出对应toast提示。详情见代码。4.2 主页面(MainActivity)进入主页面后,初始化view,初始化相关数据,初始化地图,开启定位实时位置点功能。初始化view不再赘述,然后初始化数据initValue():在该方法中初始化基
34、础地图,代码如下图所示:初始化其他图层,代码如下:然后发送网络请求客户点等所有信息;并作对应的处理。主要在这个方法中完成发送网络请求,代码如下请求成功后解析json数据并保存到Entity中:解析完成后,开始在Arcgis基础地图上画集结点,在方法中实现。画客户点的方法画客户点的关键代码如下图所示,用一个for循环将解析的所有客户点信息中的经纬度取出来,并描绘到基础地图上。开始解析路线信息,先对返回的字符串做处理,使用String loads 将路线的点的坐标存起来,然后在基础图层上画路线。之后初始化所有List,initListView();如客户点列表,修补点列表,采集点列表,关键代码如下
35、:初始化地图initMap();在地图中加载各个图层,关键代码如下:以及初始化地图的各种相应事件:如地图状态改变监听事件(mMapView.setOnStatusChangeListener)根据地图状态的变化回调监听方法(具体根据项目开发文档的需求而定)。 地图长按事件:setOnLongPressListeners实现长按某个位置弹出当前位置的具体信息。地图单击事件,设置地图点击监听,根据项目需求实现具体的点击效果。 最后在MainActivity的onCreate()中的最后一个方法就是开启定位功能,在startLocate()方法中实现,在地图上画实时位置点,关键代码如下,4.3 主界
36、面功能按键说明主界面功能按键如下图所示:红色框选部分为所有客户点列表(采集任务列表和修正任务列表相同),点击后可以切换到客户点列表,三个列表布局档与地图页面的布局档都写在activity_main.xml 中,用一个ViewFlipper来完成页面之间的相互切换。页面布局关键代码如下:注:activity_main_list_all为所有客户点列表List布局档;activity_main_list_col为采集任务列表List布局档;activity_main_map为地图页面布局档;activity_main_list_fix为修正任务列表List布局档;在MainActivity中找到布
37、局档中对应的控件然后相应对应的按键事件,如送货列表页面(修正列表页面和采集任务界面的跳转事件也是类似的),点击的时候跳转到对应的页面,关键代码如下:注:因为在activity_main_map是顺数第三个页面,所以flipper.setDisplayedChild(2);可以将第三个页面展示出来。橙色框选部分为更多功能按键,点击后可以弹出更多功能列表,如下图所示:对应布局的id是ll_more_function;相应点击事件,点击后弹出popupwindow,popupwindow是一个ActionBar按钮点击弹框的一个控件。弹出popupwindow后设置其适配器实现上图效果,并且为没一个
38、Item设置点击事件,点击路网采集跳转致路况采集界面,点击其他采集跳转致其他采集界面,点击更多功能弹出Toast(“更多功能暂未开放”)的提升等待后期的开发。切换上一个或者下一个客户点,对应的布局档ID为回应上一个客户点和下一个客户点的单击事件,回应事件。蓝色方框内为客户点名称,单击可以进入客户点列表页面,对应相应事件如下图所示:长按客户点名称可以进入手动调整位置功能页面,界面如下图所示:会弹出一个悬浮点,可以手动拖动地图,当移动到想改变位置的点的时候再此点击该点,就会弹出是否将该客户点移动到当前位置的提示栏,点击确定则将客户点的位置移动到实时位置点。黑色方框内为自动调整客户点位置的按键,当点
39、击该图示的时候会直接将地图中心点移动到实时位置,并且会弹出是否将客户点移动到该位置的提示框,点击确定则会将该客户点移动到该位置。客户点列表的按键说明:点击某一个客户点,则会由该客户号点列表跳转到主页面,并且将该点移动到地图中心,关键代码如下所示:点击之后发送消息为4的消息给MainActivity。MainActivity接收后到消息之后将该客户点移动到地图中点并且将客户点名字以及客户点地址展示在地图下方的详情栏。长按某一个客户点会弹出客户点详细信息,比如客户点名称,客户电话号码以及客户点信息等,并且可以编辑左右卸货的方式,如下图所示,点击确定则会修改客户点的卸货方式。4.4 ARCGIS相关
40、说明基础图层的加载,关键代码如下图所示:其他各个图层的加载,点的绘制,线的绘制,面的绘制。4.5 网络请求(http) private Gson mGson; List distritest; private void sendRequestFortest(final ListView listv,String stringn) torf=true; /自己定义的AppApplication appapplication = (AppApplication) getApplication();url=http:/10.72.48.11:8080/agsupport/rest/gpsrest/g
41、etdDeliveryProcess?loginName=hejhy&deptId=0124304011502&date=2016-11-04 HTTP网址格式String url = http:/10.72.48.11:8080/agsupport/rest/gpsrest/getdDeliveryProcess?loginName=+appapplication.getUserLoginName()+&deptId=+stringn+&date=+todate;/2016-11-03 /网址请求LogUtil.d(click url=+url);appapplication.addRequ
42、est(new StringRequest(0, url,new Listener() Overridepublic void onResponse(String responsese) if(responsese=null)ToastUtil.showMessage(distributionActivity, 数据加载异常);elsetry mGson = new Gson(); /Gson 解析 distritest = mGson.fromJson(responsese,new TypeTokenList() .getType(); torf=true;catch(Exception e) ToastUtil.showMessa