报表返回dataset,插件怎么直接获取下拉列表的标题,而不需要重复配置?原创
金蝶云社区-Lento
Lento
2人赞赏了该文章 1,607次浏览 未经作者许可,禁止转载编辑于2021年04月12日 10:49:19


如何代码获取下拉列表标题?

https://vip.kingdee.com/link/s/MUjuW

/**
 * 创建列case when语句
 *
 * @param field    列标识
 * @param map      下拉列表
 * @return 组合好的case when语句
 */
public static String genCaseWhen(String field, Map<String, Object> map) {
    StringBuilder str = new StringBuilder();
    str.append("(Case ").append(field);
    for (String key : map.keySet()) {
        LocaleString localeString = (LocaleString)map.get(key);
        str.append(" when '").append(key).append("' then '").append(localeString.getLocaleValue()).append("'");
    }
    str.append(" end) ");
    return str.toString();
}


使用的时候,直接在查询中使用此方法


// 首先获取下拉值集
final Map<String, Object> natureValueMap = DownListUtils.getDownListFromEntry(EntityConstants.PROPERTY_RIGHTS, "digi_property_lines", "digi_right_nature");
// 处理case when语句
String[] firstDsSelect = new String[]{
        DatasetUtils.genCaseWhen("digi_right_type", typeValueMap) + "as digi_right_type",
        DatasetUtils.genCaseWhen("digi_right_nature", natureValueMap) + "as digi_right_nature",
        "digi_registration_purp", "digi_uom", "digi_area", "digi_property_date"};



在这上面 我同事还有一个思路 是去构建下拉列表的dataset 然后做leftjoin操作 这个就看取舍了

Algo.create("DownListUtils.createDataSet").createDataSet
赞 2