Bladeren bron

更新公共询价相关功能:1、更新报价数量方法调整;2、对公共询价列表返回数据进行相关处理,针对当前企业整理出是否已报价等信息返回

hejq 7 jaren geleden
bovenliggende
commit
3ae519bbad

+ 6 - 0
src/main/java/com/uas/ps/inquiry/controller/InquiryForBuyerController.java

@@ -80,6 +80,9 @@ public class InquiryForBuyerController {
      */
     @RequestMapping(value = "/inquiryList", method = RequestMethod.GET)
     public Page<PurcInquiry> getInquiry(PageInfo pageInfo, SearchFilter searchFilter) {
+        if (pageInfo.getOffset() == 0) {
+            pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
+        }
         Sort sort = new Sort(Sort.Direction.DESC, "date");
         if (pageInfo.getPageNumber() == 0) {
             pageInfo.setPageNumber(1);
@@ -110,6 +113,9 @@ public class InquiryForBuyerController {
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     public Page<PurcInquiryItemInfo> getInquiryList(PageInfo pageInfo, SearchFilter searchFilter, String state, Integer overdue) {
         Sort sort = new Sort(Sort.Direction.DESC, "date");
+        if (pageInfo.getOffset() == 0) {
+            pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
+        }
         pageInfo.setSort(sort);
         if (null != searchFilter.getUserUU()) {
             pageInfo.filter("userUU", searchFilter.getUserUU());

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

@@ -131,7 +131,7 @@ public class InquiryForSaleController {
      * 移动端转报价的功能
      *
      * @param inquiryItemId 公共询价明细id
-     * @param enuu 报价企业UU号
+     * @param en_uu 报价企业UU号
      * @param replies 报价信息
      * @param leadtime 交货周期
      * @param minOrderQty 最小订购

+ 12 - 2
src/main/java/com/uas/ps/inquiry/controller/PublicInquiryController.java

@@ -1,6 +1,7 @@
 package com.uas.ps.inquiry.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.uas.ps.inquiry.domain.IPage;
 import com.uas.ps.inquiry.entity.*;
 import com.uas.ps.inquiry.model.*;
 import com.uas.ps.inquiry.page.PageInfo;
@@ -156,8 +157,11 @@ public class PublicInquiryController {
      * @return
      */
     @RequestMapping(method = RequestMethod.GET)
-    public Page<PurcInquiryItemInfo> getInquiry(PageInfo pageInfo, SearchFilter searchFilter) {
+    public IPage<PurcInquiryItemInfo> getInquiry(PageInfo pageInfo, SearchFilter searchFilter) {
         Sort sort = new Sort(Sort.Direction.DESC, "date");
+        if (pageInfo.getOffset() == 0) {
+            pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
+        }
         pageInfo.setSort(sort);
         return publicInquiryService.findTodoByPageInfo(pageInfo, searchFilter);
     }
@@ -170,8 +174,11 @@ public class PublicInquiryController {
      * @return
      */
     @RequestMapping(value = "/inquiryList", method = RequestMethod.GET)
-    public Page<PurcInquiryItemInfo> getInquiryList(PageInfo pageInfo, SearchFilter searchFilter) {
+    public IPage<PurcInquiryItemInfo> getInquiryList(PageInfo pageInfo, SearchFilter searchFilter) {
         Sort sort = new Sort(Sort.Direction.DESC, "date");
+        if (pageInfo.getOffset() == 0) {
+            pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
+        }
         pageInfo.setSort(sort);
         if (null != searchFilter.getUserUU()) {
             pageInfo.filter("userUU", searchFilter.getUserUU());
@@ -249,6 +256,9 @@ public class PublicInquiryController {
     @RequestMapping(value = "/quotation/list", method = RequestMethod.GET)
     public Page<PublicInquiryItemInfo> getQuotation(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 != searchFilter.getVendUU()) {

+ 1 - 1
src/main/java/com/uas/ps/inquiry/dao/PurcInquiryItemDao.java

@@ -36,6 +36,6 @@ public interface PurcInquiryItemDao extends JpaSpecificationExecutor<PurcInquiry
      */
     @Transactional
     @Modifying
-    @Query("update PurcInquiryItem set offerAmount = nullif(offerAmount, 0) + :amount where id = :sourceId")
+    @Query("update PurcInquiryItem set offerAmount = coalesce(offerAmount, 0) + :amount where id = :sourceId")
     void updateAmount(@Param("sourceId") Long sourceId, @Param("amount") Integer amount);
 }

+ 63 - 0
src/main/java/com/uas/ps/inquiry/domain/IPage.java

@@ -0,0 +1,63 @@
+package com.uas.ps.inquiry.domain;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class IPage<T> implements Serializable {
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -6338331260909724178L;
+	private int number;
+	private int size;
+	private int numberOfElements;
+	private List<T> content;
+	private boolean first;
+	private boolean last;
+	private long totalElements;
+	
+	public long getTotalElements() {
+		return totalElements;
+	}
+	public void setTotalElements(long totalElements) {
+		this.totalElements = totalElements;
+	}
+	public int getNumber() {
+		return number;
+	}
+	public void setNumber(int number) {
+		this.number = number;
+	}
+	public int getSize() {
+		return size;
+	}
+	public void setSize(int size) {
+		this.size = size;
+	}
+	public int getNumberOfElements() {
+		return numberOfElements;
+	}
+	public void setNumberOfElements(int numberOfElements) {
+		this.numberOfElements = numberOfElements;
+	}
+	public List<T> getContent() {
+		return content;
+	}
+	public void setContent(List<T> content) {
+		this.content = content;
+	}
+	public boolean isFirst() {
+		return first;
+	}
+	public void setFirst(boolean first) {
+		this.first = first;
+	}
+	public boolean isLast() {
+		return last;
+	}
+	public void setLast(boolean last) {
+		this.last = last;
+	}
+
+}

+ 36 - 6
src/main/java/com/uas/ps/inquiry/model/PurcInquiryItemInfo.java

@@ -218,12 +218,6 @@ public class PurcInquiryItemInfo {
 	@Column(name = "id_status")
 	private Short status;
 
-	/**
-	 * 是否采纳
-	 */
-	@Column(name = "id_agreed")
-	private Short agreed;
-
 	/**
 	 * 是否买家已设置分段数
 	 */
@@ -323,6 +317,26 @@ public class PurcInquiryItemInfo {
     @Column(name = "id_offeramount")
     private Integer offerAmount;
 
+    /**** 针对客户,查询公共询价信息时展示的相关其他需求数据 *****/
+	/**
+	 * 是否已报价 1、是;0、否
+	 */
+	@Transient
+	private Short quoted;
+
+	/**
+	 * 如果已报价,记录已转报价后的明细id
+	 */
+	@Transient
+	private Long quteId;
+
+    /**
+     * 是否已采纳
+     */
+	@Transient
+    private Short agreed;
+	/****** end ******/
+
 	public Long getId() {
 		return id;
 	}
@@ -714,6 +728,22 @@ public class PurcInquiryItemInfo {
         this.offerAmount = offerAmount;
     }
 
+    public Short getQuoted() {
+        return quoted;
+    }
+
+    public void setQuoted(Short quoted) {
+        this.quoted = quoted;
+    }
+
+    public Long getQuteId() {
+        return quteId;
+    }
+
+    public void setQuteId(Long quteId) {
+        this.quteId = quteId;
+    }
+
     public static List<PurcInquiryInfo> distinct(List<PurcInquiryItemInfo> inquiryItems) {
 		List<PurcInquiryInfo> inquiries = new ArrayList<>();
 		Set<Long> keys = new HashSet<>();

+ 11 - 1
src/main/java/com/uas/ps/inquiry/service/PublicInquiryService.java

@@ -1,5 +1,6 @@
 package com.uas.ps.inquiry.service;
 
+import com.uas.ps.inquiry.domain.IPage;
 import com.uas.ps.inquiry.entity.*;
 import com.uas.ps.inquiry.model.*;
 import com.uas.ps.inquiry.page.PageInfo;
@@ -146,7 +147,7 @@ public interface PublicInquiryService {
      * @param filter
      * @return
      */
-    Page<PurcInquiryItemInfo> findTodoByPageInfo(PageInfo info, SearchFilter filter);
+    IPage<PurcInquiryItemInfo> findTodoByPageInfo(PageInfo info, SearchFilter filter);
 
     /**
      * 根据传入条件封装查询条件
@@ -165,5 +166,14 @@ public interface PublicInquiryService {
      * @return
      */
     List<InquiryMessage> getMessageList(Long enuu, Integer size);
+
+    /**
+     * 消息推送
+     *
+     * @param inquiryItems 询价明细
+     * @param sourceApp 应用来源
+     * @throws Exception
+     */
+    void notify(List<PurcInquiryItem> inquiryItems, String sourceApp) throws Exception;
 }
 

+ 3 - 0
src/main/java/com/uas/ps/inquiry/service/impl/InquiryForSaleServiceImpl.java

@@ -260,6 +260,9 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
             throw new IllegalOperatorException("该单据已报价,不能重复报价");
         }
         PurcInquiryItemInfo item = inquiryItemInfoDao.findOne(id);
+        if (item != null && item.getInquiry() != null && item.getInquiry().getEnUU().equals(enuu)) {
+            throw new IllegalOperatorException("不能对自己单据进行报价");
+        }
         PublicInquiry inquiry = new PublicInquiry();
         List<PublicInquiry> saleInquiries = inquiryDao.findByEnUUAndCode(item.getInquiry().getEnUU(), item.getInquiry().getCode());
         PublicInquiryItem inquiryItem = new PublicInquiryItem(item);

+ 16 - 1
src/main/java/com/uas/ps/inquiry/service/impl/InquiryServiceImpl.java

@@ -2,6 +2,7 @@ package com.uas.ps.inquiry.service.impl;
 
 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.entity.Constant;
 import com.uas.ps.inquiry.entity.InquiryDetailInfo;
@@ -16,6 +17,7 @@ import com.uas.ps.inquiry.page.criteria.PredicateUtils;
 import com.uas.ps.inquiry.page.criteria.SimpleExpression;
 import com.uas.ps.inquiry.page.exception.IllegalOperatorException;
 import com.uas.ps.inquiry.service.InquiryService;
+import com.uas.ps.inquiry.service.PublicInquiryService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
@@ -55,6 +57,9 @@ public class InquiryServiceImpl implements InquiryService {
     @Autowired
     private PurcInquiryItemDao purcInquiryItemDao;
 
+    @Autowired
+    private PublicInquiryService inquiryService;
+
     /**
      * 查询公共询价列表信息
      *
@@ -139,6 +144,8 @@ public class InquiryServiceImpl implements InquiryService {
                 for (PurcInquiryItem item : currentInquiry.getInquiryItems()) {
                     item.setInquiry(inquiry);
                     item.setOfferAmount(0);
+                    item.setStatus((short) Status.NOT_REPLY.value());
+                    item.setIsOpen(Constant.YES);
                     if (null == item.getDate()) {
                         item.setDate(new Date(System.currentTimeMillis()));
                     }
@@ -151,7 +158,15 @@ public class InquiryServiceImpl implements InquiryService {
                     }
                     items.add(item);
                 }
-                purcInquiryItemDao.save(items);
+                items = purcInquiryItemDao.save(items);
+                // 消息推送
+                if (null != inquiry.getSourceapp()) {
+                    try {
+                        inquiryService.notify(items, inquiry.getSourceapp());
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
             }
             return inquiry;
         }

+ 32 - 10
src/main/java/com/uas/ps/inquiry/service/impl/PublicInquiryServiceImpl.java

@@ -7,6 +7,7 @@ import com.uas.ps.entity.ProductUsers;
 import com.uas.ps.entity.Status;
 import com.uas.ps.inquiry.AccessConfiguration;
 import com.uas.ps.inquiry.dao.*;
+import com.uas.ps.inquiry.domain.IPage;
 import com.uas.ps.inquiry.entity.*;
 import com.uas.ps.inquiry.model.*;
 import com.uas.ps.inquiry.page.PageInfo;
@@ -16,10 +17,7 @@ import com.uas.ps.inquiry.page.criteria.LogicalExpression;
 import com.uas.ps.inquiry.page.criteria.PredicateUtils;
 import com.uas.ps.inquiry.page.criteria.SimpleExpression;
 import com.uas.ps.inquiry.service.PublicInquiryService;
-import com.uas.ps.inquiry.util.FlexJsonUtils;
-import com.uas.ps.inquiry.util.HttpUtil;
-import com.uas.ps.inquiry.util.IRunnable;
-import com.uas.ps.inquiry.util.ThreadUtils;
+import com.uas.ps.inquiry.util.*;
 import javassist.NotFoundException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DataAccessException;
@@ -115,7 +113,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
     /**
      * 接收应用
      */
-    private final String CONSUMERAPP = "B2B,MALL,ERP";
+    private final String CONSUMERAPP = "B2B,MALL";
 
     /**
      * 公共物料访问地址
@@ -153,7 +151,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                     items = purcInquiryItemDao.save(items);
                     inquiryItems.addAll(items);
                     if (!CollectionUtils.isEmpty(inquiryItems)) {
-                        notify(inquiryItems);
+                        notify(inquiryItems, PRODUCERAPP);
                     }
                 } catch (Exception e) {
                     e.printStackTrace();
@@ -166,8 +164,10 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      * 消息推送
      *
      * @param inquiryItems 询价明细
+     * @param sourceApp 消息来源应用
      */
-    private void notify(List<PurcInquiryItem> inquiryItems) throws Exception {
+    @Override
+    public void notify(List<PurcInquiryItem> inquiryItems, String sourceApp) throws Exception {
         for (PurcInquiryItem item : inquiryItems) {
             Product product = productDao.findOne(item.getProductId());
             if (null == product) {
@@ -194,7 +194,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                                 content = u.getUserName() + content;
                             }
                             MessageModel model = new MessageModel();
-                            model.setProducerApp(PRODUCERAPP);
+                            model.setProducerApp(sourceApp);
                             model.setConsumerType(CUST_TYPE);
                             model.setConsumerApp(CONSUMERAPP);
                             model.setContent(content);
@@ -678,8 +678,8 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      * @return
      */
     @Override
-    public Page<PurcInquiryItemInfo> findTodoByPageInfo(final PageInfo info, final SearchFilter filter) {
-        return inquiryItemInfoDao.findAll(new Specification<PurcInquiryItemInfo>() {
+    public IPage<PurcInquiryItemInfo> findTodoByPageInfo(final PageInfo info, final SearchFilter filter) {
+        Page<PurcInquiryItemInfo> orders =  inquiryItemInfoDao.findAll(new Specification<PurcInquiryItemInfo>() {
             public Predicate toPredicate(Root<PurcInquiryItemInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
                 if (null != filter) {
                     if (filter.getFromDate() != null) {
@@ -701,6 +701,28 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                 return null;
             }
         }, info);
+        return covert(orders, filter.getEnUU());
+    }
+
+    /**
+     * 将数据库查询的数据进行封装处理
+     *
+     * @param orders 查询的数据信息
+     * @return
+     */
+    private IPage<PurcInquiryItemInfo> covert(Page<PurcInquiryItemInfo> orders, Long enuu) {
+        if (!CollectionUtils.isEmpty(orders.getContent()) && null != enuu) {
+            for (PurcInquiryItemInfo itemInfo : orders.getContent()) {
+                PublicInquiryItem item = publicInquiryItemDao.findByVendUUAndSourceId(enuu, itemInfo.getId());
+                itemInfo.setQuoted(Constant.NO);
+                if (null != item) {
+                    itemInfo.setAgreed(item.getAgreed());
+                    itemInfo.setQuteId(item.getId());
+                    itemInfo.setQuoted(Constant.YES);
+                }
+            }
+        }
+        return IPageUtils.covert(orders);
     }
 
     /**

+ 40 - 0
src/main/java/com/uas/ps/inquiry/util/IPageUtils.java

@@ -0,0 +1,40 @@
+package com.uas.ps.inquiry.util;
+
+import com.uas.ps.inquiry.domain.IPage;
+import org.springframework.data.domain.Page;
+
+/**
+ * Page<T> 与 IPage<T>转换
+ * Created by hejq on 2018-01-30.
+ */
+public class IPageUtils {
+
+    /**
+     * 将Page<T> 转成平台封装的SPage<T>
+     * @param page page信息
+     * @param <T> 实体对象
+     * @return
+     */
+    public static <T> IPage<T> covert(Page<T> page) {
+        IPage<T> iPage = new IPage<T>();
+        iPage.setTotalElements(page.getTotalElements());
+        iPage.setSize(page.getSize());
+        iPage.setNumber(page.getNumber());
+        iPage.setContent(page.getContent());
+        return iPage;
+    }
+
+    /**
+     * 将Page<T> 转成平台封装的SPage<T>
+     * @param page page信息
+     * @param <T> 实体对象
+     * @return
+     */
+    public static <T> IPage<T> covertIgnoreContent(Page<T> page) {
+        IPage<T> iPage = new IPage<T>();
+        iPage.setTotalElements(page.getTotalElements());
+        iPage.setSize(page.getSize());
+        iPage.setNumber(page.getNumber());
+        return iPage;
+    }
+}