这里的sourse 是实体类对象
field.getName() 获取实体类属性 name,sex,之类
Map<String, Object> sourceMap = mapper.convertValue(source, new TypeReference<Map<String, Object>>() {
});
把实体类转换成Map对象
Excel attr = field.getAnnotation(Excel.class);
attr.name() 获取@Excel name值
attr.targetAttr() 获取targetAttr值
@Excel(name = "照片",targetAttr = "latstImgPath")
private String latstImgPath;
private static final ObjectMapper mapper = new ObjectMapper();
public static StringBuilder getModifyContent(Object source, Object target) {
Map<String, Object> modifies = new HashMap<>();
StringBuilder operDesc = new StringBuilder();
if (!Objects.equals(source.getClass().getName(), target.getClass().getName())) {
throw new CustomException("类型不匹配");
}
Map<String, Object> sourceMap = mapper.convertValue(source, new TypeReference<Map<String, Object>>() {
});
Map<String, Object> targetMap = mapper.convertValue(target, new TypeReference<Map<String, Object>>() {
});
Field[] allFields = source.getClass().getDeclaredFields();
for (Field field : allFields) {
Object sValue = sourceMap.get(field.getName());
Object tValue = targetMap.get(field.getName());
if (!Objects.equals(sValue, tValue)) {
Excel attr = field.getAnnotation(Excel.class);
if (attr != null) {
if (StringUtils.isNotBlank(attr.targetAttr())) {
operDesc.append(attr.name() + "变更;");
} else {
operDesc.append(attr.name() + "变更前:" + sValue + ",变更后:" + tValue + ";");
}
}
}
}
return operDesc;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-9129.html