浅析元数据列表排序原创
金蝶云社区-靠谱的高峰老师
靠谱的高峰老师
0人赞赏了该文章 380次浏览 未经作者许可,禁止转载编辑于2023年09月19日 11:08:18

    废话少说,上代码

//解析列表元数据,获取列表的排序
String orderBy = "";
StringBuilder orderByBuilder = new StringBuilder();
//1、获取列表数据
Map<String, Object> listMeta = FormMetadataCache.getListMeta("bd_projectkind");
//2、获取列表JSON数据
JSONObject listData = JSONObject.parseObject(listMeta.get("BillList").toString());
//3、获取元数据列表,第1个为列表(其次为卡片、轻分析)
JSONObject list = listData.getJSONArray("Items").getJSONObject(0);
//获取列表排序字段
JSONArray fieldList = list.getJSONArray("Items");
for (Object item : fieldList) {
    JSONObject field = JSONObject.parseObject(item.toString());
    String k = field.getString("Visible");
    String o = field.getString("Order");
    //列表和F7都显示的字段才参与
    if ("63".equals(k) && !"NotOrder".equalsIgnoreCase(o)) {
        orderByBuilder.append(field.getString("ListFieldKey")).append(" ").append(field.getString("Order")).append(",");
    }
}
//去掉结尾“,”号
if(orderByBuilder.length() > 0) {
    orderBy = orderByBuilder.substring(0, orderByBuilder.length() - 1);
}


看了代码再来扯犊子吧。

哪些场景会要动态代码获取列表或F7列表的排序设置呢?上图。

项目分类是一个基础资料

image.png

项目也是一个基础资料,项目归类到项目分类下

image.png


        为了在项目基础资料列表界面的左侧项目分类导航树中,与项目分类列表的排序保持一致,就需要在项目基础资料左侧导航树重构树形数据时,更加项目分类列表排序的规则去取数进行排序。所以就需要用到上述代码。

        这样就兼容了项目分类树排序与列表保持了一直,无需现场再进行二开处理,用户可以自定义排序啦。



赞 0