소스 검색

Merge remote-tracking branch 'origin/dev' into dev

dongbw 8 년 전
부모
커밋
d8a38532c6

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

@@ -6,22 +6,23 @@ 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.InquirySource;
-import com.uas.ps.inquiry.model.PublicInquiryItem;
 import com.uas.ps.inquiry.model.PurcInquiry;
 import com.uas.ps.inquiry.model.PurcInquiryItemInfo;
 import com.uas.ps.inquiry.page.PageInfo;
 import com.uas.ps.inquiry.page.SearchFilter;
 import com.uas.ps.inquiry.service.InquiryService;
-import com.uas.ps.inquiry.service.PublicInquiryService;
 import com.uas.ps.inquiry.support.InquiryBufferedLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Sort;
+import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 /**
  * 针对买家,对询价的操作
  *
@@ -151,4 +152,34 @@ public class InquiryForBuyerController {
         logger.log("公共询价", "针对客户查询单个物料明细的报价情况", null, Constant.UU, enuu, InquirySource.PLAIN.name());
         return inquiryService.findInquiryDetailById(id, enuu);
     }
+
+    /**
+     * 针对客户查询供应商报价信息
+     *
+     * @param pageInfo 分页信息
+     * @param searchFilter 过滤条件
+     * @param enUU 客户UU
+     * @param userUU 用户UU
+     * @return
+     */
+    @RequestMapping(value = "/quotations", method = RequestMethod.GET)
+    public Page<PurcInquiryItemInfo> findQuotationsByPage(PageInfo pageInfo, SearchFilter searchFilter, Long enUU, Long userUU) {
+        if (enUU == null && userUU == null) {
+            throw new IllegalAccessError("非法访问");
+        }
+        Sort sort = new Sort(Sort.Direction.DESC, "date");
+        if (pageInfo.getOffset() == 0) {
+            pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
+        }
+        pageInfo.setSort(sort);
+        if (enUU != null) {
+            pageInfo.filter("inquiry.enUU", enUU);
+        } else {
+            if (userUU != null) {
+                pageInfo.filter("inquiry.recorderUU", userUU);
+            }
+        }
+        logger.log("公共询价", "客户查询供应商报价信息", null, userUU, enUU, InquirySource.MALL.name());
+        return inquiryService.findQuotationsByPage(pageInfo, searchFilter);
+    }
 }

+ 1 - 1
src/main/java/com/uas/ps/inquiry/controller/InquiryForSaleController.java

@@ -109,7 +109,7 @@ public class InquiryForSaleController {
     @RequestMapping(value = "/item/save", method = RequestMethod.POST)
     public String saveInquiryItems(@RequestBody PublicInquiryItem item) throws Exception {
         item = saleService.saveItem(item);
-        logger.log("公共询价", "作为卖家,对公共询价进行报价操作", "sourceid: " + item.getSourceId() + ", id" + item.getId(),
+        logger.log("公共询价", "作为卖家,对公共询价进行报价操作", "sourceid: " + item.getSourceId() == null ? null : item.getSourceId() + ", id" + item.getId(),
                 item.getVendUserUU(), item.getVendUU(), item.getQutoApp());
         if (null != item) {
             return JSON.toJSONString(item.getInquiry());

+ 30 - 0
src/main/java/com/uas/ps/inquiry/controller/PostDataController.java

@@ -0,0 +1,30 @@
+package com.uas.ps.inquiry.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.ps.inquiry.entity.MessageModel;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 测试post数据传输
+ *
+ * Created by hejq on 2018-02-01.
+ */
+@RequestMapping(value = "/postData")
+@RestController
+public class PostDataController {
+
+    /**
+     * 测试post传输
+     *
+     * @param model
+     * @return
+     */
+    @RequestMapping(method = RequestMethod.POST)
+    public ModelMap getPostInfo(@RequestBody MessageModel model) {
+        return new ModelMap("info", JSONObject.toJSON(model));
+    }
+}

+ 21 - 0
src/main/java/com/uas/ps/inquiry/controller/PublicInquiryController.java

@@ -295,6 +295,27 @@ public class PublicInquiryController {
         return  publicInquiryService.findByPageInfo(pageInfo, searchFilter);
     }
 
+    /**
+     * 商城获取采纳列表
+     * @param pageInfo
+     * @param filter
+     * @param _state
+     * @return
+     */
+    @RequestMapping(value = "/quotationList", method = RequestMethod.GET)
+    public Page<PublicInquiryItemInfo> getQuotationList(PageInfo pageInfo, String filter, String _state) {
+        Sort sort = new Sort(Sort.Direction.DESC, "date");
+        if (pageInfo.getOffset() == 0) {
+            pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
+        }
+        pageInfo.setSort(sort);
+        SearchFilter searchFilter = JSONObject.parseObject(filter, SearchFilter.class);
+        if (null != _state) {
+            pageInfo = publicInquiryService.covert(pageInfo, _state);
+        }
+        return  publicInquiryService.findListByPageInfo(pageInfo, searchFilter);
+    }
+
     /**
      * 获取最新的公共询价列表
      *

+ 13 - 0
src/main/java/com/uas/ps/inquiry/model/PurcInquiryItem.java

@@ -311,6 +311,12 @@ public class PurcInquiryItem {
 	@Column(name = "id_enddate")
     private Date endDate;
 
+	/**
+	 * 剩余时间
+	 */
+	@Transient
+	private Long remainingTime;
+
 	public Long getId() {
 		return id;
 	}
@@ -753,4 +759,11 @@ public class PurcInquiryItem {
                 ", endDate=" + endDate +
                 '}';
     }
+
+	public Long getRemainingTime() {
+		if (endDate != null) {
+			return endDate.getTime() - System.currentTimeMillis();
+		}
+		return null;
+	}
 }

+ 20 - 2
src/main/java/com/uas/ps/inquiry/model/PurcInquiryItemInfo.java

@@ -337,6 +337,12 @@ public class PurcInquiryItemInfo {
     private Short agreed;
 	/****** end ******/
 
+	/**
+	 * 已报价的信息,封装给商城
+	 */
+	@Transient
+	private List<PublicInquiryItem> qutations;
+
 	public Long getId() {
 		return id;
 	}
@@ -717,7 +723,11 @@ public class PurcInquiryItemInfo {
 	    if (null != endDate) {
             return endDate.getTime() - System.currentTimeMillis();
         }
-        return null;
+        return remainingTime;
+    }
+
+    public void setRemainingTime(Long remainingTime) {
+        this.remainingTime = remainingTime;
     }
 
     public Integer getOfferAmount() {
@@ -744,7 +754,15 @@ public class PurcInquiryItemInfo {
         this.quteId = quteId;
     }
 
-    public static List<PurcInquiryInfo> distinct(List<PurcInquiryItemInfo> inquiryItems) {
+	public List<PublicInquiryItem> getQutations() {
+		return qutations;
+	}
+
+	public void setQutations(List<PublicInquiryItem> qutations) {
+		this.qutations = qutations;
+	}
+
+	public static List<PurcInquiryInfo> distinct(List<PurcInquiryItemInfo> inquiryItems) {
 		List<PurcInquiryInfo> inquiries = new ArrayList<>();
 		Set<Long> keys = new HashSet<>();
 		for (PurcInquiryItemInfo item : inquiryItems) {

+ 6 - 10
src/main/java/com/uas/ps/inquiry/page/SearchFilter.java

@@ -14,34 +14,36 @@ public class SearchFilter {
 	 * 关键词
 	 */
 	private String keyword;
+
 	/**
 	 * 开始日期
 	 */
 	private Long fromDate;
+
 	/**
 	 * 结束日期
 	 */
 	private Long endDate;
+
 	/**
 	 * 开始交货日期
 	 */
 	private Long fromDelivery;
+
 	/**
 	 * 结束交货日期
 	 */
 	private Long endDelivery;
+
 	/**
 	 * 开始价格
 	 */
 	private Double fromPrice;
+
 	/**
 	 * 结束价格
 	 */
 	private Double endPrice;
-	/**
-	 * 客户分配条件
-	 */
-	private Collection<?> distribute;
 
 	/**
 	 * 供应商UU
@@ -100,12 +102,6 @@ public class SearchFilter {
 	public void setEndPrice(Double endPrice) {
 		this.endPrice = endPrice;
 	}
-	public Collection<?> getDistribute() {
-		return distribute;
-	}
-	public void setDistribute(Collection<?> distribute) {
-		this.distribute = distribute;
-	}
 
 	public Long getVendUU() {
 		return vendUU;

+ 9 - 0
src/main/java/com/uas/ps/inquiry/service/InquiryService.java

@@ -65,4 +65,13 @@ public interface InquiryService {
      * @return
      */
     InquiryProductInfo findInquiryDetailById(Long id, Long enuu);
+
+    /**
+     * 针对客户查询供应商报价信息
+     *
+     * @param pageInfo 分页信息
+     * @param searchFilter 过滤条件
+     * @return
+     */
+    Page<PurcInquiryItemInfo> findQuotationsByPage(PageInfo pageInfo, SearchFilter searchFilter);
 }

+ 8 - 0
src/main/java/com/uas/ps/inquiry/service/PublicInquiryService.java

@@ -139,6 +139,14 @@ public interface PublicInquiryService {
      */
     Page<PublicInquiryItemInfo> findByPageInfo(PageInfo info, SearchFilter filter);
 
+    /**
+     * 商城获取采纳列表
+     * @param info
+     * @param filter
+     * @return
+     */
+    Page<PublicInquiryItemInfo> findListByPageInfo(PageInfo info, SearchFilter filter);
+
     /**
      * 通过分页参数和过滤条件查询公共询价价信息
      * @author hejq

+ 9 - 7
src/main/java/com/uas/ps/inquiry/service/impl/InquiryForSaleServiceImpl.java

@@ -16,7 +16,6 @@ import com.uas.ps.inquiry.page.exception.IllegalOperatorException;
 import com.uas.ps.inquiry.service.InquiryForSaleService;
 import com.uas.ps.inquiry.util.IPageUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DataAccessException;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -160,6 +159,9 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
         }
         PublicInquiry inquiry = inquiryItem.getInquiry();
         if (null != inquiry) {
+            if (inquiry.getEnUU() != null && inquiryItem.getVendUU().equals(inquiry.getEnUU())) {
+                throw new IllegalOperatorException("不能对自己企业进行报价");
+            }
             // 先判断客户询价单是否存在这张单据
             List<PublicInquiry> saleInquiries = inquiryDao.findByEnUUAndCode(inquiry.getEnUU(), inquiry.getCode());
             if (CollectionUtils.isEmpty(saleInquiries)) {// 新增
@@ -217,6 +219,7 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
                 inquiryItem.setProdCode(inquiryItem.getProduct().getCode());
             }
             inquiryItem.setVendName(enterprise.getEnName());
+            inquiryItem.setEndDate(inquiry.getEndDate());
             inquiryItem.setBusinessCode(enterprise.getBusinesscode());
             inquiryItem.setDate(new Date(System.currentTimeMillis()));
             inquiryItem.setOfferTime(new Date(System.currentTimeMillis()));
@@ -226,6 +229,11 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
             inquiryItem.setSendStatus((short) Status.NOT_UPLOAD.value());
             inquiryItem.setSourceId(inquiryItem.getId());
             inquiryItem.setId(null);
+            inquiryItem.setStatus((short) Status.REPLIED.value());
+            inquiryItem.setBackStatus((short) Status.NOT_UPLOAD.value());
+            inquiryItem.setReplySendStatus((short) Status.NOT_UPLOAD.value());
+            // 将采纳状态设置成申请状态,方便过滤
+            inquiryItem.setDecideStatus((short) Status.UNAUDIT.value());
             items.add(inquiryItem);
         }
         List<PublicInquiryItem> purcitems = infoDao.save(items);
@@ -289,12 +297,6 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
         inquiryItem.setMinOrderQty(minOrderQty);
         inquiryItem.setMinPackQty(minPackQty);
         inquiryItem.setLeadtime(leadtime);
-        inquiryItem.setStatus((short) Status.REPLIED.value());
-        inquiryItem.setBackStatus((short) Status.NOT_UPLOAD.value());
-        inquiryItem.setReplySendStatus((short) Status.NOT_UPLOAD.value());
-        // 将采纳状态设置成申请状态,方便过滤
-        inquiryItem.setDecideStatus((short) Status.UNAUDIT.value());
-        inquiryItem.setVendUU(enuu);
         inquiryItem.setQutoApp(InquirySource.UU.name());
         inquiryItem.setReplies(replies);
         // 先判断客户询价单是否存在这张单据

+ 74 - 4
src/main/java/com/uas/ps/inquiry/service/impl/InquiryServiceImpl.java

@@ -4,6 +4,7 @@ import com.uas.ps.core.util.CollectionUtils;
 import com.uas.ps.entity.Product;
 import com.uas.ps.entity.Status;
 import com.uas.ps.inquiry.dao.*;
+import com.uas.ps.inquiry.domain.IPage;
 import com.uas.ps.inquiry.entity.Constant;
 import com.uas.ps.inquiry.entity.InquiryDetailInfo;
 import com.uas.ps.inquiry.entity.InquiryProductInfo;
@@ -77,8 +78,8 @@ public class InquiryServiceImpl implements InquiryService {
             if (StringUtils.hasText(filter.getKeyword())) {
                 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};
+                //SimpleExpression code = new SimpleExpression("product.cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE);
+                SimpleExpression[] simpleExpressions = new SimpleExpression[]{cmpCode, brand};
                 LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
                 info.expression(logicalExpression);
             }
@@ -231,8 +232,27 @@ public class InquiryServiceImpl implements InquiryService {
             Set<InquiryProductInfo> products = new HashSet<InquiryProductInfo>();
             if (!CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
                 for (PublicInquiryItem item : inquiry.getInquiryItems()) {
-                    idList.add(item.getProductId());
-                    ids.addAll(idList);
+                    if (item.getProductId() != null) {
+                        idList.add(item.getProductId());
+                        ids.addAll(idList);
+                    } else {
+                        InquiryProductInfo productInfo = new InquiryProductInfo();
+                        Set<PublicInquiryItem> items = new HashSet<PublicInquiryItem>();
+                        productInfo.setBrand(item.getBrand());
+                        productInfo.setSpec(item.getSpec());
+                        productInfo.setCode(item.getProdCode());
+                        productInfo.setTitle(item.getProdTitle());
+                        productInfo.setUnit(item.getUnit());
+                        productInfo.setCmpCode(item.getCmpCode());
+                        products.add(productInfo);
+                        for (PublicInquiryItem item1 : inquiry.getInquiryItems()) {
+                             if (item1.getCmpCode() != null && item1.getCmpCode().equals(productInfo.getCmpCode())) {
+                                items.add(item1);
+                            }
+                        }
+                        productInfo.setInquiryItems(items);
+                        inquiryInfo.setProducts(products);
+                    }
                 }
             }
             if (!CollectionUtils.isEmpty(ids)) {
@@ -324,4 +344,54 @@ public class InquiryServiceImpl implements InquiryService {
         }
         return productInfo;
     }
+
+    /**
+     * 针对客户查询供应商报价信息
+     *
+     * @param pageInfo     分页信息
+     * @param filter 过滤条件
+     * @return
+     */
+    @Override
+    public Page<PurcInquiryItemInfo> findQuotationsByPage(final PageInfo pageInfo, final SearchFilter filter) {
+        if (StringUtils.hasText(filter.getKeyword())) {
+            SimpleExpression cmpCode = new SimpleExpression("cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE);
+            SimpleExpression inbrand = new SimpleExpression("inbrand", Constant.NO, CriterionExpression.Operator.GT);
+            SimpleExpression[] simpleExpressions = new SimpleExpression[]{inbrand, cmpCode};
+            LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
+            pageInfo.expression(logicalExpression);
+        }
+        if (filter.getFromDate() != null) {
+            pageInfo.expression(PredicateUtils.gte("date", new Date(filter.getFromDate()), false));
+        }
+        if (filter.getEndDate() != null) {
+            pageInfo.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
+        }
+        pageInfo.expression(PredicateUtils.gt("offerAmount", Constant.NO, false));
+        Page<PurcInquiryItemInfo> items = inquiryItemDao.findAll(new Specification<PurcInquiryItemInfo>() {
+            public Predicate toPredicate(Root<PurcInquiryItemInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+                query.where(pageInfo.getPredicates(root, query, builder));
+                return null;
+            }
+        }, pageInfo);
+        if (!CollectionUtils.isEmpty(items.getContent())) {
+            for (PurcInquiryItemInfo itemInfo : items.getContent()) {
+                List<PublicInquiryItem> itemList = itemDao.findBySourceId(itemInfo.getId());
+                itemInfo.setQutations(itemList);
+                itemInfo.setAgreed(Constant.NO);
+                if (!CollectionUtils.isEmpty(itemList)) {
+                    for (PublicInquiryItem i : itemList) {
+                        if (i.getAgreed() != null && i.getAgreed().equals(Constant.YES)) {
+                            itemInfo.setAgreed(Constant.YES);
+                            break;
+                        }
+                    }
+                }
+                if (null != itemInfo.getInquiry().getEndDate()) {
+                    itemInfo.setRemainingTime(itemInfo.getInquiry().getEndDate().getTime() - System.currentTimeMillis());
+                }
+            }
+        }
+        return items;
+    }
 }

+ 15 - 7
src/main/java/com/uas/ps/inquiry/service/impl/PublicInquiryServiceImpl.java

@@ -369,6 +369,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                             item.setUserTel(batch.getBip_mobile());
                             item.setUserCode(batch.getBip_buyercode());
                             item.setOfferAmount(0);
+                            item.setEndDate(inquiry.getBi_enddate());
                             if (null != inquiry.getBi_date()) {
                                 item.setDate(inquiry.getBi_date());
                             } else {
@@ -731,11 +732,9 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
     public Page<PublicInquiryItemInfo> findByPageInfo(final PageInfo info, final SearchFilter filter) {
         if (null != filter) {
             if (StringUtils.hasText(filter.getKeyword())) {
-                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};
+                SimpleExpression cmpCode = new SimpleExpression("cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
+                SimpleExpression brand = new SimpleExpression("inbrand", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
+                SimpleExpression[] simpleExpressions = new SimpleExpression[]{cmpCode, brand};
                 LogicalExpression logical = new LogicalExpression(simpleExpressions, CriterionExpression.Operator.OR);
                 info.expression(logical);
             }
@@ -754,6 +753,16 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
         }, info);
     }
 
+    @Override
+    public Page<PublicInquiryItemInfo> findListByPageInfo(final PageInfo info, SearchFilter filter) {
+        return itemInfoDao.findAll(new Specification<PublicInquiryItemInfo>() {
+            public Predicate toPredicate(Root<PublicInquiryItemInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+                query.where(info.getPredicates(root, query, builder));
+                return null;
+            }
+        }, info);
+    }
+
     /**
      * 查询公共询价列表信息
      *
@@ -775,8 +784,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                     if (!StringUtils.isEmpty(filter.getKeyword())) {
                         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};
+                        SimpleExpression[] simpleExpressions = new SimpleExpression[]{cmpCode, brand};
                         LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
                         info.expression(logicalExpression);
                     }