public abstract class DataFill { /** * 提供默认值 */ public abstract Object defaultData(); /** * 全集合记录 */ public abstract List keyNameList(); /** * 填充数据 */ public void fillValue(String fieldName ,String fillName, List list) { fillValue(1,fieldName,fillName,list); } /** * 最终填充数据业务CODE */ public void fillValue(Integer sameLevel , String fieldName ,String fillName, List list) { //TODO } }复制代码
if (list == null) { list = new ArrayList<>(); } List newBerthNameList = new ArrayList<>(keyNameList()); if (CollectionUtils.isEmpty(newBerthNameList)) { return; }复制代码
for (T item : list) { Class<?> itemClass = item.getClass(); commonClazz = itemClass; if (itemClass.isAssignableFrom(JSONObject.class)||itemClass.isAssignableFrom(Map.class)) { Map itemMap = (Map) item; Object filedObj = itemMap.get(fieldName); if (filedObj != null) { newBerthNameList.remove(filedObj.toString()); } } else { //bean try { Field field = itemClass.getField(fieldName); Object filedObj = field.get(item); if (filedObj != null) { newBerthNameList.remove(filedObj.toString()); } } catch (IllegalAccessException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } } }复制代码
if (commonClazz==null||commonClazz.isAssignableFrom(JSONObject.class)||commonClazz.isAssignableFrom(Map.class)) { Map map = new HashMap<>(); map.put(fieldName, berthName); //sameLevel=0 表示默认数据需要已同级填充 if (sameLevel == 0) { Map temMap = (Map) defaultData(); map.putAll(temMap); } else { map.put(fillName, defaultData()); } list.add((T) map); }复制代码
public Map groupByField(GroupBean groupBean) { List fieldResultList = 获取完整横坐标集合数据; DataFill dataFill = new DataFill() { @Override public Object defaultData() { return 0; } @Override public List keyNameList() { return fieldResultList; } }; //具体的逻辑统计 List
来源:https://juejin.cn/post/7129317543344340999
留言与评论(共有 0 条评论) “” |