一种工资条打印方法与流程

文档序号:20916534发布日期:2020-05-29 13:35阅读:228来源:国知局
一种工资条打印方法与流程

本发明涉及信息技术领域,更具体地,涉及一种工资条打印方法。



背景技术:

在企业管理类型的软件中一般都会有工资管理模块,其中包含工资条打印功能,但是每个企业的工资条打印内容可能都不一样,因此,传统的做法是根据工资条打印内容每次都设计工资条模板,根据模板进行打印。但这种方式的缺点是不便于企业用户操作,同时每个企业时用户都需要重新设计,增加企业人力成本,降低工作效率。



技术实现要素:

为了解决背景技术存在的现有工资条打印方法不便于企业用户操作,每个企业用户使用时都需重新设计的问题,本发明提供了一种工资条打印方法,所述方法从工资账表表格中获取表格的所有字段信息,自动生成工资条模板,避免了工资条模板的设计工作,所述一种工资条打印方法包括:

配置工资条的表头和表尾变量,生成工资账表表格的列信息;

配置打印基础信息;

根据工资账表表格的列信息自动生成工资条模板;

获取工资账表数据,拼装所述工资账表数据的表头和表尾变量,填充至工资条模板,完成工资条的打印。

进一步的,所述配置工资条的表头和表尾变量的方法包括:

所述表头变量项和表尾变量项通过表格方式配置,所述表格数据为工资账表表格所有列的列信息;

所述表格的列包括字段名称列、显示列以及换行列;

所述字段名称列用于设置列信息的字段名称;显示列用于确定显示的字段;所述换行列用于确定字段是否换行。

进一步的,所述打印基础信息包括纸张信息、打印方向以及页边距;

所述纸张信息包括a3、a4、b5以及自定义打印纸张类型;

所述打印方向包括横向以及纵向;

所述页边距包括上方、下方、左侧以及右侧的页边距。

进一步的,所述根据工资账表表格的列信息自动生成工资条模板的方法包括:

获取所述列信息中的表头信息;

根据所述表头信息计算工资条打印内容宽度;

计算所述工资账表表格每一行显示的字段,将所述字段放入行对象数组;

计算所述工资账表表格的每列宽度,将所述每列宽度放入列宽数组;

获取预设的工资条模板,根据所述行对象数组、列宽数组以及预设的工资条模板生成所述工资条模板的表格内容;

设置字段列合并;

设置数据源信息和区块填数函数,生成工资条模板。

进一步的,所述计算工资条打印内容宽度的方法包括:

判断是否配置打印基础信息,如果未配置打印基础信息,设置所述工资条打印内容宽度为预设宽度;

如果配置打印基础信息,提取纸张类型参数,根据所述纸张类型参数设置纸张的宽度和高度;

提取打印方向参数,若所述打印方向参数为横向打印,将所述纸张高度作为打印纸张的宽度,若所述打印方向参数为纵向打印,所述纸张宽度度即为打印纸张的宽度;

提取左侧页边距参数和右侧页边距参数,将所述打印纸张宽度减去所述左侧页边距参数和右侧页边距参数得到所述工资条打印内容宽度。

进一步的,所述计算所述工资账表表格每一行显示的字段方法包括:

创建行对象以及行对象数组,所述行对象用于以行为单位存放字段对象,所述行对象数组用于存放所有字段对象;

循环所述工资账表表格的所有字段,判断是否将当前字段放入行对象中;

若将当前字段放入行对象中,判断所述当前字段是否为最后一列;

若所述当前字段为最后一列,设置所述当前字段宽度为所述工资条打印内容宽度减去当前行对象已存字段宽度之和;

设置当前字段结束位置为所述工资条打印内容宽度,将所述当前字段添加至行对象。

进一步的,若所述当前字段不是最后一列,设置所述当前字段的结束位置为当前行对象已存字段宽度之和加上所述当前字段的宽度,将所述当前字段添加至行对象。

进一步的,若不能将当前字段放入行对象中,判断当前行对象是否为空;

若所述行对象为空,设置所述当前字段宽度以及当前字段结束位置为所述工资条打印内容宽度;

将所述当前字段添加至行对象;

将所述行对象添加至行对象数组,创建一个新的行对象。

进一步的,若所述行对象不为空,提取当前行对象的最后一个字段,设置当前字段宽度为所述工资条打印内容宽度减去除最后一个字段以外当前行对象已存字段宽度之和;

判断当前字段宽度是否大于所述工资条打印内容宽度;

若当前字段宽度大于所述工资条打印内容宽度,设置当前字段宽度和结束位置为所述工资条打印内容宽度,将所述当前字段添加至行对象,将所述行对象添加至行对象数组,创建一个新的行对象数组;

否则,直接添加当前字段至行对象。

进一步的,所述判断是否将当前字段放入行对象中的方法包括:

若当前行对象为空,将当前字段放入行对象;

若当前行对象不为空,将当前行对象已存字段宽度之和加上当前字段宽度得到宽度和,若所述宽度和大于工资条打印内容宽度,当前字段不放入行对象,否则将当前字段放入行对象中。

进一步的,所述计算所述工资账表表格每列宽度的方法包括:

将所述工资账表表格所有字段总数,减去所述行对象数组长度,得到循环次数;

按循环次数依次循环所述工资账表表格获取每列宽度,将所述每列宽度添加至列宽数组。

进一步的,每次循环中,遍历所述行对象数组,获取每行第一个未确认字段,将所述未确认字段放入预创建的第一数组中;

遍历完成行对象数组后,判断所述第一数组是否为空,若所述第一数组为空,退出当次循环;

若所述第一数组不为空,遍历所述第一数组,提取第一数组中字段结束位置值最小的字段,设置所述字段为确认后字段,将所述字段结束位置最小值减去当前行对象所有列宽度之和,得到新列宽;

若所述新列宽不等于0,将所述新列宽放入列宽数组中。

进一步的,若当前循环列为最后一列,将工资条打印内容宽度减去当前行对象其余所有列宽度之和作为最后一列宽度;

若所述最后一列宽度不等于0,将所述最后一列宽度放入列宽数组中。

进一步的,所述根据所述行对象数组、列宽数组以及预设的工资条模板生成所述工资条模板的表格内容的方法包括:

所述预设的工资条模板为默认的工资条模板,包含基本的模板信息;

所述预设的工资条模板为xml格式,将所述xml格式转换成文档对象;

选择所述文档对象的表节点对象;

循环所述列宽数组,在所述表节点对象中添加列对象,设置列宽度;

生成标题和表头信息,获取标题和表头行数;

循环所述行对象数组,根据所述标题和表头信息生成标题行和数据行;

生成表尾信息;

设置倒数第二行格式以及最后一行格式,处理尾部的分隔线显示,生成工资条模板。

进一步的,所述生成标题和表头信息以及获取标题和表头行数的方法包括:

获取标题信息,若所述标题信息为空则不添加标题行;

若所述标题信息为非空,则在表节点对象中添加一行用于标题行的显示;

获取配置的表头变量项,判断所述表头变量项是否有待显示字段,若没有则不添加表头信息行,否则根据换行信息判断行数。

进一步的,所述生成生成标题行的方法包括:

根据获取的标题行以及表头信息行的行数,设置工资条表格从所述标题行及表头信息行的下一行开始;

循环所述行对象数组,每次取出一个行对象,循环行对象中的字段对象,取出当前字段的前一个字段的结束位置,根据所述列宽数组,计算前一个字段结束位置所在列的位置,将其加1作为当前字段开始列的序号;

根据字段的标题设置标题文字,得到标题行;

根据字段的数据设置数据文字,设置取数公式,得到数据行。

进一步的,所述设置字段列合并的方法包括:

设置标题行和表头信息行的列合并;

循环行对象数组,对每一个行对象循环当前行对象的所有字段;

根据列宽数组,计算当前字段结束列的位置;

设置合并列的开始和结束位置;

设置表尾的列合并。

本发明的有益效果为:本发明的技术方案,给出了一种工资条打印方法,该方法根据从工资账表表格中获取表格的所有字段信息,自动生成工资条模板,避免了工资条模板的设计工作;增加工资条配置,便于用户根据具体业务选择数据样式,保证打印的工资条数据样式和页面中的工作账表表格样式一致。

附图说明

通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:

图1为本发明具体实施方式的一种工资条打印方法的流程图;

图2为本发明具体实施方式的一种根据工资账表表格的列信息自动生成工资条模板方法的流程图。

具体实施方式

现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。

除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。

图1为本发明具体实施方式的一种工资条打印方法的流程图;如图1所示,所述方法包括:

步骤110,配置工资条的表头和表尾变量,生成工资账表表格的列信息;

设置了工资条打印配置页面用于设置工资条的表头和表尾变量,包括两个页签分别用来配置工资条的表头变量项和表尾变量项;

所述表头变量项和表尾变量项通过表格显示方式配置,所述表格数据为工资账表表格所有列的列信息;

所述表格的列包括字段名称列、显示列以及换行列;

所述字段名称列用于设置列信息的字段名称;

默认显示列和换行列不勾选,用户可以通过勾选显示列确定显示哪些字段,通过勾选换行列确定该字段后是否进行换行。

步骤120,配置打印基础信息;

设置了打印设置页面用于配置打印基础信息;

所述打印基础信息包括纸张信息、打印方向以及页边距;

所述纸张信息包括a3、a4、b5等类型可供选择,也可以自定义打印纸张类型,设置纸张的宽度和高度;所述打印方向包括横向以及纵向;所述页边距包括上方、下方、左侧以及右侧的页边距。

步骤130,根据工资账表表格的列信息自动生成工资条模板;

图2为本发明具体实施方式的一种根据工资账表表格的列信息自动生成工资条模板方法的流程图;如图2所示,所述方法包括:

步骤131,获取所述工资账表表格列信息中的表头信息,其类型为list<map>类型的数组,变量map中存放的是工资账表表格的列信息,先将变量map转换成list<column>类型的数组,column为列类型;

步骤132,根据所述表头信息计算工资条打印内容宽度,所述计算工资条打印内容宽度的方法包括:

判断是否配置打印基础信息,如果未配置打印基础信息,设置所述工资条打印内容宽度为默认的预设宽度;

如果配置打印基础信息,提取纸张类型参数,根据所述纸张类型参数设置纸张的宽度和高度,单位是毫米;如果纸张类型是自定义纸张类型,直接从打印基础信息中提取打印纸张的宽度和高度即可;

提取打印方向参数,若所述打印方向参数为横向打印,将所述纸张高度作为打印纸张的宽度,若所述打印方向参数为纵向打印,所述纸张宽度度即为打印纸张的宽度;

提取左侧页边距参数和右侧页边距参数,将所述打印纸张宽度减去所述左侧页边距参数和右侧页边距参数得到所述工资条打印内容宽度,单位为毫米。

步骤133,计算所述工资账表表格每一行显示的字段,将所述字段放入行对象数组;所述计算每行应显示字段的方法包括:

创建list类型数组作为行对象,所述行对象用于以行为单位存放字段对象,创建一个list<column>类型的行对象数组,所述行对象数组用于存放所有字段对象;

循环所述工资账表表格的所有字段,判断是否将当前字段放入行对象中;

若将当前字段放入行对象中,判断所述当前字段是否为最后一列;

若所述当前字段为最后一列,设置所述当前字段宽度为所述工资条打印内容宽度减去当前行对象已存字段宽度之和;设置当前字段结束位置为所述工资条打印内容宽度,将所述当前字段添加至行对象;若所述当前字段不是最后一列,设置所述当前字段的结束位置为当前行对象已存字段宽度之和加上所述当前字段的宽度,将所述当前字段添加至行对象。

若不能将当前字段放入行对象中,判断当前行对象是否为空;

若所述行对象为空,设置所述当前字段宽度以及当前字段结束位置为所述工资条打印内容宽度;将所述当前字段添加至行对象;将所述行对象添加至行对象数组,创建一个新的行对象;

若所述行对象不为空,提取当前行对象的最后一个字段,设置当前字段宽度为所述工资条打印内容宽度减去除最后一个字段以外当前行对象已存字段宽度之和;

判断当前字段宽度是否大于所述工资条打印内容宽度;若当前字段宽度大于所述工资条打印内容宽度,设置当前字段宽度和结束位置为所述工资条打印内容宽度,将所述当前字段添加至行对象,将所述行对象添加至行对象数组,创建一个新的行对象数组;否则,直接添加当前字段至行对象。

其中,所述判断是否将当前字段放入行对象中的方法包括:

若当前行对象为空,将当前字段放入行对象;若当前行对象不为空,将当前行对象已存字段宽度之和加上当前字段宽度得到宽度和,若所述宽度和大于工资条打印内容宽度,当前字段不放入行对象,否则将当前字段放入行对象中。

步骤134,计算所述工资账表表格的每列宽度,将所述每列宽度放入列宽数组;

所述计算所述工资账表表格每列宽度的方法包括:

创建一个列宽数组用于存放每列宽度,在生成工资条打印模板时用该数组设置列的宽度。将字段总数减去存放行对象数组的长度,作为循环次数,因为列的个数最多不会超过循环次数,然后依次循环工资账表表格获取列的宽度,将其添加到列宽度数组中;

在每次循环中,首先创建一个list<column>类型的第一数组用于存放未确认字段;然后遍历行对象数组,获取每行第一个未确认字段,将所述未确认字段放入第一数组中;

遍历完成行对象数组后,判断所述第一数组是否为空,若所述第一数组为空,说明没有需要确认的字段,直接退出当次循环;若所述第一数组不为空,遍历所述第一数组,提取第一数组中字段结束位置值最小的字段,设置所述字段为确认后字段,将所述字段结束位置最小值减去当前行对象所有列宽度之和,得到新列宽;若所述新列宽不等于0,将所述新列宽放入列宽数组中。

此外,若当前循环列为最后一列,将工资条打印内容宽度减去当前行对象其余所有列宽度之和作为最后一列宽度;若所述最后一列宽度不等于0,将所述最后一列宽度放入列宽数组中;

至此,完成列宽数据的获取。

步骤135,获取预设的工资条模板,根据所述行对象数组、列宽数组以及预设的工资条模板生成所述工资条模板的表格内容;

预设的工资条模板为默认模板,只包括最基本的模板信息,其内容为xml格式,将其转换成document文档对象;

从文档对象中选择表节点对象,循环所述列宽数组,在所述表节点对象中添加列对象,设置列宽度;

获取标题信息,若所述标题信息为空则不添加标题行;若所述标题信息为非空,则在表节点对象中添加一行用于标题行的显示;获取配置的表头变量项,判断所述表头变量项是否有待显示字段,若没有则不添加表头信息行,否则根据换行信息判断行数,获取标题和表头行数;

根据获取的标题行以及表头信息行的行数,设置工资条表格从所述标题行及表头信息行的下一行开始;循环所述行对象数组,每次取出一个行对象,分别生成标题行和数据行;生成表尾信息;设置倒数第二行格式以及最后一行格式,处理尾部的分隔线显示,生成工资条模板。

其中,生成标题行的方法为:循环行对象中的字段对象,取出当前字段的前一个字段的结束位置,根据所述列宽数组,计算前一个字段结束位置所在列的位置,将其加1作为当前字段开始列的序号;根据字段的标题设置标题文字,得到标题行;

生成数据行的方法与标题行一致,根据字段的数据设置数据文字,同时设置取数公式,得到数据行。

此外,根据字段结束位置和列宽数组计算字段结束位置所在列的序号的方法为:

循环列宽数组,将列宽进行合计,当合计的结果与字段结束位置相等时退出循环,从而得到字段结束列的序号。

步骤136,设置字段列合并;

设置标题行和表头信息行的列合并;循环行对象数组,对每一个行对象循环当前行对象的所有字段;根据列宽数组,计算当前字段结束列的位置;设置合并列的开始和结束位置;设置表尾的列合并。

步骤137,设置数据源信息和区块填数函数,生成工资条模板。

步骤140,获取工资账表数据,拼装所述工资账表数据的表头和表尾变量,填充至工资条模板,完成工资条的打印。

将获取的工资账表表格数据、表头变量项、表尾变量项填充只工资条模板中,完成工资条的打印。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。本说明书中涉及到的步骤编号仅用于区别各步骤,而并不用于限制各步骤之间的时间或逻辑的关系,除非文中有明确的限定,否则各个步骤之间的关系包括各种可能的情况。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。例如,在权利要求书中所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本公开的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本公开还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者系统程序(例如,计算机程序和计算机程序产品)。这样的实现本公开的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本公开进行说明而不是对本公开进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本公开可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干系统的单元权利要求中,这些系统中的若干个可以是通过同一个硬件项来具体体现。

以上所述仅是本公开的具体实施方式,应当指出的是,对于本领域的普通技术人员来说,在不脱离本公开精神的前提下,可以作出若干改进、修改、和变形,这些改进、修改、和变形都应视为落在本申请的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1