czt
2025-09-25 029de836702607a95ccb0a69a74efcea52ddc451
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package com.fzzy.sys;
 
import com.bstek.dorado.annotation.DataProvider;
import com.fzzy.sys.entity.LogLogin;
import com.fzzy.api.utils.ContextUtil;
import com.fzzy.sys.repository.LogLoginRep;
import org.springframework.beans.factory.annotation.Autowired;
import com.bstek.dorado.data.provider.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Component;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
 
/**
 * @Description 登录日志
 * @Author CZT
 * @Date 2024/5/30 15:53
 */
@Component
public class LogLoginPR {
 
    @Autowired
    private LogLoginRep logLoginRep;
 
    /**
     * logLoginPR#pageLogLogin
     *
     * @param page
     * @param param
     * @throws Exception
     */
    @DataProvider
    public void pageLogLogin(Page<LogLogin> page, Map<String, Object> param) {
        //多参数分页查询
        Pageable pageable = PageRequest.of(page.getPageNo() - 1, page.getPageSize(), Sort.Direction.DESC, LogLogin.SORT_PROP);
 
        if (null == param) {
            org.springframework.data.domain.Page<LogLogin> japPage = logLoginRep.findAll(pageable);
            page.setEntityCount((int) japPage.getTotalElements());
            page.setEntities(japPage.getContent());
 
            return;
        }
 
        Specification<LogLogin> specification = new Specification<LogLogin>() {
            private static final long serialVersionUID = 1L;
 
            public Predicate toPredicate(Root<LogLogin> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                List<Predicate> predicates = new ArrayList<>(); //所有的断言
 
                Date date = (Date) param.get("start");
                if (null != date) {
                    Predicate predicate3 = cb.greaterThan(root.get("loginTime"), ContextUtil.getCurZero(date));
                    predicates.add(predicate3);
                }
                date = (Date) param.get("end");
                if (null != date) {
                    Predicate predicate4 = cb.lessThan(root.get("loginTime"), ContextUtil.getNextZero(date));
                    predicates.add(predicate4);
                }
                return cb.and(predicates.toArray(new Predicate[0]));
            }
        };
 
        org.springframework.data.domain.Page<LogLogin> japPage = logLoginRep.findAll(specification, pageable);
        page.setEntityCount((int) japPage.getTotalElements());
        page.setEntities(japPage.getContent());
    }
}