1. 引言
智能水务是我国目前大力发展 “智慧城市”的组成部分 [1]。智能水务通过数据采集仪表、水质水压仪表、无线网络等在线监测设备实时感知城市供排水系统的运行状态,并采用可视化的方式有机整合水务管理部门与供排水设施,形成“城市水务物联网” [2]。同时及时分析、处理海量水务信息,并给出相应的处理结果来辅助决策建议,以更加精细和动态的方式管理水务系统的整个生产、管理和服务流程,从而达到“智慧”的状态。
目前国内大部分供水企业都采用了一些信息化系统,如供水自动化系统、供水调度系统、收费系统、抄表的表务系统、热线报修和报装系统等等,但数据处理和流转只局限与本部门,信息孤岛现象严重,水务管理效率不高 [3]。同时目前还较少采用手机移动办公手段,即使有也是比较单一的数据处理,很少有能够综合多个数据资源的手机移动水务智能化应用平台。对于山岳型旅游景区来说也是如此,因此针对黄山风景区研究开发一个基于Android平台的智能化水务管理系统的移动办公平台,完成便携式移动办公,综合供水企业的多个信息化系统数据资源,同时对数据进行有效的分析、实时交互和信息展示,从而提高水务管理效率,有非常实用的应用价值。
黄山风景区游客数量逐年递增,景区对自然资源的需求量越来越大,而山岳型景区的自然资源非常珍贵,尤其是水资源。旅游业的迅速发展、自然资源的保护、生态环境的保护、植被灌溉及森林防火都严重依赖于水资源,而黄山风景区的水资源以及供水系统无法充分保证上述用水需求,如何充分利用现有的资源对水务进行高效管理的问题便凸显出来。
为了保障黄山风景区水资源的充分利用,保证景区的多种用水需求,适应可持续发展的目标,本文阐述了利用现有的资源对景区水务信息系统进行升级改造,提高智能化水务管理的手段,对确保水质安全、保障旅游用水、森林防火,景区生态保护及节能减排都有重要的意义。
本系统是基于Android平台开发的针对黄山风景区的智能水务信息化管理系统移动办公平台。能实现便携式移动办公,提高水务管理的效率,同时利用黄山供水企业的信息化系统数据资源,对数据进行有效的分析、实时交互和信息展示。
2. 平台架构
2.1. 平台特点
本平台在“智慧水务”理念的引领下,开发移动便携式办公模式,以数据为中心,对大量数据分析处理,对水务状态实时预警,使企业工作人员能及时处理各种水务问题。在原有供水自动化、信息化系统基础上开发的综合移动办公应用程序。使用该平台能更加方便快捷的进行办公,实时交互查询相关水务信息,能大大提高工作效率。
2.2. 平台功能
针对黄山供水企业的特点,本平台主要提供水质监测、制水生产调度、故障实时报警、远程抄表、水务历史数据可视化、设备状态总览、热线报修等服务。功能架构如图1所示。

Figure 1. Functional architecture of the platform
图1. 功能架构
2.2.1. 数据分析及可视化功能模块
该模块通过对水务数据进行分析整理,以直观的方式展示出区域供水状态。水务数据有各水厂供水压力、景区各水池水位、实时与累计流量,水泵开关状态,减压阀前后压力等。在前端通过mui框架来设计展示形式,在后端利用接口来实现数据库与前端的实时数据传输。
2.2.2. 报警信息功能模块
对水务管理中各种敏感信息进行实时监控,并将它们分为模拟量与开关量,例如各水厂的供水压力、水位高低、水质优劣,供电设备的电流、电压、功率,各水泵是否故障,各仪表是否故障等等。在后端根据实际情况设置各种敏感信息的上下限,并根据实际情况及时调整上下限。实时监控敏感信息,对超过限值的敏感信息,后端发送给前端该报警信息,并将其标红,以突出展示,同时生成报警信息工单,工作人员收到该报警信息,便能根据该信息及时作出反应。该模块的设置,能让员工随时随地收到水务报警信息,能进一步保障水务系统的安全。
2.2.3. 远程抄表功能模块
该模块展示各个水厂的出口瞬时流量与累计流量,同时还可完成远程大用户水表的抄表等。通过该模块,工作人员可以实时观察各水厂流量情况,实时监测大用户流量,减少了员工山岳景区抄表的劳动强度,还能实时判断是否出现异常情况。同时,在后端也实现和报警信息模块相结合,工作人员也可在报警信息模块中接收流量和用水量的分析报警信息。
2.2.4. 水质监测功能模块
水厂出水具有严格的水质要求,国家对水厂出水有余氯、浊度、PH值等指标有严格要求。利用该模块,对源水与出厂水的水质进行实时监测并展示,展示的水质各个标准有:浊度、余氯、温度、PH值等,工作人员可按照水质标准对水厂的生产与供水进行严格把关,对指标超过阈值的情况及时反应。同时工作人员可在后台设置每个指标的相应参考值与浮动区间,结合报警信息功能,后台会对超过浮动区间的指标进行及时提醒,以警示工作人员及时处理,避免因人工疏忽导致延误异常情况的发现与处理,保障水厂出水质量。
2.2.5. 综合制水生产展示功能模块
水厂制水生产过程是整个水厂的运作核心,贯穿整个水厂的工作流程,因此保障制水生产的正常运转显得至关重要。使用该模块,可对整个制水生产过程中,水厂中各个水库的泵站、配电系统(电流电压电容等)、出厂流量、温度信息、源水流量、源水浊度等数据进行实时展示,以使工作人员能随时观察制水过程中的各种数据。同时对各个设备的模拟量和状态量进行实时展示,方便工作人员对其进行总体式检查。
2.2.6. 供水管网及供水水池位置展示模块
管网地理信息系统(geographic information system, GIS),是在计算机硬、软件系统支持下,对有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的综合技术系统。由于主要应用于供水系统的输水管线和配水管网,也被称为“供水管网地理信息系统”或“供水管网GIS” [4]。
该模块使用GIS来实现实现各类输配水管线以及附属供水设施的现场定位、关联结构确定、属性信息标识等功能。利用GIS,可以将景区供水管网及供水水池位置数据在地图上标示出来,并且可以让工作人员自由查询管网相关数据。同时,可在地图上显示景区供水水池位置以及水池的实时水位数据。
2.2.7. 历史数据展示功能模块
该模块提供展示水务历史数据,可供工作人员查询水务管理中的历史数据,方便工作人员进行数据分析。展示形式有两种,其一是利用echarts提供的图形化组件进行形象直观的展示,例如趋势折线图、饼图、直方图、柱状图等;其二是将查询数据用二维数据报表的形式展示出来。
2.2.8. 巡检报修功能模块
该模块提供给巡检工作人员使用,巡检时发现问题,可在该模块中对出现的问题进行报修,工作人员提供问题描述与照片,上传到后端数据库,同时也上报到维修部门,从而让维修人员快速反应,及时对问题点进行维修,从而保障供水安全。
2.2.9. 用水监控及预测模块
对用水大用户,在实时监测其流量的同时,根据其以往用水数据,预测其将来的三天的用水量。同时在后端设置其用水量阈值,对超过阈值的用户,可判断其是否是水管破裂,并及时停止供水,避免造成更多损失,有效减少管网漏损。
3. 平台设计
本平台基于Android设计与开发,运行在Android2.0及以上版本中。
3.1. 前端设计
前端基于C/S架构,采用APP的形式与用户进行交互。为了兼顾开发效率和产品质量,使用能够做到一次开发,多平台使用的H5 APP技术,并依赖于mui框架,打造出一个与原生APP几乎一致的应用程序。
使用mui框架,编写的界面简洁大方,基于mui.css提供的样式,通过给标签设置相应的class即可实现复杂、美观的界面,界面设计成本大大减少,通过对系统需求的分析,可设计出交互性强,可读性高的用户界面。
mui框架还提供了一套用于适配于移动应用端的mui.js,语法与jQuery十分接近,学习成本得到大幅降低,同时为移动端的js逻辑处理提供优化;mui框架还适配H5+规范,可以调用H5+api实现界面的切换等控制逻辑。
本平台APP作为一个能够展示出各项监控数据,并能辅助用户分析数据的应用,采用了echarts可视化技术,为工作人员带来各种数据图表的可视化,提高工作效率。同时,echarts技术依赖于js实现,采用H5开发使其拥有更好的契合度。
H5 APP可以和原生APP一样发布在安卓各大应用市场和APP store,降低软件安装的成本,使得服务更容易普及。
3.2. 后端设计
后端使用的框架为Spring Boot + Spring Data JPA + Sharding-jdbc。Spring Boot不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化Spring应用的整个搭建和开发过程。Spring Data JPA是Spring Data的一个子项目,通过提供基于JPA的Repository极大地减少了JPA作为数据访问方案的代码量。Sharding-jdbc是一个分库分表的框架,也开源的分布式数据库中间件解决方案组成的生态圈Sharding Sphere一员。使用上述框架可以提高开发效率并且实现分层开发,并且通过Spring的核心功能Spring Ioc与Spring Aop可以轻松实现解耦与增强。
数据库系统采用SQL server2008、与企业原有的数据库可以进行实时连接。供水企业的数据库可以进行实时传输,传递成一个数据表到系统后端数据库,在后端控制层进行不同属性不同数据格式的相关操作。
缓存中间件使用Redis。Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。通过redis对每个GET请求的返回数据进行缓存,下次请求时不用再查询数据库,直接从缓存中获取返回,尤其对于数据量大的数据库,可以明显的提高访问效率。
3.3. 前后端交互
前后端交互采用ajax方法与socket长连接两种方式。
ajax方法是一种创建交互式网页应用的网页开发技术,其核心操作是用前端请求对象进行异步数据处理,所谓异步,即通过ajax,javascript无需等待服务器的响应,而是在等待服务器响应时执行其它脚本,当响应就绪后对响应进行处理。
对于长连接而言,HTTP也可以建立长连接的,使用Connection: keep-alive,HTTP1.1默认进行持久连接。HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持。
长连接或者短连接的选择:长连接多用于操作频繁,点对点的通讯(及时通讯),而且连接数不能太多。每个TCP连接都需要三次握手,建立连接,会比较耗时。如果每个操作都要先连接,再操作的话,处理速度会降低很多。例如水厂的实时数据或者报警系统就很适合长连接。
交互流程如下图2所示:

Figure 2. Interaction between foreground and background
图2. 前后端交互
4. 系统开发与实现
4.1. 管网及供水水池位置展示
首先,申请注册成为百度开发者并申请地图API,然后在客户端代码中加入百度地图依赖并调用其API。其次,将管网数据按坐标的形式标注在API返回的地图上并绘制线段,以此来实现管网的展示,同时,为了展示景区供水水池的位置及重要参数,在管网的主要观察点加上标记,并通过socket长连接与后端建立全双工通信,从而保证关键数据的及时性。如下图3所示:
4.2. 综合制水生产数据显示
在前端界面中,用表格形式显示模拟量数据,对开关量数据以圆形指示灯形式来显示,并设置不同颜色加以区分。客户端利用上一条所说的socket长连接,不断解析返回给客户端的数据,并直接渲染在对应位置上,例如对开关量数据使用圆形指示灯显示,开关状态设置不同颜色来区分,从而实现开关量状态的显示。而具体后端为了实现即时数据的快速返回,使用了高性能的缓存中间件Redis,使用其Hash结构(即类似
>的形式),定时任务通过每2秒定时获取一次数据库的数据,分析之后更新redis中缓存并等待socket下一次推送,客户端渲染如下
图4、
图5所示。
4.3. 报警信息显示
因为系统数据库中的数据都是由odbc不断转存的,所以对敏感数据所在数据库,在每次odbc导入数据时设置insert语句的触发器,如果关键字段出现异常,则将该条数据再存入到另一张异常表中,后端服务器也会通过定时任务不断检查异常表,如果获取到异常数据则会进行分析,并包装成对象,通过socket长连接发送到客户端,客户端再根据提前订好的约定进行解析与渲染,若是模拟量超限,则标红突出显示该模拟量,若是开关量超限,则将该开关量的报警灯标红。同时,对报警信息进行弹窗提醒,以及时检查相关设备,保障供水安全。如下图6、图7所示。

Figure 4. Simulation quantity of water production
图4. 制水生产模拟量

Figure 5. Switch quantity of water production
图5. 制水生产开关量
4.4. 历史数据的显示
在客户端加入查询功能,工作人员选择所要查询的历史时间段、地点、阈值等多个可选条件,然后将查询对象封装成请求体提交给后端,当请求经过后端的拦截器时,如果缓存中有对应请求的缓存则直接返回数据,否则在请求到达controller层后,再逐层向下调用,最后持久层框架会根据请求条件动态生成SQL到数据库执行查询,并将查询结果存入其一级或者二级缓存,并包装成PO对象返回给controller层,再返回给服务器(例如tomcat),服务器再将其解析成ServletRespone对象。
在前端界面中同样采用两种方法来展示数据,其一是利用echarts提供的可视化组件将数据以各种图形样式展示,如折线图、直方图、饼状图等,也可根据需要修改图形样式,来改变图形坐标的属性或数据的单位与跨度等等。将后端传来的数据填入事先设计好的图形样式即可;其二是采用二维数据报表的形式来展示,在前端将后端传来的表的所有属性加入表头,数据部分则以列表形式加入表单,从而完成原始数据展示。
在后端数据库中,将实时数据表中的数据同步传递到历史数据表,并对历史数据表进行了大量优化,因为历史数据几秒钟就有一条,一天会有上万条数据,而当数据超过百万级别就会响应变慢,我们的不仅通过多层缓存,包括表现层的缓存、持久层的缓存还有数据库的本身的缓存,还对数据库本身进行大量优化。在索引的建立上,通过对常用搜索字段例如时间、地点等建立联合索引来提高查询速度,同时也对数据库进行了垂直分表,即将水厂历史表中较大并且不常用的字段拆分到另外一张表,然后通过外键将拆出来的表关联起来,还有非常关键的水平分库与分表,这个现在比较常用的做法是mycat中间件或者sharding-jdbc,而我们使用的是后者,因为mycat只可以水平分库不可以水平分表,同时sharding-jdbc是一个java框架,提供了更高的灵活性,我们在水厂历史数据量不断变大的时候,再建立一个新的数据库或者表,然后修改配置文件,就可以让sharding-jdbc帮我们路由到不同的表中。在经过上述一系列优化之后,后端可以达到大数据量的低延时响应。
如下图8所示:显示13号水池水位的2020年1月16日晚8点14分至17日晚8点14分的历史数据。
5. 结束语
智慧水务行业的起步相较于IT行业来说起步较晚,同时也在一定程度上依赖于IT行业的发展,未来进入“DT (Data Technology)”时代后,智慧水务也将有更大的发展前景。水务移动办公平台对于企业来说有着至关重要的意义,第一,移动办公平台能显著提高水务企业的办公效率,水务企业不光要服务社会,企业绩效也是可持续发展中重要的一环,国家对此也十分重视,在“十三五”重大专项里提到的海绵城市、农村水环境治理、城市黑臭水体治理、地下水修复、工业零排放等细分子行业都在“水十条”及相关规划政策中被重点提及。第三,移动办公平台能提高企业对于突发情况的反应速度与处理效率,传统水务企业不能做到精确定位故障位置与故障问题,通过移动办公平台后端大数据分析,能显著提高检修能力与预判故障的能力 [5]。第三,移动办公平台的应用能促进水务行业在信息化水平方面的提高。虽然水务行业也在可持续发展,但与其他成熟行业相比,发展水平仍然较低,水务行业与IT行业相结合,开发移动办公平台,将使得水务行业的信息化水平更进一步提高。
本文讲述了基于Android平台的黄山风景区智能水务移动办公平台的研究与开发,目的在于通过该平台实现对黄山风景区的水务系统进行智能化管理,并实现移动办公,显著提升企业的水务系统管理效率,降低工作人员的劳动强度,使其能更加快捷方便的完成工作。同时,该平台的开发,也在一定程度上解决了黄山风景区供水企业所面临的如下问题:1) 信息流转不通畅;2) 信息整合不完整。3) 信息化管理水平较差。
在平台设计过程各种,平台界面的设计风格采用了简约整洁的样式,与水务管理的特点相契合,同时注重用户体验,从提高工作人员效率的角度出发,设计的交互方法简单高效,所设计的平台功能也较完备。本文所述的开发方法,对类似移动办公平台的研究与开发具有一定的参考价值。
基金项目
合肥工业大学2019年校级大学生创新创业训练计划项目赞助(项目编号:X201910359638)。