Map按日期(忽略时分秒精度 按yymmdd格式)分组求和 并排序 stream流实现

复制代码
// 在库量趋势
        LambdaQueryWrapper<StockInventoryDetailEntity> stayStockWrapper = new LambdaQueryWrapper<>();
        stayStockWrapper.eq(StockInventoryDetailEntity::getWarehouseCode, warehouseCode)
                .isNotNull(StockInventoryDetailEntity::getUpdateTime)
                .isNotNull(StockInventoryDetailEntity::getInventoryQuantity)
                .apply("DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(update_time)");
        List<StockInventoryDetailEntity> list = this.list(stayStockWrapper);
        Map<String, Double> stayStockTempMap = list.stream().collect(Collectors.groupingBy(o -> DateUtil.dateStr(o.getUpdateTime()),
                Collectors.summingDouble(StockInventoryDetailEntity::getInventoryQuantity)));
        // 排序
        LinkedHashMap<String, Double> stayStockMap = getStringDoubleLinkedHashMap(stayStockTempMap);
        stockTendDTO.setStayStockMap(stayStockMap);
复制代码
复制代码
/**
     * 排序
     *
     * @param stockTempMap
     * @return
     */
    private LinkedHashMap<String, Double> getStringDoubleLinkedHashMap(Map<String, Double> stockTempMap) {
        Object[] inStockKey = stockTempMap.keySet().toArray();
        Arrays.sort(inStockKey, Collections.reverseOrder());
        LinkedHashMap<String, Double> stockMap = new LinkedHashMap<>();
        for (int i = 0; i < inStockKey.length; i++) {
            stockMap.put(String.valueOf(inStockKey[i]), stockTempMap.get(inStockKey[i]));
        }
        return stockMap;
    }
复制代码

 

posted @   java从精通到入门  阅读(271)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示