Browse Source

新增针对客户分类查询已发布公共询价列表信息

hejq 8 years ago
parent
commit
a8bb7d31e2

+ 2 - 5
src/main/java/com/uas/ps/inquiry/controller/InquiryForBuyerController.java

@@ -28,9 +28,6 @@ public class InquiryForBuyerController {
     @Autowired
     private InquiryService inquiryService;
 
-    @Autowired
-    private PublicInquiryService publicInquiryService;
-
     /**
      * 作为买家,保存更新公共询价单
      *
@@ -107,7 +104,7 @@ public class InquiryForBuyerController {
      * @return
      */
     @RequestMapping(value = "/list", method = RequestMethod.GET)
-    public Page<PurcInquiryItemInfo> getInquiryList(PageInfo pageInfo, SearchFilter searchFilter) {
+    public Page<PurcInquiryItemInfo> getInquiryList(PageInfo pageInfo, SearchFilter searchFilter, String state) {
         Sort sort = new Sort(Sort.Direction.DESC, "date");
         pageInfo.setSort(sort);
         if (null != searchFilter.getUserUU()) {
@@ -117,6 +114,6 @@ public class InquiryForBuyerController {
         } else {
             throw new IllegalAccessError("非法访问");
         }
-        return publicInquiryService.findTodoByPageInfo(pageInfo, searchFilter);
+        return inquiryService.findTodoByPageInfo(pageInfo, searchFilter, state);
     }
 }

+ 4 - 3
src/main/java/com/uas/ps/inquiry/service/InquiryService.java

@@ -15,11 +15,12 @@ public interface InquiryService {
 
     /**
      * 查询公共询价列表信息
-     * @param info
-     * @param filter
+     * @param info 分页新
+     * @param filter 过滤条件
+     * @param state 过滤状态
      * @return
      */
-    Page<PurcInquiryItemInfo> findTodoByPageInfo(PageInfo info, SearchFilter filter);
+    Page<PurcInquiryItemInfo> findTodoByPageInfo(PageInfo info, SearchFilter filter, String state);
 
     /**
      * 保存公共询价

+ 42 - 12
src/main/java/com/uas/ps/inquiry/service/impl/InquiryServiceImpl.java

@@ -3,8 +3,10 @@ package com.uas.ps.inquiry.service.impl;
 import com.uas.ps.core.util.CollectionUtils;
 import com.uas.ps.entity.Product;
 import com.uas.ps.inquiry.dao.*;
+import com.uas.ps.inquiry.entity.Constant;
 import com.uas.ps.inquiry.entity.InquiryDetailInfo;
 import com.uas.ps.inquiry.entity.InquiryProductInfo;
+import com.uas.ps.inquiry.entity.OrderStatus;
 import com.uas.ps.inquiry.model.*;
 import com.uas.ps.inquiry.page.PageInfo;
 import com.uas.ps.inquiry.page.SearchFilter;
@@ -56,23 +58,21 @@ public class InquiryServiceImpl implements InquiryService {
     /**
      * 查询公共询价列表信息
      *
-     * @param info
-     * @param filter
+     * @param info 分页新
+     * @param filter 过滤条件
+     * @param state 过滤状态
      * @return
      */
     @Override
-    public Page<PurcInquiryItemInfo> findTodoByPageInfo(final PageInfo info, SearchFilter filter) {
+    public Page<PurcInquiryItemInfo> findTodoByPageInfo(final PageInfo info, SearchFilter filter, String state) {
         if (null != filter) {
-            int k = 1;
-            SimpleExpression[] simpArrs = new SimpleExpression[5];
-            simpArrs[0] = new SimpleExpression("inquiry.enUU", filter.getEnUU(), CriterionExpression.Operator.NE, true);
             if (StringUtils.hasText(filter.getKeyword())) {
-                simpArrs[k] = new SimpleExpression("product.title", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                simpArrs[k + 1] = new SimpleExpression("product.code", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                simpArrs[k + 2] = new SimpleExpression("product.spec", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                simpArrs[k + 3] = new SimpleExpression("product.brand", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                LogicalExpression logical = new LogicalExpression(simpArrs, CriterionExpression.Operator.OR);
-                info.expression(logical);
+                SimpleExpression cmpCode = new SimpleExpression("cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE);
+                SimpleExpression brand = new SimpleExpression("inbrand", filter.getKeyword(), CriterionExpression.Operator.LIKE);
+                SimpleExpression code = new SimpleExpression("product.cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE);
+                SimpleExpression[] simpleExpressions = new SimpleExpression[]{cmpCode, brand, code};
+                LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
+                info.expression(logicalExpression);
             }
             if (filter.getFromDate() != null) {
                 info.expression(PredicateUtils.gte("date", new Date(filter.getFromDate()), false));
@@ -81,6 +81,29 @@ public class InquiryServiceImpl implements InquiryService {
                 info.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
             }
         }
+        if (null != state) {
+            // 待报价
+            if (state.equals(OrderStatus.todo.name())) {
+                SimpleExpression amount = new SimpleExpression("offerAmount", Constant.NO, CriterionExpression.Operator.EQ);
+                SimpleExpression[] simpleExpressions = new SimpleExpression[]{amount};
+                LogicalExpression logicalExpression = PredicateUtils.and(simpleExpressions);
+                info.expression(logicalExpression);
+            }
+            // 已报价
+            if (state.equals(OrderStatus.done.name())) {
+                SimpleExpression amount = new SimpleExpression("offerAmount", Constant.YES, CriterionExpression.Operator.GTE);
+                SimpleExpression[] simpleExpressions = new SimpleExpression[]{amount};
+                LogicalExpression logicalExpression = PredicateUtils.and(simpleExpressions);
+                info.expression(logicalExpression);
+            }
+            // 已超过截止日期
+            if (state.equals(OrderStatus.end.name())) {
+                SimpleExpression date = new SimpleExpression("endDate", new Date(System.currentTimeMillis()), CriterionExpression.Operator.LT);
+                SimpleExpression[] simpleExpressions = new SimpleExpression[]{date};
+                LogicalExpression logicalExpression = PredicateUtils.and(simpleExpressions);
+                info.expression(logicalExpression);
+            }
+        }
         return inquiryItemDao.findAll(new Specification<PurcInquiryItemInfo>() {
             public Predicate toPredicate(Root<PurcInquiryItemInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
                 query.where(info.getPredicates(root, query, builder));
@@ -108,6 +131,13 @@ public class InquiryServiceImpl implements InquiryService {
                     if (null == item.getDate()) {
                         item.setDate(new Date(System.currentTimeMillis()));
                     }
+                    // 这里设置物料信息的冗余字段
+                    if (null!= item.getProduct()) {
+                        item.setProdTitle(item.getProduct().getTitle());
+                        item.setProdCode(item.getProduct().getCode());
+                        item.setSpec(item.getProduct().getSpec());
+                        item.setInbrand(item.getProduct().getBrand());
+                    }
                     items.add(item);
                 }
                 purcInquiryItemDao.save(items);

+ 14 - 18
src/main/java/com/uas/ps/inquiry/service/impl/PublicInquiryServiceImpl.java

@@ -32,10 +32,7 @@ import org.springframework.ui.ModelMap;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import javax.persistence.criteria.*;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -248,15 +245,15 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
     public List<PurcInquiry> covert(List<BatchInquiry> inquiries, Long enuu, String address) throws NotFoundException {
         List<PurcInquiry>  purcInquiries = new ArrayList<PurcInquiry>();
         if (!CollectionUtils.isEmpty(inquiries)) {
-            for(BatchInquiry inquiry : inquiries) {
+            for (BatchInquiry inquiry : inquiries) {
                 PurcInquiry old = purcInquiryDao.findByCodeAndEnUU(inquiry.getBi_code(), enuu);
                 //先判断是否已经存在,不存在才进行存储
-                if(null == old) {
+                if (null == old) {
                     PurcInquiry purcInquiry = inquiry.covert();
                     purcInquiry.setEnUU(enuu);
                     purcInquiry.setShip(address);
                     Set<PurcInquiryItem> purcInquiryItems = new HashSet<PurcInquiryItem>();
-                    if(!CollectionUtils.isEmpty(inquiry.getInProducts())) {
+                    if (!CollectionUtils.isEmpty(inquiry.getInProducts())) {
                         for(BatchInProduct batch : inquiry.getInProducts()) {
                             PurcInquiryItem item = new PurcInquiryItem();
                             item.setIsOpen(Constant.YES);
@@ -284,12 +281,12 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                             item.setUserTel(batch.getBip_mobile());
                             item.setUserCode(batch.getBip_buyercode());
                             item.setOfferAmount(0);
-                            if(null != inquiry.getBi_date()) {
+                            if (null != inquiry.getBi_date()) {
                                 item.setDate(inquiry.getBi_date());
                             } else {
-                                item.setDate(new Date());
+                                item.setDate(new Date(System.currentTimeMillis()));
                             }
-                            if(item.getCurrency() == null) {
+                            if (item.getCurrency() == null) {
                                 item.setCurrency("RMB");
                             }
                             purcInquiryItems.add(item);
@@ -645,14 +642,13 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
     @Override
     public Page<PublicInquiryItemInfo> findByPageInfo(final PageInfo info, final SearchFilter filter) {
         if (null != filter) {
-            int k = 0;
-            SimpleExpression[] simpArrs = new SimpleExpression[4];
             if (StringUtils.hasText(filter.getKeyword())) {
-                simpArrs[k] = new SimpleExpression("product.title", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                simpArrs[k + 1] = new SimpleExpression("product.code", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                simpArrs[k + 2] = new SimpleExpression("product.spec", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                simpArrs[k + 3] = new SimpleExpression("product.brand", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                LogicalExpression logical = new LogicalExpression(simpArrs, CriterionExpression.Operator.OR);
+                SimpleExpression title = new SimpleExpression("product.title", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
+                SimpleExpression code = new SimpleExpression("product.code", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
+                SimpleExpression spec = new SimpleExpression("product.spec", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
+                SimpleExpression brand = new SimpleExpression("product.brand", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
+                SimpleExpression[] simpleExpressions = new SimpleExpression[]{title, brand, code, spec};
+                LogicalExpression logical = new LogicalExpression(simpleExpressions, CriterionExpression.Operator.OR);
                 info.expression(logical);
             }
             if (filter.getFromDate() != null) {
@@ -692,7 +688,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                         SimpleExpression cmpCode = new SimpleExpression("cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE);
                         SimpleExpression brand = new SimpleExpression("inbrand", filter.getKeyword(), CriterionExpression.Operator.LIKE);
                         SimpleExpression code = new SimpleExpression("product.cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE);
-                        SimpleExpression[] simpleExpressions = new SimpleExpression[]{cmpCode, code, brand};
+                        SimpleExpression[] simpleExpressions = new SimpleExpression[]{cmpCode, brand, code};
                         LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
                         info.expression(logicalExpression);
                     }