DataExtrasUtil.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package com.persagy.bdtp.adm.util;
  2. import cn.hutool.core.util.ReflectUtil;
  3. import com.baomidou.mybatisplus.annotation.TableField;
  4. import com.fasterxml.jackson.databind.JsonNode;
  5. import com.fasterxml.jackson.databind.node.ObjectNode;
  6. import com.persagy.dmp.digital.entity.ObjectDigital;
  7. import java.lang.reflect.Field;
  8. import java.lang.reflect.Modifier;
  9. import java.util.HashSet;
  10. import java.util.Iterator;
  11. public class DataExtrasUtil {
  12. private static HashSet<String> admObjFields = getEntityFields(ObjectDigital.class);
  13. private static String objExtraCol = "infos";
  14. private static HashSet<String> getEntityFields(Class<?> cls){
  15. HashSet<String> set = new HashSet<String>();
  16. Field[] fields = ReflectUtil.getFields(cls);
  17. for(Field field : fields) {
  18. if(Modifier.isStatic(field.getModifiers()))
  19. continue;
  20. TableField tableField = (TableField)field.getAnnotation(TableField.class);
  21. if(tableField == null || tableField.exist())
  22. set.add(field.getName());
  23. }
  24. return set;
  25. }
  26. public static void packObjExtras(ObjectNode objNode){
  27. ObjectNode extraNode = objNode.putObject(objExtraCol);
  28. Iterator<String> iter = objNode.fieldNames();
  29. while(iter.hasNext()) {
  30. String fieldName = iter.next();
  31. if(admObjFields.contains(fieldName))
  32. continue;
  33. else {
  34. extraNode.set(fieldName, objNode.get(fieldName));
  35. iter.remove();
  36. }
  37. }
  38. }
  39. public static void unpackObjExtras(ObjectNode objNode){
  40. JsonNode extraNode = objNode.remove(objExtraCol);
  41. if(extraNode instanceof ObjectNode) {
  42. ObjectNode infos = (ObjectNode) extraNode;
  43. Iterator<String> iter = infos.fieldNames();
  44. while(iter.hasNext()) {
  45. String fieldName = iter.next();
  46. objNode.set(fieldName, infos.get(fieldName));
  47. }
  48. }
  49. }
  50. }