Kaynağa Gözat

公共询价针对商城新增接口:针对客户查询单个明细的报价情况;

hejq 7 yıl önce
ebeveyn
işleme
163453edda

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

@@ -6,13 +6,11 @@ import com.uas.ps.inquiry.entity.Constant;
 import com.uas.ps.inquiry.entity.InquiryDetailInfo;
 import com.uas.ps.inquiry.entity.InquiryDetailInfo;
 import com.uas.ps.inquiry.entity.InquiryProductInfo;
 import com.uas.ps.inquiry.entity.InquiryProductInfo;
 import com.uas.ps.inquiry.entity.InquirySource;
 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.PurcInquiry;
 import com.uas.ps.inquiry.model.PurcInquiryItemInfo;
 import com.uas.ps.inquiry.model.PurcInquiryItemInfo;
 import com.uas.ps.inquiry.page.PageInfo;
 import com.uas.ps.inquiry.page.PageInfo;
 import com.uas.ps.inquiry.page.SearchFilter;
 import com.uas.ps.inquiry.page.SearchFilter;
 import com.uas.ps.inquiry.service.InquiryService;
 import com.uas.ps.inquiry.service.InquiryService;
-import com.uas.ps.inquiry.service.PublicInquiryService;
 import com.uas.ps.inquiry.support.InquiryBufferedLogger;
 import com.uas.ps.inquiry.support.InquiryBufferedLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
@@ -151,4 +149,34 @@ public class InquiryForBuyerController {
         logger.log("公共询价", "针对客户查询单个物料明细的报价情况", null, Constant.UU, enuu, InquirySource.PLAIN.name());
         logger.log("公共询价", "针对客户查询单个物料明细的报价情况", null, Constant.UU, enuu, InquirySource.PLAIN.name());
         return inquiryService.findInquiryDetailById(id, enuu);
         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);
+    }
 }
 }

+ 15 - 1
src/main/java/com/uas/ps/inquiry/model/PurcInquiryItemInfo.java

@@ -337,6 +337,12 @@ public class PurcInquiryItemInfo {
     private Short agreed;
     private Short agreed;
 	/****** end ******/
 	/****** end ******/
 
 
+	/**
+	 * 已报价的信息,封装给商城
+	 */
+	@Transient
+	private List<PublicInquiryItem> qutations;
+
 	public Long getId() {
 	public Long getId() {
 		return id;
 		return id;
 	}
 	}
@@ -744,7 +750,15 @@ public class PurcInquiryItemInfo {
         this.quteId = quteId;
         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<>();
 		List<PurcInquiryInfo> inquiries = new ArrayList<>();
 		Set<Long> keys = new HashSet<>();
 		Set<Long> keys = new HashSet<>();
 		for (PurcInquiryItemInfo item : inquiryItems) {
 		for (PurcInquiryItemInfo item : inquiryItems) {

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

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

+ 8 - 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.service.InquiryForSaleService;
 import com.uas.ps.inquiry.util.IPageUtils;
 import com.uas.ps.inquiry.util.IPageUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DataAccessException;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -160,6 +159,9 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
         }
         }
         PublicInquiry inquiry = inquiryItem.getInquiry();
         PublicInquiry inquiry = inquiryItem.getInquiry();
         if (null != inquiry) {
         if (null != inquiry) {
+            if (inquiry.getEnUU() != null && inquiryItem.getVendUU().equals(inquiry.getEnUU())) {
+                throw new IllegalOperatorException("不能对自己企业进行报价");
+            }
             // 先判断客户询价单是否存在这张单据
             // 先判断客户询价单是否存在这张单据
             List<PublicInquiry> saleInquiries = inquiryDao.findByEnUUAndCode(inquiry.getEnUU(), inquiry.getCode());
             List<PublicInquiry> saleInquiries = inquiryDao.findByEnUUAndCode(inquiry.getEnUU(), inquiry.getCode());
             if (CollectionUtils.isEmpty(saleInquiries)) {// 新增
             if (CollectionUtils.isEmpty(saleInquiries)) {// 新增
@@ -226,6 +228,11 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
             inquiryItem.setSendStatus((short) Status.NOT_UPLOAD.value());
             inquiryItem.setSendStatus((short) Status.NOT_UPLOAD.value());
             inquiryItem.setSourceId(inquiryItem.getId());
             inquiryItem.setSourceId(inquiryItem.getId());
             inquiryItem.setId(null);
             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);
             items.add(inquiryItem);
         }
         }
         List<PublicInquiryItem> purcitems = infoDao.save(items);
         List<PublicInquiryItem> purcitems = infoDao.save(items);
@@ -289,12 +296,6 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
         inquiryItem.setMinOrderQty(minOrderQty);
         inquiryItem.setMinOrderQty(minOrderQty);
         inquiryItem.setMinPackQty(minPackQty);
         inquiryItem.setMinPackQty(minPackQty);
         inquiryItem.setLeadtime(leadtime);
         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.setQutoApp(InquirySource.UU.name());
         inquiryItem.setReplies(replies);
         inquiryItem.setReplies(replies);
         // 先判断客户询价单是否存在这张单据
         // 先判断客户询价单是否存在这张单据

+ 37 - 0
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.Product;
 import com.uas.ps.entity.Status;
 import com.uas.ps.entity.Status;
 import com.uas.ps.inquiry.dao.*;
 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.Constant;
 import com.uas.ps.inquiry.entity.InquiryDetailInfo;
 import com.uas.ps.inquiry.entity.InquiryDetailInfo;
 import com.uas.ps.inquiry.entity.InquiryProductInfo;
 import com.uas.ps.inquiry.entity.InquiryProductInfo;
@@ -343,4 +344,40 @@ public class InquiryServiceImpl implements InquiryService {
         }
         }
         return productInfo;
         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 offerAmount = new SimpleExpression("offerAmount", Constant.NO, CriterionExpression.Operator.GT);
+            SimpleExpression[] simpleExpressions = new SimpleExpression[]{offerAmount, cmpCode};
+            LogicalExpression logicalExpression = PredicateUtils.and(simpleExpressions);
+            pageInfo.expression(logicalExpression);
+        } else {
+            SimpleExpression offerAmount = new SimpleExpression("offerAmount", Constant.NO, CriterionExpression.Operator.GT);
+            SimpleExpression[] simpleExpressions = new SimpleExpression[]{offerAmount};
+            LogicalExpression logicalExpression = PredicateUtils.and(simpleExpressions);
+            pageInfo.expression(logicalExpression);
+        }
+        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);
+            }
+        }
+        return items;
+    }
 }
 }