| | |
| | | package com.yami.trading.api.controller; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.core.text.split.SplitIter; |
| | | import com.google.common.base.Splitter; |
| | | import com.google.common.collect.Lists; |
| | | import com.yami.trading.bean.data.domain.Realtime; |
| | |
| | | import com.yami.trading.bean.item.domain.Item; |
| | | import com.yami.trading.common.domain.Result; |
| | | import com.yami.trading.common.exception.YamiShopBindException; |
| | | import com.yami.trading.common.util.StringUtils; |
| | | import com.yami.trading.huobi.data.DataCache; |
| | | import com.yami.trading.service.data.DataService; |
| | | import com.yami.trading.service.item.ItemService; |
| | |
| | | .chg(realtime.getChg()) |
| | | .type(item.getType()) |
| | | .category(item.getCategory()) |
| | | .pid(item.getStockCode()) |
| | | .build(); |
| | | list.add(dto); |
| | | } |
| | |
| | | itemsTotal = new ArrayList<>(itemList).stream().filter(item -> item.getType().equals(type) |
| | | && item.getCategory().equals(finalCategory)).collect(Collectors.toList()); |
| | | } |
| | | if (pageNo * pageSize - pageSize < itemsTotal.size()) { |
| | | int pages = itemsTotal.size() % pageSize == 0 ? itemsTotal.size() / pageSize : itemsTotal.size() / pageSize + 1; |
| | | int start = pageNo <= 0 ? 0 : (pageNo > pages ? (pages - 1) * pageSize : (pageNo - 1) * pageSize); |
| | | items = itemsTotal.stream().skip(start).limit(pageSize).collect(Collectors.toList()); |
| | | } |
| | | } else if (null != type) { |
| | | itemsTotal = new ArrayList<>(itemList).stream().filter(item -> item.getType().equals(type)) |
| | | .collect(Collectors.toList()); |
| | | if (pageNo * pageSize - pageSize < itemsTotal.size()) { |
| | | int pages = itemsTotal.size() % pageSize == 0 ? itemsTotal.size() / pageSize : itemsTotal.size() / pageSize + 1; |
| | | int start = pageNo <= 0 ? 0 : (pageNo > pages ? (pages - 1) * pageSize : (pageNo - 1) * pageSize); |
| | | items = itemsTotal.stream().skip(start).limit(pageSize).collect(Collectors.toList()); |
| | | items.forEach(x -> x.setCategory("prominent")); |
| | | } |
| | | itemsTotal.forEach(x -> x.setCategory("prominent")); |
| | | |
| | | } else { |
| | | itemsTotal = new ArrayList<>(itemList); |
| | | List<String> symbols = Item.types; |
| | | for (String symbol : symbols) { |
| | | List<Item> list = itemsTotal.stream().filter(item -> symbol.equals(item.getType())).limit(5).collect(Collectors.toList()); |
| | | if (list.size() > 0) { |
| | | items.addAll(list); |
| | | itemsTotal.addAll(list); |
| | | } |
| | | } |
| | | } |
| | | |
| | | List<QueryRealtimeDTO> list = new ArrayList<>(); |
| | | assert items != null; |
| | | items.forEach(item -> { |
| | | assert itemsTotal != null; |
| | | List<QueryRealtimeDTO> finalList = list; |
| | | itemsTotal.forEach(item -> { |
| | | Realtime realtime = DataCache.getRealtime(item.getSymbol()); |
| | | if (realtime != null) { |
| | | QueryRealtimeDTO dto = QueryRealtimeDTO.builder() |
| | |
| | | .chg(realtime.getChg()) |
| | | .category(item.getCategory()) |
| | | .type(item.getType()) |
| | | .pid(item.getStockCode()) |
| | | .build(); |
| | | list.add(dto); |
| | | finalList.add(dto); |
| | | } else { |
| | | log.error("获取行情接口,realtime is null;币种->{}", item.getSymbol()); |
| | | } |
| | | }); |
| | | list = finalList; |
| | | if (!list.isEmpty()) { |
| | | list.sort(Comparator.comparing(QueryRealtimeDTO::getChangeRatio).reversed()); |
| | | if (pageNo * pageSize - pageSize < itemsTotal.size()) { |
| | | int pages = itemsTotal.size() % pageSize == 0 ? itemsTotal.size() / pageSize : itemsTotal.size() / pageSize + 1; |
| | | int start = pageNo <= 0 ? 0 : (pageNo > pages ? (pages - 1) * pageSize : (pageNo - 1) * pageSize); |
| | | list = list.stream().skip(start).limit(pageSize).collect(Collectors.toList()); |
| | | } |
| | | } |
| | | Result<List<QueryRealtimeDTO>> ok = Result.ok(list); |
| | | ok.setTotal((long) itemsTotal.size()); |