最近做票據系統,在此做一個總結,下面從幾個關鍵點逐一來闡述,
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、以上在庫存操作時還會生成統計資料,并更新票據背面
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/545264.html
標籤:Java
上一篇:讀Java性能權威指南(第2版)筆記04_ Java SE API技巧下
下一篇:單例設計模式
