| package com.boying.util; | 
|   | 
| import org.springframework.beans.BeanUtils; | 
| import com.boying.entity.EnterPark; | 
|   | 
| import java.beans.BeanInfo; | 
| import java.beans.IntrospectionException; | 
| import java.beans.Introspector; | 
| import java.beans.PropertyDescriptor; | 
| import java.lang.reflect.InvocationTargetException; | 
| import java.lang.reflect.Method; | 
| import java.util.ArrayList; | 
| import java.util.HashMap; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * @author kdq | 
|  * @version 1.0.0 | 
|  * @ClassName PlateComparator.java | 
|  * @Description TODO | 
|  * @createTime 2024年04月19日 15:57:00 | 
|  */ | 
| public class PlateComparator { | 
|   | 
|     public static List<Map<String,Object>> getList(String carNo, List<EnterPark> enterParkList) { | 
|         List<Map<String,Object>> list = new ArrayList<>(); | 
|         for (EnterPark enterPark : enterParkList) { | 
|             int i = compareLicensePlates(carNo, enterPark.getCarNo()); | 
|             if (i<2){ | 
|                 Map<String, Object> returnMap = new HashMap<String, Object>(); | 
|                 BeanInfo beanInfo = null; | 
|                 try { | 
|                     beanInfo = Introspector.getBeanInfo(enterPark.getClass()); | 
|                     PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); | 
|                     for (PropertyDescriptor pd : propertyDescriptors) { | 
|                         String propertyName = pd.getName(); | 
|                         if (!"class".equals(propertyName)) { | 
|                             Method readMethod = pd.getReadMethod(); | 
|                             Object result = readMethod.invoke(enterPark); | 
|                             if (result != null) { | 
|                                 returnMap.put(propertyName, result); | 
|                             } else { | 
|                                 returnMap.put(propertyName, ""); | 
|                             } | 
|                         } | 
|                     } | 
|                 } catch (IntrospectionException e) { | 
|                     e.printStackTrace(); | 
|                 } catch (IllegalAccessException e) { | 
|                     e.printStackTrace(); | 
|                 } catch (InvocationTargetException e) { | 
|                     e.printStackTrace(); | 
|                 } | 
|                 returnMap.put("count",i); // 新增次数 | 
|                 list.add(returnMap); | 
|             } | 
|         } | 
|         return list; | 
|   | 
|     } | 
|   | 
|     public static int compareLicensePlates(String oldLicensePlate, String newLicensePlate) { | 
|         int length = Math.min(oldLicensePlate.length(), newLicensePlate.length()); | 
|         int count = 0; | 
|         for (int i = 0; i < length; i++) { | 
|             if (oldLicensePlate.charAt(i) != newLicensePlate.charAt(i)) { | 
|                count ++; | 
|             } | 
|         } | 
|         // 如果新车牌比旧车牌长,则追加新车牌多出的字符 | 
|         if (newLicensePlate.length() > oldLicensePlate.length()) { | 
|             count++; | 
|         } | 
|         return count; | 
|     } | 
| } |