提交修改

This commit is contained in:
quyixiao 2025-03-28 20:26:16 +08:00
parent 816362ad56
commit a44f593a59
4 changed files with 291 additions and 2 deletions

View File

@ -1,15 +1,165 @@
package com.heyu.api.baidu.response.traffic;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.heyu.api.baidu.response.BBaseResp;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* https://console.bce.baidu.com/support/?_=1740411162437&timestamp=1740412165257#/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_registration_certificate&method=post
* 机动车登记证书识别
*
*/
@NoArgsConstructor
@Data
public class BVehicleRegistrationCertificateResp extends BBaseResp {
@JsonProperty("words_result")
private WordsResultDTO wordsResult;
@JsonProperty("log_id")
private Long logId;
@JsonProperty("direction")
private String direction;
@NoArgsConstructor
@Data
public static class WordsResultDTO {
@JsonProperty("registration_authority")
private RegistrationAuthorityDTO registrationAuthority;
@JsonProperty("vehicle_model")
private VehicleModelDTO vehicleModel;
@JsonProperty("vehicle_type")
private VehicleTypeDTO vehicleType;
@JsonProperty("registration_num")
private RegistrationNumDTO registrationNum;
@JsonProperty("engine_num")
private EngineNumDTO engineNum;
@JsonProperty("number")
private NumberDTO number;
@JsonProperty("body_color")
private BodyColorDTO bodyColor;
@JsonProperty("registration_date")
private RegistrationDateDTO registrationDate;
@JsonProperty("date_of_production")
private DateOfProductionDTO dateOfProduction;
@JsonProperty("seating_capacity")
private SeatingCapacityDTO seatingCapacity;
@JsonProperty("date_of_issue")
private DateOfIssueDTO dateOfIssue;
@JsonProperty("nature_of_use")
private NatureOfUseDTO natureOfUse;
@JsonProperty("vin")
private VinDTO vin;
@JsonProperty("seal_of_issue_authority")
private SealOfIssueAuthorityDTO sealOfIssueAuthority;
@JsonProperty("name_idcard_no")
private NameIdcardNoDTO nameIdcardNo;
@NoArgsConstructor
@Data
public static class RegistrationAuthorityDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class VehicleModelDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class VehicleTypeDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class RegistrationNumDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class EngineNumDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class NumberDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class BodyColorDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class RegistrationDateDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class DateOfProductionDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class SeatingCapacityDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class DateOfIssueDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class NatureOfUseDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class VinDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class SealOfIssueAuthorityDTO {
@JsonProperty("words")
private String words;
}
@NoArgsConstructor
@Data
public static class NameIdcardNoDTO {
@JsonProperty("words")
private String words;
}
}
}

View File

@ -5,6 +5,9 @@ import com.aliyun.ocr20191230.models.RecognizeVINCodeResponse;
import com.aliyun.ocr20191230.models.RecognizeVINCodeResponseBody;
import com.heyu.api.alibaba.handle.common.text.ARecognizeVINCodeHandle;
import com.heyu.api.alibaba.request.common.text.ARecognizeVINCodeRequest;
import com.heyu.api.baidu.handle.traffic.BVinCodeHandle;
import com.heyu.api.baidu.request.traffic.BVinCodeRequest;
import com.heyu.api.baidu.response.traffic.BVinCodeResp;
import com.heyu.api.controller.BaseController;
import com.heyu.api.request.tax.ARecognizeVATInvoiceReq;
import com.heyu.api.resp.tax.RecognizeVINCodeResp;
@ -13,10 +16,14 @@ 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.apache.commons.collections.CollectionUtils;
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://next.api.aliyun.com/api/ocr/2019-12-30/RecognizeVINCode?tab=DEMO&lang=JAVA
*
@ -29,6 +36,14 @@ import org.springframework.web.bind.annotation.RestController;
*
*
* VIN 码识别能力可以识别车辆 VIN 输出车辆 VIN 码数值
*
*
*
*
*https://console.bce.baidu.com/support/?_=1740411162437&timestamp=1740411253251#/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%2Fvin_code&method=post
*
*
*
*/
@Slf4j
@RestController
@ -41,10 +56,32 @@ public class RecognizeVINCodeController extends BaseController {
private ARecognizeVINCodeHandle arecognizeVINCodeHandle;
@Autowired
private BVinCodeHandle bVinCodeHandle;
@RequestMapping("/recognize")
@CacheResult
public R recognize(ARecognizeVATInvoiceReq request) {
RecognizeVINCodeResp resp = new RecognizeVINCodeResp();
List<RecognizeVINCodeResp> respList = new ArrayList<>();
BVinCodeRequest bVinCodeRequest = new BVinCodeRequest();
bVinCodeRequest.setImageBase64(request.getImageBase64());
bVinCodeRequest.setImageUrl(request.getImageUrl());
ApiR<BVinCodeResp> bR = bVinCodeHandle.handle(bVinCodeRequest);
if (bR.isSuccess()) {
BVinCodeResp bVinCodeResp = bR.getData();
List<BVinCodeResp.WordsResultDTO> wordsResultDTOS = bVinCodeResp.getWordsResult();
if (CollectionUtils.isNotEmpty(wordsResultDTOS)) {
for (BVinCodeResp.WordsResultDTO wordsResultDTO : wordsResultDTOS) {
RecognizeVINCodeResp response = new RecognizeVINCodeResp();
response.setVinCode(wordsResultDTO.getWords());
respList.add(response);
}
}
return R.ok().setData(respList);
}
ARecognizeVINCodeRequest aRecognizeVINCodeRequest = new ARecognizeVINCodeRequest();
aRecognizeVINCodeRequest.setImageUrl(request.getImageUrl());
@ -54,8 +91,14 @@ public class RecognizeVINCodeController extends BaseController {
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
RecognizeVINCodeResponseBody responseBody = aR.getData().getBody();
RecognizeVINCodeResponseBody.RecognizeVINCodeResponseBodyData responseBodyData = responseBody.getData();
RecognizeVINCodeResp resp = new RecognizeVINCodeResp();
resp.setVinCode(responseBodyData.getVinCode());
return R.ok().setData(resp);
respList.add(resp);
return R.ok().setData(respList);
}
return R.ok();
}

View File

@ -0,0 +1,69 @@
package com.heyu.api.controller.traffic;
import com.heyu.api.baidu.handle.traffic.BVehicleRegistrationCertificateHandle;
import com.heyu.api.baidu.request.traffic.BVehicleRegistrationCertificateRequest;
import com.heyu.api.baidu.response.traffic.BVehicleRegistrationCertificateResp;
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.VehicleRegistrationCertificateResp;
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&timestamp=1740412165257#/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_registration_certificate&method=post
* <p>
* <p>
* 机动车登记证书识别
* <p>
* 接口描述
* 支持对机动车登记证书的15个关键字段进行结构化识别包括编号机动车所有人登记机关登记日期登记编号车辆类型等同时支持检测发证机关章
*/
@Slf4j
@RestController
@RequestMapping("/vehicle/registration/certificate")
@NotIntercept
public class VehicleRegistrationCertificateController extends BaseController {
@Autowired
private BVehicleRegistrationCertificateHandle bVehicleRegistrationCertificateHandle;
@RequestMapping("/recognize")
@CacheResult
public R recognize(BVehicleRegistrationCertificateRequest request) {
VehicleRegistrationCertificateResp resp = new VehicleRegistrationCertificateResp();
ApiR<BVehicleRegistrationCertificateResp> bR = bVehicleRegistrationCertificateHandle.handle(request);
if (bR.isSuccess()) {
BVehicleRegistrationCertificateResp bVehicleRegistrationCertificateResp = bR.getData();
BVehicleRegistrationCertificateResp.WordsResultDTO wordsResultDTO = bVehicleRegistrationCertificateResp.getWordsResult();
resp.setRegistrationAuthority(wordsResultDTO.getRegistrationAuthority().getWords()); //登记机关
resp.setVehicleModel(wordsResultDTO.getVehicleModel().getWords()); //车辆型号
resp.setVehicleType(wordsResultDTO.getVehicleType().getWords()); //车辆类型
resp.setRegistrationNum(wordsResultDTO.getRegistrationNum().getWords()); // 机动车登记编号
resp.setEngineNum(wordsResultDTO.getEngineNum().getWords()); //发动机号
resp.setNumber(wordsResultDTO.getNumber().getWords()); //编号
resp.setBodyColor(wordsResultDTO.getBodyColor().getWords()); // 车身颜色
resp.setRegistrationDate(wordsResultDTO.getRegistrationDate().getWords()); // 登记日期
resp.setDateOfProduction(wordsResultDTO.getDateOfProduction().getWords()); // 出厂日期
resp.setSeatingCapacity(wordsResultDTO.getSeatingCapacity().getWords()); // 核定载客
resp.setDateOfIssue(wordsResultDTO.getDateOfIssue().getWords()); // 发证日期
resp.setNatureOfUse(wordsResultDTO.getNatureOfUse().getWords()); // 使用性质
resp.setVin(wordsResultDTO.getVin().getWords()); // 车架号
resp.setSealOfIssueAuthority(wordsResultDTO.getSealOfIssueAuthority().getWords()); // 发证机关章1表示有0表示无
resp.setNameIdcardNo(wordsResultDTO.getNameIdcardNo().getWords()); // 机动车所有人/身份证明名称/号码
return R.ok().setData(resp);
}
return R.error(bR.getErrorMsg());
}
}

View File

@ -0,0 +1,27 @@
package com.heyu.api.resp.traffic;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
@Data
public class VehicleRegistrationCertificateResp extends BaseResp {
private String registrationAuthority; //登记机关
private String vehicleModel; //车辆型号
private String vehicleType; //车辆类型
private String registrationNum; // 机动车登记编号
private String engineNum; //发动机号
private String number; //编号
private String bodyColor; // 车身颜色
private String registrationDate; // 登记日期
private String dateOfProduction; // 出厂日期
private String seatingCapacity; // 核定载客
private String dateOfIssue; // 发证日期
private String natureOfUse; // 使用性质
private String vin; // 车架号
private String sealOfIssueAuthority; // 发证机关章1表示有0表示无
private String nameIdcardNo; // 机动车所有人/身份证明名称/号码
}