import { buildTamRequestPayload, tamRequest, type TamRequestPayload, type TamResponse, } from '@/api/tam' export type CrossBorderPositionEstimateHistoryQueryForm = { /** 交易日期,页面为 YYYY-MM-DD,接口使用 YYYYMMDD。 */ transDate: string } type CrossBorderPositionEstimateHistoryRequestBody = { /** 交易日期,格式 YYYYMMDD。 */ transDate: string } export type CrossBorderPositionEstimateHistoryBody = { /** 历史头寸数据,实际接口会同步返回预计调拨收支金额。 */ data?: { teaaIn?: string teaaOut?: string [key: string]: unknown } /** 今日预计调拨金额收入。 */ teaaIn?: string /** 今日预计调拨金额支出。 */ teaaOut?: string totalCount?: number | string } export type CrossBorderPositionEstimateQueryForm = { /** 交易日期,页面为 YYYY-MM-DD,接口使用 YYYYMMDD。 */ transDate: string /** 今日预计调拨金额收入。 */ teaaIn: string /** 今日预计调拨金额支出。 */ teaaOut: string } type CrossBorderPositionEstimateQueryRequestBody = { transDate: string teaaIn: number teaaOut: number } export type CrossBorderPositionEstimateResultInfo = { /** 起始金额。 */ startAmt?: string /** 预报收入金额。 */ predAmtIn?: string /** 预报支出金额。 */ predAmtOut?: string /** 未核销预报收入金额。 */ unverificationAmtIn?: string /** 未核销预报支出金额。 */ unverificationAmtOut?: string /** 未核销流水收入金额。 */ unverTranAmtIn?: string /** 未核销流水支出金额。 */ unverTranAmtOut?: string /** 今日预计调拨金额收入。 */ teaaIn?: string /** 今日预计调拨金额支出。 */ teaaOut?: string } export type CrossBorderPositionEstimateQueryBody = { result?: CrossBorderPositionEstimateResultInfo totalCount?: number | string } export type CrossBorderPositionEstimateHistoryPayload = TamRequestPayload export type CrossBorderPositionEstimateHistoryResult = TamResponse export type CrossBorderPositionEstimateQueryPayload = TamRequestPayload export type CrossBorderPositionEstimateQueryResult = TamResponse const HISTORY_QUERY_TRAN_CODE = '/TAM/0001/140403003' const ESTIMATE_QUERY_TRAN_CODE = '/TAM/0001/140403001' export function buildCrossBorderPositionEstimateHistoryPayload( form: CrossBorderPositionEstimateHistoryQueryForm, ): CrossBorderPositionEstimateHistoryPayload { return buildTamRequestPayload({ tranCode: HISTORY_QUERY_TRAN_CODE, body: { transDate: normalizeDate(form.transDate), }, }) } export async function queryCrossBorderPositionEstimateHistory( payload: CrossBorderPositionEstimateHistoryPayload, ): Promise { return tamRequest< CrossBorderPositionEstimateHistoryRequestBody, CrossBorderPositionEstimateHistoryBody >(payload) } export function buildCrossBorderPositionEstimateQueryPayload( form: CrossBorderPositionEstimateQueryForm, ): CrossBorderPositionEstimateQueryPayload { return buildTamRequestPayload({ tranCode: ESTIMATE_QUERY_TRAN_CODE, body: { transDate: normalizeDate(form.transDate), teaaIn: normalizeAmount(form.teaaIn), teaaOut: normalizeAmount(form.teaaOut), }, }) } export async function queryCrossBorderPositionEstimate( payload: CrossBorderPositionEstimateQueryPayload, ): Promise { return tamRequest< CrossBorderPositionEstimateQueryRequestBody, CrossBorderPositionEstimateQueryBody >(payload) } function normalizeDate(value: string) { return value.trim().replaceAll('-', '') } function normalizeAmount(value: string) { const amount = Number(value.trim().replaceAll(',', '')) if (!Number.isFinite(amount)) { throw new Error('金额格式不正确') } return amount }