Java 集合流方法使用


集合流方法使用
@AutoLog(value = "资产组合-组合日志查询")
    @ApiOperation(value = "资产组合-组合日志查询", notes = "资产组合-组合日志查询")
    @GetMapping("/getMergeLog")
    public Result<?> getMergeLog(@RequestParam(name = "assetNo", required = true) String assetNo) {
        List<AssetMerge> assetMergeList = iAssetMergeService.selectByAssetNo(assetNo);
        Map<String, List<AssetMerge>> listMap = assetMergeList.stream().collect(Collectors.groupingBy(AssetMerge::getAssetMergeNo));
        Set<Map.Entry<String, List<AssetMerge>>> entries = listMap.entrySet();
        JSONArray JSONArray = new JSONArray();
        for (Map.Entry<String, List<AssetMerge>> entry : entries) {
            JSONObject jsonObject = new JSONObject();
            String key = entry.getKey();
            List<AssetMerge> value = entry.getValue();
            List<JSONObject> list = value.stream()
                    .sorted((o1, o2) -> (int) (o1.getId() - o2.getId()))
                    .map(assetSplit -> {
                        JSONObject temp = new JSONObject();
                        temp.put("assetNo", assetSplit.getBeforeMergeAssetNo());
                        temp.put("assetName", assetSplit.getBeforeMergeAssetName());
                        return temp;
                    }).collect(Collectors.toList());
            AssetMerge assetMerge = value.get(0);
            String assetMergeNo = assetMerge.getAssetMergeNo();
            String afterMergeAssetNo = assetMerge.getAfterMergeAssetNo();
            String afterMergeAssetName = assetMerge.getAfterMergeAssetName();
            jsonObject.put("assetMergeNo", assetMergeNo);
            jsonObject.put("afterMergeAssetNo", afterMergeAssetNo);
            jsonObject.put("afterMergeAssetName", afterMergeAssetName);
            jsonObject.put("beforeMergeAssetList", list);
            jsonObject.put("mergeTime", assetMerge.getCreateTime());
            JSONArray.add(jsonObject);
        }
        return Result.ok(JSONArray);
    }


0 0
讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
帮助