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;
  • 相关阅读:
    将一个 LIB 中的所有 OBJ 名称和类型输出到一个物理文件
    用一条命令 转换 Iseries tables t到 CSV
    用CL提取系统值
    程式中檢查是否潤年的新方法
    Ubuntu 忘记root密码 和修改密码
    excel 数组公式入门
    BAT批处理
    row_number() over(partition byCOL1 order by COL2)
    row_number( )、rank( )、dense_rank( )、ntile( )函数的用法 (SQL2005以上)
    Sql 常用日期计算
  • 原文地址:https://www.cnblogs.com/liran123/p/14313376.html
Copyright © 2011-2022 走看看