소스 검색

新增个人物料和企业物料查询搜索查询方法

hejq 7 년 전
부모
커밋
952d2507f6

+ 30 - 17
src/main/java/com/uas/ps/product/controller/ProductGetController.java

@@ -2,15 +2,15 @@ package com.uas.ps.product.controller;
 
 import com.alibaba.fastjson.JSON;
 import com.uas.ps.core.page.PageInfo;
-import com.uas.ps.core.util.ContextUtils;
 import com.uas.ps.entity.Product;
 import com.uas.ps.entity.ProductUsers;
-import com.uas.ps.product.search.SPageUtils;
+import com.uas.ps.product.search.model.PageParams;
 import com.uas.ps.product.service.ProductService;
 import com.uas.ps.product.search.model.SPage;
 import com.uas.ps.product.search.service.SearchService;
-import com.uas.ps.properties.UrlProperties;
+import com.uas.ps.product.service.ProductUsersService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Sort;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -38,6 +38,9 @@ public class ProductGetController {
     @Autowired
     private SearchService searchService;
 
+    @Autowired
+    private ProductUsersService productUsersService;
+
     /**
      * 根据enUU和code查找企业物料
      * @param enUU  企业UU
@@ -82,34 +85,44 @@ public class ProductGetController {
      * @return  物料
      */
     @RequestMapping(value = "/findByPageInfo", method = RequestMethod.GET)
-    public SPage<Product> findByPageInfo(int pageNumber, int pageSize, String filters, Sort sort, String keyword) {
+    public Page<Product> findByPageInfo(int pageNumber, int pageSize, String filters, Sort sort, String keyword) {
         PageInfo pageInfo = new PageInfo(pageNumber, pageSize);
         Map<String, Object> map = JSON.parseObject(filters);
         pageInfo.setFilters(map);
         pageInfo.setSort(sort);
-        if (StringUtils.isEmpty(keyword)) {
-            return SPageUtils.covert(productService.findByPageInfo(pageInfo, keyword));
-        } else {
-            return searchService.searchProducts(keyword, pageInfo);
-        }
+        return productService.findByPageInfo(pageInfo, keyword);
+    }
+
+    @RequestMapping(value = "/searchProducts", method = RequestMethod.GET)
+    public SPage<Product> searchProducts(int page, int size, String filters, String notEqualFilters, Sort sort, String keyword) {
+        Map<String, Object> equalMap = JSON.parseObject(filters);
+        Map<String, Object> notEqualMap = JSON.parseObject(notEqualFilters);
+        PageParams pageParams = new PageParams(page, size, equalMap, notEqualMap);
+        return searchService.searchProducts(keyword, pageParams);
     }
 
     /**
      * 根据分页信息查找个人物料
      *
-     * @param pageNumber  页码
-     * @param pageSize 分页大小
+     * @param page  页码
+     * @param size 分页大小
      * @param sort 排序
      * @param keyword  关键词   不建议使用关键词搜索,jpa获取会很慢
      * @return  物料
      */
     @RequestMapping(value = "/findProductUsers", method = RequestMethod.GET)
-    public SPage<ProductUsers> findProductUsersByPageInfo(int pageNumber, int pageSize, String filters, Sort sort, String keyword) {
-        PageInfo pageInfo = new PageInfo(pageNumber, pageSize);
-        Map<String, Object> map = JSON.parseObject(filters);
-        pageInfo.setFilters(map);
-        pageInfo.setSort(sort);
-        return searchService.searchProductUsers(keyword, pageInfo);
+    public SPage<ProductUsers> findProductUsersByPageInfo(int page, int size, String filters, String notEqualFilters, Sort sort, String keyword) {
+        Map<String, Object> equalMap = JSON.parseObject(filters);
+        Map<String, Object> notEqualMap = JSON.parseObject(notEqualFilters);
+        PageParams pageParams = new PageParams(page, size, equalMap, notEqualMap);
+        if (StringUtils.isEmpty(keyword)) {
+            PageInfo pageInfo = new PageInfo(page, size);
+            for (Map.Entry<String, Object> map : equalMap.entrySet()) {
+                pageInfo.filter(map.getKey(), map.getValue());
+            }
+            return productUsersService.findByPageInfo(pageInfo);
+        }
+        return searchService.searchProductUsers(keyword, pageParams);
     }
 
     /**

+ 7 - 49
src/main/java/com/uas/ps/product/repository/ProductDao.java

@@ -9,6 +9,7 @@ import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import javax.transaction.Transactional;
+import java.sql.SQLException;
 import java.util.List;
 import java.util.Set;
 
@@ -72,18 +73,6 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
      */
     List<Product> findByTitleAndCmpCodeAndBrandAndEnUU(String title, String cmpcode, String brand, Long enUU);
 
-    /**
-     * 通过企业UU,规格、品牌(非标准)、型号
-     *
-     * @param enUU 企业UU
-     * @param spec 物料规格
-     * @param cmpCode 规格C
-     * @param brand 品牌
-     * @return
-     */
-    List<Product> findByEnUUAndCmpCodeAndBrandAndSpec(Long enUU, String cmpCode, String brand, String spec);
-
-
     /**
      * 通过企业UU,物料名称、规格、品牌(标准)
      *
@@ -109,8 +98,8 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
      * 更新销售状态(企业)
      * @param switchStatus 开关状态 1 or 0
      */
-    @Transactional
     @Modifying
+    @Transactional(rollbackOn = SQLException.class)
     @Query("update Product p set p.isSale = :switchStatus where p.enUU = :enUU and (p.isSale <> :switchStatus or p.isSale is null)")
     void updateSaleStatusByEnUU(@Param("enUU") Long enUU, @Param("switchStatus") Short switchStatus);
 
@@ -118,8 +107,8 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
      * 更新采购状态(企业)
      * @param switchStatus 开关状态 1 or 0
      */
-    @Transactional
     @Modifying
+    @Transactional(rollbackOn = SQLException.class)
     @Query("update Product p set p.isPurchase = :switchStatus where p.enUU = :enUU and (p.isPurchase <> :switchStatus or p.isPurchase is null)")
     void updatePurchaseStatusByEnUU(@Param("enUU") Long enUU, @Param("switchStatus") Short switchStatus);
 
@@ -127,8 +116,8 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
      * 更新销售状态(单个)
      * @param switchStatus 开关状态 1 or 0
      */
-    @Transactional
     @Modifying
+    @Transactional(rollbackOn = SQLException.class)
     @Query("update Product p set p.isSale = :switchStatus where p.id = :id")
     void updateSaleStatusById(@Param("id") Long id, @Param("switchStatus") Short switchStatus);
 
@@ -137,18 +126,11 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
      * 更新采购状态(单个)
      * @param switchStatus 开关状态 1 or 0
      */
-    @Transactional
     @Modifying
+    @Transactional(rollbackOn = SQLException.class)
     @Query("update Product p set p.isPurchase = :switchStatus where p.id = :id")
     void updatePurchaseStatusById(@Param("id") Long id, @Param("switchStatus") Short switchStatus);
 
-    /**
-     * 根据企业UU获取该企业物料
-     * @param enUU 企业UU
-     * @return
-     */
-    List<Product> findByEnUU(Long enUU);
-
     /**
      * 根据企业UU和销售状态获取企业物料
      * @param enUU 企业UU
@@ -267,30 +249,6 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
     @Query("from Product p where p.enUU = :enUU and p.code in :codeSet")
     List<Product> findByEnUUAndCodeSet(@Param("enUU") Long enUU, @Param("codeSet") Set<String> codeSet);
 
-//    /**
-//     * 通过uu查询非标准器件进行存储
-//     *
-//     * @param enuu
-//     * @return
-//     */
-//    @Procedure(procedureName = "PRODUCT$MATCHES")
-//    String updateResultByEnuu(Long enuu);
-//
-//    /**
-//     * 通过uu查询非标准器件进行存储
-//     *
-//     * @param enuu
-//     * @return
-//     */
-//    @Procedure(procedureName = "PRODUCT$MATCHES_SALE")
-//    String updateResultByEnuuForSale(Long enuu);
-//
-//    /**
-//     * 通过uu查询非标准器件进行存储
-//     *
-//     * @param enuu
-//     * @return
-//     */
-//    @Procedure(procedureName = "PRODUCT$MATCHES_PURC")
-//    String updateResultByEnuuForPurc(Long enuu);
+    @Query("from Product p where p.id in :idSet")
+    List<Product> findByIdList(@Param("idSet") List<Long> idSet);
 }

+ 127 - 0
src/main/java/com/uas/ps/product/search/model/PageParams.java

@@ -0,0 +1,127 @@
+package com.uas.ps.product.search.model;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 重新编写搜索分页参数,为了和搜索接口对应
+ * 
+ * @author hejq
+ * @date 2018-08-02 11:04
+ */
+public class PageParams implements Serializable {
+
+	/**
+	 * 序列号
+	 */
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 页码
+     */
+	private int page;
+
+    /**
+     * 分页大小
+     */
+	private int size;
+
+	/**
+	 * keyword模糊搜索的字段名称
+	 */
+	private List<String> keywordSearchColumns;
+
+    /**
+     * 过滤条件(包含)
+     */
+	private Map<String, Object> filters;
+
+    /**
+     * 过滤条件(不包含)
+     */
+	private Map<String, Object> notEqualFilters;
+
+    /**
+     * 无参构造
+     */
+	public PageParams() {
+
+	}
+
+    /**
+     * 根据条件初始化分页参数
+     *
+     * @param page 页码
+     * @param size 大小
+     * @param filters 过滤条件(包含)
+     * @param notEqualFilters 过滤条件(不包含)
+     */
+	public PageParams(int page, int size, Map<String, Object> filters, Map<String, Object> notEqualFilters) {
+		this.page = page;
+		this.size = size;
+		this.filters = filters;
+		this.notEqualFilters = notEqualFilters;
+	}
+
+	public int getPage() {
+		return page;
+	}
+
+	public void setPage(int page) {
+		this.page = page;
+	}
+
+	public int getSize() {
+		return size;
+	}
+
+	public void setSize(int size) {
+		this.size = size;
+	}
+
+	public List<String> getKeywordSearchColumns() {
+		return keywordSearchColumns;
+	}
+
+	public void setKeywordSearchColumns(List<String> keywordSearchColumns) {
+		this.keywordSearchColumns = keywordSearchColumns;
+	}
+
+	public Map<String, Object> getFilters() {
+		return filters;
+	}
+
+	public void setFilters(Map<String, Object> filters) {
+		this.filters = filters;
+	}
+
+	public void filter(String key, Object value) {
+		if (this.filters == null) {
+			this.filters = new HashMap<String, Object>();
+		}
+		this.filters.put(key, value);
+	}
+
+	public void removeFilter(String key) {
+		if (this.filters != null) {
+			this.filters.remove(key);
+		}
+	}
+
+	public Map<String, Object> getNotEqualFilters() {
+		return notEqualFilters;
+	}
+
+	public void setNotEqualFilters(Map<String, Object> notEqualFilters) {
+		this.notEqualFilters = notEqualFilters;
+	}
+
+	@Override
+	public String toString() {
+		return "PageParams [page=" + page + ", size=" + size + ", keywordSearchColumns=" + keywordSearchColumns
+				+ ", filters=" + filters + ", notEqualFilters=" + notEqualFilters + "]";
+	}
+
+}

+ 3 - 2
src/main/java/com/uas/ps/product/search/model/SearchUrl.java

@@ -11,7 +11,8 @@ public class SearchUrl {
     /**
      * 获取id链接
      */
-    public static final String ID_LIST = "/search?keyword={keyword}&tableName={tableName}&page={page}&size={size}" +
-            "&filters={filters}&sort={sort}";
+    public static final String ID_LIST = "/?keyword={keyword}&tableName={tableName}&page={page}&size={size}" +
+            "&filters={filters}&multiValueField={multiValueField}&sort={sort}" +
+            "&notEqualFilters={notEqualFilters}&multiValueNotField={multiValueNotField}";
 
 }

+ 3 - 2
src/main/java/com/uas/ps/product/search/service/RestTempSearchService.java

@@ -2,6 +2,7 @@ package com.uas.ps.product.search.service;
 
 
 import com.uas.ps.core.page.PageInfo;
+import com.uas.ps.product.search.model.PageParams;
 import com.uas.ps.product.search.model.SPage;
 import net.sf.ehcache.search.SearchException;
 
@@ -18,10 +19,10 @@ public interface RestTempSearchService {
      *
      * @param tableName 表名
      * @param keyword 关键词
-     * @param pageInfo 分页参数
+     * @param pageParams 分页参数
      * @throws SearchException
      * @return
      */
-    SPage<Long> searchIds(String keyword, String tableName, PageInfo pageInfo) throws SearchException;
+    SPage<Integer> searchIds(String keyword, String tableName, PageParams pageParams) throws SearchException;
 
 }

+ 48 - 14
src/main/java/com/uas/ps/product/search/service/RestTempSearchServiceImpl.java

@@ -1,19 +1,22 @@
 package com.uas.ps.product.search.service;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
-import com.uas.ps.core.page.PageInfo;
 import com.uas.ps.core.util.ContextUtils;
 import com.uas.ps.core.util.StringUtils;
+import com.uas.ps.product.search.model.*;
 import com.uas.ps.properties.UrlProperties;
-import com.uas.ps.product.search.model.SPage;
-import com.uas.ps.product.search.model.SearchUrl;
 import net.sf.ehcache.search.SearchException;
 import org.apache.commons.collections.map.HashedMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -42,19 +45,20 @@ public class RestTempSearchServiceImpl implements RestTempSearchService {
      *
      * @param tableName  表名
      * @param keyword    关键词
-     * @param pageInfo 分页参数
+     * @param pageParams 分页参数
      * @throws SearchException
      * @return
      */
     @Override
-    public SPage<Long> searchIds(String keyword, String tableName, PageInfo pageInfo) throws SearchException {
-        Map<String, Object> map = initSearchMap(tableName.toString(), keyword, pageInfo);
-        String str = restTemplate.getForObject(SEARCH_URL + SearchUrl.ID_LIST, String.class, map);
+    public SPage<Integer> searchIds(String keyword, String tableName, PageParams pageParams) throws SearchException {
+        Map<String, Object> map = initSearchMap(tableName, keyword, pageParams);
+        String url = SEARCH_URL + SearchUrl.ID_LIST;
+        String str = restTemplate.getForObject(url, String.class, map);
         if (StringUtils.isEmpty(str)) {
             return new SPage<>();
         } else {
             try {
-                SPage<Long> sPage = FlexJsonUtils.fromJson(str, SPage.class);
+                SPage<Integer> sPage = JSONObject.parseObject(str, SPage.class);
                 return sPage;
             } catch (Exception e) {
                 e.printStackTrace();
@@ -68,17 +72,47 @@ public class RestTempSearchServiceImpl implements RestTempSearchService {
      *
      * @param tableName 表名
      * @param keyword 关键字
-     * @param pageInfo 分页属性
+     * @param pageParams 分页属性
      * @return
      */
-    public Map<String, Object> initSearchMap(String tableName, String keyword, PageInfo pageInfo) {
+    public Map<String, Object> initSearchMap(String tableName, String keyword, PageParams pageParams) {
         Map<String, Object> map = new HashedMap();
         map.put("tableName", tableName);
-        map.put("page", pageInfo.getPageNumber());
-        map.put("size", pageInfo.getPageSize());
+        map.put("page", pageParams.getPage());
+        map.put("size", pageParams.getSize());
         map.put("keyword", keyword);
-        map.put("sort", FlexJsonUtils.toJsonDeep(pageInfo.getFilters().get("sort")));
-        map.put("filters", JSON.toJSONString(pageInfo.getFilters()));
+        map.put("sort", JSON.toJSONString(pageParams.getFilters().get("sort")));
+        boolean notEqual = true;
+        String nullString = "null";
+        if (null == pageParams.getNotEqualFilters() || pageParams.getNotEqualFilters().containsKey(nullString)) {
+            notEqual = false;
+        }
+        // 取出filters里面的信息单独处理
+        Iterator<Map.Entry<String, Object>> it = pageParams.getFilters().entrySet().iterator();
+        List<MultiValueField> valueFields = new ArrayList<>();
+        while (it.hasNext()) {
+            Map.Entry<String, Object> entry = it.next();
+            if (entry.getValue() instanceof MultiValue) {
+                valueFields.add(new MultiValueField(entry.getKey(), (MultiValue) entry.getValue()));
+                it.remove();
+            }
+        }
+        // notEqualFilters处理和filters一样
+        List<MultiValueField> valueNotFields = new ArrayList<>();
+        if (notEqual) {
+            Iterator<Map.Entry<String, Object>> notFields = pageParams.getNotEqualFilters().entrySet().iterator();
+            while (notFields.hasNext()) {
+                Map.Entry<String, Object> entry = notFields.next();
+                if (entry.getValue() instanceof MultiValue) {
+                    valueNotFields.add(new MultiValueField(entry.getKey(), (MultiValue) entry.getValue()));
+                    notFields.remove();
+                }
+            }
+        }
+        map.put("notEqualFilters", notEqual ? JSON.toJSONString(pageParams.getNotEqualFilters()) : "");
+        map.put("multiValueField", CollectionUtils.isEmpty(valueFields) ? "" : FlexJsonUtils.toJsonDeep(valueFields));
+        map.put("multiValueNotField", CollectionUtils.isEmpty(valueNotFields) ? "" : FlexJsonUtils.toJsonDeep(valueNotFields));
+        map.put("filters", JSON.toJSONString(pageParams.getFilters()));
         return map;
     }
 }

+ 5 - 4
src/main/java/com/uas/ps/product/search/service/SearchService.java

@@ -3,6 +3,7 @@ package com.uas.ps.product.search.service;
 import com.uas.ps.core.page.PageInfo;
 import com.uas.ps.entity.Product;
 import com.uas.ps.entity.ProductUsers;
+import com.uas.ps.product.search.model.PageParams;
 import com.uas.ps.product.search.model.SPage;
 
 /**
@@ -17,17 +18,17 @@ public interface SearchService {
      * 通过关键词和分页信息查询物料信息
      *
      * @param keyword 搜索关键词
-     * @param pageInfo 分页信息
+     * @param pageParams 分页信息
      * @return
      */
-    SPage<Product> searchProducts(String keyword, PageInfo pageInfo);
+    SPage<Product> searchProducts(String keyword, PageParams pageParams);
 
     /**
      * 通过关键词和分页信息查询个人物料信息
      *
      * @param keyword 搜索关键词
-     * @param pageInfo 分页信息
+     * @param pageParams 分页信息
      * @return
      */
-    SPage<ProductUsers> searchProductUsers(String keyword, PageInfo pageInfo);
+    SPage<ProductUsers> searchProductUsers(String keyword, PageParams pageParams);
 }

+ 30 - 17
src/main/java/com/uas/ps/product/search/service/SearchServiceImpl.java

@@ -1,18 +1,17 @@
 package com.uas.ps.product.search.service;
 
-import com.uas.ps.core.page.PageInfo;
 import com.uas.ps.entity.Product;
 import com.uas.ps.entity.ProductUsers;
 import com.uas.ps.product.repository.ProductDao;
 import com.uas.ps.product.repository.ProductUsersDao;
+import com.uas.ps.product.search.model.PageParams;
 import com.uas.ps.product.search.model.SPage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.lang.reflect.Field;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
@@ -36,7 +35,7 @@ public class SearchServiceImpl implements SearchService {
     /**
      * 物料信息表
      */
-    final String PRODUCT_TABLE_NAME = "products";
+    final String PRODUCT_TABLE_NAME = "v$product$private";
 
     /**
      * 个人物料信息表
@@ -54,7 +53,7 @@ public class SearchServiceImpl implements SearchService {
      *            数据
      * @return 合并后的结果
      */
-    private <T> SPage<T> toSPage(SPage<Long> idsPage, List<T> content) {
+    private <T> SPage<T> toSPage(SPage<Integer> idsPage, List<T> content) {
         if (idsPage == null) {
             return null;
         }
@@ -79,7 +78,7 @@ public class SearchServiceImpl implements SearchService {
      * @param <T>
      */
     private <T> void sortByProperty(List<T> content, Class<T> targetCls, String properyName,
-                                    final List<Long> propertyList) {
+                                    final List<Integer> propertyList) {
         final Field field = getPropertyField(targetCls, properyName);
         if (null != field) {
             Collections.sort(content, new Comparator<T>() {
@@ -128,14 +127,21 @@ public class SearchServiceImpl implements SearchService {
      * 通过关键词和分页信息查询物料信息
      *
      * @param keyword 搜索关键词
-     * @param pageInfo 分页信息
+     * @param pageParams 分页信息
      * @return
      */
     @Override
-    public SPage<Product> searchProducts(String keyword, PageInfo pageInfo) {
-        SPage<Long> idsPage = searchService.searchIds(keyword, PRODUCT_TABLE_NAME, pageInfo);
-        List<Product> content = productDao.findAll(idsPage.getContent());
-        sortByProperty(content, Product.class, "id", idsPage.getContent());
+    public SPage<Product> searchProducts(String keyword, PageParams pageParams) {
+        SPage<Integer> idsPage = searchService.searchIds(keyword, PRODUCT_TABLE_NAME, pageParams);
+        List<Product> content = null;
+        if (!CollectionUtils.isEmpty(idsPage.getContent())) {
+            Set<Long> idSet = new HashSet<>();
+            for (Integer id : idsPage.getContent()) {
+                idSet.add(Long.valueOf(id));
+            }
+            content = productDao.findAll(idSet);
+            sortByProperty(content, Product.class, "id", idsPage.getContent());
+        }
         return toSPage(idsPage, content);
     }
 
@@ -143,14 +149,21 @@ public class SearchServiceImpl implements SearchService {
      * 通过关键词和分页信息查询个人物料信息
      *
      * @param keyword  搜索关键词
-     * @param pageInfo 分页信息
+     * @param pageParams 分页信息
      * @return
      */
     @Override
-    public SPage<ProductUsers> searchProductUsers(String keyword, PageInfo pageInfo) {
-        SPage<Long> idsPage = searchService.searchIds(keyword, PRODUCT_USER_TABLE_NAME, pageInfo);
-        List<ProductUsers> content = productUsersDao.findAll(idsPage.getContent());
-        sortByProperty(content, ProductUsers.class, "id", idsPage.getContent());
+    public SPage<ProductUsers> searchProductUsers(String keyword, PageParams pageParams) {
+        SPage<Integer> idsPage = searchService.searchIds(keyword, PRODUCT_USER_TABLE_NAME, pageParams);
+        List<ProductUsers> content = null;
+        if (!CollectionUtils.isEmpty(idsPage.getContent())) {
+            Set<Long> idSet = new HashSet<>();
+            for (Integer id : idsPage.getContent()) {
+                idSet.add(Long.valueOf(id));
+            }
+            content = productUsersDao.findAll(idSet);
+            sortByProperty(content, ProductUsers.class, "id", idsPage.getContent());
+        }
         return toSPage(idsPage, content);
     }
 

+ 10 - 13
src/main/java/com/uas/ps/product/service/ProductUsersService.java

@@ -1,8 +1,10 @@
 package com.uas.ps.product.service;
 
+import com.uas.ps.core.page.PageInfo;
 import com.uas.ps.entity.Product;
 import com.uas.ps.entity.ProductUsers;
 import com.uas.ps.product.entity.ProductSaler;
+import com.uas.ps.product.search.model.SPage;
 import org.springframework.ui.ModelMap;
 
 import java.util.List;
@@ -14,12 +16,6 @@ import java.util.List;
  */
 public interface ProductUsersService {
 
-    /**
-     * 保存个人物料信息
-     * @param productUsers 个人物料信息
-     */
-    void save(List<ProductUsers> productUsers);
-
     /**
      * 新增个人物料信息
      *
@@ -63,16 +59,17 @@ public interface ProductUsersService {
      */
     List<ProductUsers> getProductUsersByEnUUAndCmpCode(Long enUU, String cmpCode);
 
-    /**
-     * ERP productSaler 实体转换成 productUsers 实体
-     * @param productSalers productUsers List
-     * @return
-     */
-    List<ProductUsers> convertProductUsers(List<ProductSaler> productSalers);
-
     /**
      * 更新我的个人产品库方法
      * @param productUsersList
      */
     void update(List<ProductUsers> productUsersList);
+
+    /**
+     * 通过分页信息查询个人物料
+     *
+     * @param pageInfo 分页信息
+     * @return
+     */
+    SPage<ProductUsers> findByPageInfo(PageInfo pageInfo);
 }

+ 52 - 80
src/main/java/com/uas/ps/product/service/impl/ProductUsersServiceImpl.java

@@ -2,6 +2,10 @@ package com.uas.ps.product.service.impl;
 
 import com.uas.platform.core.persistence.criteria.PredicateFactory;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
+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.SimpleExpression;
 import com.uas.ps.core.util.CollectionUtils;
 import com.uas.ps.core.util.StringUtils;
 import com.uas.ps.entity.Product;
@@ -10,8 +14,12 @@ import com.uas.ps.product.entity.Constant;
 import com.uas.ps.product.entity.ProductSaler;
 import com.uas.ps.product.repository.ProductDao;
 import com.uas.ps.product.repository.ProductUsersDao;
+import com.uas.ps.product.search.SPageUtils;
+import com.uas.ps.product.search.model.SPage;
 import com.uas.ps.product.service.ProductUsersService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Sort;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
@@ -28,7 +36,10 @@ import java.util.List;
 import java.util.Set;
 
 /**
- * Created by hejq on 2017-11-08.
+ * 个人物料
+ * 
+ * @author hejq
+ * @date 2018-08-02 18:05
  */
 @Service
 public class ProductUsersServiceImpl implements ProductUsersService {
@@ -39,44 +50,29 @@ public class ProductUsersServiceImpl implements ProductUsersService {
     @Autowired
     private ProductDao productDao;
 
-    /**
-     * 保存个人物料信息
-     *
-     * @param productUsers 个人物料信息
-     */
-    @Override
-    public void save(List<ProductUsers> productUsers) {
-        List<ProductUsers> saveList = new ArrayList<>();
-        for (ProductUsers prodUsers : productUsers) {
-            List<ProductUsers> existedProductUsers = productUsersDao.findByEnuuAndUseruuAndErpid(prodUsers.getEnuu(), prodUsers.getUseruu(), prodUsers.getPrid());
-            if (CollectionUtils.isEmpty(existedProductUsers)) {
-                prodUsers.setDate(new Date());
-                saveList.add(prodUsers);
-            }
-        }
-        productUsersDao.save(saveList);
-    }
-
     @Override
     public ModelMap addNewProduct(Product prodInfo) {
         ModelMap map = new ModelMap();
         // 先查找以前的个人物料是否存在
         List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndTitleAndCmpCodeAndBrand(prodInfo.getEnUU(), prodInfo.getUserUU(), prodInfo.getTitle(), prodInfo.getCmpCode(), prodInfo.getBrand());
-        if(CollectionUtils.isEmpty(productUsers)) {// 如果不存在则进行其他操作,存在不处理(先查询非标)
+        // 如果不存在则进行其他操作,存在不处理(先查询非标)
+        if (CollectionUtils.isEmpty(productUsers)) {
             List<Product> productList = productDao.findByTitleAndCmpCodeAndBrandAndEnUU(prodInfo.getTitle(), prodInfo.getCmpCode(), prodInfo.getBrand(), prodInfo.getEnUU());
-            if(CollectionUtils.isEmpty(productList)) {// 如果非标不存在再查询标准
+            // 如果非标不存在再查询标准
+            if (CollectionUtils.isEmpty(productList)) {
                 productList = productDao.findByTitleAndPCmpCodeAndPBrandAndEnUU(prodInfo.getTitle(), prodInfo.getCmpCode(), prodInfo.getBrand(), prodInfo.getEnUU());
             }
-            if(!CollectionUtils.isEmpty(productList)) { // 如果存在,找出其中一个进行绑定
+            // 如果存在,找出其中一个进行绑定
+            if (!CollectionUtils.isEmpty(productList)) {
                 ProductUsers prod = new ProductUsers();
                 prod.setDate(new Date());
                 prod.setEnuu(prodInfo.getEnUU());
                 prod.setPrid(productList.get(0).getId());
                 prod.setUseruu(prodInfo.getUserUU());
                 productUsersDao.save(prod);
-//                logger.log("个人产品库增加产品", "关联:" + productList.get(0).getId());
                 map.put("success", "新增成功");
-            } else {// 不存在的话新增再绑定
+                // 不存在的话新增再绑定
+            } else {
                 SimpleDateFormat sdf = new SimpleDateFormat("mmsssss");
                 if(null == prodInfo.getCode()) {
                     String code = prodInfo.getEnUU() + sdf.format(new Date());
@@ -84,23 +80,14 @@ public class ProductUsersServiceImpl implements ProductUsersService {
                 } else {
                     List<Product> products = productDao.findByEnUUAndCode(prodInfo.getEnUU(), prodInfo.getCode());
                     String code = prodInfo.getEnUU() + sdf.format(new Date());
-                    if(products.size() != 0) // 如果该企业下该编号的物料存在,重新赋值
+                    if(products.size() != 0) {
                         prodInfo.setCode(code);
+                    }
 
                 }
-//                List<Role> roles = roleService.findByEnUUAndUserUU(enuu, useruu);
-//                if(!CollectionUtils.isEmpty(roles)) {
-//                    for(Role role : roles) {
-//                        if(role.getDesc().equals("业务员") || role.getDesc().equals("销售经理")) {
-//                            prodInfo.setIsSale(Constant.YES);
-//                        } else  if(role.getDesc().equals("采购员")) {
-//                            prodInfo.setIsPurchase(Constant.YES);
-//                        }
-//                    }
-//                }
-//                prodInfo.setEnUU(enuu);
-                if (null == prodInfo.getUnit())
+                if (null == prodInfo.getUnit()) {
                     prodInfo.setUnit("PCS");
+                }
                 prodInfo.setSourceApp("B2B");
                 prodInfo.setIsPubsale(Constant.NO);
                 prodInfo.setIsShow(Constant.NO);
@@ -113,7 +100,6 @@ public class ProductUsersServiceImpl implements ProductUsersService {
                 prod.setPrid(prodInfo.getId());
                 prod.setUseruu(prodInfo.getUserUU());
                 productUsersDao.save(prod);
-//                logger.log("个人产品库增加产品", "关联:" + prodInfo.getId());
                 map.put("success", "新增成功");
             }
         } else {
@@ -142,7 +128,6 @@ public class ProductUsersServiceImpl implements ProductUsersService {
             }
         }
         productUsersList = productUsersDao.save(productUsersList);
-//        logger.log("我的产品库", "新增了我产品信息", "size:" + count);
         return productUsersList.size();
     }
 
@@ -150,31 +135,12 @@ public class ProductUsersServiceImpl implements ProductUsersService {
     public void coverToUserProdById(Long id, Long userUU, Long enUU) {
         List<ProductUsers> prods = productUsersDao.findByEnuuAndUseruuAndPrid(enUU, userUU, id);
         if(CollectionUtils.isEmpty(prods)) {
-//        	Product product = productDao.findOne(id);
-//	        List<Role> roles = roleService.findByEnUUAndUserUU(enuu, useruu);
-//	        // 根据当前用户角色更新物料销售采购属性
-//	        if(!CollectionUtils.isEmpty(roles)) {
-//		        for(Role role : roles) {
-//			        if(role.getDesc().equals("业务员") || role.getDesc().equals("销售经理")) {
-//			        	if(product.getIsSale() == null || product.getIsSale().equals(Constant.NO)) {
-//					        product.setIsSale(Constant.YES);
-//					        productDao.save(product);
-//				        }
-//			        } else if(role.getDesc().equals("采购员")) {
-//				        if(product.getIsPurchase() == null || product.getIsPurchase().equals(Constant.NO)) {
-//					        product.setIsPurchase(Constant.YES);
-//					        productDao.save(product);
-//				        }
-//			        }
-//		        }
-//	        }
             ProductUsers prod = new ProductUsers();
             prod.setUseruu(userUU);
             prod.setEnuu(enUU);
             prod.setPrid(id);
             prod.setDate(new Date());
-            prod = productUsersDao.save(prod);
-//            logger.log("我的产品库", "新增了我产品信息", "id:" + prod.getId());
+            productUsersDao.save(prod);
         }
     }
 
@@ -194,10 +160,11 @@ public class ProductUsersServiceImpl implements ProductUsersService {
     @Override
     public List<ProductUsers> getProductUsersByEnUUAndCmpCode(final Long enUU, final String cmpCode) {
         List<ProductUsers> returnList = new ArrayList<>();
+        String NONE_KEYWORD = "无";
         // 去掉同一企业下同一个人相同原厂型号的不同物料的记录,保证一个原厂型号只发一条
         Set<String> enUUAndUserUUs = new HashSet<>();
         // 过滤掉为空和填无的型号
-        if (StringUtils.isEmpty(cmpCode) || "无".equals(cmpCode)) {
+        if (StringUtils.isEmpty(cmpCode) || NONE_KEYWORD.equals(cmpCode)) {
             return returnList;
         }
         List<ProductUsers> productUsersList = productUsersDao.findAll(new Specification<ProductUsers>() {
@@ -222,26 +189,6 @@ public class ProductUsersServiceImpl implements ProductUsersService {
         return returnList;
     }
 
-    /**
-     * ERP productSaler 实体转换成 productUsers 实体
-     *
-     * @param productSalers productUsers List
-     * @return
-     */
-    @Override
-    public List<ProductUsers> convertProductUsers(List<ProductSaler> productSalers) {
-        List<ProductUsers> productUsersList = new ArrayList<>();
-        for (ProductSaler productSaler : productSalers) {
-            List<Product> products = productDao.findByEnUUAndCode(productSaler.getEn_uu(), productSaler.getPs_code());
-            if (!CollectionUtils.isEmpty(products)) {
-                ProductUsers productUsers = productSaler.convert();
-                productUsers.setPrid(products.get(0).getId());
-                productUsersList.add(productUsers);
-            }
-        }
-        return productUsersList;
-    }
-
     /**
      * 更新我的个人产品库方法
      *
@@ -260,4 +207,29 @@ public class ProductUsersServiceImpl implements ProductUsersService {
         }
         productUsersDao.save(productUsers);
     }
+
+    /**
+     * 通过分页信息查询个人物料
+     *
+     * @param pageInfo 分页信息
+     * @return
+     */
+    @Override
+    public SPage<ProductUsers> findByPageInfo(final PageInfo pageInfo) {
+        if (null == pageInfo) {
+            return null;
+        }
+        if (null == pageInfo.getSort()) {
+            Sort sort = new Sort(Sort.Direction.DESC, "id");
+            pageInfo.setSort(sort);
+        }
+        Page<ProductUsers> productUsersPage = productUsersDao.findAll(new Specification<ProductUsers>() {
+            @Override
+            public Predicate toPredicate(Root<ProductUsers> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                query.where(pageInfo.getPredicates(root, query, cb));
+                return null;
+            }
+        }, pageInfo);
+        return SPageUtils.covert(productUsersPage);
+    }
 }

+ 1 - 1
src/main/resources/config/application-cloud.properties

@@ -24,4 +24,4 @@ datasource.connectionProperties=druid.stat.mergeSql=false;druid.stat.slowSqlMill
 url.b2c-url=https://www.usoftmall.com
 
 #search url
-url.search-url=http://10.10.100.179:8081
+url.search-url=http://10.10.0.76:8081

+ 1 - 1
src/main/resources/config/application-dev.properties

@@ -23,4 +23,4 @@ datasource.connectionProperties=druid.stat.mergeSql=false;druid.stat.slowSqlMill
 url.b2c-url=http://192.168.253.12:23400/
 
 #search url
-url.search-url=http://10.10.100.191:8081
+url.search-url=http://10.10.100.191:8092

+ 1 - 1
src/main/resources/config/application-test.properties

@@ -24,4 +24,4 @@ datasource.connectionProperties=druid.stat.mergeSql=false;druid.stat.slowSqlMill
 url.b2c-url=http://218.17.158.219:9090/platform-b2c
 
 #search url
-url.search-url=http://10.10.100.191:8081
+url.search-url=http://10.10.100.191:8092