package com.heyu.api.controller.financial;


import com.heyu.api.baidu.handle.financial.BAirTicketHandle;
import com.heyu.api.baidu.request.financial.BAirTicketRequest;
import com.heyu.api.baidu.response.financial.BAirTicketResp;
import com.heyu.api.baidu.response.financial.BSingleAirTicketResp;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.resp.financial.AirTicketSingleResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * https://console.bce.baidu.com/support/?_=1740575657628&timestamp=1740577959399#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E8%B4%A2%E5%8A%A1%E7%A5%A8%E6%8D%AEOCR&api=rest%2F2.0%2Focr%2Fv1%2Fair_ticket&method=post
 * <p>
 * 飞机行程单识别
 * <p>
 * <p>
 * 接口描述
 * 支持对飞机行程单的24个字段进行结构化识别，包括电子客票号、印刷序号、姓名、始发站、目的站、航班号、日期、时间、票价、身份证号、承运人、民航发展基金、
 * 保险费、燃油附加费、其他税费、合计金额、填开日期、订票渠道、客票级别、座位等级、销售单位号、签注、免费行李、验证码。 同时，支持单张行程单上的多航班信
 * 息识别。
 */

@Slf4j
@RestController
@RequestMapping("/air/ticket/single")
@NotIntercept
public class AirTicketSingleController extends BaseController {


    @Autowired
    private BAirTicketHandle bAirTicketHandle;


    @RequestMapping("/recognize")
    @CacheResult
    public R recognize(BAirTicketRequest req) {


        AirTicketSingleResp resp = new AirTicketSingleResp();
        req.setMultiDetect("false");

        ApiR<BAirTicketResp> bR = bAirTicketHandle.handle(req, BSingleAirTicketResp.class);

        if (bR.isSuccess()) {
            BSingleAirTicketResp bAirTicketResp = (BSingleAirTicketResp) bR.getData();
            BSingleAirTicketResp.WordsResultDTO wordsResultDTO = bAirTicketResp.getWordsResult();
            resp.setInsurance(wordsResultDTO.getInsurance());                       // 保险费
            resp.setDate(wordsResultDTO.getDate());                            // 日期
            resp.setAllow(wordsResultDTO.getAllow());                           //免费行李
            resp.setFlight(wordsResultDTO.getFlight());                          // 航班号
            resp.setIssuedBy(wordsResultDTO.getIssuedBy());                        //订票渠道
            resp.setStartingStation(wordsResultDTO.getStartingStation());                     // 	始发站
            resp.setFare(wordsResultDTO.getFare());                            //票价
            resp.setEndorsement(wordsResultDTO.getEndorsement());                 // 签注
            resp.setTicketRates(wordsResultDTO.getTicketRates());                     // 合计金额
            resp.setCk(wordsResultDTO.getCk());                                      //验证码
            resp.setSerialNumber(wordsResultDTO.getSerialNumber());                // 印刷序号
            resp.setTicketNumber(wordsResultDTO.getTicketNumber());            // 电子客票号码
            resp.setFuelSurcharge(wordsResultDTO.getFuelSurcharge());                   // 燃油附加费
            resp.setCarrier(wordsResultDTO.getCarrier());                     // 承运人
            resp.setIssuedDate(wordsResultDTO.getIssuedDate());                      //填开日期
            resp.setOtherTax(wordsResultDTO.getOtherTax());                            // 	其他税费
            resp.setFareBasis(wordsResultDTO.getFareBasis());                           // 客票级别
            resp.setIdNum(wordsResultDTO.getIdNum());           // 身份证号
            resp.setDestinationStation(wordsResultDTO.getDestinationStation());                  // 目的站
            resp.setName(wordsResultDTO.getName());                            // 	姓名
            resp.setAgentCode(wordsResultDTO.getAgentCode());                       // 	销售单位号
            resp.setTime(wordsResultDTO.getTime());                            // 时间
            resp.setClassX(wordsResultDTO.getClassX());              // 座位等级
            resp.setDevFund(wordsResultDTO.getDevFund());                 // 民航发展基金/基建费
            return R.ok().setData(resp);
        }


        return R.error();
    }

}
