From 5c1c99d0f55ac392dd1dfd2a1c254db9f3837c33 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Fri, 28 Mar 2025 00:44:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../traffic/UsedVehicleInvoiceController.java | 79 ++++++++++++++++ .../traffic/VehicleCertificateController.java | 90 +++++++++++++++++++ .../traffic/VehicleInvoiceController.java | 89 ++++++++++++++++++ .../resp/traffic/UsedVehicleInvoiceResp.java | 35 ++++++++ .../resp/traffic/VehicleCertificateResp.java | 38 ++++++++ .../api/resp/traffic/VehicleInvoiceResp.java | 35 ++++++++ 6 files changed, 366 insertions(+) create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/traffic/UsedVehicleInvoiceController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/traffic/VehicleCertificateController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/traffic/VehicleInvoiceController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/traffic/UsedVehicleInvoiceResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/traffic/VehicleCertificateResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/traffic/VehicleInvoiceResp.java diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/traffic/UsedVehicleInvoiceController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/traffic/UsedVehicleInvoiceController.java new file mode 100644 index 0000000..5c27d79 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/traffic/UsedVehicleInvoiceController.java @@ -0,0 +1,79 @@ +package com.heyu.api.controller.traffic; + +import com.heyu.api.baidu.handle.traffic.BUsedVehicleInvoiceHandle; +import com.heyu.api.baidu.request.traffic.BUsedVehicleInvoiceRequest; +import com.heyu.api.baidu.response.traffic.BUsedVehicleInvoiceResp; +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.traffic.UsedVehicleInvoiceResp; +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/?_=1740411162437×tamp=1740411735793#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E4%BA%A4%E9%80%9A%E5%9C%BA%E6%99%AFOCR&api=rest%2F2.0%2Focr%2Fv1%2Fused_vehicle_invoice&method=post + * 二手车销售发票识别 + * + *接口描述 + * 支持对二手车销售发票的25个关键字段进行结构化识别,包括发票代码、发票号码、开票日期、买方、卖方、车牌号、车辆类型、二手车市场等。 + * + * + */ +@Slf4j +@RestController +@RequestMapping("/used/vehicle/invoice") +@NotIntercept +public class UsedVehicleInvoiceController extends BaseController { + + + @Autowired + private BUsedVehicleInvoiceHandle bUsedVehicleInvoiceHandle; + + + @RequestMapping("/recognize") + @CacheResult + public R recognize(BUsedVehicleInvoiceRequest request) { + UsedVehicleInvoiceResp resp = new UsedVehicleInvoiceResp(); + + ApiR bR = bUsedVehicleInvoiceHandle.handle(request); + if (bR.isSuccess()) { + BUsedVehicleInvoiceResp bUsedVehicleInvoiceResp = bR.getData(); + BUsedVehicleInvoiceResp.WordResultDTO wordResultDTO = bUsedVehicleInvoiceResp.getWordResult(); + + if (wordResultDTO != null) { + resp.setTransferVehicleManagementOffice(wordResultDTO.getTransferVehicleManagementOffice().getWord()); // 转入地车管所名称 + resp.setManuModel(wordResultDTO.getManuModel().getWord()); // 厂牌型号 + resp.setRegistrationCode(wordResultDTO.getRegistrationCode().getWord()); //登记证号 + resp.setTotalCarPriceLow(wordResultDTO.getTotalCarPriceLow().getWord()); //车价合计小写 + resp.setTaxAddress(wordResultDTO.getTaxAddress().getWord()); //纳税人地址 + resp.setPurchaserCode(wordResultDTO.getPurchaserCode().getWord()); // 买方身份证号 + resp.setSaler(wordResultDTO.getSaler().getWord()); // 卖方 + resp.setTaxCode(wordResultDTO.getTaxCode().getWord()); // 税控码 + resp.setPurchaser(wordResultDTO.getPurchaser().getWord()); //买方 + resp.setInvoiceCode(wordResultDTO.getInvoiceCode().getWord()); //发票代码 + resp.setInvoiceDate(wordResultDTO.getInvoiceDate().getWord()); //开票日期 + resp.setSalerAddress(wordResultDTO.getSalerAddress().getWord()); //卖方地址 + resp.setSalerCode(wordResultDTO.getSalerCode().getWord()); //卖方身份证号 + resp.setTaxPhone(wordResultDTO.getTaxPhone().getWord()); //纳税人电话 + resp.setTaxNum(wordResultDTO.getTaxPhone().getWord()); //纳税人识别号 + resp.setPurchaserPhone(wordResultDTO.getPurchaserPhone().getWord()); //买方电话 + resp.setVehicleType(wordResultDTO.getVehicleType().getWord()); // 车辆类型 + resp.setLicensePlateNum(wordResultDTO.getLicensePlateNum().getWord()); //车牌号 + resp.setSheetNum(wordResultDTO.getSheetNum().getWord());//联次 + resp.setVinNum(wordResultDTO.getVinNum().getWord()); //车架号 + resp.setTotalCarPrice(wordResultDTO.getTotalCarPrice().getWord()); //车价合计大写 + resp.setPurchaserAddress(wordResultDTO.getPurchaserAddress().getWord()); + resp.setSalerPhone(wordResultDTO.getSalerPhone().getWord()); //卖方电话 + resp.setUsedCarMarket(wordResultDTO.getUsedCarMarket().getWord()); //二手车市场 + resp.setInvoiceNum(wordResultDTO.getInvoiceNum().getWord()); //发票号码 + return R.ok().setData(resp); + } + } + return R.error(bR.getErrorMsg()); + } + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/traffic/VehicleCertificateController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/traffic/VehicleCertificateController.java new file mode 100644 index 0000000..753be83 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/traffic/VehicleCertificateController.java @@ -0,0 +1,90 @@ +package com.heyu.api.controller.traffic; + +import com.heyu.api.baidu.handle.traffic.BVehicleCertificateHandle; +import com.heyu.api.baidu.request.traffic.BVehicleCertificateRequest; +import com.heyu.api.baidu.response.traffic.BVehicleCertificateResp; +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.traffic.VehicleCertificateResp; +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/?_=1740411162437×tamp=1740411968974#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E4%BA%A4%E9%80%9A%E5%9C%BA%E6%99%AFOCR&api=rest%2F2.0%2Focr%2Fv1%2Fvehicle_certificate&method=post + *

+ * 车辆合格证识别 + * + * + * 接口描述 + * 支持对车辆合格证的28个关键字段进行结构化识别,包括合格证编号、发证日期、车辆制造企业名、车辆品牌、车辆名称、车辆型号、车架号、车身颜色、发动 + * 机型号、发动机号、燃料种类、排量、功率、排放标准、轮胎数、轴距、轴数、转向形式、总质量、整备质量、驾驶室准乘人数、最高设计车速、车辆制造日期等。 + * + */ +@Slf4j +@RestController +@RequestMapping("/vehicle/certificate") +@NotIntercept +public class VehicleCertificateController extends BaseController { + + + @Autowired + private BVehicleCertificateHandle bVehicleCertificateHandle; + + + @RequestMapping("/recognize") + @CacheResult + public R recognize(BVehicleCertificateRequest request) { + + VehicleCertificateResp resp = new VehicleCertificateResp(); + + ApiR bR = bVehicleCertificateHandle.handle(request); + if (bR.isSuccess()) { + BVehicleCertificateResp bVehicleCertificateResp = bR.getData(); + + BVehicleCertificateResp.WordsResultDTO wordsResultDTO = bVehicleCertificateResp.getWordsResult(); + + + resp.setManufactureDate(wordsResultDTO.getManufactureDate()); //车辆制造日期 + resp.setCarColor(wordsResultDTO.getCarColor()); // 车身颜色 + resp.setLimitPassenger(wordsResultDTO.getLimitPassenger()); //驾驶室准乘人数 + resp.setEngineType(wordsResultDTO.getEngineType()); //发动机型号 + resp.setTotalWeight(wordsResultDTO.getTotalWeight()); //总质量 + resp.setPower(wordsResultDTO.getPower()); //功率 + resp.setCertificationNo(wordsResultDTO.getCertificationNo()); //合格证编号 + resp.setFuelType(wordsResultDTO.getFuelType()); //燃料种类 + resp.setManufacturer(wordsResultDTO.getManufacturer()); // 车辆制造企业名 + resp.setSteeringType(wordsResultDTO.getSteeringType()); //转向形式 + resp.setWheelbase(wordsResultDTO.getWheelbase()); // 轴距 + resp.setSpeedLimit(wordsResultDTO.getSpeedLimit()); //最高设计车速 + resp.setEngineNo(wordsResultDTO.getEngineNo()); //发动机号 + resp.setSaddleMass(wordsResultDTO.getSaddleMass()); // 轴数 + resp.setAxleNum(wordsResultDTO.getAxleNum()); // 轴数 + resp.setCarModel(wordsResultDTO.getCarModel()); //车辆型号 + resp.setVinNo(wordsResultDTO.getVinNo()); // 车架号 + resp.setCarBrand(wordsResultDTO.getCarBrand()); //车辆品牌 + resp.setEmissionStandard(wordsResultDTO.getEmissionStandard()); //排放标准 + resp.setDisplacement(wordsResultDTO.getDisplacement()); //排量n + resp.setCertificateDate(wordsResultDTO.getCertificateDate()); //发证日期 + resp.setCarName(wordsResultDTO.getCarName()); // 车辆名称 + resp.setTyreNum(wordsResultDTO.getTyreNum()); //轮胎数 + resp.setChassisID(wordsResultDTO.getChassisID()); // 底盘ID + resp.setChassisModel(wordsResultDTO.getChassisModel()); //底盘型号 + resp.setSeatingCapacity(wordsResultDTO.getSeatingCapacity()); //额定载客人数 + resp.setQualifySeal(wordsResultDTO.getQualifySeal()); //合格印章:1表示有,0表示无 + resp.setCGSSeal(wordsResultDTO.getCGSSeal()); //CGS印章:1表示有,0表示无 + + + return R.ok().setData(resp); + + + } + + return R.error(); + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/traffic/VehicleInvoiceController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/traffic/VehicleInvoiceController.java new file mode 100644 index 0000000..5ed1f01 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/traffic/VehicleInvoiceController.java @@ -0,0 +1,89 @@ +package com.heyu.api.controller.traffic; + +import com.heyu.api.baidu.handle.traffic.BVehicleInvoiceHandle; +import com.heyu.api.baidu.request.traffic.BVehicleInvoiceRequest; +import com.heyu.api.baidu.response.traffic.BVehicleInvoiceResp; +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.traffic.VehicleInvoiceResp; +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/?_=1740411162437×tamp=1740411519148#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E4%BA%A4%E9%80%9A%E5%9C%BA%E6%99%AFOCR&api=rest%2F2.0%2Focr%2Fv1%2Fvehicle_invoice&method=post + *

+ * 机动车销售发票识别 + * + * + * 接口描述 + * 支持对机动车销售发票的26个关键字段进行结构化识别,包括发票代码、发票号码、开票日期、机器编号、购买方名称、购买方身份证号码/组织机构代码、车辆类型、 + * 厂牌型号、产地、合格证号、发动机号码、车架号码、价税合计、价税合计小写、销货单位名称、电话、纳税人识别号、账号、地址、开户银行、税率、税额、 + * 主管税务机关及代码、不含税价格、限乘人数。 + * + * + * + */ + +@Slf4j +@RestController +@RequestMapping("/vehicle/invoice") +@NotIntercept +public class VehicleInvoiceController extends BaseController { + + + @Autowired + private BVehicleInvoiceHandle bVehicleInvoiceHandle; + + + @RequestMapping("/recognize") + @CacheResult + public R recognize(BVehicleInvoiceRequest request) { + VehicleInvoiceResp resp = new VehicleInvoiceResp(); + + ApiR bR = bVehicleInvoiceHandle.handle(request); + if (bR.isSuccess()) { + BVehicleInvoiceResp bVehicleInvoiceResp = bR.getData(); + BVehicleInvoiceResp.WordsResultDTO wordsResultDTO = bVehicleInvoiceResp.getWordsResult(); + + resp.setInvoiceNum(wordsResultDTO.getInvoiceNum()); //发票号码/机打号码 + resp.setSaler(wordsResultDTO.getSaler()); // 销货单位名称 + resp.setLimitPassenger(wordsResultDTO.getLimitPassenger()); //限乘人数 + resp.setMachineCode(wordsResultDTO.getMachineCode()); // 机器编号 + resp.setVinNum(wordsResultDTO.getVinNum()); // 车架号码 + resp.setTaxRate(wordsResultDTO.getTaxRate()); //税率 + resp.setPriceTaxLow(wordsResultDTO.getPriceTaxLow()); //价税合计小写 + resp.setInvoiceDate(wordsResultDTO.getInvoiceDate()); //开票日期 + resp.setPrice(wordsResultDTO.getPrice()); //不含税价格 + resp.setSalerBank(wordsResultDTO.getSalerBank()); //销货单位开户银行 + resp.setTaxAuthor(wordsResultDTO.getTaxAuthor()); //主管税务机关 + resp.setManuModel(wordsResultDTO.getManuModel()); //厂牌型号 + resp.setCertificateNum(wordsResultDTO.getCertificateNum()); //合格证号 + resp.setPurchaser(wordsResultDTO.getPurchaser()); //购买方名称 + resp.setVehicleType(wordsResultDTO.getVehicleType()); // 车辆类型 + resp.setInvoiceCode(wordsResultDTO.getInvoiceCode()); //发票代码/机打代码 + resp.setPriceTax(wordsResultDTO.getPriceTax()); // 价税合计 + resp.setSalerPhone(wordsResultDTO.getSalerPhone()); //销货单位电话 + resp.setSalerAddress(wordsResultDTO.getSalerAddress()); // 销货单位地址 + resp.setOrigin(wordsResultDTO.getOrigin()); //产地 + resp.setEngineNum(wordsResultDTO.getEngineNum()); //发动机号码 + resp.setTax(wordsResultDTO.getTax()); //税额 + resp.setPurchaserCode(wordsResultDTO.getPurchaserCode()); //购买方身份证号码/组织机构代码 + resp.setTaxAuthorCode(wordsResultDTO.getTaxAuthorCode()); // 主管税务机关代码 + resp.setSalerAccountNum(wordsResultDTO.getSalerAccountNum()); //销货单位账号 + resp.setSalerCode(wordsResultDTO.getSalerCode()); //销货单位纳税人识别号 + return R.ok().setData(resp); + } + return R.error(bR.getErrorMsg()); + } + + +} \ No newline at end of file diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/traffic/UsedVehicleInvoiceResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/traffic/UsedVehicleInvoiceResp.java new file mode 100644 index 0000000..d359b64 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/traffic/UsedVehicleInvoiceResp.java @@ -0,0 +1,35 @@ +package com.heyu.api.resp.traffic; + + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class UsedVehicleInvoiceResp extends BaseResp { + + private String transferVehicleManagementOffice; // 转入地车管所名称 + private String manuModel; // 厂牌型号 + private String registrationCode; //登记证号 + private String totalCarPriceLow; //车价合计小写 + private String taxAddress; //纳税人地址 + private String purchaserCode; // 买方身份证号 + private String saler; // 卖方 + private String taxCode; // 税控码 + private String purchaser; //买方 + private String invoiceCode; //发票代码 + private String invoiceDate; //开票日期 + private String salerAddress; //卖方地址 + private String salerCode; //卖方身份证号 + private String taxPhone; //纳税人电话 + private String taxNum; //纳税人识别号 + private String purchaserPhone; //买方电话 + private String vehicleType; // 车辆类型 + private String licensePlateNum; //车牌号 + private String sheetNum;//联次 + private String vinNum; //车架号 + private String totalCarPrice; //车价合计大写 + private String purchaserAddress; + private String salerPhone; //卖方电话 + private String usedCarMarket; //二手车市场 + private String invoiceNum; //发票号码 +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/traffic/VehicleCertificateResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/traffic/VehicleCertificateResp.java new file mode 100644 index 0000000..78fd68b --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/traffic/VehicleCertificateResp.java @@ -0,0 +1,38 @@ +package com.heyu.api.resp.traffic; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class VehicleCertificateResp extends BaseResp { + + private String manufactureDate; //车辆制造日期 + private String carColor; // 车身颜色 + private String limitPassenger; //驾驶室准乘人数 + private String engineType; //发动机型号 + private String totalWeight; //总质量 + private String power; //功率 + private String certificationNo; //合格证编号 + private String fuelType; //燃料种类 + private String manufacturer; // 车辆制造企业名 + private String steeringType; //转向形式 + private String wheelbase; // 轴距 + private String speedLimit; //最高设计车速 + private String engineNo; //发动机号 + private String saddleMass; // 轴数 + private String axleNum; // 轴数 + private String carModel; //车辆型号 + private String vinNo; // 车架号 + private String carBrand; //车辆品牌 + private String emissionStandard; //排放标准 + private String displacement; //排量n + private String certificateDate; //发证日期 + private String carName; // 车辆名称 + private String tyreNum; //轮胎数 + private String chassisID; // 底盘ID + private String chassisModel; //底盘型号 + private String seatingCapacity; //额定载客人数 + private String qualifySeal; //合格印章:1表示有,0表示无 + private String cGSSeal; //CGS印章:1表示有,0表示无 + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/traffic/VehicleInvoiceResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/traffic/VehicleInvoiceResp.java new file mode 100644 index 0000000..1962f0d --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/traffic/VehicleInvoiceResp.java @@ -0,0 +1,35 @@ +package com.heyu.api.resp.traffic; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + + +@Data +public class VehicleInvoiceResp extends BaseResp { + private String invoiceNum; //发票号码/机打号码 + private String saler; // 销货单位名称 + private String limitPassenger; //限乘人数 + private String machineCode; // 机器编号 + private String vinNum; // 车架号码 + private String taxRate; //税率 + private String priceTaxLow; //价税合计小写 + private String invoiceDate; //开票日期 + private String price; //不含税价格 + private String salerBank; //销货单位开户银行 + private String taxAuthor; //主管税务机关 + private String manuModel; //厂牌型号 + private String certificateNum; //合格证号 + private String purchaser; //购买方名称 + private String vehicleType; // 车辆类型 + private String invoiceCode; //发票代码/机打代码 + private String priceTax; // 价税合计 + private String salerPhone; //销货单位电话 + private String salerAddress; // 销货单位地址 + private String origin; //产地 + private String engineNum; //发动机号码 + private String tax; //税额 + private String purchaserCode; //购买方身份证号码/组织机构代码 + private String taxAuthorCode; // 主管税务机关代码 + private String salerAccountNum; //销货单位账号 + private String salerCode; //销货单位纳税人识别号 +}