瀏覽代碼

新增分页返回接口

dongbw 7 年之前
父節點
當前提交
d876778f2b

+ 13 - 0
src/main/java/com/uas/ps/product/controller/ProductGetController.java

@@ -1,9 +1,11 @@
 package com.uas.ps.product.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.uas.ps.core.page.PageInfo;
 import com.uas.ps.entity.Product;
 import com.uas.ps.product.service.ProductService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -59,6 +61,17 @@ public class ProductGetController {
         return productService.findById(id);
     }
 
+    /**
+     * 根据分页信息查找企业物料
+     * @param pageInfo  分页信息
+     * @param keyword  关键词   不建议使用关键词搜索,jpa获取会很慢
+     * @return  物料
+     */
+    @RequestMapping(value = "/findByPageInfo", method = RequestMethod.GET)
+    public Page<Product> findByPageInfo(PageInfo pageInfo, String keyword) {
+        return productService.findByPageInfo(pageInfo, keyword);
+    }
+
     /**
      * 根据ids查找企业物料
      * @param ids  物料id

+ 11 - 1
src/main/java/com/uas/ps/product/service/ProductService.java

@@ -1,14 +1,16 @@
 package com.uas.ps.product.service;
 
+import com.uas.ps.core.page.PageInfo;
 import com.uas.ps.entity.Product;
 import com.uas.ps.product.entity.Prod;
 import com.uas.ps.product.entity.ProductSaler;
 import com.uas.ps.support.ResultMap;
-import java.util.Map;
+import org.springframework.data.domain.Page;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.ModelMap;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author sunyj
@@ -368,4 +370,12 @@ public interface ProductService {
      * @return
      */
     ResultMap reuploadProduct(List<Map<String, Object>> miss);
+
+    /**
+     * 根据分页信息获取物料
+     * @param pageInfo 分页信息
+     * @param keyword 关键词
+     * @return 物料page
+     */
+    Page<Product> findByPageInfo(PageInfo pageInfo, String keyword);
 }

+ 50 - 22
src/main/java/com/uas/ps/product/service/impl/ProductServiceImpl.java

@@ -4,44 +4,31 @@ import com.alibaba.fastjson.JSON;
 import com.uas.platform.core.util.StringUtil;
 import com.uas.ps.brand.entity.BrandInfo;
 import com.uas.ps.component.entity.ComponentInfo;
+import com.uas.ps.core.page.PageInfo;
+import com.uas.ps.core.page.criteria.CriterionExpression;
+import com.uas.ps.core.page.criteria.LogicalExpression;
+import com.uas.ps.core.page.criteria.PredicateUtils;
+import com.uas.ps.core.page.criteria.SimpleExpression;
 import com.uas.ps.core.util.StringUtils;
-import com.uas.ps.entity.Product;
-import com.uas.ps.entity.ProductMatchResult;
-import com.uas.ps.entity.ProductPrivate;
-import com.uas.ps.entity.ProductUsers;
-import com.uas.ps.entity.Status;
+import com.uas.ps.entity.*;
 import com.uas.ps.product.ProductConstant;
 import com.uas.ps.product.data.MyJdbcTemplate;
 import com.uas.ps.product.entity.Constant;
 import com.uas.ps.product.entity.Prod;
 import com.uas.ps.product.entity.ProductReplace;
 import com.uas.ps.product.entity.ProductSaler;
-import com.uas.ps.product.repository.ProductDao;
-import com.uas.ps.product.repository.ProductMatchResultDao;
-import com.uas.ps.product.repository.ProductPrivateDao;
-import com.uas.ps.product.repository.ProductReplaceDao;
-import com.uas.ps.product.repository.ProductUsersDao;
-import com.uas.ps.product.repository.SyncMessageDao;
+import com.uas.ps.product.repository.*;
 import com.uas.ps.product.service.ProductService;
 import com.uas.ps.product.sync.WaitSyncHelper;
 import com.uas.ps.properties.UrlProperties;
 import com.uas.ps.support.CodeType;
 import com.uas.ps.support.ResultMap;
-import java.lang.reflect.Field;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import javax.persistence.Column;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.map.HashedMap;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
 import org.springframework.jdbc.core.BatchPreparedStatementSetter;
 import org.springframework.jdbc.core.ParameterizedPreparedStatementSetter;
 import org.springframework.stereotype.Service;
@@ -49,6 +36,17 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.client.RestTemplate;
 
+import javax.persistence.Column;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.lang.reflect.Field;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
 /**
  * @author sunyj
  * @since 2018/1/6 17:19
@@ -1135,6 +1133,36 @@ public class ProductServiceImpl implements ProductService {
         return new ResultMap(CodeType.NO_INFO, "无有效信息");
     }
 
+    /**
+     * 根据分页信息获取物料
+     *
+     * @param pageInfo 分页信息
+     * @param keyword  关键词
+     * @return 物料page
+     */
+    @Override
+    public Page<Product> findByPageInfo(final PageInfo pageInfo, String keyword) {
+        if (null == pageInfo) {
+            return null;
+        }
+        if (!StringUtils.isEmpty(keyword)) {
+            SimpleExpression pBrandEn = new SimpleExpression("pBrandEn", keyword, CriterionExpression.Operator.LIKE);
+            SimpleExpression title = new SimpleExpression("title", keyword, CriterionExpression.Operator.LIKE);
+            SimpleExpression pCmpCode = new SimpleExpression("pCmpCode", keyword, CriterionExpression.Operator.LIKE);
+            SimpleExpression spec = new SimpleExpression("spec", keyword, CriterionExpression.Operator.LIKE);
+            SimpleExpression[] simpleExpressions = new SimpleExpression[]{pBrandEn, title, pCmpCode, spec};
+            LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
+            pageInfo.expression(logicalExpression);
+        }
+        return productDao.findAll(new Specification<Product>() {
+            @Override
+            public Predicate toPredicate(Root<Product> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                query.where(pageInfo.getPredicates(root, query, cb));
+                return null;
+            }
+        }, pageInfo);
+    }
+
     /**
      * 返回需要拼装的数据
      * @param product 物料信息