zoukankan      html  css  js  c++  java
  • json字符串{"1-3": 29},{"8-": 50},{"8-": 50},返回 1-3天 29,大于8天 100

    业务代码: 入参 json字符串{"1-3": 29},{"8-": 50},{"8-": 50},返回 1-3天 29,大于8天 100

     private void mergePostponeDetail(List<CfChargeListVO> chargeInList) {
            // {"1-3": 29},{"8-": 50},{"8-": 50}
            Set<String> keys = new HashSet<>();
            for (CfChargeListVO chargeInVO : chargeInList) {
                if (chargeInVO.getPostponeDetail() == null) {
                    chargeInVO.setPostponeDetail("");
                }
                String postponeDetail = chargeInVO.getPostponeDetail();
                String[] substring = postponeDetail.split(",");
                for (String s : substring) {
                    JSONObject object = JSONObject.parseObject(s, JSONObject.class);
                    if (object == null) {
                        continue;
                    }
                    Set<String> strings = object.keySet();
                    keys.addAll(strings);
                }
            }
            if (keys.size() > 0) {
                keys.addAll(getAllRuleBillDetails(1));
            }
            // 排序
            List<Integer> sortList = new ArrayList<>(5);
            Map<Integer, String> mapsort = new HashMap<>(8);
            Set<String> keysSorted = new LinkedHashSet<>();
            for (String key : keys) {
                String[] split = key.split("-");
                String s = split[0];
                int i = Integer.parseInt(s);
                sortList.add(i);
                mapsort.put(i, key);
            }
            Collections.sort(sortList);
            for (Integer integer : sortList) {
                String s = mapsort.get(integer);
                keysSorted.add(s);
            }
            // 字符串 数字汇总
            for (CfChargeListVO chargeInVO : chargeInList) {
                String postponeDetail = chargeInVO.getPostponeDetail();
                String[] substring = postponeDetail.split(",");
                Map<String, Integer> objectToArray = new LinkedHashMap<>();
                List<Map<String, Integer>> sortArray = new LinkedList<>();
                for (String key : keysSorted) {
                    for (String s : substring) {
                        JSONObject object = JSONObject.parseObject(s, JSONObject.class);
                        if (object == null) {
                            object = new JSONObject();
                        }
                        if (!objectToArray.containsKey(key)) {
                            objectToArray.put(key, 0);
                        }
                        if (object.containsKey(key)) {
                            int sum = Integer.parseInt(objectToArray.get(key).toString());
                            int num = Integer.parseInt(object.get(key).toString());
                            objectToArray.put(key, sum + num);
                        }
                    }
                    Map<String, Integer> jsonObject = new HashMap<>(4);
                    String keyAlias = getKeyAlias(key);
                    jsonObject.put(keyAlias, objectToArray.get(key));
                    sortArray.add(jsonObject);
                }
                chargeInVO.setPostponeDetail(JSONObject.toJSONString(sortArray));
                chargeInVO.setPostponeDetailArray(sortArray);
     private String getKeyAlias(String key) {
            String keyAlias = "延期";
            if (StringUtils.isNotBlank(key)) {
                String[] split = key.split("-");
                if (split.length > 0) {
                    if (split.length == 1 || StringUtils.isBlank(split[1])) {
                        keyAlias = "延期" + split[0] + "天以上";
                    } else {
                        keyAlias = "延期" + key + "天";
                    }
                }
            }
            return keyAlias;
        }
        /**
         * 延期明细
         */
        private List<Map<String, Integer>> postponeDetailArray;
    
    
        /**
         * 延期明细
         */
        private String postponeDetail;
  • 相关阅读:
    C语言 sprintf 函数 C语言零基础入门教程
    C语言 printf 函数 C语言零基础入门教程
    C语言 文件读写 fgets 函数 C语言零基础入门教程
    C语言 文件读写 fputs 函数 C语言零基础入门教程
    C语言 fprintf 函数 C语言零基础入门教程
    C语言 文件读写 fgetc 函数 C语言零基础入门教程
    C语言 文件读写 fputc 函数 C语言零基础入门教程
    C语言 strlen 函数 C语言零基础入门教程
    Brad Abrams关于Naming Conventions的演讲中涉及到的生词集解
    适配器模式
  • 原文地址:https://www.cnblogs.com/liran123/p/14313376.html
Copyright © 2011-2022 走看看