public static String generateParamStringWithValue(Map<String, String> map) {
    return map.keySet().stream()
        .sorted()
        .map(
            key -> {
              if (StringUtils.isNotBlank(map.get(key))) {
                try {
                  return key + URLDecoder.decode(map.get(key), "UTF-8");
                } catch (UnsupportedEncodingException e) {
                  throw new RuntimeException("Calculate signature failed", e);
                }
              }
              return null;
            })
        .filter(StringUtils::isNotBlank)
        .collect(Collectors.joining());
  }
Gets an ascending KeyValue concatenation string based on the request argument pair.

<p>Example: params: name=&value=111&age=11&sex=1&high=180&nick= Remove null and arrange in
ascending order: age11high180sex1value111

@param map input key-value pairs
@return an ascending, concatenated string without nulls; null if error occurs.
amoro-ams/src/main/java/org/apache/amoro/server/dashboard/utils/ParamSignatureCalculator.java