From 4a51325b5a104be4fee654ba75dc4f7a7ea14688 Mon Sep 17 00:00:00 2001 From: starrysky <838252223@qq.com> Date: Sun, 17 May 2020 09:45:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A7=E5=93=81=E7=BB=9F=E8=AE=A1=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CustomerOrderServiceImpl.java | 2 +- .../dto/ProductCountQueryCriteria.java | 32 +++++++++++++ .../service/impl/ProductCountServiceImpl.java | 48 +++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/customerOrder/service/impl/CustomerOrderServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/customerOrder/service/impl/CustomerOrderServiceImpl.java index 36403012..bec54299 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/customerOrder/service/impl/CustomerOrderServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/customerOrder/service/impl/CustomerOrderServiceImpl.java @@ -120,7 +120,7 @@ public class CustomerOrderServiceImpl implements CustomerOrderService { targetPredicateList.add(customerNamePredicate); } - criteriaQuery.orderBy(criteriaBuilder.desc(root.get("createTime"))); + criteriaQuery.orderBy(criteriaBuilder.desc(root.get("updateTime"))); if(CollectionUtils.isEmpty(targetPredicateList)){ return null; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/sr/productCount/service/dto/ProductCountQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/sr/productCount/service/dto/ProductCountQueryCriteria.java index 3524d14e..1c233bec 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/sr/productCount/service/dto/ProductCountQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/sr/productCount/service/dto/ProductCountQueryCriteria.java @@ -10,4 +10,36 @@ import me.zhengjie.annotation.Query; */ @Data public class ProductCountQueryCriteria { + //产品名称 + private String productName; + + //产品类别名称 + private String productCategoryName; + + //产品系列名称 + private String productSeriesName; + + public String getProductName() { + return productName; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public String getProductCategoryName() { + return productCategoryName; + } + + public void setProductCategoryName(String productCategoryName) { + this.productCategoryName = productCategoryName; + } + + public String getProductSeriesName() { + return productSeriesName; + } + + public void setProductSeriesName(String productSeriesName) { + this.productSeriesName = productSeriesName; + } } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/sr/productCount/service/impl/ProductCountServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/sr/productCount/service/impl/ProductCountServiceImpl.java index abdbfc4e..54b24eaf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/sr/productCount/service/impl/ProductCountServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/sr/productCount/service/impl/ProductCountServiceImpl.java @@ -4,7 +4,9 @@ import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.wms.bd.domain.ProductInfo; import me.zhengjie.modules.wms.bd.repository.ProductInfoRepository; import me.zhengjie.modules.wms.bd.service.mapper.ProductInfoMapper; +import me.zhengjie.modules.wms.customerOrder.domain.CustomerOrder; import me.zhengjie.modules.wms.sr.productCount.domain.ProductCount; +import me.zhengjie.utils.StringUtils; import me.zhengjie.utils.ValidationUtil; import me.zhengjie.modules.wms.sr.productCount.repository.ProductCountRepository; import me.zhengjie.modules.wms.sr.productCount.service.ProductCountService; @@ -12,14 +14,24 @@ import me.zhengjie.modules.wms.sr.productCount.service.dto.ProductCountDTO; import me.zhengjie.modules.wms.sr.productCount.service.dto.ProductCountQueryCriteria; import me.zhengjie.modules.wms.sr.productCount.service.mapper.ProductCountMapper; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; import java.util.Optional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.QueryHelp; +import org.springframework.util.CollectionUtils; + +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; /** * @author jie @@ -43,6 +55,42 @@ public class ProductCountServiceImpl implements ProductCountService { @Override public Object queryAll(ProductCountQueryCriteria criteria, Pageable pageable){ + + Specification specification = new Specification() { + @Override + public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) { + + List targetPredicateList = new ArrayList<>(); + + Predicate statusPredicate = criteriaBuilder.equal(root.get("status"), 1); + targetPredicateList.add(statusPredicate); + + + if(!StringUtils.isEmpty(criteria.getProductName())){ + Predicate customerOrderCodePredicate = criteriaBuilder.like(root.get("productName").as(String.class), "%" + criteria.getProductName() + "%"); + targetPredicateList.add(customerOrderCodePredicate); + } + + if(!StringUtils.isEmpty(criteria.getProductCategoryName())){ + Predicate customerNamePredicate = criteriaBuilder.like(root.get("productCategoryName").as(String.class), "%" + criteria.getProductCategoryName() + "%"); + targetPredicateList.add(customerNamePredicate); + } + + if(!StringUtils.isEmpty(criteria.getProductSeriesName())){ + Predicate customerNamePredicate = criteriaBuilder.like(root.get("productSeriesName").as(String.class), "%" + criteria.getProductSeriesName() + "%"); + targetPredicateList.add(customerNamePredicate); + } + + criteriaQuery.orderBy(criteriaBuilder.desc(root.get("gmtUpdate"))); + + if(CollectionUtils.isEmpty(targetPredicateList)){ + return null; + }else{ + return criteriaBuilder.and(targetPredicateList.toArray(new Predicate[targetPredicateList.size()])); + } + } + }; + Page page = productCountRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); return PageUtil.toPage(page.map(productCountMapper::toDto)); }