99 lines
4.9 KiB
Java
99 lines
4.9 KiB
Java
package com.vverp.dao;
|
|
|
|
import com.vverp.dto.PaymentApplyQuery;
|
|
import com.vverp.entity.PaymentApply;
|
|
import com.vverp.moli.util.Page;
|
|
import com.vverp.moli.util.Pageable;
|
|
import com.vverp.util.CriteriaUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.springframework.stereotype.Repository;
|
|
|
|
import javax.persistence.criteria.CriteriaBuilder;
|
|
import javax.persistence.criteria.CriteriaQuery;
|
|
import javax.persistence.criteria.Predicate;
|
|
import javax.persistence.criteria.Root;
|
|
import java.math.BigDecimal;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* @author
|
|
* @date 2020/6/14 5:07 下午
|
|
*/
|
|
@Repository
|
|
public class PaymentApplyDao extends BaseDao<PaymentApply, Long> {
|
|
|
|
public Page<PaymentApply> findPage(Pageable pageable, PaymentApplyQuery query) {
|
|
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
|
|
CriteriaQuery<PaymentApply> criteriaQuery = criteriaBuilder.createQuery(PaymentApply.class);
|
|
Root<PaymentApply> root = criteriaQuery.from(PaymentApply.class);
|
|
criteriaQuery.select(root);
|
|
Predicate predicate = toPredicate(criteriaBuilder, root, query);
|
|
criteriaQuery.where(predicate);
|
|
return findPage(criteriaQuery, pageable);
|
|
}
|
|
|
|
public List<PaymentApply> findList(PaymentApplyQuery query) {
|
|
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
|
|
CriteriaQuery<PaymentApply> criteriaQuery = criteriaBuilder.createQuery(PaymentApply.class);
|
|
Root<PaymentApply> root = criteriaQuery.from(PaymentApply.class);
|
|
criteriaQuery.select(root);
|
|
Predicate predicate = toPredicate(criteriaBuilder, root, query);
|
|
criteriaQuery.where(predicate);
|
|
return findList(criteriaQuery, null, null, null, null);
|
|
}
|
|
|
|
public BigDecimal calcAmount(PaymentApplyQuery query) {
|
|
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
|
|
CriteriaQuery<BigDecimal> criteriaQuery = criteriaBuilder.createQuery(BigDecimal.class);
|
|
Root<PaymentApply> root = criteriaQuery.from(PaymentApply.class);
|
|
criteriaQuery.select(criteriaBuilder.sum(root.get("amount")));
|
|
Predicate predicate = toPredicate(criteriaBuilder, root, query);
|
|
criteriaQuery.where(predicate);
|
|
return entityManager.createQuery(criteriaQuery).getSingleResult();
|
|
}
|
|
|
|
public Predicate toPredicate(CriteriaBuilder criteriaBuilder, Root<PaymentApply> root, PaymentApplyQuery query) {
|
|
Predicate predicate = criteriaBuilder.conjunction();
|
|
if (query.getStatus() != null) {
|
|
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get("status"), query.getStatus()));
|
|
}
|
|
if (query.getType() != null) {
|
|
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get("type"), query.getType()));
|
|
}
|
|
if (query.getOwnerId() != null) {
|
|
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get("ownerId"), query.getOwnerId()));
|
|
}
|
|
if (query.getCompanyId() != null) {
|
|
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get("companyId"), query.getCompanyId()));
|
|
}
|
|
if (query.getContentId() != null) {
|
|
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get("contentId"), query.getContentId()));
|
|
}
|
|
if (query.getContractRequired() != null) {
|
|
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get("contractRequired"), query.getContractRequired()));
|
|
}
|
|
if (query.getApprovalFailed() != null) {
|
|
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get("approvalFailed"), query.getApprovalFailed()));
|
|
}
|
|
if (query.getReceivePayment() != null) {
|
|
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get("receivePayment"), query.getReceivePayment()));
|
|
}
|
|
if (query.getTypeList() != null && query.getTypeList().size() > 0) {
|
|
predicate = criteriaBuilder.and(predicate, root.get("type").in(query.getTypeList()));
|
|
}
|
|
if (StringUtils.isNotBlank(query.getOwnerName())) {
|
|
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get("ownerName"), query.getOwnerName()));
|
|
}
|
|
if (query.getReservoir() != null) {
|
|
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get("reservoir"), query.getReservoir()));
|
|
}
|
|
if (query.getCashierConfirmFlag() != null) {
|
|
predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get("cashierConfirmFlag"), query.getCashierConfirmFlag()));
|
|
}
|
|
predicate = CriteriaUtils.dateFilter(criteriaBuilder, predicate, root, "payDate", query.getPayDateStart(), query.getPayDateEnd());
|
|
predicate = CriteriaUtils.dateFilter(criteriaBuilder, predicate, root, query.getCreateDateStart(), query.getCreateDateEnd());
|
|
return predicate;
|
|
}
|
|
|
|
}
|