package com.brilliance.isc.esb.api.hx;

import com.brilliance.isc.esb.model.ComposeReq;
import com.brilliance.isc.esb.model.ComposeRes;
import com.brilliance.isc.esb.model.Req;
import com.brilliance.isc.esb.model.Res;
import com.brilliance.isc.esb.model.hx.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * hx 核心系统请求方
 *
 * @restApi
 */
@RequestMapping("/ECAS")
public interface HxClient {
    /**
     * 2571 取基准利率
     *
     * @param req2571
     * @return
     */
    @PostMapping("/2571")
    Res<Res2571> call2571(Req<Req2571> req2571);

    /**
     * 9011 查询内部帐历史明细
     *
     * @param req9011
     * @return
     */
    @PostMapping("/9011")
    Res<Res9011> call9011(Req<Req9011> req9011);

    /**
     * 4102 对公定期存款销户
     *
     * @param req4102
     * @return
     */
    @PostMapping("/4102")
    Res<Res4102> call4102(Req<Req4102> req4102);

    /**
     * 4203 对公定期存款部分提支
     *
     * @param req4203
     * @return
     */
    @PostMapping("/4203")
    Res<Res4203> call4203(Req<Req4203> req4203);


    /**
     * 4316 账户冻结交易
     *
     * @param req4316
     * @return
     */
    @PostMapping("/4316")
    Res<Res4316> call4316(Req<Req4316> req4316);

    /**
     * 4317 帐户冻结查询修改解冻操作
     *
     * @param req4317
     * @return
     */
    @PostMapping("/4317")
    Res<Res4317> call4317(Req<Req4317> req4317);

    /**
     * 4338 福费廷冲账交易
     *
     * @param req4338
     * @return
     */
    @PostMapping("/4338")
    Res<Res4338> call4338(Req<Req4338> req4338);

    /**
     * 4370 根据帐号查询账户冻结信息
     *
     * @param req4370
     * @return
     */
    @PostMapping("/4370")
    Res<Res4370> call4370(Req<Req4370> req4370);

    /**
     * 8003 系统内往来复核
     *
     * @param req8003
     * @return
     */
    @PostMapping("/80028003")
    Res<Res8003> call8003(Req<Req8003> req8003);

    /**
     * 7704 外围自动冲正
     *
     * @param req7704
     * @return
     */
    @PostMapping("/7704")
    Res<Res7704> call7704(Req<Req7704> req7704);

    /**
     * 7794是核心系统提供的针对核心系统记账交易的冲正交易，
     * 	     被冲正的交易包括核心系统提供的所有交易
     *
     * @param req7794
     * @return
     */
    @PostMapping("/7794")
    Res<Res7794> call7794(Req<Req7794> req7794);

    /**
     * 9007 表外单方记账
     *
     * @param req9007
     * @return
     */
    @PostMapping("/9007")
    Res<Res9007> call9007(Req<Req9007> req9007);

    /**
     * 7708 转账交易
     *
     * @param req7708
     * @return
     */
    @PostMapping("/7708")
    Res<Res7708> call7708(Req<Req7708> req7708);

    /**
     * 775950069007 内部转账（外围多借多贷）
     *
     * @param req7759
     * @return
     */
    @PostMapping("/500677599007")
    ComposeRes call7759(ComposeReq req7759);

    /**
     * 615377595006 6153是核心提供的融资开户交易，该交易将融资帐号返回给国结
     *
     * @param req6153
     * @return
     */
    @PostMapping("/615377595006")
    ComposeRes call6153(ComposeReq req6153);

    /**
     * 81508151 核心系统提供二代支付往账查询
     *
     * @param req8150
     * @return
     */
    @PostMapping("/81508151")
    ComposeRes call8150(ComposeReq req8150);

    /**
     * 5006 小额结售汇/兑换/内部套汇
     *
     * @param req5006
     * @return
     */
    @PostMapping("/5006")
    Res<Res5006> call5006(Req<Req5006> req5006);


    /**
     * 8129
     *
     * @param req8129
     * @return
     */
    @PostMapping("/8129")
    Res<Res8129> call8129(Req<Req8129> req8129);

    /**
     * 8588
     *
     * @param req8588
     * @return
     */
    @PostMapping("/8588")
    Res<Res8588> call8588(Req<Req8588> req8588);

    /**
     * 8770 ios收报通知
     *
     * @param req8770
     * @return
     */
    @PostMapping("/8770")
    Res<Res8770> call8770(Req<Req8770> req8770);

    /**
     * 0208 账号查询响应对象
     *
     * @param req0208
     * @return
     */
    @PostMapping("/0208")
    Res<Res0208> call0208(Req<Req0208> req0208);

    /**
     * 4309 购汇账户控制
     *
     * @param req4309
     * @return
     */
    @PostMapping("/4309")
    Res<Res4309> call4309(Req<Req4309> req4309);

    /**
     * 6311 核心系统提供入账交易查询响应对象
     *
     * @param req6311
     * @return
     */
    @PostMapping("/6311")
    Res<Res6311> call6311(Req<Req6311> req6311);

    /**
     * 6157 核心系统提供的贷款还款试算交易
     *
     * @param req6157
     * @return
     */
    @PostMapping("/6157")
    Res<Res6157> call6157(Req<Req6157> req6157);

    /**
     * 9509 核心系统提供的实时查询自贸区特殊汇率
     *
     * @param req9509
     * @return
     */
    @PostMapping("/9509")
    Res<Res9509> call9509(Req<Req9509> req9509);

    /**
     * C017 核心系统提供根据帐号查询账户信息
     *
     * @param reqC017
     * @return
     */
    @PostMapping("/C017")
    Res<ResC017> callC017(Req<ReqC017> reqC017);

    /**
     * 80028003 核心系统提供的系统内划款
     *
     * @param req
     * @return
     */
    @PostMapping("/80028003")
    ComposeRes call8002(ComposeReq req);

    /**
     * 8023 核心系统提供查询账户信息
     *
     * @param req8023
     * @return
     */
    @PostMapping("/8023")
    Res<Res8023> call8023(Req<Req8023> req8023);

    /**
     * 8091 核心系统提供根据帐号查询账户信息
     *
     * @param req8091
     * @return
     */
    @PostMapping("/8091")
    Res<Res8091> call8091(Req<Req8091> req8091);

    /**
     * 8760 核心系统提供向核心系统发送资金报文交易
     *
     * @param req8760
     * @return
     */
    @PostMapping("/8760")
    Res<Res8760> call8760(Req<Req8760> req8760);

    /**
     * 9215 核心系统提供的实时查询外汇牌价交易
     *
     * @param req9215
     * @return
     */
    @PostMapping("/9215")
    Res<Res9215> call9215(Req<Req9215> req9215);


    /**
     * 8590 手动获取uetr号
     *
     * @param req8590
     * @return
     */
    @PostMapping("/8590")
    Res<Res8590> call8590(Req<Req8590> req8590);


    /**
     * 5680 国结调用核心客户回单批量通知
     *
     * @param req5680
     * @return
     */
    @PostMapping("/5680")
    Res<Res5680> call5680(Req<Req5680> req5680);

    /**
     * 8159 核心系统提供查询境内外币报文状态
     *
     * @param req8159
     * @return
     */
    @PostMapping("/8159")
    Res<Res8159> call8159(Req<Req8159> req8159);

    /**
     * 8680 核心系统提供二代支付来账查询
     *
     * @param req8680
     * @return
     */
    @PostMapping("/8680")
    Res<Res8680> call8680(Req<Req8680> req8680);

    /**
     * 8752 CIPS系统提供转账汇款（提供国结）结果
     *
     * @param req8752
     * @return
     */
    @PostMapping("/8752")
    Res<Res8752> call8752(Req<Req8752> req8752);

    /**
     * 8755 CIPS系统国结业务退结果
     *
     * @param req8755
     * @return
     */
    @PostMapping("/8755")
    Res<Res8755> call8755(Req<Req8755> req8755);

    /**
     * 8758 CIPS系统提供查证类交易，支持来报信息查询
     *
     * @param req8758
     * @return
     */
    @PostMapping("/8758")
    Res<Res8758> call8758(Req<Req8758> req8758);

    /**
     * 8995 境内外币报文预判交易
     *
     * @param req8995
     * @return
     */
    @PostMapping("/8995")
    Res<Res8995> call8995(Req<Req8995> req8995);

    /**
     * 8416 核心系统提供二代支付普通汇兑交易
     *
     * @param req8416
     * @return
     */
    @PostMapping("/84168918")
    ComposeRes call8416(ComposeReq req8416);

    /**
     * 8437 核心系统提供8437国结人民币来报退回
     *
     * @param req8437
     * @return
     */
    @PostMapping("/8437")
    Res<Res8437> call8437(Req<Req8437> req8437);

    /**
     * 8452 核心系统提供二代支付联动查询交易
     *
     * @param req8452
     * @return
     */
    @PostMapping("/8452")
    Res<Res8452> call8452(Req<Req8452> req8452);

    /**
     * 8485 核心系统提供二代支付往账查询
     *
     * @param req8485
     * @return
     */
    @PostMapping("/8485")
    Res<Res8485> call8485(Req<Req8485> req8485);

    /**
     * 8910、8911 境内外币跨行贷记业务录入、复核
     *
     * @param req8910
     * @return
     */
    @PostMapping("/89108911")
    ComposeRes call8910(ComposeReq req8910);

    /**
     * 8915 境内外币往账查询
     *
     * @param req8915
     * @return
     */
    @PostMapping("/8915")
    Res<Res8915> call8915(Req<Req8915> req8915);

    /**
     * 8759 前置到核心取往报
     *
     * @param req8759
     * @return
     */
    @PostMapping("/8759")
    Res<Res8759> call8759(Req<Req8759> req8759);

    /**
     * 8054 (境内外币)人民币收款及付款返回结果
     *
     * @param req8054
     * @return
     */
    @PostMapping("/8054")
    Res<Res8054> call8054(Req<Req8054> req8054);

    /**
     * 8057 (境内外币)核心接收同步回执
     *
     * @param req8057
     * @return
     */
    @PostMapping("/8057")
    Res<Res8057> call8057(Req<Req8057> req8057);

    /**
     * 8458 (二代)人民币收款及付款返回结果
     *
     * @param req8458
     * @return
     */
    @PostMapping("/8458")
    Res<Res8458> call8458(Req<Req8458> req8458);

    /**
     * 8459 (二代)人民币收款及付款返回结果回执
     *
     * @param req8459
     * @return
     */
    @PostMapping("/8459")
    Res<Res8459> call8459(Req<Req8459> req8459);

    /**
     * 6107 核心系统提供贷款还款交易
     *
     * @param req6107
     * @return
     */
    @PostMapping("/6107")
    Res<Res6107> call6107(Req<Req6107> req6107);

    /**
     * 6153 核心系统提供交易
     *
     * @param req6153
     * @return
     */
    @PostMapping("/6153")
    Res<Res6153> call6153_1(Req<Req6153> req6153);

    /**
     * 615377597788 福费廷直通式放款组合交易
     *
     * @param req615377597788
     * @return
     */
    @PostMapping("/615377597788")
    ComposeRes call615377597788(ComposeReq req615377597788);

    /**
     * 615377598416 组合交易
     *
     * @param req615377598416
     * @return
     */
    @PostMapping("/615377598416")
    ComposeRes call615377598416(ComposeReq req615377598416);

    /**
     * 8913 核心系统提供境内外币来报入账状态同步
     *
     * @param req8913
     * @return
     */
    @PostMapping("/8913")
    Res<Res8913> call8913(Req<Req8913> req8913);

    /**
     * 8010 核心系统提供境内外币来报入账状态同步
     *
     * @param req8010
     * @return
     */
    @PostMapping("/8010")
    Res<Res8010> call8010(Req<Req8010> req8010);

    /**
     * 8110 系统外来帐信息查询
     *
     * @param req8110
     * @return
     */
    @PostMapping("/8110")
    Res<Res8110> call8110(Req<Req8110> req8110);

    /**
     * 8486 根据业务编号查询一段时间内的直通式交易状态（小额查）
     *
     * @param req8486
     * @return
     */
    @PostMapping("/8486")
    Res<Res8486> call8486(Req<Req8486> req8486);

    /**
     * 1640 代客外汇买卖及大额结售汇经办
     *
     * @param req1640
     * @return
     */
    @PostMapping("/1640")
    Res<Res1640> call1640(Req<Req1640> req1640);


    /**
     * 1642 根代客外汇买卖查询
     *
     * @param req1642
     * @return
     */
    @PostMapping("/1642")
    Res<Res1642> call1642(Req<Req1642> req1642);


    /**
     * 1643 代客外汇买卖递归查询
     *
     * @param req1643
     * @return
     */
    @PostMapping("/1643")
    Res<Res1643> call1643(Req<Req1643> req1643);

    /**
     * 1649 代客外汇买卖及大额结售汇复核
     *
     * @param req1649
     * @return
     */
    @PostMapping("/1649")
    Res<Res1649> call1649(Req<Req1649> req1649);

    /**
     * 1654 远期、调期交易成交后处理经办
     *
     * @param req1654
     * @return
     */
    @PostMapping("/1654")
    Res<Res1654> call1654(Req<Req1654> req1654);

    /**
     * 1655 远期、调期交易成交后处理复核
     *
     * @param req1655
     * @return
     */
    @PostMapping("/1655")
    Res<Res1655> call1655(Req<Req1655> req1655);

    /**
     * 1697 联动查询结售汇登记簿
     *
     * @param req1697
     * @return
     */
    @PostMapping("/1697")
    Res<Res1697> call1697(Req<Req1697> req1697);

    /**
     * 1693 联动查询结售汇登记簿
     *
     * @param req1693
     * @return
     */
    @PostMapping("/1693")
    Res<Res1693> call1693(Req<Req1693> req1693);


}
