Sfoglia il codice sorgente

产品管理查看企业产品库修改为索引搜索

dongbw 7 anni fa
parent
commit
9a32733d39

+ 17 - 1
src/main/java/com/uas/platform/b2c/common/search/constant/SearchUrl.java

@@ -10,7 +10,23 @@ public class SearchUrl {
     /**
      * 获取类目id
      */
-    public static final String KIND_ID_URL = "/search/kindIds?keyword={keyword}";
+    public static final String KIND_ID_URL = "/search/standardProductIds?enUU={enUU}&keyword={keyword}&page={page}&size={size}";
+
+    /**
+     * 获取企业物料
+     */
+    public static final String ALL_PRODUCT_ID_URL = "/search/productIds?enUU={enUU}&keyword={keyword}&page={page}&size={size}";
+
+
+    /**
+     * 获取企业物料(标准)
+     */
+    public static final String STANDARD_PRODUCT_ID_URL = "/search/standardProductIds?enUU={enUU}&keyword={keyword}&page={page}&size={size}";
+
+    /**
+     * 获取企业物料(非标准)
+     */
+    public static final String NONSTANDARD_PRODUCT_ID_URL = "/search/nonStandardProductIds?enUU={enUU}&keyword={keyword}&page={page}&size={size}";
 
     /**
      * 获取类目的数据

+ 34 - 4
src/main/java/com/uas/platform/b2c/common/search/rpc/service/Impl/SearchServiceImpl.java

@@ -1,16 +1,17 @@
 package com.uas.platform.b2c.common.search.rpc.service.Impl;
 
 
-import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.common.search.constant.SearchUrl;
 import com.uas.platform.b2c.common.search.rpc.service.SearchService;
+import com.uas.platform.b2c.common.search.util.CollectField;
+import com.uas.platform.b2c.common.search.util.PageParams;
+import com.uas.platform.b2c.common.search.util.SPage;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import com.uas.search.exception.SearchException;
-import com.uas.platform.b2c.common.search.util.CollectField;
-import com.uas.platform.b2c.common.search.util.PageParams;
-import com.uas.platform.b2c.common.search.util.SPage;
 import org.apache.commons.collections.map.HashedMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -73,6 +74,35 @@ public class SearchServiceImpl implements SearchService{
         }
     }
 
+    @Override
+    public SPage<Long> getProducts(Long enUU, String keyword, Integer page, Integer size, String type) throws SearchException {
+        Map<String, Object> map = initSearchMap(keyword, page, size);
+        map.put("enUU", enUU);
+        String str = "";
+        if (type.equals("standard")) {
+            str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.STANDARD_PRODUCT_ID_URL, String.class, map);
+        } else if (type.equals("nStandard")) {
+            str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.NONSTANDARD_PRODUCT_ID_URL, String.class, map);
+        } else if (type.equals("all")) {
+            str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.ALL_PRODUCT_ID_URL, String.class, map);
+        }
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        } else {
+            try {
+                // 2018年5月23日 20:57:36 dongbw 因为直接转Long会转为Integer,报类型转换错误,所以需要多处理一步
+                JSONObject json  = JSON.parseObject(str);
+                List<Long> ids = JSON.parseArray(json.get("content").toString(), Long.class);
+                SPage<Long> sPage = FastjsonUtils.fromJson(str, SPage.class);
+                sPage.setContent(ids);
+                return sPage;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
     @Override
     public SPage<Long> getBrandIds(String keyword, Integer page, Integer size) throws SearchException {
         Map<String, Object> map = initSearchMap(keyword, page, size);

+ 2 - 0
src/main/java/com/uas/platform/b2c/common/search/rpc/service/SearchService.java

@@ -19,6 +19,8 @@ public interface SearchService {
 
     SPage<Map<String, Object>> getKinds(String keyword, Integer page, Integer size) throws SearchException;
 
+    SPage<Long> getProducts(Long enUU, String keyword, Integer page, Integer size, String type) throws SearchException;
+
     SPage<Long> getBrandIds(String keyword, Integer page, Integer size) throws SearchException;
 
     SPage<Map<String, Object>> getBrands(String keyword, Integer page, Integer size) throws SearchException;

+ 107 - 55
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductServiceImpl.java

@@ -7,6 +7,8 @@ import com.uas.platform.b2c.advertise.ad.service.RecommendProductService;
 import com.uas.platform.b2c.common.account.dao.UserDao;
 import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.common.account.service.EnterpriseService;
+import com.uas.platform.b2c.common.search.rpc.service.SearchService;
+import com.uas.platform.b2c.common.search.util.SPage;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.constant.IntegerConstant;
 import com.uas.platform.b2c.core.constant.ShortConstant;
@@ -17,9 +19,43 @@ import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.core.utils.NumberUtil;
 import com.uas.platform.b2c.prod.commodity.constant.DoubleConstant;
 import com.uas.platform.b2c.prod.commodity.constant.StringConstant;
-import com.uas.platform.b2c.prod.commodity.dao.*;
-import com.uas.platform.b2c.prod.commodity.model.*;
-import com.uas.platform.b2c.prod.commodity.service.*;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsHistoryDao;
+import com.uas.platform.b2c.prod.commodity.dao.MatchModelDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductDetailDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductMatchResultDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductModifyHistoryDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductPersonDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductPrivateDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductReplaceDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductStandardPutOnInfoDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductStoreStatusDao;
+import com.uas.platform.b2c.prod.commodity.dao.StockInOutHistDao;
+import com.uas.platform.b2c.prod.commodity.dao.V_ProductPersonDao;
+import com.uas.platform.b2c.prod.commodity.dao.V_ProductPrivateDao;
+import com.uas.platform.b2c.prod.commodity.model.Goods;
+import com.uas.platform.b2c.prod.commodity.model.GoodsHistory;
+import com.uas.platform.b2c.prod.commodity.model.GoodsQtyPrice;
+import com.uas.platform.b2c.prod.commodity.model.MatchModel;
+import com.uas.platform.b2c.prod.commodity.model.Product;
+import com.uas.platform.b2c.prod.commodity.model.ProductDetail;
+import com.uas.platform.b2c.prod.commodity.model.ProductMatchResult;
+import com.uas.platform.b2c.prod.commodity.model.ProductModifyHistory;
+import com.uas.platform.b2c.prod.commodity.model.ProductPerson;
+import com.uas.platform.b2c.prod.commodity.model.ProductPrivate;
+import com.uas.platform.b2c.prod.commodity.model.ProductReplace;
+import com.uas.platform.b2c.prod.commodity.model.ProductStandardPutOnInfo;
+import com.uas.platform.b2c.prod.commodity.model.ProductStoreStatus;
+import com.uas.platform.b2c.prod.commodity.model.StockInOutHist;
+import com.uas.platform.b2c.prod.commodity.model.UASBatchPutOnProperty;
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPerson;
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
+import com.uas.platform.b2c.prod.commodity.service.GoodsHistoryService;
+import com.uas.platform.b2c.prod.commodity.service.GoodsService;
+import com.uas.platform.b2c.prod.commodity.service.ProductService;
+import com.uas.platform.b2c.prod.commodity.service.ReleaseProductByBatchService;
+import com.uas.platform.b2c.prod.commodity.service.UASBatchPutOnPropertyService;
 import com.uas.platform.b2c.prod.commodity.type.ProductConstant;
 import com.uas.platform.b2c.prod.commodity.util.GoodsUtil;
 import com.uas.platform.b2c.prod.product.brand.dao.BrandDao;
@@ -81,7 +117,15 @@ import java.lang.reflect.Field;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
@@ -203,6 +247,9 @@ public class ProductServiceImpl implements ProductService {
     @Autowired
     private UserDao userDao;
 
+    @Autowired
+    private SearchService searchService;
+
     @Value("#{sys.productServiceIp}")
     private String productServiceIp;
 
@@ -210,59 +257,64 @@ public class ProductServiceImpl implements ProductService {
 
     @Override
     public Page<V_ProductPrivate> getAllProducts(final PageInfo page, String keyword, String type, Long userUU) {
-        Long enuu = SystemSession.getUser().getEnterprise().getUu();
-        page.expression(PredicateUtils.eq("enUU", enuu, true));
-        page.expression(PredicateUtils.isNotNull("pcmpcode"));
-        page.expression(PredicateUtils.isNotNull("pbranden"));
+        Long enUU = SystemSession.getUser().getEnterprise().getUu();
+//        page.expression(PredicateUtils.eq("enUU", enuu, true));
+//        page.expression(PredicateUtils.isNotNull("pcmpcode"));
+//        page.expression(PredicateUtils.isNotNull("pbranden"));
         if (StringUtils.isEmpty(type)) {
             type = "nStandard";
         }
-        if (type.contains("standard")) {
-            page.filter("standard", (short)1);
-            page.filter("b2cEnabled", (short) 1);
-        } else if (type.contains("nStandard")) {
-            page.filter("standard", (short)0);
-            page.filter("b2cEnabled", (short) 1);
-        } else if (type.contains("all")) {
-            SimpleExpression[] arr = new SimpleExpression[2];
-            arr[0] = PredicateUtils.eq("b2cEnabled", (short) 1, false);
-            arr[1] = PredicateUtils.eq("standard", (short) 1, false);
-            LogicalExpression logicalExpression = PredicateUtils.and(arr);
-            SimpleExpression standard = PredicateUtils.eq("standard", (short) 0, false);
-            page.orExpression(standard);
-            page.orExpression(logicalExpression);
-            page.sorting("standard", Sort.Direction.DESC);
-        }
-
-        if (StringUtils.hasText(keyword)) {
-            SimpleExpression code = PredicateUtils.like("prodNum", keyword, true);
-            SimpleExpression kind = PredicateUtils.like("kind", keyword, true);
-            SimpleExpression brandEn = PredicateUtils.like("pbranden", keyword, true);
-            SimpleExpression cmpCode = PredicateUtils.like("pcmpcode", keyword, true);
-            SimpleExpression[] expressions4 = new SimpleExpression[]{code, kind, brandEn, cmpCode};
-            LogicalExpression logicalExpression4 = PredicateUtils.or(expressions4);
-            page.expression(logicalExpression4);
-        }
-
-        if (!StringUtils.isEmpty(userUU)) {
-            // 先查询userUU在当前企业 有哪些物料
-            List<Long> ids = productPersonDao.findIdByEnuuAndUserUU(enuu, userUU);
-
-            if (CollectionUtils.isEmpty(ids)) {
-                return null;
-            } else {
-                page.expression(PredicateUtils.in("id", ids, true));
-            }
+//        if (type.contains("standard")) {
+//           SPage<Long> ids = searchService.get
+//        } else if (type.contains("nonStandard")) {
+//            page.filter("standard", (short)0);
+//            page.filter("b2cEnabled", (short) 1);
+//        } else if (type.contains("all")) {
+//            SimpleExpression[] arr = new SimpleExpression[2];
+//            arr[0] = PredicateUtils.eq("b2cEnabled", (short) 1, false);
+//            arr[1] = PredicateUtils.eq("standard", (short) 1, false);
+//            LogicalExpression logicalExpression = PredicateUtils.and(arr);
+//            SimpleExpression standard = PredicateUtils.eq("standard", (short) 0, false);
+//            page.orExpression(standard);
+//            page.orExpression(logicalExpression);
+//            page.sorting("standard", Sort.Direction.DESC);
+//        }
+//
+//        if (StringUtils.hasText(keyword)) {
+//            SimpleExpression code = PredicateUtils.like("prodNum", keyword, true);
+//            SimpleExpression kind = PredicateUtils.like("kind", keyword, true);
+//            SimpleExpression brandEn = PredicateUtils.like("pbranden", keyword, true);
+//            SimpleExpression cmpCode = PredicateUtils.like("pcmpcode", keyword, true);
+//            SimpleExpression[] expressions4 = new SimpleExpression[]{code, kind, brandEn, cmpCode};
+//            LogicalExpression logicalExpression4 = PredicateUtils.or(expressions4);
+//            page.expression(logicalExpression4);
+//        }
+
+        // TODO 搜索用户个人物料搜索暂时未实现,之后完善
+//        if (!StringUtils.isEmpty(userUU)) {
+//            // 先查询userUU在当前企业 有哪些物料
+//            List<Long> ids = productPersonDao.findIdByEnuuAndUserUU(enuu, userUU);
+//
+//            if (CollectionUtils.isEmpty(ids)) {
+//                return null;
+//            } else {
+//                page.expression(PredicateUtils.in("id", ids, true));
+//            }
+//        }
+
+        SPage<Long> ids = searchService.getProducts(enUU, keyword, page.getPageNumber(), page.getPageSize(), type);
+        if (null == ids) {
+            return null;
         }
-
-        Page<V_ProductPrivate> productPage = v_productPrivateDao.findAll(new Specification<V_ProductPrivate>() {
-            @Override
-            public Predicate toPredicate(Root<V_ProductPrivate> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
-                query.where(page.getPredicates(root, query, cb));
-                return null;
-            }
-        }, page);
-        List<V_ProductPrivate> productList = productPage.getContent();
+//        Page<V_ProductPrivate> productPage = v_productPrivateDao.findAll(new Specification<V_ProductPrivate>() {
+//            @Override
+//            public Predicate toPredicate(Root<V_ProductPrivate> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+//                query.where(page.getPredicates(root, query, cb));
+//                return null;
+//            }
+//        }, page);
+        List<Long> idList = ids.getContent();
+        List<V_ProductPrivate> productList = v_productPrivateDao.findAll(idList);
         for (V_ProductPrivate product : productList) {
             product.setAddProductPerson(false);
             if ("ERP".equals(product.getSourceApp())) {
@@ -279,7 +331,7 @@ public class ProductServiceImpl implements ProductService {
             }
         }
         userUU = SystemSession.getUser().getUserUU();
-        List<Long> productIds = productPersonDao.findIdByEnuuAndUserUU(enuu, userUU);
+        List<Long> productIds = productPersonDao.findIdByEnuuAndUserUU(enUU, userUU);
         for (V_ProductPrivate v_productPrivate : productList) {
             for (Long productId : productIds) {
                 if (v_productPrivate.getId().equals(productId)) {
@@ -287,7 +339,7 @@ public class ProductServiceImpl implements ProductService {
                 }
             }
         }
-        return new PageImpl<V_ProductPrivate>(productList, page, productPage.getTotalElements());
+        return new PageImpl<V_ProductPrivate>(productList, page, ids.getTotalElement());
     }
 
     @Override

+ 4 - 3
src/main/webapp/resources/view/vendor/forstore/vendor_material.html

@@ -1956,13 +1956,14 @@
 		<div ng-if="standard_tab == 'unstandard' || standard_tab =='standard'">
 			<div class="search-check">
 				<div class="search fl">
-					<label>人员选择:</label>
+					<!-- TODO 搜索引擎实现人员过滤还待完善 -->
+					<!--<label>人员选择:</label>
 					<input type="text" class="form-control prod-name" ng-model="enUser.prodName" ng-change="onUserUUChange()" ng-search="onSearch()" placeholder="姓名"/>
 					<ul ng-if="showSimilarUser" class="prodUserList" ng-mouseenter="similarUserObj.isInSimilarUser = true" ng-search="onSearch()" ng-mouseleave="similarUserObj.isInSimilarUser = false">
 						<li ng-repeat="item in similarUser.content" ng-click="setProdName(item)">
 							{{item.userName}}({{item.userUU}})
 						</li>
-					</ul>
+					</ul>-->
 					<input type="text" class="form-control keyword-material" ng-model="param.keyword" ng-search="onSearch()" placeholder="类目/型号/品牌"/>
 					<button ng-click="onSearch()">搜索</button>
 					<!--<a ng-click="download()">批量导出</a>-->
@@ -2034,7 +2035,7 @@
 							</td>
 						</tr>
 					</tbody>
-					<tbody ng-repeat="material in currenctMaterial">
+					<tbody ng-repeat="material in currenctMaterial | orderBy:'-id'">
 					<!--<tr ng-class="{ 'active': material.selected }" class="gre-bg">-->
 					<tr ng-class="{ 'active': material.selected, 'gre-bg' : material.exPandOper}">
 						<td class="check-input">