rdf-file:組件內置協議(SP、DE、FUND、FUND_INDEX)

Rdf-File根據協議布局模板和數據定義模板,來進行文件的解析與生成。通過協議布局和數據定義模板,能夠明確計算出頭尾占用的行數,這樣可以更精確的分離出head,body,tail。

目前組件實現的協議布局模板可以分為如下兩大類:

  • 開放式基金業務數據交換協議 這種國家標準文件, 數據是以補位后定長形式展示的。 存在缺點有:

  • 文件雖然是文本格式,但是內容肉眼無法看懂。

  • 定長補位導致文件存儲浪費。

  • 因為是國家標準,文件內容定義十分全面,但是實際標準定義了六七十個字段, 有用的就十來個, 沒用的字段也需要占用存儲空間。

  • 字段通過分隔符分割, 字段內容由交互雙方約定。優點是用多少就占用多少,缺點是各方文件格式、內容差異可能比較大。

一:SP

SP是簡單格式simple的意思。

sp協議布局模板

<protocol name="sp"><head><row><column><output>${column.value()}</output></column></row></head><body><row><column><output>${column.value()}</output></column></row></body><tail><row><column><output>${column.value()}</output></column></row></tail>
</protocol>
  • 文件布局分為head, body, tail 三部分。
  • head, body, tail字段都是橫向輸出,根據分隔符連接而成。
  • head,tail 都只有一行。

sp 數據定義模板示例

{"head": ["totalCount|總筆數|Required|Integer","totalAmount|總金額|BigDecimal|Required"],"body": ["seq|流水號","instSeq|基金公司訂單號|Required","gmtApply|訂單申請時間|Date:yyyy-MM-dd HH:mm:ss","date|普通日期|Date:yyyyMMdd","dateTime|普通日期時間|Date:yyyyMMdd HH:mm:ss","applyNumber|普通數字|BigDecimal","amount|金額|BigDecimal","age|年齡|Integer","longN|長整型|Long","bol|布爾值|Boolean","memo|備注"],"tail": ["fileEnd|數據文件尾部字符|default:OFDCFEND"],"protocol": "SP"
}

SP文件示例

100|300.03
seq_0|inst_seq_0|2013-11-09 12:34:56|20131109|20131112 12:23:34|23.33|10.22|22|12345|true|備注1
seq_1|inst_seq_1|2013-11-10 15:56:12|20131110|20131113 12:33:34|23.34|11.88|33|56789|false|
OFDCFEND

二:DE

DE是余額寶與天弘交互格式,作為一種默認實現。

de協議布局模板

<protocol name="de"><head><row><column><output>${column.desc()}</output><output>:</output><output>${column.value()}</output></column></row><row output="${bodycolumn.horizontal(desc)}" /></head><body><row><column><output>${column.value()}</output></column></row></body><tail><row><column><output>${column.value()}</output></column></row></tail>
</protocol>
  • 頭部第一行由 字段描述:字段值 在由分隔符連接而成。
  • 頭部第二行由 組件函數橫向打印出body的字段描述
  • 沒有文件尾, 協議可以定義尾部,只要數據定義模板不定義文件尾就行。

de數據定義模板示例

{"head":["totalCount|總筆數|Required|Long","totalAmount|總金額|BigDecimal|Required"],"body":["seq|流水號","instSeq|基金公司訂單號|Required","gmtApply|訂單申請時間|Date:yyyy-MM-dd HH:mm:ss","date|普通日期|Date:yyyyMMdd","dateTime|普通日期時間|Date:yyyyMMdd HH:mm:ss","applyNumber|普通數字|BigDecimal","amount|金額|BigDecimal","age|年齡|Integer","longN|長整型|Long","bol|布爾值|Boolean","memo|備注"],"protocol":"DE"
}

de文件示例

總筆數:2|總金額:300.03
流水號|基金公司訂單號|訂單申請時間|普通日期|普通日期時間|普通數字|金額|年齡|長整型|布爾值|備注
seq_0|inst_seq_0|2013-11-09 12:34:56|20131109|20131112 12:23:34|23.33|10.22|22|123|true|備注1 
seq_1|inst_seq_1|2013-11-10 15:56:12|20131110|20131113 12:33:34|23.34|11.88|33|56789|false|

三:fund

國家標準:開放式基金業務數據交換協議

fund協議布局模板

<protocol name="fund" rowsplit="rowSplitByFixedlLength"><head><row columnLayout="vertical"><column><output>${column.value()}</output></column></row><row output="${bodycolumn.count()}" type="Integer|[3,0]" /><row output="${bodycolumn.vertical(name)}" /><row output="${totalCount}" type="Integer|[8,0]" /></head><body><row><column><output>${column.value()}</output></column></row></body><tail><row><column><output>${column.value()}</output></column></row></tail>
</protocol>
  • fund協議文件數據是定長而不是通過分隔符分割的,不足的補0
  • protocol標簽的name用于指定協議名字,rowsplit屬性指定數據字段的分割方式。
  • row標簽的columnLayout定義了數據定義模板中的字段布局方式,這里是縱向布局,也就是一個字段一行 (默認是橫向布局)。
  • bodycolumn.count() 是組件實現的內置列的數量。
  • bodycolumn.vertical(name)} 輸出列的字段名
  • totalCount 組件內置變量,不用在數據定義模板中定義,數據行數
  • row的type屬性定義變量的類型和長度。

fund數據定義模板示例

  • OFDCFDAT:開始標志。
  • OFDCFEND:結束標志。
{"head":["identity|信息標識|[8,0]|default:OFDCFDAT","version|協議版本號|[4,0]|default:20","msgCreator|信息創建人|[9,0]|default:H0","msgRecipient|信息接收人|[9,0]","sendDate|傳送發生日期|[8,0]|Date:yyyyMMdd","summaryTableNo|匯總表號|[3,0]","fileTypeCode|文件類型代碼 |[2,0]","sender|發送人|[8,0]|default:H0","recipient|接收人|[8,0]"],"body":["TransactionCfmDate|對帳日期|[8,0]|Date:yyyyMMdd","FundCode|基金代碼|[8,0]","AvailableVol|基金可用份數|BigDecimal|[6,2]"],"tail":["fileEnd|數據文件尾部字符|default:OFDCFEND|[8,0]"],"protocol":"FUND"
}

fund文件示例

Map<String, Object> head = new HashMap<String, Object>();
head.put("msgRecipient", "xxx");
head.put("sendDate", "20231122");
head.put("summaryTableNo", "aa");
head.put("fileTypeCode", "bb");
head.put("recipient", "ll");
head.put("totalCount", 1);Map<String, Object> row = new HashMap<String, Object>();
row.put("TransactionCfmDate", "20231122");
row.put("FundCode", "中國1");
// Integer|[6,2] 總長度6位,小數點2位,輸出"004211"
row.put("AvailableVol", 42.11);
OFDCFDAT
20  
H0       
xxx      
20231122
aa 
bb
H0      
ll      
003
TransactionCfmDate
FundCode
AvailableVol
00000001
20231122中國1 004211
OFDCFEND

四:FUND_INDEX

fund_index body數據不是定長數據。

<protocol name="fund_index" rowsplit="rowSplitByFixedlLength"><head><row columnLayout="vertical"><column><output>${column.value()}</output></column></row><row output="${totalCount}" type="Integer|[3,0]" /></head><body><!-- 只有一個字段,定義成vertical 是為了避免調用行分割器, 因為fund_index body數據不是定長數據 --><row columnLayout="vertical"><column><output>${column.value()}</output></column></row></body><tail><row><column><output>${column.value()}</output></column></row></tail>
</protocol>

fund_index數據定義模板示例

{"head": ["identity|信息標識|[8,0]|default:OFDCFIDX","version|協議版本號|[4,0]|default:20","msgCreator|信息創建人|[9,0]|default:H0","msgRecipient|信息接收人|[9,0]","sendDate|傳送發生日期|[8,0]|Date:yyyyMMdd"],"body": ["path|基金文件路徑"],"tail": ["fileEnd|數據文件尾部字符|default:OFDCFEND|[8,0]"],"protocol": "FUND_INDEX"
}

fund_index文件示例

OFDCFIDX
20
H0
xxx
20180302
003
aaa/xxx/ccc
bbb/xxx/ccc
ccc/xxx/ccc
OFDCFEND

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163879.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163879.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163879.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【深度學習實驗】圖像處理(一):Python Imaging Library(PIL)庫:圖像讀取、寫入、復制、粘貼、幾何變換、圖像增強、圖像濾波

文章目錄 一、實驗介紹二、實驗環境1. 配置虛擬環境2. 庫版本介紹 三、實驗內容0. 安裝 PIL 庫1. 圖像讀取和寫入a. 圖像讀取b. 圖像寫入c. 構建新圖像 2. 圖像復制粘貼a. 圖像復制b. 圖像局部復制c. 圖像粘貼 3. 幾何變換a. 圖像調整大小b. 圖像旋轉c. 圖像翻轉 4. 圖像增強a.…

cocos creator中AStar算法實例

引擎版本 —— cocos creator2.3.4

高端貓罐頭有哪些?精選的5款優質的貓罐頭推薦!

很多鏟屎官看貓貓吃貓糧吃膩了&#xff0c;或者貓貓平時不喜歡喝水&#xff0c;又或者看貓貓太瘦了就想入手幾款貓罐頭但是又愁于不會選擇&#xff0c;而且現在貓罐頭風這么大不知道選什么好~ 作為一個開寵物店7年的店長&#xff0c;對于貓咪的飲食健康我一直都很重視&#xff…

數據結構與算法編程題16

已知長度為n的線性表A&#xff0c;請寫一時間復雜度為O(n)、空間復雜度為O(1)的算法&#xff0c;該算法刪除線性表中所有值為item的數據元素。 item 3 數組下標 i 0 1 2 3 4 5 6 7 8 順序表&#xff1a; 1 2 3 4 3 3 5 3 7 #include <iostream> using namespace std;typ…

Linux常用基礎命令及重要目錄,配置文件功能介紹

目錄 一&#xff0c;Linux常用必備基礎命令 1&#xff0c;網絡類命令 2&#xff0c;文件目錄類命令 3&#xff0c;操作類命令 4&#xff0c;關機重啟命令 5&#xff0c;幫助命令 6&#xff0c;查看顯示類命令 7&#xff0c;命令常用快捷鍵 二&#xff0c;Linux重要目錄…

文獻閱讀的六個步驟

對于科研人員來說&#xff0c;文獻閱讀是一項重要的任務&#xff0c;當然要找對方法和步驟&#xff0c;可以按照這些步驟來哦。 1、確定研究問題和目標&#xff1a;在開始閱讀外文文獻之前&#xff0c;明確您的研究問題和目標。這將幫助您更好地理解作者所說的話以及他們提出的…

windows版本的grafana如何離線安裝插件

本文以安裝clickhouse的插件為例&#xff0c;記錄下如何離線安裝插件 1 下載插件 ClickHouse plugin for Grafana | Grafana Labs 2 找到grafana的配置文件 打開編輯&#xff0c;搜索plugin關鍵字&#xff0c;修改plugin的加載目錄 目錄不存在&#xff0c;手動創建&#xff0…

【Python】Vscode解決Python中制表符和空格混用導致的縮進問題

【Python】Vscode解決Python中制表符和空格混用導致的縮進問題 文章目錄 【Python】Vscode解決Python中制表符和空格混用導致的縮進問題1. 問題來源2. 解決Reference 1. 問題來源 在python中使用縮進來進行代碼塊的分區&#xff0c;通常來說python的一個縮進包含4個空格&#…

軟件測試崗位與職業發展

一、軟件測試崗位有哪些&#xff1f; 在企業中&#xff0c;軟件測試領域的幾個典型的職位有&#xff1a;功能測試工程師&#xff08;也叫手工測試&#xff09;、自動化測試工程師、性能測試工程師、測試開發等。 1、功能測試&#xff08;手工測試&#xff09;工程師 主要工作內…

2023年“福建省工業互聯網+智能制造創新大賽”開啟報名

11月22日&#xff0c;由福建省總工會、福建省大數據集團有限公司共同舉辦的2023年“福建省工業互聯網智能制造創新大賽”啟動報名。 大賽積極響應《福建省總工會等八部門關于廣泛深入開展勞動和技能競賽為新發展階段新福建建設建工立業的意見》&#xff08;閩工〔2022〕70號&am…

mongodb數據庫的常用操作語句

說在前面的話 本文所有的操作示例&#xff0c;都以集合“HistoryTaskBase”為例。 一、查詢 1、時間區間 查詢“通知時間”介于2019-09-01到2019-10-01之間的數據。 db.getCollection(HistoryTaskBase).find({notifyTime:{$gte:ISODate(2019-09-01T00:00:00.000Z),$lte:ISOD…

基于STM32的電影院安全系統的設計與實現(論文+源碼)

1.系統設計 本次基于STM32F4的電影院安全系統的設計與實現&#xff0c;以STM32F4單片機為核心控制器&#xff0c;配合人體紅外傳感器&#xff0c;煙霧傳感器&#xff0c;甲醛傳感器等硬件設施&#xff0c;實現了對電影院內環境的檢測&#xff0c;當出現異常則會通過蜂鳴器和LE…

實現了一個簡易的計算器

計算器的界面如下&#xff1a; 實現過程&#xff1a; 通過html和css編寫這樣一個界面JavaScript實現功能 在通過JavaScript實現計算器功能的過程中&#xff0c;其實使用的都是一些基本指數。主要包括以下幾點&#xff1a; If/else 分支.For 循環JavaScript 函數箭頭函數&…

日志分析對決:揭示 ELK 與 GrayLog 的優勢和差異

&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交給時間 &#x1f3e0; &#xff1a;小破站 日志分析對決&#xff1a;揭示 ELK 與 GrayLog 的優勢和差異 前言第一&#xff1a;ELK Stack簡介第二&#xff1a;GrayLog簡介架構&#xff1a;主要特性&#xff1a; 第三&am…

騰訊待辦關停,怎么在手機上記錄待辦清單并設置提醒?

如果你之前一直在騰訊待辦這款微信小程序中記錄待辦事項&#xff0c;那么你就會發現小程序中彈窗的“業務關停通知”彈窗&#xff0c;查看其中的內容可知&#xff0c;由于業務方向調整&#xff0c;騰訊待辦將于2023年12月20日全面停止運營并下架&#xff0c;這就意味著我們無法…

面試:MyBatis問題

文章目錄 什么是MyBatis?MyBatis的核心組件有哪些&#xff1f;能說說MyBatis的工作原理嗎&#xff1f;MyBatis的工作流程是怎樣的&#xff1f;Mybaits 的優點 & 缺點MyBatis 與 JPA 有哪些不同&#xff1f;MyBatis一二級緩存的區別&#xff1f;MyBatis如何處理延遲加載&am…

【一文搞定】在Docker中搭建centos7遠程桌面環境(Xfce、Gnome兩種方式)

目錄 前言一、基于GNOME構建遠程桌面二、基于Xfce構建遠程桌面&#xff08;輕量級&#xff09; 前言 本文提供兩種安裝方式&#xff0c;均自己測試過&#xff0c;最后還是選擇了Xfce&#xff0c;因為它比較輕量級&#xff0c;占用資源較少。大家也可以都試試&#xff0c;比較感…

外地人可以在上海當老師嗎

隨著社會的發展&#xff0c;越來越多的人涌入大城市&#xff0c;其中也包括上海。在這個繁華的城市里&#xff0c;許多人都夢想成為一名老師&#xff0c;但是外地人可以在上海當老師嗎&#xff1f; 首先需要了解上海的教育政策。根據相關規定&#xff0c;外地人可以在上海當老師…

角色管理--產品角色負責人

研發組織管理--角色管理--產品角色負責人 定位 作為管理者&#xff0c;建設&#xff0c;管理&#xff0c;優化一個可控可自驅的產品經理團隊&#xff0c;并保持對應業務領域的產品競爭力&#xff0c;在保證業界平均水平的基礎上&#xff0c;不斷嘗試創新&#xff0c;爭做行業…

C#實現圖片背景色透明(親測有效)

重要代碼&#xff1a; Bitmap bm new Bitmap(origin); bm.MakeTransparent(); string Name_ "C:\\Users\\xx\\Downloads\\download\\" DateTime.Now.Ticks.ToString() ".ico";Size size new Size(256, 64);ConvertImageToIcon("C:…