Files
EPCMS/src/main/java/com/vverp/dao/PaymentApplyDao.java
2024-07-04 10:59:03 +08:00

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;
}
}