MultiObjectDetect.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. package com.ydtech.utils.baidu;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.ydtech.core.page.HttpResult;
  5. import com.ydtech.modules.ins.model.CardUserInfo;
  6. import org.apache.commons.lang3.StringUtils;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.core.env.Environment;
  9. import org.springframework.stereotype.Component;
  10. import javax.annotation.PostConstruct;
  11. import java.net.URLEncoder;
  12. import java.util.HashMap;
  13. import java.util.Map;
  14. /**
  15. * @ClassName MultiObjectDetect
  16. * @Description: TODO
  17. * @Author
  18. * @Date 2021/6/25
  19. **/
  20. @Component
  21. public class MultiObjectDetect {
  22. @Autowired
  23. private Environment environment;
  24. @Autowired
  25. private static Environment staticEnvironment;
  26. @PostConstruct
  27. public void init() {
  28. staticEnvironment = environment;
  29. }
  30. public static HttpResult multiObjectDetect(String imgData) {
  31. Map<String, Object> ma = new HashMap<>();
  32. // 请求url
  33. String url = staticEnvironment.getProperty("baidu.vehicle");
  34. try {
  35. // 本地文件路径
  36. imgData = imgData.substring(imgData.indexOf(",") + 1);
  37. String imgParam = URLEncoder.encode(imgData, "UTF-8");
  38. String param = "image=" + imgParam;
  39. // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
  40. String accessToken = AuthService.getAuth();
  41. String result = HttpUtil.post(url, accessToken, param);
  42. JSONObject ja = JSON.parseObject(result);
  43. String wordsResult = ja.getString("words_result");
  44. CardUserInfo cardUserInfo = new CardUserInfo();
  45. JSONObject jb = JSON.parseObject(wordsResult);
  46. cardUserInfo.setVIN(JSON.parseObject(jb.getString("车辆识别代号")).getString("words").toString());
  47. cardUserInfo.setIssueDate(JSON.parseObject(jb.getString("发证日期")).getString("words"));
  48. String hpzl = JSON.parseObject(jb.getString("车辆类型")).getString("words");
  49. if (hpzl != null && hpzl.equals("小型轿车")) {
  50. cardUserInfo.setPlateType("02");
  51. } else {
  52. cardUserInfo.setPlateType("01");
  53. }
  54. cardUserInfo.setMotorUsageTypeCode("8A");
  55. cardUserInfo.setMotorTypeCode("A0");
  56. if (!StringUtils.isEmpty(jb.getString("注册日期"))) {
  57. cardUserInfo.setRegisterDate(JSON.parseObject(jb.getString("注册日期")).getString("words"));
  58. } else if (!StringUtils.isEmpty(jb.getString("注册登记日期"))) {
  59. cardUserInfo.setRegisterDate(JSON.parseObject(jb.getString("注册登记日期")).getString("words"));
  60. }
  61. cardUserInfo.setEngine(JSON.parseObject(jb.getString("发动机号码")).getString("words"));
  62. cardUserInfo.setPlateNo(JSON.parseObject(jb.getString("号牌号码")).getString("words"));
  63. cardUserInfo.setBackOcrID(JSON.parseObject(jb.getString("品牌型号")).getString("words"));
  64. ma.put("carInfo", cardUserInfo);
  65. return HttpResult.ok("200", ma);
  66. } catch (Exception e) {
  67. e.printStackTrace();
  68. }
  69. return HttpResult.ok("201", ma);
  70. }
  71. public static JSONObject request(String images, String vehicleLicenseSide) {
  72. // 请求url
  73. String url = staticEnvironment.getProperty("baidu.vehicle");
  74. try {
  75. images = images.substring(images.indexOf(",") + 1);
  76. String imgParam = URLEncoder.encode(images, "UTF-8");
  77. String param = "image=" + imgParam + "&vehicle_license_side=" + vehicleLicenseSide;
  78. // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
  79. String accessToken = AuthService.getAuth();
  80. String result = HttpUtil.post(url, accessToken, param);
  81. JSONObject ja = JSON.parseObject(result);
  82. String wordsResult = ja.getString("words_result");
  83. return JSON.parseObject(wordsResult);
  84. } catch (Exception e) {
  85. e.printStackTrace();
  86. }
  87. return new JSONObject();
  88. }
  89. public static void drivingPermitFront(String images, CardUserInfo cardUserInfo) {
  90. if (StringUtils.isEmpty(images)) {
  91. return;
  92. }
  93. try {
  94. JSONObject jb = request(images, "front");
  95. cardUserInfo.setVIN(JSON.parseObject(jb.getString("车辆识别代号")).getString("words").toString());
  96. cardUserInfo.setIssueDate(JSON.parseObject(jb.getString("发证日期")).getString("words"));
  97. //先获取使用性质
  98. String useNature = JSON.parseObject(jb.getString("使用性质")).getString("words");
  99. String hpzl = JSON.parseObject(jb.getString("车辆类型")).getString("words");
  100. if(useNature != null && useNature.equals("非营运")) {
  101. //家用车
  102. // if (hpzl != null && (hpzl.equals("小型轿车") || hpzl.equals("小型普通客车"))) {
  103. // //车辆类型
  104. // cardUserInfo.setPlateType("02");
  105. // //车辆种类
  106. // cardUserInfo.set
  107. // }
  108. cardUserInfo.setPlateType("A0");
  109. cardUserInfo.setCategory("K33");
  110. cardUserInfo.setVehicleUse("05");
  111. } else if(useNature != null && useNature.equals("货运")) {
  112. //货车
  113. if(hpzl != null && hpzl.equals("轻型普通货车"))
  114. {
  115. cardUserInfo.setCategory("H31");
  116. cardUserInfo.setPlateType("A1");
  117. cardUserInfo.setVehicleUse("08");
  118. }else{
  119. //后期进行赛选
  120. cardUserInfo.setCategory("H31");
  121. cardUserInfo.setPlateType("A1");
  122. cardUserInfo.setVehicleUse("08");
  123. }
  124. }
  125. //判断使用性质
  126. cardUserInfo.setUseNature(JSON.parseObject(jb.getString("使用性质")).getString("words"));
  127. cardUserInfo.setMotorUsageTypeCode("8A");
  128. cardUserInfo.setMotorTypeCode("A0");
  129. if (!StringUtils.isEmpty(jb.getString("注册日期"))) {
  130. cardUserInfo.setRegisterDate(JSON.parseObject(jb.getString("注册日期")).getString("words"));
  131. } else if (!StringUtils.isEmpty(jb.getString("注册登记日期"))) {
  132. cardUserInfo.setRegisterDate(JSON.parseObject(jb.getString("注册登记日期")).getString("words"));
  133. }
  134. cardUserInfo.setEngine(JSON.parseObject(jb.getString("发动机号码")).getString("words"));
  135. cardUserInfo.setPlateNo(JSON.parseObject(jb.getString("号牌号码")).getString("words"));
  136. cardUserInfo.setBackOcrID(JSON.parseObject(jb.getString("品牌型号")).getString("words"));
  137. cardUserInfo.setCarOwner(JSON.parseObject(jb.getString("所有人")).getString("words"));
  138. } catch (Exception e) {
  139. e.printStackTrace();
  140. }
  141. }
  142. /**
  143. * 行驶证背面
  144. *
  145. * @param images
  146. * @return
  147. */
  148. public static void drivingPermitBack(String images, CardUserInfo cardUserInfo) {
  149. if (StringUtils.isEmpty(images)) {
  150. return;
  151. }
  152. try {
  153. JSONObject jb = request(images, "back");
  154. cardUserInfo.setGrossMass(JSON.parseObject(jb.getString("总质量")).getString("words").replace("kg", ""));
  155. cardUserInfo.setApprovedPassengersCapacity(JSON.parseObject(jb.getString("核定载人数")).getString("words").replace("人", ""));
  156. cardUserInfo.setUnladenMass(JSON.parseObject(jb.getString("整备质量")).getString("words").replace("kg", ""));
  157. cardUserInfo.setLimitLoad(JSON.parseObject(jb.getString("核定载质量")).getString("words").replace("kg", ""));
  158. } catch (Exception e) {
  159. e.printStackTrace();
  160. }
  161. }
  162. }