前言:
现在朋友们对“java打印票据”大致比较注意,小伙伴们都需要了解一些“java打印票据”的相关内容。那么小编在网络上汇集了一些关于“java打印票据””的相关文章,希望小伙伴们能喜欢,我们一起来学习一下吧!Java微服务票据系统设计(业务,架构,设计,实现)
票据系统设计
最近做票据系统,在此做一个总结。下面从几个关键点逐一来阐述。
1. 库存
通俗地讲,票据系统的主要功能是出票、买票、卖票。买卖双方之间的交易就形成了票据的流转。这个过程中,票是最关键的元素。票据库存是整个票据系统的核心,所有业务最终都是对库存进行操作。对应有出库、入库操作。
交易类的库存操作是在结算完成后进行处理的,结算完成后通知交易双方然后各自处理自己的库存;
非交易业务的库存是在对方应答成功后进行的,首先是对方应答同意后处理,然后是本方收到对方应答同意后处理;
针对库存有几张关键的表设计:
(1)票据主表:主要是存储票据中不变的一些信息,比如票号、票据类型、出票日期、承兑日期、到期日、出票人、承兑人、收票人等等
(2)票据子表:存储变化的部分,比如票号、子票区间、票据金额、持票人、票据状态、流通状态、库存状态、拆分状态等等
(3)票据交易表:记录所有对票据的的操作行为
(4)应收/应付表:这个主要是挑票用的,维护着谁持有哪些票据,因为有类似质押的行为存在,所以不能跟票据子表合并。这个表相当于是企业的个人记账本。主要字段有票号、子票区间、票据金额、可用余额、本方企业信息、对方企业信息、前手人信息、票据状态等等
(5)票据背面表:主要用于展示票据背面信息
(6)加锁表:用于业务操作期间对票据加锁
2. 拆票
电票是可以拆分的,持票人在办理票据背书、贴现、保证、质押等业务时,可依实际业务需要,将持有票据包按实际支付金额分包流转使用。
在发送请求后,收到确认报文后进行拆分。拆票就是把一张票变成两张票。
反映到表上就是原来票据字表中的一条未拆分的记录,拆分后新增了两条,总共变成三条记录
假设原票据金额是10元,子票区间是0.01~10,再假设交易金额是2元,那么首先将这个2元的拆出来,即它的子票区间是0.01~2
应收表中相应票据也需要做同样的拆分
以上拆票逻辑同样适用于其它类似的凭证拆分流转
3. 服务划分
主要微服务:
票据服务:主要是各个业务数据,比如出票、背书、贴现、交易等等库存服务:票据的流转企业服务:企业信息、企业账户、企业账户等等票交所服务:主要是与票交所交互,收发报文第三方:数据推送第三方指令服务:业务与票交所交互的桥梁
下面以质押为例描述整个过程中库存是如何变化的
1、A(出质人)申请将票据质押给B(质权人),首先保存申请信息,并提交审批,并对被质押的票据加锁
2、审批通过后,发送质押申请报文
3、收到确认报文后,更新票据状态,检查是否需要拆票,如有完成拆票动作
4、B应答同意,收到确认报文后,更新库存。首先,修改票据状态已收票,然后生成入库交易记录,进行入库操作(即向自己的应收表中新增一条票据记录)
5、A收到B应答同意报文后,更新自己的库存。首先,票据解锁,然后更新票据状态已质押,生成交易,更新自己的应收票据表
6、以上在库存操作时还会生成统计数据,并更新票据背面
标签: #java打印票据 #java连接小票打印机