package com.qs.serve.common.util; import com.qs.serve.common.framework.mybatis.join.annotations.BindEntity; import com.qs.serve.common.model.annotation.BusinessDifference; import com.qs.serve.common.model.dto.DiffFieldVal; import com.qs.serve.modules.bms.entity.BmsSupplierContacts; import com.qs.serve.modules.sys.entity.SysBusinessLog; import lombok.SneakyThrows; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; /** * @author YenHex * @since 2023/4/25 */ public class BusinessDifferenceUtil { @SneakyThrows public static List getDifferenceList(T orgVal, T newVal){ List diffFieldValList = new ArrayList<>(); if(orgVal==null||newVal==null){ return diffFieldValList; } Class clazz = null; try { clazz = Class.forName(orgVal.getClass().getName()); } catch (ClassNotFoundException e) { e.printStackTrace(); } if(clazz==null){return diffFieldValList;} Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { for (Annotation annotation : field.getAnnotations()) { if(annotation instanceof BusinessDifference){ BusinessDifference busDiff = (BusinessDifference) annotation; field.setAccessible(true); Object orgValue = field.get(orgVal); Object newValue = field.get(newVal); if(newValue==null){ continue; } if(orgValue==null){ orgValue = ""; } if(!orgValue.equals(newValue)){ DiffFieldVal fieldVal = new DiffFieldVal(); fieldVal.setField(field.getName()); fieldVal.setNewValue(newValue.toString()); fieldVal.setOrgValue(orgValue.toString()); fieldVal.setComment(busDiff.value()); diffFieldValList.add(fieldVal); } } } } return diffFieldValList; } public static void main(String[] args) { BmsSupplierContacts supplierContacts = new BmsSupplierContacts(); supplierContacts.setContactsName("名称1"); supplierContacts.setContactsPost("setContactsPost"); BmsSupplierContacts supplierContacts2 = new BmsSupplierContacts(); supplierContacts2.setContactsName("名称2"); supplierContacts2.setContactsNumber("123456"); supplierContacts2.setContactsPost("setContactsPost"); List diffFieldValList =BusinessDifferenceUtil.getDifferenceList(supplierContacts,supplierContacts2); for (DiffFieldVal fieldVal : diffFieldValList) { System.out.println(JsonUtil.objectToJson(fieldVal)); } } }