一种在弱网环境下工作的车辆进出记录***
技术领域
本发明涉及车辆进出记录***领域,具体为一种在弱网环境下工作的车辆进出记录***。
背景技术
一般的车辆进出记录***,需要将图片以及相关信息上传至服务器成功后再进行票据的打印,这样在弱网、无网络、网络阻塞等情况下是无法正常打印票据,导致一些场景比如工地的车辆流水无法联网记录。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种在弱网环境下工作的车辆进出记录***,解决了现有的车辆金属记录***在弱网、无网络、网络阻塞等情况下无法正常打印票据,导致一些场景比如工地的车辆流水无法联网记录的问题。
(二)技术方案
为实现以上目的,本发明通过以下技术方案予以实现:一种在弱网环境下工作的车辆进出记录***,包括以下步骤,
(1)获取管理员基本资料,登录车辆进入记录***软件后根据管理员ID和token号从后台获取管理员的基本资料,以文件的方式存储到本地,将管理员的ID设置为文件夹名称,管理员的名字为管理员的文件名称;
(2)选择工地界面,先判断管理员是否登录,当管理员登录后用管理员ID到内存中的离线数据Map中进行匹配,用该管理员的ID取出该管理员的json格式的基础数据,通过解析json获取到该管理员信息,罗列出工地界面上的所有的工地信息让管理员选择对应的工地进行操作,然后到管理员操作界面并且记录工地ID和管理员ID;
(3)管理员操作界面,根据工地ID查找出对应工地的工地信息,显示工地名称,打印机连接检测,进入管理界面后根据管理员ID和0查询本地数据库车辆流水表中的未上传数据并且在界面展示出来,界面有已上传和未上传两个标签按钮,根据标签按钮的状态和工地ID查询本地数据库的车辆流水表,列出已上传和未上传的电子数据并且缓存到本页面默认查询未上传服务器数据,离开页面清除缓存;
(4)扫描车牌,在管理员操作界面点击扫描车牌按钮进入车牌识别界面,通过手机摄像头不断抓取车牌图片进行OCR图片解析,解析成功返回图片路径和车牌号码进入出场界面,解析成功的图片保留在本地文件中并且传递到出场界面,保存原图片和一张以车牌号为中心的裁剪图片;
(5)车辆放行界面,根据传递来的两张图片地址,通过地址找到图片,通过文件流把图片写入内存,再通过手机渲染出来,显示以车牌为中心的图片给用户比对车牌是否正确;
(6)填写基本信息,根据工地ID从基础数据中取出土类型、渣土场、方量和车队数据类型集合;
(7)数据效验,生成单号后点击放行按钮时检测所有填写的数据类型是否合理;
(8)存入数据库,如果本地没有数据库则创建数据库,创建车辆流水表,向流水表中***一条数据,如果本地创建了数据库直接***一条数据,创建一个流水表映射对象,把所有的校检过的值赋值给流水表对象,把原图转换成Base64数据存入到数据库中;
(9)打印,数据入库后调用打印方法把数据对象通过蓝牙传输到打印机进行打印。
优选的,所述文件夹存储时根据管理员ID判断本地是否有这个文件夹,如果有就删除,然后再根据管理员ID和名称创建文件,把基础信息通过文件流的写入的方式写入到文件中。
优选的,所述文件夹存储时在重文件中读取出所有的工地管理员数据用map的方式保存在内存中,管理员ID为键,管理员信息为值进行缓存到内存中。
优选的,所述管理员基本信息包括该管理员下的所有工地信息,工地信息包括工地配置、价格配置、土类型、车队和渣土场等配置信息。
优选的,所述打印机连接打印前应先判断蓝牙对象是否存在,如果蓝牙对象存在就发送一个查询纸张的命令给打印机,返回101就是连接失败或者缺少纸张,界面则显示打印机没有连接,点击未连接则跳转到连接蓝牙界面,如果不是101则显示已连接,如果对象不存在,就需要管理员点击连接打印机,跳转到蓝牙连接界面进行连接,连接成功后返回。
优选的,所述管理界面中0代表未同步的车辆流水数据,1代表已同步数据。
优选的,所述基本信息包括车牌号、工地名称、土方单位、放行人、车斗大小、土类型、倒土方式、指定渣土场、车队、电子联单、价格、入场时间和出场时间。
优选的,所述基本信息中自动填写的包括车牌号、工地名称、土方单位、放行人、入场时间和出场时间,基本信息中下拉选择填写和手动输入的内容包括车斗大小、土类型、指定渣土场和车队,点击对应的输入框则会弹出对应的数据类型集合。
优选的,所述倒土方式分为自倒和指定渣土场,其中默认为指定渣土场。
优选的,所述打印程序进行前发送一条检测数据给打印机判断是否与打印机正常连接。
(三)有益效果
本发明提供了一种在弱网环境下工作的车辆进出记录***。具备以下有益效果:
该在弱网环境下工作的车辆进出记录***,通过离线缓存技术,摆脱了对网络环境的依赖,即使在无网络情况下也一样可以正常记录并打印票据,取得了新的突破。
附图说明
图1为本发明离线订单打印流程图;
图2为本发明车牌扫描流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-2,本发明提供一种技术方案:一种在弱网环境下工作的车辆进出记录***,包括以下步骤,
S10:获取管理员基本资料
下载好易建app登录之后,会根据管理员ID和token号从后台获取管理员的基本资料以文件的方式存储到本地,管理员的ID为文件夹名称,管理员名字为管理员的文件名称,存储时会根据管理员ID判断本地是否有这个文件夹,如果有就删除,然后在根据管理员ID和名称创建文件,把基础信息通过文件流的写入写入到文件中。在重文件中读取出所有的工地管理员数据用map的方式保存在内存中,管理员ID为键,管理员信息为值进行缓存到内存中,管理员基本信息包括,该管理员下的所有工地信息工地信息包括工地配置、价格配置、土类型、车队、渣土场等配置信息。
(例如:张三为工地管理员,张三登录我们app后,会像服务器请求张三的基础信息,如张三是3个工地的管理员工地A、工地B、工地C,他就会得到这三个工地的所有信息以文件的方式存储到本地)
S20:选择工地界面
先判断管理员是否登录了,如果登录了就用管理员ID到内存中的离线数据Map中进行匹配,匹配到了则用该管理员的ID取出该管理员的json格式的基础数据,然后通过解析json获取到所管理员信息,工地界面就是罗列出所有的工地信息让管理员选择对应的工地进行操作。然后到管理员操作界面,并且记录工地ID和管理员ID。
(例如:张三有A、B、C三个工地,界面会罗列出A、B、C三个工地,让张三根据实际情况选择需要上班的工地,选择对应工地会进入工地信息界面并且把工地ID和用户ID记录下来。进入到工地信息界面)
S30:管理员操作界面(打印机连接检测,扫描车牌,车辆放行流水)
根据工地ID查找出对应工地的工地信息,显示工地名称,打印机连接检测,先判断蓝牙对象是否存在,如果蓝牙对象存在就发送一个查询纸张的命令给打印机,返回101就是连接失败或者缺少纸张,界面则显示打印机没有连接,点击未连接则跳转到连接蓝牙界面。若果不是101则显示已连接,如果对象不存在,就需要管理员点击连接打印机,跳转到蓝牙连接界面进行连接,连接成功回返回(蓝牙打印机连接流程S70)。进入管理界面就会根据管理员ID和0(0代表未同步的车辆流水数据,1代表已同步数据)查询本地数据库车辆流水表未上传数据并且在界面展示出来,界面有已上传和未上传两个标签按钮,根据标签按钮的状态和工地ID查询本地数据库的车辆流水表,列出已上传和未上传的电子数据并且缓存到本页面默认查询未上传服务器数据,每天数据可以看到(车牌号,出场时间和车斗大小)离开页面清除缓存。
(例如:小张选择工地A进入工地管理页面,根据小张的工地ID进行本地数据库车辆流水表的查询(例如小张放行了10次,有5次的记录与服务器同步了,有5次是没有与服务器同步的数据根据标签就能查看相应的数据)
S40:扫描车牌
点击扫描车牌按钮进行车牌识别界面,通过手机摄像头不断抓取车牌图片进行OCR图片解析,解析成功返回图片路径和车牌号码进入出场界面,解析成功的图片会保留在本地文件中并且传递到出场界面。保存原图片和一张以车牌号为中心的裁剪图片。
(例如:小张想放行一辆泥头车车牌是粤Bu3918,点击扫描车牌按钮跳转到车牌识别界面,摄像头不停的抓取图像进行ocr图像解析,解析成功关闭识别页面进入车辆放行界面,原图片是采集的图片地址,在原图片上把车牌图片裁剪出来生成一张新的图片)
S50:车辆放行界面
S100:显示车牌图片
根据传递来的两张图片地址,通过地址找到图片通过文件流把图片写入内存在通过手机渲染出来,显示以车牌为中心的那种图片给用户比对车牌是否正确。
S200:填写基本信息
根据工地ID从基础数据中取出土类型、渣土场、方量、车队数据类型集合。
基本信息包括:车牌号、工地名称、土方单位、放行人、车斗大小、土类型、倒土方式、指定渣土场、车队、电子联单、价格、入场时间、出场时间。
自动填写的有车牌号(车牌识别传递过来的)、工地名称、土方单位、放心人(工地基础信息就有的数据不能更改)、入场时间、出场时间是进入页面的***时间不能更改。下拉选择填写和手动输入:车斗大小、土类型、指定渣土场、车队、点击对应的输入框则会弹出对应的数据类型集合。
(比如说:小张的车斗大小配置了12斗,16斗,20斗,40斗,手动输入,在点击输入框就会显示12,14,20,40的列表给管理员选择,管理员选择了对应的斗数输入框则显示相应的斗数并且计算价格,如果现在手动输入,则由管理员自己填写,土类型、指定渣土场、车队雷同)
倒土方式和电子联单有两个选择。
倒土方式分为自倒和指定渣土场(默认是指定渣土场)。当点击自倒的时候,指定渣土场输入框则隐藏起来同时记录倒土方式状态并且计算价格。当选择指定渣土场,指定渣土场输入框则显示出来倒土方式状态并且计算价格。
价格计算:根据车斗大小、土类型和倒土方式和指定渣土场进行价格计算。价格可修改。
(例如:小张的价格表有两个价格配置一个是车斗方量20m3、土类型是A类土、价格是400一车,一个是车斗方量20m3、渣土场是B渣土场、价格是800一车,放行时如果小张选择的倒土方式是指定渣土场,车斗是20立方,土类型是A类土,渣土场是B渣土场,那价格一栏填充的就是800元一车,如果小张选择的倒土方式选择的是自倒则价格就是400一车,由于价格可能发生变化,所以价格是可以更改的)
S300:数据效验
生成单号:单号是我们***本地生成,用户不能修改,单号也是唯一的,离线订单号是一个23位的字符串,组成规则是LXD+4位工地ID(不足补0)+4位工地管理员ID(不足往前补0)+年份+月日时分秒。
(例如:小张在工地ID为11的工地上班,小张的id为22是在2018年11月11号22时22分22秒放行的,那单号就是LXD00110022181111222222)
点击放行按钮时会检测所有填写的数据类型是否合理,不合理则会弹出对应的提示,并且不能放行,这是验证数据的有效性和完整性。
(车牌、车斗大小、土类型、判断倒土方式如果是指定渣土场则判断指定渣土场输入框、价格这些输入框都不能为空,车斗大小和价格只能输入数字)
S400:存入数据库
如果本地没有数据库则创建数据库创建车辆流水表,像流水表中***一条数据,创建了直接***一条数据。
创建一个流水表映射对象,把所有的校检过的值赋值给流水表对象。把原图通过转换成Base64数据存入到数据库中,同步状态为未同步。
(例如:小张通过数据效验,会把车牌,车牌解析原图、管理员ID、车斗大小、渣土类型、倒入方式、渣土场、出场时间、入场时间、工地名称、工地ID、放行人名称、价格、订单号这些都***数据库)
S500打印:
数据入库后则调用打印方法把数据对象通过蓝牙传输到打印机进行打印。
在进行电子数据打印,打印电子数据前会发送一条检测数据给打印机判断是否与打印机正常连接,如果未连接打印机跳转打印机连接界面,进行连接并发送电子数据给打印机进行打印立即打印,如果已连接打印机则立即发送电子数据给打印机即可打印。打印二维码内容为我们后台服务接口地址加上订单号,数据需要上传才能扫描二维码查看到。
S60:上传数据
进入app,会调用***检测网络的函数会返回网络结果,有4G和wifi还有未上传数据时会,会有提示弹窗,你有会同步的数据,点击确定就会进入数据同步界面,根据管理员的ID进行本地数据库查询列出这个管理员的所有未上传数据,然后直接上传,队列上传先取出图片数据上传得到图片在服务器存储的地址,修改本地数据,把图片地址填入,在上传流水数据,成功失败都上传下一条,图片和数据都上传成功时表示这条数据已经上传完成,不然这条数据得重新上传,(比如说,图片成功了,数据不成功,下次上传这条数据时会判断图片地址是否为空,如果图片地址有了就直接上传数据。如果图片地址不为空,则上传图片数据在上传数据)。有时可能因为堵塞或者其他原因导致失败,可以点击上传按钮继续上传,图片和数据都成功了会修改本地数据库同步成功字段状态。确保下次不重复上传。
(例如:小张有4条未上传数据,上传时弟1条成功了,第2条图片没有成功,数据成功了,弟4条数据成功了,图片没有成功,第3是图片数据都失败了,在点击上传按钮时,第一条不会上传,第二条会上传图片,第4天会上传数据、第3条什么都会上传)
S70:连接打印机流程
进入连接打印机页面,进入页面检测蓝牙是否开启,未开启则弹出开启弹出,开启则列出所有的打印机,点击对应的打印机进行连接,如果配对过则不需要输入配对码,没有配对则进行配对,配对码一般为0000或1234。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下。由语句“包括一个......限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素”。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。