| Line 877... |
Line 877... |
| 877 |
|
877 |
|
| 878 |
@Override
|
878 |
@Override
|
| 879 |
public List<Scheme> selectSchemeByPartnerType(PartnerType partnerType, LocalDate onDate, int catalogId,
|
879 |
public List<Scheme> selectSchemeByPartnerType(PartnerType partnerType, LocalDate onDate, int catalogId,
|
| 880 |
boolean isAdmin, int offset, int limit) throws ProfitMandiBusinessException {
|
880 |
boolean isAdmin, int offset, int limit) throws ProfitMandiBusinessException {
|
| 881 |
Session session = sessionFactory.getCurrentSession();
|
881 |
Session session = sessionFactory.getCurrentSession();
|
| - |
|
882 |
List<Predicate> andPredicates = new ArrayList<>();
|
| 882 |
CriteriaBuilder cb = session.getCriteriaBuilder();
|
883 |
CriteriaBuilder cb = session.getCriteriaBuilder();
|
| 883 |
CriteriaQuery<Scheme> query = cb.createQuery(Scheme.class);
|
884 |
CriteriaQuery<Scheme> query = cb.createQuery(Scheme.class);
|
| 884 |
Root<Scheme> scheme = query.from(Scheme.class);
|
885 |
Root<Scheme> scheme = query.from(Scheme.class);
|
| 885 |
Predicate finalPredicate = cb.and();
|
- |
|
| 886 |
if (!partnerType.equals(PartnerType.ALL)) {
|
886 |
if (!partnerType.equals(PartnerType.ALL)) {
|
| 887 |
List<PartnerType> pt = new ArrayList<>();
|
887 |
List<PartnerType> pt = new ArrayList<>();
|
| 888 |
pt.add(PartnerType.ALL);
|
888 |
pt.add(PartnerType.ALL);
|
| 889 |
pt.add(partnerType);
|
889 |
pt.add(partnerType);
|
| 890 |
Predicate p1 = cb.in(scheme.get("partnerType")).value(pt);
|
890 |
andPredicates.add(cb.in(scheme.get("partnerType")).value(pt));
|
| 891 |
finalPredicate = cb.and(p1);
|
- |
|
| 892 |
}
|
891 |
}
|
| 893 |
Predicate p2 = cb.isNotNull(scheme.get("activeTimestamp"));
|
- |
|
| 894 |
cb.desc(cb.isNull(scheme.get("expireTimestamp")));
|
892 |
cb.desc(cb.isNull(scheme.get("expireTimestamp")));
|
| 895 |
|
- |
|
| 896 |
if (catalogId > 0) {
|
893 |
if (catalogId > 0) {
|
| 897 |
|
894 |
|
| 898 |
List<Integer> schemeIds = schemeItemRepository.selectSchemeIdByCatalogId(catalogId);
|
895 |
List<Integer> schemeIds = schemeItemRepository.selectSchemeIdByCatalogId(catalogId);
|
| 899 |
LOGGER.info("schemeId" + schemeIds);
|
896 |
LOGGER.info("schemeId" + schemeIds);
|
| 900 |
if (schemeIds.isEmpty()) {
|
897 |
if (schemeIds.isEmpty()) {
|
| 901 |
return new ArrayList<>();
|
898 |
return new ArrayList<>();
|
| 902 |
}
|
899 |
}
|
| 903 |
Predicate p3 = cb.in(scheme.get("id")).value(schemeIds);
|
900 |
andPredicates.add(cb.in(scheme.get("id")).value(schemeIds));
|
| 904 |
if (onDate != null) {
|
901 |
if (onDate != null) {
|
| 905 |
finalPredicate = cb.and(p2, p3, cb.greaterThan(scheme.get("endDateTime"), onDate.atStartOfDay()),
|
902 |
andPredicates.add(cb.greaterThan(scheme.get("endDateTime"), onDate.atStartOfDay()));
|
| 906 |
cb.lessThanOrEqualTo(scheme.get("startDateTime"), onDate.atStartOfDay()));
|
903 |
andPredicates.add(cb.lessThanOrEqualTo(scheme.get("startDateTime"), onDate.atStartOfDay()));
|
| 907 |
} else {
|
- |
|
| 908 |
finalPredicate = cb.and(p3);
|
- |
|
| 909 |
}
|
- |
|
| 910 |
} else {
|
- |
|
| 911 |
if (!isAdmin) {
|
- |
|
| 912 |
finalPredicate = cb.and(p2);
|
- |
|
| 913 |
}
|
904 |
}
|
| 914 |
}
|
905 |
}
|
| - |
|
906 |
if (!isAdmin) {
|
| - |
|
907 |
andPredicates.add(cb.isNotNull(scheme.get("activeTimestamp")));
|
| - |
|
908 |
}
|
| 915 |
query.where(finalPredicate);
|
909 |
query.where(cb.and(andPredicates.toArray(new Predicate[0])));
|
| 916 |
query.orderBy(cb.desc(cb.function("isnull", Boolean.class, scheme.get("expireTimestamp"))));
|
910 |
query.orderBy(cb.desc(cb.function("isnull", Boolean.class, scheme.get("expireTimestamp"))));
|
| 917 |
|
911 |
|
| 918 |
return session.createQuery(query).setFirstResult(offset).setMaxResults(limit).getResultList();
|
912 |
return session.createQuery(query).setFirstResult(offset).setMaxResults(limit).getResultList();
|
| 919 |
|
913 |
|
| 920 |
}
|
914 |
}
|