Merge branch 'version_1.0'

This commit is contained in:
quyixiao 2025-03-23 23:28:20 +08:00
commit eab84e2cf7
9 changed files with 491 additions and 0 deletions

View File

@ -0,0 +1,73 @@
package com.heyu.api.controller.financial;
import com.heyu.api.baidu.handle.financial.BBankReceiptNewHandle;
import com.heyu.api.baidu.request.financial.BBankReceiptNewRequest;
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.MapUtils;
import com.heyu.api.data.utils.R;
import com.heyu.api.resp.financial.BankReceiptNewResp;
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;
import java.util.Map;
/***
* https://console.bce.baidu.com/support/?_=1740575657628&timestamp=1742739144533#/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%2Fbank_receipt_new&method=post
*
*银行回单识别
*
*接口描述
* 支持对不同版式银行回单进行结构化识别包括标题付款人户名付款人开户银行付款人账号收款人户名收款人开户银行收款人账号大写金额小写金额流水号回单编号交易日期摘要用途 14个关键字段
*
*
*/
@Slf4j
@RestController
@RequestMapping("/bankReceipt")
@NotIntercept
public class BankReceiptNewController extends BaseController {
@Autowired
private BBankReceiptNewHandle bankReceiptNewHandle;
@RequestMapping("/recognize")
@CacheResult
public R recognize(BBankReceiptNewRequest req) {
ApiR<Map> bR = bankReceiptNewHandle.handle(req);
if (bR.isSuccess()) {
Map<String, Object> data = bR.getData();
BankReceiptNewResp resp = new BankReceiptNewResp();
resp.setTitle(MapUtils.getByExpr(data, "words_result.标题.[0].word"));// 标题
resp.setPayPersonName(MapUtils.getByExpr(data, "words_result.付款人户名.[0].word")); // 付款人户名
resp.setPayBankName(MapUtils.getByExpr(data, "words_result.付款人开户银行.[0].word")); //付款人开户银行
resp.setPayAcount(MapUtils.getByExpr(data, "words_result.付款人账号.[0].word"));//付款人账号
resp.setPayeeAcount(MapUtils.getByExpr(data, "words_result.收款人户名.[0].word")); //付款人账号
resp.setPayeeName(MapUtils.getByExpr(data, "words_result.付款人户名.[0].word")); //收款人户名
resp.setPayeeBankName(MapUtils.getByExpr(data, "words_result.收款人开户银行.[0].word"));//收款人开户银行
resp.setPayeeBankAccount(MapUtils.getByExpr(data, "words_result.收款人账号.[0].word")); // 收款人账号
resp.setCapsAmount(MapUtils.getByExpr(data, "words_result.大写金额.[0].word")); // 大写金额
resp.setLowerCaseAmount(MapUtils.getByExpr(data, "words_result.小写金额.[0].word")); // 小写金额
resp.setSerialNumber(MapUtils.getByExpr(data, "words_result.流水号.[0].word")); // 流水号
resp.setReplyNumber(MapUtils.getByExpr(data, "words_result.回单编号.[0].word"));// 回单编号;
resp.setTradeDate(MapUtils.getByExpr(data, "words_result.交易日期.[0].word")); // 交易日期
resp.setSummary(MapUtils.getByExpr(data, "words_result.摘要.[0].word"));// 摘要
resp.setUse(MapUtils.getByExpr(data, "words_result.用途.[0].word"));//用途
return R.ok().setData(resp);
}
return R.error();
}
}

View File

@ -0,0 +1,81 @@
package com.heyu.api.controller.financial;
import com.heyu.api.baidu.handle.financial.BBusTicketHandle;
import com.heyu.api.baidu.request.financial.BBusTicketRequest;
import com.heyu.api.baidu.response.financial.BBusTicketResp;
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.BusTicketResp;
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=1740578576329#/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%2Fbus_ticket&method=post
* 汽车票识别
*
*
* 接口描述
* 支持对全国范围不同版式汽车票的发票代码发票号码到达站出发站日期时间金额身份证号姓名开票日期10个字段进行结构化识别
*
*/
@Slf4j
@RestController
@RequestMapping("/bus/ticket")
@NotIntercept
public class BusTicketController extends BaseController {
@Autowired
private BBusTicketHandle bBusTicketHandle;
@RequestMapping("/recognize")
@CacheResult
public R recognize(BBusTicketRequest req) {
BusTicketResp resp = new BusTicketResp();
ApiR<BBusTicketResp> bR = bBusTicketHandle.handle(req);
if (bR.isSuccess()) {
BBusTicketResp bBusTicketResp = bR.getData();
BBusTicketResp.WordsResultDTO wordsResultDTO = bBusTicketResp.getWordsResult();
resp.setDestinationStation(wordsResultDTO.getDestinationStation()); // 到达站
resp.setIdNum(wordsResultDTO.getIdNum());// 身份证号
resp.setTime(wordsResultDTO.getTime()); //时间
resp.setInvoiceCode(wordsResultDTO.getInvoiceCode()); //发票代码
resp.setInvoiceNum(wordsResultDTO.getInvoiceNum()); // 发票号码
resp.setStartingStation(wordsResultDTO.getStartingStation()); //出发站
resp.setDate(wordsResultDTO.getDate()); //日期
resp.setName(wordsResultDTO.getName()); //姓名
resp.setFare(wordsResultDTO.getFare()); //金额
return R.ok().setData(resp);
}
return R.error();
}
}

View File

@ -0,0 +1,67 @@
package com.heyu.api.controller.financial;
import com.heyu.api.baidu.handle.financial.BFerryTicketHandle;
import com.heyu.api.baidu.request.financial.BFerryTicketRequest;
import com.heyu.api.baidu.response.financial.BFerryTicketResp;
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.FerryTicketResp;
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=1740579219270#/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%2Fferry_ticket&method=post
* <p>
* <p>
* 船票识别
*
* 接口描述
* 对全国范围内不同版式的客运船票货运船票进行结构化识别包括发票代码发票号码发票日期发票类型总金额出发地点到达地点等7个字段
*/
@Slf4j
@RestController
@RequestMapping("/ferry/ticket")
@NotIntercept
public class FerryTicketController extends BaseController {
@Autowired
private BFerryTicketHandle bFerryTicketHandle;
@RequestMapping("/recognize")
@CacheResult
public R recognize(BFerryTicketRequest req) {
FerryTicketResp resp = new FerryTicketResp();
ApiR<BFerryTicketResp> bR = bFerryTicketHandle.handle(req);
if (bR.isSuccess()) {
BFerryTicketResp bFerryTicketResp = bR.getData();
BFerryTicketResp.WordsResultDTO wordsResultDTO = bFerryTicketResp.getWordsResult();
resp.setInvoiceType(wordsResultDTO.getInvoiceType()); //发票类型
resp.setInvoiceCode(wordsResultDTO.getInvoiceCode()); // 发票代码
resp.setInvoiceNum(wordsResultDTO.getInvoiceNum()); //发票号码
resp.setStartingStation(wordsResultDTO.getStartingStation()); // 出发地点
resp.setDestinationStation(wordsResultDTO.getDestinationStation()); //到达地点
resp.setInvoiceDate(wordsResultDTO.getInvoiceDate()); // 开票日期
resp.setFare(wordsResultDTO.getFare()); // 总金额
return R.ok().setData(resp);
}
return R.error();
}
}

View File

@ -0,0 +1,106 @@
package com.heyu.api.controller.financial;
import com.heyu.api.baidu.handle.financial.BInvoiceHandle;
import com.heyu.api.baidu.request.financial.BInvoiceRequest;
import com.heyu.api.baidu.response.financial.BInvoiceResp;
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.InvoiceResp;
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;
import java.util.ArrayList;
import java.util.List;
/***
* https://console.bce.baidu.com/support/?_=1740575657628&timestamp=1742742293465#/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%2Finvoice&method=post
*
* 通用机打发票识别
*
*
*
* 接口描述
* 支持对国家/地方税务局发行的横/竖版通用机打发票的23个关键字段进行结构化识别包括发票类型发票号码发票代码开票日期合计金额大写合计金额小写商品名称商品单位商品单价商品数量商品金额机打代码
* 机打号码校验码销售方名称销售方纳税人识别号购买方名称购买方纳税人识别号合计税额等
*
*
* 在线调试
* 您可以在 示例代码中心 中调试该接口可进行签名验证查看在线调用的请求内容和返回结果示例代码的自动生成
*/
@Slf4j
@RestController
@RequestMapping("/invoice")
@NotIntercept
public class InvoiceController {
@Autowired
private BInvoiceHandle bInvoiceHandle;
@RequestMapping("/recognize")
@CacheResult
public R recognize(BInvoiceRequest req) {
InvoiceResp resp = new InvoiceResp();
ApiR<BInvoiceResp> bR = bInvoiceHandle.handle(req);
if (bR.isSuccess()) {
BInvoiceResp bInvoiceResp = bR.getData();
BInvoiceResp.WordsResultDTO wordsResultDTO = bInvoiceResp.getWordsResult();
resp.setCity(wordsResultDTO.getCity()); //
resp.setInvoiceNum(wordsResultDTO.getInvoiceNum()); // 发票号码
resp.setSellerName(wordsResultDTO.getSellerName()); // 销售方名称
resp.setIndustrySort(wordsResultDTO.getIndustrySort()); // 行业分类
resp.setProvince(wordsResultDTO.getProvince()); //
List<InvoiceResp.CommodityDTO> commodityAmountList = new ArrayList<>();
for (BInvoiceResp.WordsResultDTO.CommodityAmountDTO commodityAmountDTO : wordsResultDTO.getCommodityAmount()) {
InvoiceResp.CommodityDTO commodityDTO = new InvoiceResp.CommodityDTO();
commodityDTO.setWord(commodityAmountDTO.getWord());
commodityDTO.setRow(commodityAmountDTO.getRow());
commodityAmountList.add(commodityDTO);
}
resp.setCommodityAmount(commodityAmountList); // 商品金额
resp.setInvoiceDate(wordsResultDTO.getInvoiceDate()); //开票日期
resp.setPurchaserName(wordsResultDTO.getPurchaserName()); //购买方名称
resp.setCommodityNum(wordsResultDTO.getCommodityNum()); //商品数量
resp.setInvoiceCode(wordsResultDTO.getCheckCode()); // 发票代码
resp.setCommodityUnit(wordsResultDTO.getCommodityUnit()); //商品单位
resp.setSheetNum(wordsResultDTO.getSheetNum()); //联次
resp.setPurchaserRegisterNum(wordsResultDTO.getPurchaserRegisterNum()); //购买方纳税人识别号
resp.setTime(wordsResultDTO.getTime()); //时间
resp.setCommodityPrice(wordsResultDTO.getCommodityPrice()); // 商品单价
resp.setAmountInFiguers(wordsResultDTO.getAmountInFiguers()); //合计金额小写
resp.setAmountInWords(wordsResultDTO.getAmountInWords()); //合计金额大写
resp.setCheckCode(wordsResultDTO.getCheckCode()); //校验码
resp.setTotalTax(wordsResultDTO.getTotalTax()); //合计税额
resp.setInvoiceType(wordsResultDTO.getInvoiceType()); // 发票类型
resp.setSellerRegisterNum(wordsResultDTO.getSellerRegisterNum()); // 销售方纳税人识别号
List<InvoiceResp.CommodityDTO> commodityNameDTOS = new ArrayList<>();
for (BInvoiceResp.WordsResultDTO.CommodityNameDTO commodityNameDTO : wordsResultDTO.getCommodityName()) {
InvoiceResp.CommodityDTO commodityDTO = new InvoiceResp.CommodityDTO();
commodityDTO.setRow(commodityNameDTO.getRow());
commodityDTO.setWord(commodityNameDTO.getWord());
commodityNameDTOS.add(commodityDTO);
}
resp.setCommodityName(commodityNameDTOS); // 商品名称
}
return R.error();
}
}

View File

@ -0,0 +1,56 @@
package com.heyu.api.controller.financial;
import com.heyu.api.baidu.handle.financial.BMultipleInvoiceHandle;
import com.heyu.api.baidu.request.financial.BMultipleInvoiceRequest;
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 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;
import java.util.Map;
/***
* https://console.bce.baidu.com/support/?_=1740494347073&timestamp=1742743299843#/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%2Fmultiple_invoice&method=post
*
*智能财务票据识别
*
*
*
*
*/
@Slf4j
@RestController
@RequestMapping("/multiple/invoice")
@NotIntercept
public class MultipleInvoiceController extends BaseController {
@Autowired
private BMultipleInvoiceHandle bMultipleInvoiceHandle;
@RequestMapping("/recognize")
@CacheResult
public R recognize(BMultipleInvoiceRequest req) {
ApiR<Map> bR = bMultipleInvoiceHandle.handle(req);
if(bR.isSuccess()){
Map<String,Object> data = bR.getData();
}
return R.error();
}
}

View File

@ -0,0 +1,26 @@
package com.heyu.api.resp.financial;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
@Data
public class BankReceiptNewResp extends BaseResp {
private String title ; // 标题
private String payPersonName; // 付款人户名
private String payBankName; //付款人开户银行
private String payAcount;//付款人账号
private String payeeAcount; //付款人账号
private String payeeName; //收款人户名
private String payeeBankName;//收款人开户银行
private String payeeBankAccount; // 收款人账号
private String capsAmount; // 大写金额
private String lowerCaseAmount; // 小写金额
private String serialNumber ; // 流水号
private String replyNumber ;// 回单编号;
private String tradeDate; // 交易日期
private String summary;// 摘要
private String use;//用途
}

View File

@ -0,0 +1,21 @@
package com.heyu.api.resp.financial;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
@Data
public class BusTicketResp extends BaseResp {
private String destinationStation; // 到达站
private String idNum;// 身份证号
private String time; //时间
private String invoiceCode; //发票代码
private String invoiceNum; // 发票号码
private String startingStation; //出发站
private String date; //日期
private String name; //姓名
private String fare; //金额
}

View File

@ -0,0 +1,19 @@
package com.heyu.api.resp.financial;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
@Data
public class FerryTicketResp extends BaseResp {
private String invoiceType; //发票类型
private String invoiceCode; // 发票代码
private String invoiceNum; //发票号码
private String startingStation; // 出发地点
private String destinationStation; //到达地点
private String invoiceDate; // 开票日期
private String fare; // 总金额
}

View File

@ -0,0 +1,42 @@
package com.heyu.api.resp.financial;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
public class InvoiceResp extends BaseResp {
private String city; //
private String invoiceNum; // 发票号码
private String sellerName; // 销售方名称
private String industrySort; // 行业分类
private String province; //
private List<CommodityDTO> commodityAmount; // 商品金额
private String invoiceDate; //开票日期
private String purchaserName; //购买方名称
private List<?> commodityNum; //商品数量
private String invoiceCode; // 发票代码
private List<?> commodityUnit; //商品单位
private String sheetNum; //联次
private String purchaserRegisterNum; //购买方纳税人识别号
private String time; //时间
private List<?> commodityPrice; // 商品单价
private String amountInFiguers; //合计金额小写
private String amountInWords; //合计金额大写
private String checkCode; //校验码
private String totalTax; //合计税额
private String invoiceType; // 发票类型
private String sellerRegisterNum; // 销售方纳税人识别号
private List<CommodityDTO> commodityName; // 商品名称
@NoArgsConstructor
@Data
public static class CommodityDTO {
private String word; //内容
private String row; //行号
}
}