12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package com.persagy.bdtp.adm.util;
- import cn.hutool.core.util.ReflectUtil;
- import com.baomidou.mybatisplus.annotation.TableField;
- import com.fasterxml.jackson.databind.JsonNode;
- import com.fasterxml.jackson.databind.node.ObjectNode;
- import com.persagy.dmp.digital.entity.ObjectDigital;
- import java.lang.reflect.Field;
- import java.lang.reflect.Modifier;
- import java.util.HashSet;
- import java.util.Iterator;
- public class DataExtrasUtil {
- private static HashSet<String> admObjFields = getEntityFields(ObjectDigital.class);
- private static String objExtraCol = "infos";
- private static HashSet<String> getEntityFields(Class<?> cls){
- HashSet<String> set = new HashSet<String>();
- Field[] fields = ReflectUtil.getFields(cls);
- for(Field field : fields) {
- if(Modifier.isStatic(field.getModifiers()))
- continue;
- TableField tableField = (TableField)field.getAnnotation(TableField.class);
- if(tableField == null || tableField.exist())
- set.add(field.getName());
- }
- return set;
- }
- public static void packObjExtras(ObjectNode objNode){
- ObjectNode extraNode = objNode.putObject(objExtraCol);
- Iterator<String> iter = objNode.fieldNames();
- while(iter.hasNext()) {
- String fieldName = iter.next();
- if(admObjFields.contains(fieldName))
- continue;
- else {
- extraNode.set(fieldName, objNode.get(fieldName));
- iter.remove();
- }
- }
- }
- public static void unpackObjExtras(ObjectNode objNode){
- JsonNode extraNode = objNode.remove(objExtraCol);
- if(extraNode instanceof ObjectNode) {
- ObjectNode infos = (ObjectNode) extraNode;
- Iterator<String> iter = infos.fieldNames();
- while(iter.hasNext()) {
- String fieldName = iter.next();
- objNode.set(fieldName, infos.get(fieldName));
- }
- }
- }
- }
|