富途PDF解析
2024-05-06 15:16:18 1 举报
PDF解析
作者其他创作
大纲/内容
判断备注中是否包含\"split\"
遍历买入/卖出-变动金额小计之间的数据
循环遍历单条賣出/買入的交易明細 賣出/買入(startIdx)
获取股票或者金额都行索引stockCodeOrAmountIdx,入参byOrSellIdx,整个PDF数据
賣出/買入(startIdx)等于该行
市场类型是否美股
false
调用股票转换接口获取对应系统内股票
true
成交时间:递归读取recursionReadSureTime
该行数据是否为空
遍历交易明细开始和结束范围内数据
结束本次循环
股票代码 变动金额小计
交易方向buySellSplit[0]
循环遍历資金進出开始索引到資金進出结束索引范围内数据
dealNextDealInfo结束本次循环
1:港股保證金賬戶日結單下面的结单日期索引为0 2:期初總覽索引为0 3:交易明細索引为0且資金進出开始索引为0且*融資總覽索引为0 (上面三个条件是或的关系)
变动金额小计:trim.split(THREE_SPACE)[trim.split(THREE_SPACE).length-1] + lines[byOrSellIdx + 1].trim().split(THREE_SPACE)[trim.split(THREE_SPACE).length-1]
交易系统使用费:lines[commissionIdx].trim().split(THREE_SPACE)[1].split(COLON_CHINESE)[1].trim()
该行是否全部包含(\"客戶姓名:\
判断该行是否包含\"資金進出\"
判断该行长度是否小于4
判断该行是否包含\"賬戶號碼\"
股票代码:buySellSplit[3]通过\"\\\\(\"正则获取索引0数据添加后缀\".us\"
判断该行是否包含\"交易明細\"
备注用一个空格分隔,判断长度是否大于1
false
跳出本次循环
判断市场类型是否不等于港股
获取富途各个节点的索引generateFuTuIndexVO,返回所有索引对象FuTuIndexVO
组装账户信息
判断该行是否包含\"(\"
循环遍历PDF每条数据
变动金额小计buySellSplit[buySellSplit.length - 1]
赋值账户类型
赋值交易明細开始索引和交易明細结束索引,跳出单次循环
通过上面变量isHK判断
股票代码:lines[stockCodeOrAmountIdx]通过\"\\\\(\"正则获取索引0数据添加后缀\".us\"
封装流水数据包含交易明细集合和非交易类型数据doGenerateFuTuPdfDTO
赋值股票进出开始索引和股票进出结束索引,跳出单次循环
封装单个交易明细实体dealByOrSellUs
判断该行是否包含\"期初總覽\"
交收費:ommissionNextSplit[0].split(COLON_CHINESE)[1].trim() 證監會費:new BigDecimal(commissionNextSplit[1].split(COLON_CHINESE)[1].trim()) 交易活動費:new BigDecimal(commissionNextSplit[2].split(COLON_CHINESE)[1].trim())
成交金額小(合)計索引等于该行
循环遍历港股保證金賬戶日結單下面的结单日期索引到期初總覽索引范围内数据
赋值流水详情split[4]
资金进出:赋值split[1] 流水号:赋值split[3] 业务类型:赋值转账
用两个空格截取,判断长度<4
成交均价:美股用得上,美股必须用pdf上的:buySellSplit[sureQuantityIdx + 1]
判断该行截取长度不等于4
dealByOrSellAndNextTwoLine
1:赋值變動金額小(合)計索引 2:结束该循环
返回整个对象fuTuIndexVO
判断该行是否包含\"佣金\"
该索引是否等于港股保證金賬戶日結單下面的结单日期索引
截取长度等于5
判断该行是否包含\"變動金額小計\"或\"變動金額合計\"
判断股票code是否跨行ifCross
循环遍历融資總覽索引到期末總覽索引中间数据
利息为0,不入库,结束整个循环
赋值期初總覽索引,跳出单次循环
判断该行是否包含\"港股保證金賬戶日結單\"或\"美股保證金賬戶日結單\"且 有多个港股保證金賬戶日結單
判断该行是否包含\"融資總覽\"
成交数量索引减1
1:该行是否包含\"美股保證金賬戶日結單\",isHK包含:美股,不包含:港股 2:赋值 港股保證金賬戶日結單下面的结单日期 索引 该行+1 3:赋值多个港股保證金賬戶日結單标识置为true 4:跳出单次循环
佣金:lines[commissionIdx].trim().split(THREE_SPACE)[0].split(COLON_CHINESE)[1].trim()
判断该行交易明細索引为0
判断该行数据是否空
1:赋值佣金的位置 美股使用买卖方向-佣金作为开始截止的索引 2:结束该循环
取描述截取第一个数据,按照市场类型拼接股票后缀
判断交易明細索引是否不等于0
判断该行是否包含\"期末總覽\"
byOrSellIdx不等于stockCodeOrAmountIdx
该行是否全部包含 (\"融資金額\
赋值结单日期
数量:buySellSplit[sureQuantityIdx]
变动金额小计:buySellSplit[buySellSplit.length - 1]
判断该行是否包含\"股票進出\"
赋值期末總覽索引同时结束整个循环
赋值账户代码
组装交易明细信息
单号buySellSplit[2]
循环遍历该索引到交易明細结束索引范围内数据
generateFuTuPdfDTO4Note
股票代码:lines[stockCodeOrAmountIdx].trim().split(THREE_SPACE)[3].split(\"\\\\(\")[0].trim().concat(\".us\")
赋值期資金進出开始索引和資金進出结束索引,跳出单次循环
抛出异常,pdf文件内容不匹配
赋值:通过读取币种赋值市场类型
1:赋值*成交金額小(合)計*索引 2:结束整个循环
判断该行是否包含\"成交金額小計\"或\"成交金額合計\"
成交金额:buySellSplit[sureQuantityIdx + 2]
组装今日利息信息
该行是否全部包含 (\"計息金額\
1:赋值賣出/買入开始索引 2:遍历从该行遍历到交易明細结束索引
判断该行是否以\"買入\"或\"賣出\"开头
融資總覽索引是否不等于0
赋值融資總覽索引,跳出单次循环
返回富途各个节点的索引对象
组装资金进出信息
该行数据是否完全包含\"方向\
股票code跨行ifCross?buySellSplit.length == 7 : buySellSplit.length==8变量bool
0 条评论
回复 删除
下一页