APP下载

加油站征稽规费数据采集系统的开发应用

2019-07-05赵英明

山东化工 2019年12期
关键词:线程液位加油站

赵英明

(中国石化销售股份有限公司海南石油分公司,海南 海口 570311 )

海南省自1994年1月1日起,在全国率先实行了公路规费征收模式改革,将公路养路费、过桥费、过路费和公路运输管理费即四费合一为燃油附加费,并统一在燃油销售环节价外征收,全省高速公路、国道、省道无一收费站。成立了交通规费征稽局,从事燃油附加费的征缴工作。汽油车的交通征稽规费交由油品销售企业代征,加油站销售的每一升汽油约含1.2元的交通规费。征稽部门为了防止加油站私自进油销售,采取了诸多措施,一是在加油站的卸油口安装流量计,用于累计卸油数量,加油机安装了铅封,防止篡改数据,每月定时派人到加油站盘点,检查是否帐实一致;二是要求加油站每月登记每一次卸油流量计的读数,月底制作每个汽油罐的购销存报表,送到当地征稽部门。加油站需要安装价格不菲的流量计设备,不同品号的汽油在卸油时均需通过流量计,增加了罐区管道复杂度和卸油时间,而且增大了混油的风险;另外需要人工登记卸油数据及流量计数据、制作账册,每月还要准时打印报送。

2018年随着销售企业加油站液位仪系统的实施,海南省征稽局也全面提升加油站交通规费征收监管系统,开发部署了数据接口系统,供各个油品销售企业进行数据接入,接入后征稽管理部门可以远程监控加油站的购销存情况,加油站不需要安装卸油流量计,不需要登记数据和报送报表,征稽局人员也不需要到加油站现场盘点。因此,开发实施征稽局数据采集系统,实现征稽数据提交自动化具有较大的意义。

1 系统分析及软件方案制定和开发

1.1 硬件方面分析

数据采集系统需要读取液位仪设备,通过公司广域光纤网络将加油站的液位仪数据抽取到省中心服务器。有三种方案可供选择,一是在加油站税控电脑上安装代理程序,代理程序读取液位仪数据,向省中心服务器发送,用于省中心服务器不能直接访问液位仪设备的情景;二是在各站的液位仪设备上安装数据采集设备,采集数据向省中心服务器发送,海南中石油加油站普遍采用这种方案;三是省中心服务器直接访问加油站的液位仪设备,集中发起读取请求,获取数据。

三种方案各有优劣。方案一的优点是数据传送稳定、不受加油站防火墙策略调整的影响,即使省中心服务器不能访问液位仪设备,也可以获取到数据,缺点是需要液位仪支持网口,需要保持代理程序24小时不间断运行。方案二的优点是支持液位仪设备网口和串口,不需要改造串口液位仪设备,缺点是增加设备投入和现场实施难度,故障点增多。方案三的优点是获取数据速度快,实施成本低,故障点少,缺点是对液位仪设备要求较高,不仅要支持网口,还要支持路由功能。综合各加油站的网络和设备情况,接口系统采取第三种方案为主,第一种方案为辅的策略。

1.2 软件方面分析

根据海南省征稽局加油站数据接口规范,需要传送的数据有日盘点报告、油罐报告、实时销售数据、实时库存数据、实时收油数据、移入移出库数据、回罐数据等,其中实时库存数据要求每3分钟上传一次油罐的液位、密度等情况。

从接口规范对数据的要求来看,需要传送一整套的进销存数据,数据前后要有衔接,进销存数据要保持平衡,需要进销存系统的支持。如果要开发独立的进销存系统,开发、维护成本将大幅度提高,而且形成数据孤岛。因此借助现有系统是比较合理的选择,可大大减少建设成本,可选择的进销存系统有加油卡管控系统、中控系统、零管系统。其中零管系统数据与ERP系统直接对接,数据更加可靠,而且零管系统的开放性更好,数据组织更加合理,接入难度也较其他系统要小。缺点是数据要滞后1天,但能满足接口数据的要求。

接口规范要求实时库存数在短时间内(少于2分钟)把所有加油站的液位信息发送到征稽局,实时性要求较高,存在不小的难度。一方面需要在硬件方面加大投入,至少需要8核以上,内存8GB以上的服务器,软件方面要考虑多线程、队列、缓存等多种技术组合。系统设计架构图见图1。

图1 系统设计架构图

1.3 开发语言、技术架构选择

考虑到系统并发量大,实时传送要求较高,此项目选择java作为开发语言,java在分布式计算、web应用开发方面具有较大的优势,为查询、操作、维护的便捷,采用B/S架构,采用了轻量级集成框架SSH即struts+spring+hibernate,SSH架构图见图2。SSH是java中一种流行的JAVA WEB 应用程序开源框架,Struts负责web层,也就是显示层,负责显示加油站油罐液位动态图表、数据传送状态、历史数据查询、数据管理等界面, Spring负责业务层管理,即Service,其为Action提供统一的调用接口,封装持久层的DAO,并集成Hibernate,是实现业务的核心,在业务层,系统从零管系统抽取购销存数据,从液位仪设备读取油罐液位信息,经过数据清理加工,形成最终形态,调用Hibernate组件持久保存到数据库,在规定时间读取数据库数据,调用接口将数据发送到征稽局。Hibernate负责持久层,完成数据库的CRUD操作。

图2 SSH架构图

1.4 管理界面的技术选择

一个重要的功能页面是展现所有加油站的数据抽取和传输状态,及时掌握系统运行状况。然而数据的抽取是在后台业务层进行的,如果采用静态的HTML或者传统的JSP页面,仅能展现历史数据,不能实时动态地显示抽数和发送状态,达不到实时监控的效果。如果能将后台状态通过不同图标、进度条展现在前台,将极大增加界面友好性,对系统的管理也更加有效。系统使用DWR组件的ScriptSession功能,在每个站的取数或者传输周期完成后,生成消息事件,将数据从后台往web页面前台推送,更新页面上该站(每站占一行)的相关数据,实现网页的无刷新更新数据,达到C/S架构的效果,管理界面效果图见图3。

图3 管理界面效果图

图4 实时油罐液位图

1.5 与零管系统的接口技术选择

零管系统使用的是sap公司的技术,后端使用ABAP语言开发各个功能模块,前台使用EP技术开发站级系统的WEB管理页面,通过RFC技术调用后端的功能函数,实现数据的录入、查询、修改等操作。Sap为JAVA提供了RFC库及SAP连接器(Jco),这些类库中的RFC API封闭了外部系统和SAP的连接细节。本系统使用了 64位的JCO连接零管系统功能函数,提取站点信息、员工信息、分罐保管账、购进、回灌等数据,保存在本地的临时数据库,供进一步的筛选、整理和传输。

1.6 实时库存传输方案选择

接口规范要求每3分钟上传一次加油站油罐的液位、密度等信息,实时油罐液位图见图4。要在如此短的时间内完成所有加油站液位数据的读取和传送,无法使用简单的轮询方式,必须要应用多线程、多任务和异步执行等技术。但由于网络、设备等原因,单站数据读取和发送可能会超时,甚至超过3分钟后才读到数据,显然会干扰到下一次的传送任务,因此必须考虑同一任务周期中所有线程的同步问题和过期数据的处理问题。

有2个方案可供选择:

一是多线程技术。使用Executors.newSingleThreadScheduledExecutor定时启动任务(每隔3分钟),设定超时时间(2分钟)。在每一次任务中,对每一个站的液位仪数据读取和数据发送开启一个独立的线程,每个线程保存本次任务ID,如果线程在2分钟内完成数据的读取和发送,线程自然结束,如果线程超过3分钟仍在运行,Executors触发超时处理函数,将这类线程标注为超时,并向前台发送,更新前台状态。当超时的线程完成数据读取,任务处理函数比较该线程的任务ID,识别出过期的线程后将其忽略。这个方案的优点是逻辑清晰、易于维护,开发难度小,缺点是开启线程太多,占用内存高,降低了系统的运行效率,容易造成内存泄漏,可使用线程池技术缓解内存压力。这是此系统采用的方案。

二是队列排队技术。在系统启动时开启若干个线程(一般与CPU核数一致),这些线程不断地POP出全局队列中的加油站ID,抽取液位仪数据并调用接口发送,如果队列为空,处理线程进入休眠状态。同样使用Executors.newSingleThreadScheduledExecutor定时启动任务(每隔3分钟),设定超时时间(2分钟)。每次任务将重新初始化队列,将所有加油站ID号PUSH到队列中,并唤醒处理线程。当任务超时后,超时处理函数将全局队列中还未处理的加油站ID全部置为超时,并向前台发送,更新前台状态。此方案的优点是开启线程少,占用资源少,执行效率更高,缺点是如果所有线程被堵塞会造成后面的站点无法传送数据,且设计复杂,实现较为困难,不易维护。

1.7 接口开发技术选择

征稽局的接口规范通过http协议构筑的安全通道,采用RestFul 的WebServices接口。考虑到传输性能问题,采用java基础的HttpURLConnection技术实现,其比开源httpclient技术要高出好几倍的速度。虽然系统的传输接口较多(共15个),但由于各个传输接口高度相似,具有相同的IP、返回值格式、调用令牌、同样的增删改功能等,因此抽象出基类和接口方法,各个传输接口通过继承基类和实现接口方法,实现代码复用,减少重复代码量,同时接口程序可读性更好。

2 系统功能设计

设计一套完整的解决方案,能够在今后的维护中快速发现和处理问题,及时了解系统的运行状况,是信息系统健壮性和稳定性的基本要求。征稽局数据监管接口系统涵盖了数据传输监控、外接系统数据管理、中间数据管理、接口数据管理、日志管理等多个功能,系统主菜单见图5。

(1)传输管理。传输管理实现三个管理功能,一是传输状态的实时监控,每次的传输任务发起时所有站处于初始状态,随着后台取数和传输状态的改变,更新图标(如完成、错误、超时等),另外以图标方式展现加油站的油罐液位情况;二是单站传输管理,暂停/恢复加油站的数据读取或传输;三是任务的手动管理,任务默认在系统启动时就已经启动,可暂停/恢复任务或者重新启动任务。

(2)外接系统数据管理。系统默认在固定的时间抽取零管的数据,包括加油站基础数据和每天的业务数据等,业务数据经过筛选加工,发送到征稽局服务器。在此可以手动发起抽数,查询抽取的数据。

(3)中间数据管理。保存从零管系统、液位仪设备读取并加工过的数据,能满足接口数据的需要,其中从零管系统抽取的分罐保管帐、销售数据、库存数据、收油数据、移入移出库数据、回罐等数据等均可进一步编辑修改再向征稽局服务器发送。

(4)接口数据管理。此功能可以远程访问征稽局接口服务器,查询已经传输成功的数据,并可以修改、删除。

(5)日志管理。涵盖登录日志、传输日志、液位仪取数日志、外接系统数据抽取日志、任务执行日志等,提供统计分析图表如液位仪取数失败统计、数据发送失败统计等。

图5 系统主菜单

3 系统实施后的效果及产生的效益分析

征稽局数据监管数据采集系统上线后,表现相当稳定,除了个别网络问题和液位仪设备问题,传输率基本达到90%以上,传输速度在1分钟之内,达到征稽局数据监管要求。得益于前期良好的系统规划、各项技术的正确选择以及开发过程中的程序优化。项目的实施费用也得到很好的控制,由于采用直连液位仪方案,节省设备投入和现场实施费用,采用外接进销存系统,节省开发费用,达到小投入大收益的目的。

系统投入使用后,新改造的站点不再安装卸油流量计,每站可节省2~3万元的费用,以300站估算,至少节约设备购置安装费用700万以上。另外加油站防渗改造完成后,液位仪系统与数据采集系统通讯连接成功,省征稽局系统接收到加油站数据,加油站即可投入运营,不需要当地征稽部门检查验收,大大节省了了油站改造后的投营时间,同时不需要再人工统计数据和报送报表,以每站每月50元的交通费计算,每年节约交通费约18万元。

4 结论

征稽局数据采集系统上线是政府监管部门与企业信息化系统集成的新尝试,也是利用信息技术提升政府监管水平,为企业减负的典型案例。一方面大大减轻了政府部门的数据采集工作量,提高数据采集效率,为减少基层征稽人员奠定了基础;另一方面通过面向加油站经营管理的全过程实时数据采集,实现了对加油站卸油、销售、油罐库存等系统的数据集成,既满足了企业和政府的监管需要,也减少了企业设备和人力投入。该系统在提高工作效率,降低一线劳动力,增加经济效益,系统整合优化,日常监控分析等方面均显现出很大的优越性,促进了政府监管部门和企业信息化的融合。

猜你喜欢

线程液位加油站
国外储罐防溢油液位的设置
基于C#线程实验探究
周末加油站
周末加油站(Ⅲ)
基于国产化环境的线程池模型研究与实现
线程池调度对服务器性能影响的研究*
加油站
超级加油站
宝马530车冷却液液位过低报警
霍尼韦尔 导波雷达液位变送器Smart Line^ 系列