• 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;
  • 相关阅读:
    家庭记账本教程之增(java web基础版三)
    家庭记账本小程序之后台java代码部分(java web基础版二)
    家庭记账本小程序之前端页面设计(java web基础版一)
    面向对象
    装饰器详解
    Python开发【第六篇】:文件处理
    Python开发【第四篇】:运算符
    Python开发【第三篇】:分支循环
    Python开发【第五篇】:函数
    Atom 基本使用
  • 原文地址:https://www.cnblogs.com/liran123/p/14313376.html
Copyright © 2020-2023  润新知