Browse Source

Merge remote-tracking branch 'origin/master'

LIVE_YE 4 tháng trước cách đây
mục cha
commit
e49455bab8

+ 13 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/OcrController.java

@@ -55,6 +55,19 @@ public class OcrController {
         return IdCardUtil.licensePlate(idCardVo.getImage());
     }
 
+
+    /**
+     * 行驶证识别
+     *
+     * @return
+     */
+    @PostMapping("/vehicleLicense")
+    @RepeatSubmit(interval = 1000, message = "请求过于频繁")
+    @PreAuthorize("@ss.hasPermi('wuYe:ocr:vehicleLicense')")
+    public AjaxResult vehicleLicense(@RequestBody IdCardVo idCardVo) {
+        return IdCardUtil.vehicleLicense(idCardVo.getImage());
+    }
+
     /**
      * 房产证识别
      *

+ 61 - 12
ruoyi-common/src/main/java/com/ruoyi/common/utils/IdCardUtil.java

@@ -548,7 +548,6 @@ public class IdCardUtil {
     }
 
 
-
     /**
      * 重要提示代码中所需工具类
      * FileUtil,Base64Util,HttpUtil,GsonUtils请从
@@ -573,10 +572,10 @@ public class IdCardUtil {
             String result = com.ruoyi.common.utils.HttpUtil.post(url, accessToken, param);
             JSONObject jsonObject = JSONObject.parseObject(result);
             String wordsResult = jsonObject.getString("words_result");
-            if (StringUtils.isNotEmpty(wordsResult)){
+            if (StringUtils.isNotEmpty(wordsResult)) {
                 JSONObject jsonObjectWordsResult = JSON.parseObject(wordsResult);
                 String plateNumber = jsonObjectWordsResult.getString("number");
-                System.out.println("车牌:"+plateNumber);
+                System.out.println("车牌:" + plateNumber);
                 return AjaxResult.success(plateNumber);
             }
             /**
@@ -619,7 +618,58 @@ public class IdCardUtil {
              }
              */
             System.out.println(result);
-            return AjaxResult.error("识别车牌错误返回:"+result);
+            return AjaxResult.error("识别车牌错误返回:" + result);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return AjaxResult.error();
+    }
+
+    /**
+     * 重要提示代码中所需工具类
+     * FileUtil,Base64Util,HttpUtil,GsonUtils请从
+     * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
+     * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
+     * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
+     * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
+     * 行驶证识别
+     */
+    public static AjaxResult vehicleLicense(String image) {
+        // 请求url
+        String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license";
+        try {
+            // 本地文件路径
+
+            byte[] imgData = FileUtil.readFileByBytes(image);
+            String imgStr = com.ruoyi.common.utils.Base64Util.encode(imgData);
+            String imgParam = URLEncoder.encode(imgStr, "UTF-8");
+            String param = "image=" + imgParam;
+            // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
+            String accessToken = getAccessToken("TvvuZOOh7MgnlDFnw11ln67n", "CY47OI0eKAzYBD2LO55SM3OITzsyq6DK");
+            String result = com.ruoyi.common.utils.HttpUtil.post(url, accessToken, param);
+            JSONObject jsonObject = JSONObject.parseObject(result);
+            String wordsResult = jsonObject.getString("words_result");
+            Map<String, Object> map = new HashMap<>(9);
+            if (StringUtils.isNotEmpty(wordsResult)) {
+                JSONObject jsonObjectWordsResult = JSON.parseObject(wordsResult);
+                String vehicleBrand = JSON.parseObject(jsonObjectWordsResult.getString("品牌型号")).getString("words");
+                String vehicleType = JSON.parseObject(jsonObjectWordsResult.getString("车辆类型")).getString("words");
+                String engineNumber = JSON.parseObject(jsonObjectWordsResult.getString("发动机号码")).getString("words");
+                String identificationNumber = JSON.parseObject(jsonObjectWordsResult.getString("车辆识别代号")).getString("words");
+                String registrationDate = JSON.parseObject(jsonObjectWordsResult.getString("注册日期")).getString("words");
+                String issueDate = JSON.parseObject(jsonObjectWordsResult.getString("发证日期")).getString("words");
+                String plateNumber = JSON.parseObject(jsonObjectWordsResult.getString("号牌号码")).getString("words");
+                map.put("vehicleBrand",vehicleBrand);
+                map.put("vehicleType",vehicleType);
+                map.put("engineNumber",engineNumber);
+                map.put("identificationNumber",identificationNumber);
+                map.put("registrationDate",registrationDate);
+                map.put("issueDate",issueDate);
+                map.put("plateNumber",plateNumber);
+                System.out.println("行驶证识别"+map);
+            }
+            System.out.println(result);
+            return AjaxResult.success(map);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -722,14 +772,14 @@ public class IdCardUtil {
                 JSONObject jsonObjectWordsResult = JSON.parseObject(wordsResult);
 
                 JSONArray ownerNameArray = JSON.parseArray(jsonObjectWordsResult.getString("权利人"));
-                String ownerName ="";
-                if (ownerNameArray != null && ownerNameArray.size() > 0){
+                String ownerName = "";
+                if (ownerNameArray != null && ownerNameArray.size() > 0) {
                     for (Object ownerNameResult : ownerNameArray) {
-                        ownerName = JSONObject.parseObject(ownerNameResult.toString()).getString("word")+",";
+                        ownerName = JSONObject.parseObject(ownerNameResult.toString()).getString("word") + ",";
 
                     }
                 }
-                ownerName=  ownerName.substring(0,ownerName.length()-1);
+                ownerName = ownerName.substring(0, ownerName.length() - 1);
                 String location = JSON.parseArray(jsonObjectWordsResult.getString("坐落")).getJSONObject(0).getString("word");
                 String rightType = JSON.parseArray(jsonObjectWordsResult.getString("权利类型")).getJSONObject(0).getString("word");
                 String area = JSON.parseArray(jsonObjectWordsResult.getString("面积")).getJSONObject(0).getString("word");
@@ -741,12 +791,12 @@ public class IdCardUtil {
                 String registrationDate = JSON.parseArray(jsonObjectWordsResult.getString("登记日期")).getJSONObject(0).getString("word");
                 String coOwner = "";
                 JSONArray coOwnerArray = JSON.parseArray(jsonObjectWordsResult.getString("共有人"));
-                if (coOwnerArray != null && coOwnerArray.size() > 0){
+                if (coOwnerArray != null && coOwnerArray.size() > 0) {
                     for (Object coOwnerNameResult : coOwnerArray) {
-                        coOwner = JSONObject.parseObject(coOwnerNameResult.toString()).getString("word")+",";
+                        coOwner = JSONObject.parseObject(coOwnerNameResult.toString()).getString("word") + ",";
                     }
                 }
-                coOwner=  coOwner.substring(0,coOwner.length()-1);
+                coOwner = coOwner.substring(0, coOwner.length() - 1);
                 map.put("ownerName", ownerName);
                 map.put("location", location);
                 map.put("rightType", rightType);
@@ -820,6 +870,5 @@ public class IdCardUtil {
     }
 
 
-
     static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
 }

+ 13 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/proprietorCar/ProprietorCar.java

@@ -49,6 +49,10 @@ public class ProprietorCar extends BaseEntity
     /** 车辆类型 */
     @Excel(name = "车辆类型")
     private String vehicleType;
+    /**
+     * 车辆能源类型 燃油 新能源
+     */
+    private String vehicleEnergy;
 
     /** 车辆颜色 */
     @Excel(name = "车辆颜色")
@@ -70,6 +74,14 @@ public class ProprietorCar extends BaseEntity
     @Excel(name = "发证日期")
     private String issueDate;
 
+    public String getVehicleEnergy() {
+        return vehicleEnergy;
+    }
+
+    public void setVehicleEnergy(String vehicleEnergy) {
+        this.vehicleEnergy = vehicleEnergy;
+    }
+
     public Long getResidentId() {
         return residentId;
     }
@@ -218,6 +230,7 @@ public class ProprietorCar extends BaseEntity
                 ", plateNumber='" + plateNumber + '\'' +
                 ", vehicleBrand='" + vehicleBrand + '\'' +
                 ", vehicleType='" + vehicleType + '\'' +
+                ", vehicleEnergy='" + vehicleEnergy + '\'' +
                 ", vehicleColour='" + vehicleColour + '\'' +
                 ", engineNumber='" + engineNumber + '\'' +
                 ", identificationNumber='" + identificationNumber + '\'' +

+ 3 - 3
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProprietorCarServiceImpl.java

@@ -58,11 +58,11 @@ public class ProprietorCarServiceImpl implements IProprietorCarService {
         if (!checkPlateNumber(plateNumber)){
             return 0;
         }
-        String vehicleType = "燃油车";
+/*        String vehicleEnergy = "燃油车";
         if (isNewEnergyVehicle(plateNumber)) {
-            vehicleType = "新能源";
+            vehicleEnergy = "新能源";
         }
-        proprietorCar.setVehicleType(vehicleType);
+        proprietorCar.setVehicleEnergy(vehicleEnergy);*/
         //proprietorCar.setUserId(SecurityUtils.getUserId());
         return proprietorCarMapper.insertProprietorCar(proprietorCar);
     }

+ 2 - 2
ruoyi-system/src/main/resources/mapper/system/HouseInfoMapper.xml

@@ -138,9 +138,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <where>
             <if test="residentName != null  and residentName != ''"> and r.resident_name like concat('%', #{residentName}, '%')</if>
             <if test="residentAppearance != null  and residentAppearance != ''"> and r.resident_appearance = #{residentAppearance}</if>
-            <if test="residentAppearance != null  and residentAppearance != ''"> and r.user_id = #{userId}</if>
+            <if test="userId != null  and userId != ''"> and r.user_id = #{userId}</if>
             <if test="houseId != null"> and h.house_id = #{houseId}</if>
-            <if test="houseId != null"> and r.resident_phone = #{residentPhone}</if>
+            <if test="residentPhone != null"> and r.resident_phone = #{residentPhone}</if>
         </where>
         order by h.create_time DESC
     </select>

+ 6 - 1
ruoyi-system/src/main/resources/mapper/system/ProprietorCarMapper.xml

@@ -14,6 +14,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="plateNumber"    column="plate_number"    />
         <result property="vehicleBrand"    column="vehicle_brand"    />
         <result property="vehicleType"    column="vehicle_type"    />
+        <result property="vehicleEnergy"    column="vehicle_energy"    />
         <result property="vehicleColour"    column="vehicle_colour"    />
         <result property="engineNumber"    column="engine_number"    />
         <result property="identificationNumber"    column="identification_number"    />
@@ -27,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectProprietorCarVo">
-        select car_id, house_id, detailed_address, user_id, user_name, resident_phone, plate_number, vehicle_brand, vehicle_type, vehicle_colour, engine_number, identification_number, registration_date, issue_date, create_by, create_time, update_by, update_time, remark from proprietor_car
+        select car_id, house_id, detailed_address, user_id, user_name,vehicle_energy, resident_phone, plate_number, vehicle_brand, vehicle_type, vehicle_colour, engine_number, identification_number, registration_date, issue_date, create_by, create_time, update_by, update_time, remark from proprietor_car
     </sql>
 
     <select id="selectProprietorCarList" parameterType="ProprietorCar" resultMap="ProprietorCarResult">
@@ -41,6 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="plateNumber != null  and plateNumber != ''"> and plate_number = #{plateNumber}</if>
             <if test="vehicleBrand != null  and vehicleBrand != ''"> and vehicle_brand = #{vehicleBrand}</if>
             <if test="vehicleType != null  and vehicleType != ''"> and vehicle_type = #{vehicleType}</if>
+            <if test="vehicleEnergy != null  and vehicleEnergy != ''"> and vehicle_energy = #{vehicleEnergy}</if>
             <if test="vehicleColour != null  and vehicleColour != ''"> and vehicle_colour = #{vehicleColour}</if>
             <if test="engineNumber != null  and engineNumber != ''"> and engine_number = #{engineNumber}</if>
             <if test="identificationNumber != null  and identificationNumber != ''"> and identification_number = #{identificationNumber}</if>
@@ -65,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="plateNumber != null and plateNumber != ''">plate_number,</if>
             <if test="vehicleBrand != null">vehicle_brand,</if>
             <if test="vehicleType != null">vehicle_type,</if>
+            <if test="vehicleEnergy != null">vehicle_energy,</if>
             <if test="vehicleColour != null">vehicle_colour,</if>
             <if test="engineNumber != null">engine_number,</if>
             <if test="identificationNumber != null">identification_number,</if>
@@ -85,6 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="plateNumber != null and plateNumber != ''">#{plateNumber},</if>
             <if test="vehicleBrand != null">#{vehicleBrand},</if>
             <if test="vehicleType != null">#{vehicleType},</if>
+            <if test="vehicleEnergy != null">#{vehicleEnergy},</if>
             <if test="vehicleColour != null">#{vehicleColour},</if>
             <if test="engineNumber != null">#{engineNumber},</if>
             <if test="identificationNumber != null">#{identificationNumber},</if>
@@ -109,6 +113,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="plateNumber != null and plateNumber != ''">plate_number = #{plateNumber},</if>
             <if test="vehicleBrand != null">vehicle_brand = #{vehicleBrand},</if>
             <if test="vehicleType != null">vehicle_type = #{vehicleType},</if>
+            <if test="vehicleEnergy != null">vehicle_energy = #{vehicleEnergy},</if>
             <if test="vehicleColour != null">vehicle_colour = #{vehicleColour},</if>
             <if test="engineNumber != null">engine_number = #{engineNumber},</if>
             <if test="identificationNumber != null">identification_number = #{identificationNumber},</if>