@GetMapping('autoSort2')
@ResponseBody
public R autoSort2(@RequestParam Map<String, Object> params, NongzuowuEntity nongzuowuEntity, HttpServletRequest request) {
    Integer userId = getUserId(request.getSession());
    params.put('userId', userId);
    PageUtils page = storeupService.queryPage(params);
    String sortField = request.getParameter('sortField');
    String order = request.getParameter('order');
    if (StringUtils.isNotBlank(sortField) && StringUtils.isNotBlank(order)) {
        List<Map<String, Object>> records = page.getRecords();
        List<Map<String, Object>> sortedRecords = new ArrayList<>(records.size());
        for (Map<String, Object> record : records) {
            Integer id = (Integer) record.get('id');
            StoreupEntity storeupEntity = storeupService.getByUserIdAndRefId(userId, id);
            if (storeupEntity != null) {
                record.put('storeupTime', storeupEntity.getCreateTime());
            }
            sortedRecords.add(record);
        }
        String orderClause = order.equalsIgnoreCase('asc') ? 'ASC' : 'DESC';
        String sortClause = ' ORDER BY ' + sortField + ' ' + orderClause + ', id DESC';
        QueryWrapper<NongzuowuEntity> wrapper = new QueryWrapper<>(nongzuowuEntity);
        wrapper.in('id', sortedRecords.stream().map(s -> s.get('id')).collect(Collectors.toList()));
        wrapper.last(sortClause);
        List<NongzuowuEntity> nongzuowuEntities = nongzuowuService.list(wrapper);
        List<NongzuowuEntity> resultList = new ArrayList<>(nongzuowuEntities.size());
        List<Integer> bookmarkedIds = storeupService.getByUserId(userId).stream().map(StoreupEntity::getRefId).collect(Collectors.toList());
        int limit = 20;
        if (bookmarkedIds.size() < limit) {
            for (NongzuowuEntity entity : nongzuowuEntities) {
                if (!bookmarkedIds.contains(entity.getId())) {
                    resultList.add(entity);
                    bookmarkedIds.add(entity.getId());
                }
                if (bookmarkedIds.size() >= limit) {
                    break;
                }
            }
        } else {
            for (NongzuowuEntity entity : nongzuowuEntities) {
                if (bookmarkedIds.contains(entity.getId())) {
                    resultList.add(entity);
                }
            }
            resultList = resultList.subList(0, limit);
        }
        return R.ok().put('data', resultList);
    } else {
        return R.error('排序参数为空');
    }
}
Java Spring Framework Method: Auto Sorting and Pagination with Bookmarking

原文地址: http://www.cveoy.top/t/topic/nMu0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录