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


// 在库量趋势
        LambdaQueryWrapper 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 list = this.list(stayStockWrapper);
        Map stayStockTempMap = list.stream().collect(Collectors.groupingBy(o -> DateUtil.dateStr(o.getUpdateTime()),
                Collectors.summingDouble(StockInventoryDetailEntity::getInventoryQuantity)));
        // 排序
        LinkedHashMap stayStockMap = getStringDoubleLinkedHashMap(stayStockTempMap);
        stockTendDTO.setStayStockMap(stayStockMap);
/**
     * 排序
     *
     * @param stockTempMap
     * @return
     */
    private LinkedHashMap getStringDoubleLinkedHashMap(Map stockTempMap) {
        Object[] inStockKey = stockTempMap.keySet().toArray();
        Arrays.sort(inStockKey, Collections.reverseOrder());
        LinkedHashMap stockMap = new LinkedHashMap<>();
        for (int i = 0; i < inStockKey.length; i++) {
            stockMap.put(String.valueOf(inStockKey[i]), stockTempMap.get(inStockKey[i]));
        }
        return stockMap;
    }