问题遇到的现象和发生背景
重复代码怎么简化
问题相关代码,请勿粘贴截图
List<Map<String, String>> data = mapper.queryBuyAndSaleDeclarePower(year, dates[0], dates[1], type, null);
Map<String, Object> map = new HashMap(8);
map.put("data", data);
map.put("saleMax", (data == null || data.isEmpty()) ? "" : data.stream()
.map(x -> x.get("SALEPOWER"))
.filter(x->x!=null&& StringUtils.isNotBlank(x))
.map(x->new BigDecimal(x))
.max(BigDecimal::compareTo)
.map(x->x.toString())
.orElse("")
);
map.put("saleMin", (data == null || data.isEmpty()) ? "" : data.stream().map(x -> x.get("SALEPOWER")).filter(x->x!=null&& StringUtils.isNotBlank(x)).map(x->new BigDecimal(x)).min(BigDecimal::compareTo).map(x->x.toString()).orElse(""));
map.put("saleSum", (data == null || data.isEmpty()) ? "" : data.stream().map(x -> x.get("SALEPOWER")).filter(x->x!=null&& StringUtils.isNotBlank(x)).map(x->new BigDecimal(x)).reduce(BigDecimal.ZERO, BigDecimal::add));
map.put("buyMax", (data == null || data.isEmpty()) ? "" : data.stream().map(x -> x.get("BUYPOWER")).filter(x->x!=null&& StringUtils.isNotBlank(x)).map(x->new BigDecimal(x)).max(BigDecimal::compareTo).map(x->x.toString()).orElse(""));
map.put("buyMin", (data == null || data.isEmpty()) ? "" : data.stream().map(x -> x.get("BUYPOWER")).filter(x->x!=null&& StringUtils.isNotBlank(x)).map(x->new BigDecimal(x)).min(BigDecimal::compareTo).map(x->x.toString()).orElse(""));
map.put("buySum", (data == null || data.isEmpty()) ? "" : data.stream().map(x -> x.get("BUYPOWER")).filter(x->x!=null&& StringUtils.isNotBlank(x)).map(x->new BigDecimal(x)).reduce(BigDecimal.ZERO, BigDecimal::add));
return map;
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
简化代码