掌桥专利:专业的专利平台
掌桥专利
首页

一种高速铁路牵引变电所工作票打印方法

文献发布时间:2023-06-19 16:06:26



技术领域

本发明涉及国家铁路及城市轨道交通牵引供电信息化技术领域,尤其涉及一种高速铁路牵引变电所工作票打印方法。

背景技术

随着高速铁路的快速发展,根据运营品质的需求,对铁路牵引供电设备的安全运行和检修提出了更高要求。变电所工作票是牵引变电所内设备检修作业的书面依据,变电所值班员根据工作票批准许可作业手续,并做好安全措施。因此在铁路供电信息化系统的推广运用中,高速铁路变电所牵引工作票系统是推广运用的重点,是保障牵引变电所设备的安全运行和检修的主要手段。

工作票系统中,由发票人录入工作票,经过若干层级人员审核后,由系统在工作票上添加签章。作业班组人员下载工作票,系统按照工作票内容生成Excel文件。作业人员打印下载的Excel文件,1份交由工作领导人签字、1份交由变电所值班员签字。

下载工作票Excel文件到用户本地,再离线打印的这种模式,有以下弊端:工作票存在被私自修改的风险,无法保证牵引变电所工作票的数据安全性;由于工作票格式的复杂性,工作票系统依据不同格式的工作票,单独编码生成Excel文件,如果工作票的格式发生调整,离线打印方式会增加编码工作、导致效率低下,基于上述问题,亟需一种安全、高效的高速铁路牵引变电所工作票的打印方法,解决现有工作票打印的问题,便于工作票系统的推广使用。

发明内容

本发明的目的在于提供一种高速铁路牵引变电所工作票打印方法,以解决现有技术中的上述不足之处。

为了实现上述目的,本发明采用了如下技术方案:一种高速铁路牵引变电所工作票打印方法,包括以下步骤:

S1:用户在模板管理平台新建业务数据Excel打印模板并进行上传;

S2:模板管理后台解析上传的Excel打印模板文件并保存模板表中;

S3:用户选择打印的工作票ID以及工作票模板ID作为参数GET请求打印服务平台进行打印服务数据聚合;

S4:前台调用打印后台服务,返回打印对象G,把打印对象G输入给打印组件,打印组件采用Canvas绘制打印内容完成工作票页面的绘制。

作为上述技术方案的进一步描述:

所述步骤S1中新建业务数据Excel打印模板并进行上传具体为:

S1.1:开发人员针对工作票的业务数据编码,新建Excel文件制作模板,在对应的Excel单元格内填入业务数据编码,所有单元格填入完成后保存文件;

S1.2:点击模板管理的“新增”按钮,在弹出的窗体中填入模板名称、业务数据编码、业务数据API、选择要上传的模板文件,点击“保存”按钮,将请求发送至模板管理后台上传服务。

作为上述技术方案的进一步描述:

所述步骤S2中解析上传的Excel打印模板文件并保存模板表中具体包括以下步骤:

S2.1:模板管理后台上传接口收到模板上传请求后,解析模板文件,计算出每个单元格的坐标、行高、列宽、字体、线框、填充颜色、对齐方式、业务属性编码,得到单元格集合G则为打印对象,打印对象G经过转换变成JSON字符串F;

S2.2:通过文件服务器上传模板文件,并返回文件ID,把文件ID、模板信息、打印对象F存入模板表中。

作为上述技术方案的进一步描述:

所述步骤S2还包括将文件ID、模板信息、打印对象F存入模板表中后向模板管理平台发送“上传成功”反馈信息。

作为上述技术方案的进一步描述:

所述步骤S3中打印服务平台进行打印服务数据聚合具体包括以下步骤:

S3.1:依据模板ID调用模板管理后台查询到模板信息,模板信息包括打印对象JSON,业务API;

S3.2:GET请求调用业务API,业务数据ID作为参数传入,业务API返回键值对对象S;

S3.3:打印对象JSON转换成打印对象集合G;

S3.4:遍历对象G,得到单个对象M,如果遍历结束,则返回G,如果遍历未结束,则进入步骤S3.5;

S3.5:M的业务属性编码匹配S的键,如果匹配不成功,则进入步骤S3.4;如果匹配成功,则取出S的值赋值到M内容属性中,继续步骤S3.4。

作为上述技术方案的进一步描述:

所述步骤S4中工作票页面的绘制具体包括以下步骤:

S4.1:从打印对象G中获取坐标的绘制范围;

S4.2:获取A4纸张相关参数,取得打印对象G的列宽和行高乘以单元格数量,作为打印内容的宽高;

S4.3:根据G列头和行头的坐标,封装为按钮类,划定鼠标事件捕捉范围,存入数组B,鼠标在Canvas中触发点击长按事件时,通过鼠标点击坐标遍历数组B内坐标,匹配到相应的列头或者行头,移动鼠标并存放行高或列宽的偏移量,放开鼠标按键后,Canvas根据偏移量重新绘制整个页面,得到新的打印页面;

S4.4:循环遍历G,使用fillText绘制单元格内的文字,使用lineTo绘制线框,循环绘制完成后,即完成工作票页面的绘制。

作为上述技术方案的进一步描述:

所述步骤S4.3中Canvas根据偏移量重新绘制整个页面具体为:在绘制列头和行头时把这些坐标放入一个数组中,鼠标在画布上移动点击时,根据点击发生的位置判断是否在某一个列头或者行头中,然后在数组中更改该列头或者行头的Width、Height信息,调用Canvas刷新绘制的方法,进行重新绘制。

作为上述技术方案的进一步描述:

所述步骤S4中工作票页面的绘制还包括套打工作票,其具体为:通过打印对象G的背景图片设置,能给绘制场景中加入一张背景图片,打印对象G会把单元格绘制于背景图片之上,再调整打印对象G列头以及行头以适应背景,可以很好的预览和匹配工作票的印刷体纸张,点击打印,重新绘制打印对象G,并屏蔽单元格线框样式以及背景图片,得到套打工作票内容,即可进行套打。

作为上述技术方案的进一步描述:

所述步骤S4中工作票页面的绘制还包括分页位置匹配,其具体为:分页位置参考线根据A4的纸张比例,从步骤S4.2中的打印宽度与A4纸张的宽度的对比中获得系数,计算出每次分页所在的位置的字体缩放、线框的线条宽度。

本发明提供了一种高速铁路牵引变电所工作票打印方法。具备以下有益效果:

(1):该高速铁路牵引变电所工作票打印方法基于模板的前台在线打印形成了一套完整的系统性的打印方法,实现了高速铁路牵引变电所工作票打印,为工作票管理系统推广运用提供了强有力的技术支撑,且对所有打印模板进行了统一管理,用户可灵活配置工作票Excel打印模板,用户可在Excel模板单元格中填入业务属性,所有填入完成后上传打印模板,这种模板管理的方式,极大降低了由于用户需求变化带来的开发工作量,提高了效率。

(2):该高速铁路牵引变电所工作票打印方法定义了一种打印对象模型,业务打印都遵守这个模型,通过Excel模板方式,绑定打印模板中单元格与业务属性关系,并对上传的模板进行解析,得到打印对象模型,这个打印对象模型由若干单元格集合组成,单元格属性包括坐标、行高、列宽、字体、线框、填充颜色、对齐方式、内容、关联属性编码,且打印服务是独立于业务之外的服务,它使用HTTP聚合工作票,使用单元格与业务属性的关联关系,实现打印对象的单元格内容渲染,并返回前台。前台打印组件基于这个打印对象,打印组件采用Canvas绘制打印内容,实现了打印轻量化、组件化。轻量化体现在打印不依赖任何插件,组件化体现在打印组件可复用到其它应用打印场景。

(3):打印组件在打印内容分页边界位置,使用红色参考线标注,针对“工作票打印内容存在分页,往往会导致A4纸张的分页边距Padding存在一定的误差”的问题,本发明设计了分页误差纠正参数,保证绘制分页红线能准确的匹配分页位置,避免分页误差的产生,其次打印组件采用参数配置对打印内容进行最大行、最大列、字体缩放、行列缩放的全局设置,采用拖拽方式可对打印区域的行、列间距进行任意调整,避免了打印不完整问题,进一步的,打印组件包含了打印内容的套打功能,在供电系统中存在诸多需要进行套打的工作票据,结合打印对象模型,对打印绘制的工作票加入一张背景图片,在绘制完成工作票时,调整单元格位置以适应背景表格位置,然后打印时,取消表格样式以及背景图片,从而进行套打实现,解决了供电系统在套打方面原本需要边调整边打印出工作票再匹配印刷的空白工作票纸张的工作,节约了打印的纸张以及现场实施人员维护套打工作票的难度,无需开发人员进行协助,极大改善了套打的维护难度。

附图说明

图1为本发明提出的一种高速铁路牵引变电所工作票打印方法的总体流程示意图;

图2为本发明中打印模板上传解析保存的流程示意图;

图3为本发明中打印服务数据聚合过程的示意图;

图4为本发明中打印区域行列拖拽流程的示意图;

图5为本发明中变电所第二种工作票打印模板的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

参照图1-5,一种高速铁路牵引变电所工作票打印方法,包括以下步骤:

S1:用户在模板管理平台新建业务数据Excel打印模板并进行上传;

S2:模板管理后台解析上传的Excel打印模板文件并保存模板表中;

S3:用户选择打印的工作票ID以及工作票模板ID作为参数GET请求打印服务平台进行打印服务数据聚合;具体的,打印服务是独立于业务之外的服务,它使用HTTP聚合工作票。用户在工作票系统中选择打印的工作票及工作票模板,前台把工作票ID(对应业务数据ID)、工作票模板ID(对应模板ID)作为参数GET请求到打印服务。

S4:前台调用打印后台服务,返回打印对象G,把打印对象G输入给打印组件,打印组件采用Canvas绘制打印内容完成工作票页面的绘制。打印组件分为打印内容、参数配置区域,采用FlowLayout布局,内容区域采用HTML5 Canvas画布实现,打印区域包括行头、列头、单元格、分页位置红色参考线,行头、列头可拖拽调整单元格宽度、高度,分页位置参考线可通过参数配置中分页误差进行调整。参数配置区域是对打印区域的全局参数设置,包括分页误差、字体缩放、行列缩放比例调整等功能。调整分页误差,可以保证绘制的分页位置红线准确地匹配分页位置,解决“工作票打印内容存在分页,往往会导致A4纸张的分页边距Padding存在一定的误差”的问题,字体缩放、行列缩放参数用于Canvas 绘制时,与显示的A4纸张厘米之间的转换。在参数配置界面中输入参数后,点击“应用”按钮后,打印区域会重新绘制。点击“打印”可对打印区域内容进行打印。

步骤S1中新建业务数据Excel打印模板并进行上传具体为:

S1.1:开发人员针对工作票的业务数据编码,新建Excel文件制作模板,在对应的Excel单元格内填入业务数据编码,所有单元格填入完成后保存文件;S1.2:点击模板管理的“新增”按钮,在弹出的窗体中填入模板名称、业务数据编码、业务数据API、选择要上传的模板文件,点击“保存”按钮,将请求发送至模板管理后台上传服务。

步骤S2中解析上传的Excel打印模板文件并保存模板表中具体包括以下步骤:S2.1:模板管理后台上传接口收到模板上传请求后,解析模板文件,计算出每个单元格的坐标、行高、列宽、字体、线框、填充颜色、对齐方式、业务属性编码,得到单元格集合G则为打印对象,打印对象G经过转换变成JSON字符串F;S2.2:通过文件服务器上传模板文件,并返回文件ID,把文件ID、模板信息、打印对象F存入模板表中。步骤S2还包括将文件ID、模板信息、打印对象F存入模板表中后向模板管理平台发送“上传成功”反馈信息。

具体的,以高速铁路牵引变电所第二种工作票为例,打印模板配置如下图5所示,详细的模板描述如下:

1、所亭名称 TGpavilionName坐标D4填充字体黑色、无线框、居中对齐;

2、工作票票号TGticketNum坐标AC4填充字体黑色、无线框、居中对齐;

3、作业地点及内容TGworkAddressContent坐标I6填充字体黑色、有线框、居中对齐;

4、发票人TGworkIssuerName坐标AA6 填充字体黑色、有线框、左对齐;

5、发票日期TGticketDate 坐标AA7、填充字体黑色、居中对齐;

6、工作票有效期TGstartYear,TGendYear 坐标I8、填充字体黑色、有线框、左对齐;

7、作业组成员TGpName0 TGGrade0至 TGpName11 TGGrade11 坐标I11:AD13、12个、填充字体黑色、有线框、居中对齐;

8、共计多少人员TGworker坐标I14、填充字体黑色、右对齐;

9、工作条件TGworkConditionName坐标D16、填充字体黑色、左对齐;

10、必要安全措施TGnecessarySwitchStatus 坐标D20、填充字体黑色、左对齐;

11、已完成的安全措施TGcomleteSwitchStatus坐标U20、填充字体黑色、左对齐;

步骤S3中打印服务平台进行打印服务数据聚合具体包括以下步骤:

S3.1:依据模板ID调用模板管理后台查询到模板信息,模板信息包括打印对象JSON,业务API;S3.2:GET请求调用业务API,业务数据ID作为参数传入,业务API返回键值对对象S;S3.3:打印对象JSON转换成打印对象集合G;S3.4:遍历对象G,得到单个对象M,如果遍历结束,则返回G,如果遍历未结束,则进入步骤S3.5;S3.5:M的业务属性编码匹配S的键,如果匹配不成功,则进入步骤S3.4;如果匹配成功,则取出S的值赋值到M内容属性中,继续步骤S3.4。

步骤S4中工作票页面的绘制具体包括以下步骤:前台调用打印后台服务,返回打印对象G,把打印对象G输入给打印组件,打印组件采用Canvas绘制打印内容。前台Canvas绘制包括两个方面,表头和表内容的绘制,表头和表内容的单元格,绘制原理是相同的。表头处理包括宽高以及坐标绑定事件,表内容处理包括绘制单元格的内容、样式、线框、文字;

S4.1:从打印对象G中获取坐标的绘制范围;如(A1:Z10),通过参数区域M对象的行缩放、列缩放行参数,计算得到页面的真实绘制高度,并且循环绘制列头和行头,列头使用A-Z,行头使用1-10作为内容;

S4.2:获取A4纸张相关参数,取得打印对象G的列宽和行高乘以单元格数量,作为打印内容的宽高;如宽21cm,高度29.7cm,上边距2.5cm,下边距2.5cm,左边距3.7cm,右边距3.7cm,取得打印对象G的列宽和行高乘以单元格数量,作为打印内容的宽高,以打印宽度为基准比例,换算得出打印内容高度的系数,以此可扩展各种不同类型的打印需求;

S4.3:根据G列头和行头的坐标,封装为按钮类,划定鼠标事件捕捉范围,存入数组B,鼠标在Canvas中触发点击长按事件时,通过鼠标点击坐标遍历数组B内坐标,匹配到相应的列头或者行头,移动鼠标并存放行高或列宽的偏移量,放开鼠标按键后,Canvas根据偏移量重新绘制整个页面,得到新的打印页面;具体为:在绘制列头和行头时把这些坐标放入一个数组中,鼠标在画布上移动点击时,根据点击发生的位置判断是否在某一个列头或者行头中,然后在数组中更改该列头或者行头的Width、Height信息,调用Canvas刷新绘制的方法,进行重新绘制。

S4.4:循环遍历G,使用fillText绘制单元格内的文字,使用lineTo绘制线框,循环绘制完成后,即完成工作票页面的绘制。

步骤S4中工作票页面的绘制还包括套打工作票,其具体为:通过打印对象G的背景图片设置,能给绘制场景中加入一张背景图片,背景图片为以往供电系统的常用打印工作票印刷体照片或扫码件打印,对象G会把单元格绘制于背景图片之上,再调整打印对象G列头以及行头以适应背景,可以很好的预览和匹配工作票的印刷体纸张,点击打印,重新绘制打印对象G,并屏蔽单元格线框样式以及背景图片,得到套打工作票内容,即可进行套打。

步骤S4中工作票页面的绘制还包括分页位置匹配,其具体为:分页位置参考线根据A4的纸张比例,从步骤S4.2中的打印宽度与A4纸张的宽度的对比中获得系数,计算出每次分页所在的位置的字体缩放、线框的线条宽度,累计的高度会导致分页参考线偏移,从而导致误差,不能准确地标记分页位置,因此设置了可调参数M中的分页误差值,用于调整误差值以准确匹配分页位置。

在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

技术分类

06120114702443