浏览代码

增加价格分析参数返回;增加询价活动统计数量接口;发布询价方法调整

dongbw 7 年之前
父节点
当前提交
6daae1e621

+ 98 - 0
src/main/java/com/uas/ps/inquiry/controller/PublicApiController.java

@@ -0,0 +1,98 @@
+package com.uas.ps.inquiry.controller;
+
+import com.uas.ps.httplog.annotation.HttpLog;
+import com.uas.ps.inquiry.service.PublicInquiryService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+
+/**
+ * 询价服务供其他应用调用的接口
+ *
+ * @author dongbw
+ */
+@RequestMapping(value = "/api")
+@RestController
+public class PublicApiController {
+
+    @Autowired
+    private PublicInquiryService publicInquiryService;
+
+    private final static Logger log = LoggerFactory.getLogger(PublicApiController.class);
+
+    /**
+     * 查询个人不同型号发布询价数量统计
+     * @param enuu 企业uu
+     * @param useruu  用户uu
+     * @param starttime  开始时间
+     * @param endtime  结束时间
+     * @return 数量结果
+     */
+    @HttpLog
+    @RequestMapping(value = "/sum/publish/personal", method = RequestMethod.GET)
+    public ModelMap sumPersonalPublish(Long enuu, Long useruu, Long starttime, Long endtime) {
+        long start = System.currentTimeMillis();
+        ModelMap map = publicInquiryService.sumPersonalPublish(enuu, useruu, starttime, endtime);
+        log.info("/api/sum/publish/personal get 参数:enuu: {}, useruu: {}, starttime: {}, endtime: {}, 耗时: {}",
+                enuu, useruu, new Date(starttime), new Date(endtime), (System.currentTimeMillis() - start));
+        return map;
+    }
+
+    /**
+     * 查询企业不同型号发布询价数量统计
+     * @param enuu 企业uu
+     * @param starttime  开始时间
+     * @param endtime  结束时间
+     * @return
+     */
+    @HttpLog
+    @RequestMapping(value = "/sum/publish/enterprise", method = RequestMethod.GET)
+    public ModelMap sumEnterprisePublish(Long enuu, Long starttime, Long endtime) {
+        long start = System.currentTimeMillis();
+        ModelMap map = publicInquiryService.sumEnterprisePublish(enuu, starttime, endtime);
+        log.info("/api/sum/publish/enterprise get 参数:enuu: {}, starttime: {}, endtime: {}, 耗时: {}",
+                enuu, new Date(starttime), new Date(endtime), (System.currentTimeMillis() - start));
+        return map;
+    }
+
+    /**
+     * 查询个人回复询价数量统计
+     * @param enuu 企业uu
+     * @param useruu  用户uu
+     * @param starttime  开始时间
+     * @param endtime  结束时间
+     * @return
+     */
+    @HttpLog
+    @RequestMapping(value = "/sum/reply/personal", method = RequestMethod.GET)
+    public ModelMap sumPersonalReply(Long enuu, Long useruu, Long starttime, Long endtime) {
+        long start = System.currentTimeMillis();
+        ModelMap map = publicInquiryService.sumPersonalReply(enuu, useruu, starttime, endtime);
+        log.info("/api/sum/reply/personal get 参数:enuu: {}, useruu: {}, starttime: {}, endtime: {}, 耗时: {}",
+                enuu, useruu, new Date(starttime), new Date(endtime), (System.currentTimeMillis() - start));
+        return map;
+    }
+
+    /**
+     * 查询企业回复询价数量统计
+     * @param enuu 企业uu
+     * @param starttime  开始时间
+     * @param endtime  结束时间
+     * @return
+     */
+    @HttpLog
+    @RequestMapping(value = "/sum/reply/enterprise", method = RequestMethod.GET)
+    public ModelMap sumEnterpriseReply(Long enuu, Long starttime, Long endtime) {
+        long start = System.currentTimeMillis();
+        ModelMap map = publicInquiryService.sumEnterpriseReply(enuu, starttime, endtime);
+        log.info("/api/sum/reply/enterprise get 参数:enuu: {}, starttime: {}, endtime: {}, 耗时: {}",
+                enuu, new Date(starttime), new Date(endtime), (System.currentTimeMillis() - start));
+        return map;
+    }
+}

+ 8 - 0
src/main/java/com/uas/ps/inquiry/dao/PublicInquiryItemDao.java

@@ -147,4 +147,12 @@ public interface PublicInquiryItemDao extends JpaRepository<PublicInquiryItem, L
      */
     @Query(value = "select count(DISTINCT(id_venduu)) from public$inquiryitems where id_offertime <= :endDate && id_offertime >= :startDate", nativeQuery = true)
     Integer countOfferEnAmount(@Param("startDate") String startDate, @Param("endDate") String endDate);
+
+    /**
+     * 获取按最低价格计算的合计价格
+     * @param itemIds 询价明细Ids
+     * @return 合计价格总额
+     */
+    @Query(value = "select sum(sumprice) from (select min(id_sumprice) as sumprice from public$inquiryitems,(select min(id_leadtime) as leadtime,id_sourceid as sourceid from public$inquiryitems where id_sourceid in :itemIds group by id_sourceid) a where id_sourceid = a.sourceid and id_leadtime = a.leadtime group by id_sourceid) b", nativeQuery = true)
+    Double getMinPriceSumBySourceId(@Param("itemIds") Long[] itemIds);
 }

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

@@ -76,4 +76,51 @@ public interface PurcInquiryItemDao extends JpaSpecificationExecutor<PurcInquiry
      */
     @Query(value = "select COUNT(DISTINCT(id_usertel)) from purc$puinquiryitems where id_fromdate <= :endDate && id_fromdate >= :startDate", nativeQuery = true)
     Integer countInquiryUserAmount(@Param("startDate") String startDate, @Param("endDate") String endDate);
+
+    /**
+     * 查询个人不同型号发布询价数量统计
+     *
+     * @param enuu      企业uu
+     * @param useruu    用户uu
+     * @param starttime 开始时间
+     * @param endtime   结束时间
+     * @return 查询结果
+     */
+    @Query(value = "select count(1) from (select 1 from purc$puinquiryitems where id_enuu = :enuu and id_useruu = :useruu and id_date between :starttime and :endtime group by id_inbrand, id_cmpcode) a", nativeQuery = true)
+    Integer sumPersonalPublish(@Param("enuu") Long enuu, @Param("useruu") Long useruu, @Param("starttime") Long starttime, @Param("endtime") Long endtime);
+
+    /**
+     * 查询企业不同型号发布询价数量统计
+     *
+     * @param enuu      企业uu
+     * @param starttime 开始时间
+     * @param endtime   结束时间
+     * @return 查询结果
+     */
+    @Query(value = "select count(1) from (select 1 from purc$puinquiryitems where id_enuu = :enuu and id_date between :starttime and :endtime group by id_inbrand, id_cmpcode) a", nativeQuery = true)
+    Integer sumEnterprisePublish(@Param("enuu") Long enuu, @Param("starttime") Long starttime, @Param("endtime")Long endtime);
+
+    /**
+     * 查询个人报价询价数量统计
+     *
+     * @param enuu      企业uu
+     * @param useruu    用户uu
+     * @param starttime 开始时间
+     * @param endtime   结束时间
+     * @return 查询结果
+     */
+    @Query(value = "select count(1) from public$inquiryitems where id_venduu = :enuu and id_venduseruu = :useruu and id_offertime between :starttime and :endtime", nativeQuery = true)
+    Integer sumPersonalReply(@Param("enuu") Long enuu, @Param("useruu") Long useruu, @Param("starttime") Long starttime, @Param("endtime") Long endtime);
+
+    /**
+     * 查询企业回复询价数量统计
+     *
+     * @param enuu      企业uu
+     * @param starttime 开始时间
+     * @param endtime   结束时间
+     * @return 查询结果
+     */
+    @Query(value = "select count(1) from public$inquiryitems where id_venduu = :enuu and id_offertime between :starttime and :endtime", nativeQuery = true)
+    Integer sumEnterpriseReply(@Param("enuu") Long enuu, @Param("starttime") Long starttime, @Param("endtime")Long endtime);
+
 }

+ 17 - 4
src/main/java/com/uas/ps/inquiry/model/PublicInquiryItem.java

@@ -243,15 +243,14 @@ public class PublicInquiryItem implements Serializable {
 	private Short custLap;
 
 	/**
-	 * 录入时间(取主表日期字段)
+	 * 录入时间
 	 *
-	 * @return
 	 */
-	@Column(name = "id_date", insertable = false, updatable = false)
+	@Column(name = "id_date")
 	private Date date;
 
 	/**
-	 *   是否已过期 (目前来看此字段没有用到)
+	 *   是否已过期
 	 */
 	@Column(name = "id_overdue", insertable = false, updatable = false)
 	private Short overdue;
@@ -444,6 +443,12 @@ public class PublicInquiryItem implements Serializable {
 
 	/** end  */
 
+	/**
+	 * 总计价格(用于商城bom求购明细价格分析  dongbw  2018年9月5日 14:59:48)
+	 */
+	@Column(name = "id_sumprice", columnDefinition = "double default 0")
+	private Double sumPrice;
+
 	public Long getId() {
 		return id;
 	}
@@ -977,6 +982,14 @@ public class PublicInquiryItem implements Serializable {
 		this.isReplace = isReplace;
 	}
 
+	public Double getSumPrice() {
+		return sumPrice;
+	}
+
+	public void setSumPrice(Double sumPrice) {
+		this.sumPrice = sumPrice;
+	}
+
 	/**
 	 * 将公共询价单转成报价单
 	 *

+ 17 - 4
src/main/java/com/uas/ps/inquiry/model/PublicInquiryItemInfo.java

@@ -211,15 +211,14 @@ public class PublicInquiryItemInfo implements Serializable {
 	private Short custLap;
 
 	/**
-	 * 录入时间(取主表日期字段)
+	 * 录入时间
 	 *
-	 * @return
 	 */
-	@Column(name = "id_date", insertable = false, updatable = false)
+	@Column(name = "id_date")
 	private Date date;
 
 	/**
-	 *  报价是否过期 (目前来看此字段没有用到)
+	 *  报价是否过期
 	 */
 	@Column(name = "id_overdue", insertable = false, updatable = false)
 	private Short overdue;
@@ -424,6 +423,12 @@ public class PublicInquiryItemInfo implements Serializable {
 	@Column(name = "id_isreplace")
 	private Short isReplace = 0;
 
+	/**
+	 * 总计价格(用于商城bom求购明细价格分析  dongbw  2018年9月5日 14:59:48)
+	 */
+	@Column(name = "id_sumprice", columnDefinition = "double default 0")
+	private Double sumPrice;
+
 	/** end  */
 
 	public User getUser() {
@@ -943,6 +948,14 @@ public class PublicInquiryItemInfo implements Serializable {
 		this.isReplace = isReplace;
 	}
 
+	public Double getSumPrice() {
+		return sumPrice;
+	}
+
+	public void setSumPrice(Double sumPrice) {
+		this.sumPrice = sumPrice;
+	}
+
 	@Override
 	public String toString() {
 		return "PublicInquiryItemInfo{" +

+ 56 - 0
src/main/java/com/uas/ps/inquiry/model/PurcInquiry.java

@@ -184,6 +184,18 @@ public class PurcInquiry implements Serializable {
     @Column(name = "in_amount")
     private Integer amount;
 
+    /**
+     * bom单规格(仅bom单求购有)
+     */
+    @Column(name = "in_spec", columnDefinition = "TEXT", length = 500)
+    private String spec;
+
+    /**
+     * 采购套数(bom询价使用,普通询价默认1)
+     */
+    @Column(name = "in_count")
+    private Integer count = 1;
+
     /**
      * 已报价明细数
      */
@@ -196,6 +208,18 @@ public class PurcInquiry implements Serializable {
     @Transient
     private Integer replaceQuotedAmount;
 
+    /**
+     * 按价格最低,合计价格
+     */
+    @Transient
+    private Double minPriceSum;
+
+    /**
+     * 按交期最短,合计价格
+     */
+    @Transient
+    private Double minDeliverySum;
+
     public Enterprise getEnterprise() {
         return enterprise;
     }
@@ -419,4 +443,36 @@ public class PurcInquiry implements Serializable {
     public void setReplaceQuotedAmount(Integer replaceQuotedAmount) {
         this.replaceQuotedAmount = replaceQuotedAmount;
     }
+
+    public String getSpec() {
+        return spec;
+    }
+
+    public void setSpec(String spec) {
+        this.spec = spec;
+    }
+
+    public Integer getCount() {
+        return count;
+    }
+
+    public void setCount(Integer count) {
+        this.count = count;
+    }
+
+    public Double getMinPriceSum() {
+        return minPriceSum;
+    }
+
+    public void setMinPriceSum(Double minPriceSum) {
+        this.minPriceSum = minPriceSum;
+    }
+
+    public Double getMinDeliverySum() {
+        return minDeliverySum;
+    }
+
+    public void setMinDeliverySum(Double minDeliverySum) {
+        this.minDeliverySum = minDeliverySum;
+    }
 }

+ 28 - 0
src/main/java/com/uas/ps/inquiry/model/PurcInquiryInfo.java

@@ -186,6 +186,18 @@ public class PurcInquiryInfo implements Serializable {
     @Column(name = "in_amount")
     private Integer amount;
 
+    /**
+     * bom单规格(仅bom单求购有)
+     */
+    @Column(name = "in_spec", columnDefinition = "TEXT", length = 500)
+    private String spec;
+
+    /**
+     * 采购套数(bom询价使用,普通询价默认1)
+     */
+    @Column(name = "in_count")
+    private Integer count = 1;
+
     public Long getId() {
         return id;
     }
@@ -395,4 +407,20 @@ public class PurcInquiryInfo implements Serializable {
     public void setAmount(Integer amount) {
         this.amount = amount;
     }
+
+    public String getSpec() {
+        return spec;
+    }
+
+    public void setSpec(String spec) {
+        this.spec = spec;
+    }
+
+    public Integer getCount() {
+        return count;
+    }
+
+    public void setCount(Integer count) {
+        this.count = count;
+    }
 }

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

@@ -204,9 +204,9 @@ public class PurcInquiryItem {
     private Date date;
 
 	/**
-	 * 企业uu,公共询价需要这个字段做标识
+	 * 发布询价企业uu
 	 */
-	@Transient
+	@Column(name = "id_enuu")
 	private Long enuu;
 
 	/**

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

@@ -196,9 +196,9 @@ public class PurcInquiryItemInfo {
     private Date date;
 
 	/**
-	 * 企业uu,公共询价需要这个字段做标识
+	 * 发布询价企业uu
 	 */
-	@Transient
+	@Column(name = "id_enuu")
 	private Long enuu;
 
 	/**

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

@@ -359,5 +359,43 @@ public interface PublicInquiryService {
      * @return
      */
     ModelMap getInquiryCountData(String startDate, String endDate);
+
+    /**
+     * 查询个人不同型号发布询价数量统计
+     * @param enuu 企业uu
+     * @param useruu  用户uu
+     * @param starttime  开始时间
+     * @param endtime  结束时间
+     * @return 查询结果
+     */
+    ModelMap sumPersonalPublish(Long enuu, Long useruu, Long starttime, Long endtime);
+
+    /**
+     * 查询企业不同型号发布询价数量统计
+     * @param enuu 企业uu
+     * @param starttime  开始时间
+     * @param endtime  结束时间
+     * @return 查询结果
+     */
+    ModelMap sumEnterprisePublish(Long enuu, Long starttime, Long endtime);
+
+    /**
+     * 查询个人报价询价数量统计
+     * @param enuu 企业uu
+     * @param useruu  用户uu
+     * @param starttime  开始时间
+     * @param endtime  结束时间
+     * @return 查询结果
+     */
+    ModelMap sumPersonalReply(Long enuu, Long useruu, Long starttime, Long endtime);
+
+    /**
+     * 查询企业回复询价数量统计
+     * @param enuu 企业uu
+     * @param starttime  开始时间
+     * @param endtime  结束时间
+     * @return 查询结果
+     */
+    ModelMap sumEnterpriseReply(Long enuu, Long starttime, Long endtime);
 }
 

+ 154 - 47
src/main/java/com/uas/ps/inquiry/service/impl/InquiryForSaleServiceImpl.java

@@ -323,6 +323,28 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
      * @throws Exception
      */
     private PublicInquiryItem SaveInquiryItems(PublicInquiry inquiry, PublicInquiryItem inquiryItem) throws Exception {
+        // 计算合计价格 dongbw  2018年9月5日 15:08:24  bom求购明细价格分析需要
+        Double sumPrice = 0d;
+        Double needQty = inquiryItem.getNeedquantity();
+        Double maxQty = 0d;
+        Double maxPrice = 0d;
+        List<PublicInquiryReply> replies = inquiryItem.getReplies();
+        for (int i = 0; i < replies.size(); i++) {
+            maxQty = replies.get(i).getLapQty();
+            maxPrice = replies.get(i).getPrice();
+            if (needQty < maxQty) {
+                if (i == 0) {
+                    sumPrice = replies.get(i).getPrice() * needQty;
+                } else {
+                    sumPrice = replies.get(i - 1).getPrice() * needQty;
+                }
+                break;
+            }
+        }
+        if (needQty > maxQty) {
+            sumPrice = maxPrice * needQty;
+        }
+        inquiryItem.setSumPrice(sumPrice);
         long start = System.currentTimeMillis();
         Set<PublicInquiryItem> items = new HashSet<PublicInquiryItem>();
         int number = 1;
@@ -342,7 +364,7 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
                 inquiryItem.setEndDate(inquiry.getEndDate());
             }
             inquiryItem.setBusinessCode(enterprise.getBusinesscode());
-            inquiryItem.setDate(new Date(System.currentTimeMillis()));
+            inquiryItem.setDate(inquiry.getDate());
             inquiryItem.setOfferTime(new Date(System.currentTimeMillis()));
             inquiryItem.setInquiry(inquiry);
             inquiryItem.setNumber((short) number);
@@ -475,6 +497,7 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
         inquiryItem.setReplies(replies);
         inquiryItem.setCurrency(currency);
         inquiryItem.setTaxrate(taxrate);
+
         // 先判断客户询价单是否存在这张单据
         if (CollectionUtils.isEmpty(saleInquiries)) {
             inquiry = new PublicInquiry(item.getInquiry());
@@ -708,58 +731,117 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
 
     @Override
     public ModelMap saveQuote(PublicInquiryItem publicInquiryItem) {
-        long start = System.currentTimeMillis();
         ModelMap result = new ModelMap();
         result.put("success", false);
-        // 判断报价人信息
-        if (StringUtils.isEmpty(publicInquiryItem) || StringUtils.isEmpty(publicInquiryItem.getVendUU()) || StringUtils.isEmpty(publicInquiryItem.getVendUserUU())) {
-            result.put("message", "报价人信息不能为空");
+        // 验证报价单信息
+        if (validatePublicItem(publicInquiryItem, result)) {
             return result;
         }
+        Long sourceId;
+        if (null != publicInquiryItem.getSourceId()) {
+            sourceId = publicInquiryItem.getSourceId();
+        } else {
+            sourceId = publicInquiryItem.getId();
+        }
         // 是否为自己的询价 并查询公共询价的信息
-        PurcInquiryItemInfo item = inquiryItemInfoDao.findOne(publicInquiryItem.getSourceId());
-        if (StringUtils.isEmpty(item)) {
-            result.put("message", "找不到当前公共询价");
+        PurcInquiryItemInfo item = inquiryItemInfoDao.findOne(sourceId);
+        // 验证询价明细信息
+        if (validatePurcInquiryItem(publicInquiryItem, result, item)) {
             return result;
         }
-        if (item.getInquiry() != null && item.getInquiry().getEnUU().equals(publicInquiryItem.getVendUU())) {
-            result.put("message", "不能对自己单据进行报价");
+        // 验证是否重复
+        if (validateRepeat(publicInquiryItem, result)) {
             return result;
         }
+
+        // 拼接报价单主表
+        PublicInquiry inquiry = getPublicInquiry(item);
+
+        // 拼接报价单明细
+        PublicInquiryItem inquiryItem = getPublicInquiryItem(publicInquiryItem, item);
+        inquiryItem.setInquiry(inquiry);
+        // 调用回复询价接口
+        return replyInquiry(result, inquiry, inquiryItem);
+    }
+
+    private boolean validateRepeat(PublicInquiryItem publicInquiryItem, ModelMap result) {
         PublicInquiryItem existInquiry = infoDao.findByVendUUAndSourceId(publicInquiryItem.getVendUU(), publicInquiryItem.getSourceId());
         // 是否重复报价
         if (null != existInquiry) {
             result.put("message", "该单据已报价,不能重复报价");
-            return result;
+            return true;
+        }
+        return false;
+    }
+
+    private boolean validatePurcInquiryItem(PublicInquiryItem publicInquiryItem, ModelMap result, PurcInquiryItemInfo item) {
+        if (StringUtils.isEmpty(item)) {
+            result.put("message", "找不到当前公共询价");
+            return true;
+        }
+        if (item.getInquiry() != null && item.getInquiry().getEnUU().equals(publicInquiryItem.getVendUU())) {
+            result.put("message", "不能对自己单据进行报价");
+            return true;
+        }
+        return false;
+    }
+
+    private boolean validatePublicItem(PublicInquiryItem publicInquiryItem, ModelMap result) {
+        // 判断报价人信息
+        if (StringUtils.isEmpty(publicInquiryItem) || StringUtils.isEmpty(publicInquiryItem.getVendUU()) || StringUtils.isEmpty(publicInquiryItem.getVendUserUU())) {
+            result.put("message", "报价人信息不能为空");
+            return true;
         }
         if (CollectionUtils.isEmpty(publicInquiryItem.getReplies())) {
             result.put("message", "未找到报价信息");
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 报价接口调用
+     * @param result  ModelMap
+     * @param inquiry  报价明细
+     * @param inquiryItem  报价明细
+     * @return
+     */
+    private ModelMap replyInquiry(ModelMap result, PublicInquiry inquiry, PublicInquiryItem inquiryItem) {
+        try {
+            long start = System.currentTimeMillis();
+            inquiryItem = SaveInquiryItems(inquiry, inquiryItem);
+            System.out.println("报价总耗时:" + (System.currentTimeMillis() - start));
+            start = System.currentTimeMillis();
+            // 报价成功后保存到个人物料库中
+            if (null != inquiryItem && !StringUtils.isEmpty(inquiryItem.getInbrand()) && !StringUtils.isEmpty(inquiryItem.getCmpCode())) {
+                saveInquiryItemProduct(inquiryItem);
+                System.out.println("报价成功,添加个人库耗时:" + (System.currentTimeMillis() - start));
+            }
+            result.put("success", true);
+            result.put("content", inquiryItem);
+            return result;
+        } catch (Exception e) {
+            e.printStackTrace();
+            result.put("message", e.getMessage());
             return result;
         }
+    }
+
+    /**
+     * 拼接报价单主表
+     * @param item  询价明细
+     * @return 报价主表
+     */
+    private PublicInquiry getPublicInquiry(PurcInquiryItemInfo item) {
         // 是否已经已经转报价
         List<PublicInquiry> saleInquiries = inquiryDao.findByEnUUAndCode(item.getInquiry().getEnUU(), item.getInquiry().getCode());
         PublicInquiry inquiry = new PublicInquiry();
-        // 报价明细
-        PublicInquiryItem inquiryItem = new PublicInquiryItem(  item);
-        inquiryItem.setMinOrderQty(publicInquiryItem.getMinOrderQty());
-        inquiryItem.setMinPackQty(publicInquiryItem.getMinPackQty());
-        inquiryItem.setLeadtime(publicInquiryItem.getLeadtime());
-        inquiryItem.setQutoApp(publicInquiryItem.getQutoApp());
-        inquiryItem.setReplies(publicInquiryItem.getReplies());
-        inquiryItem.setCurrency(publicInquiryItem.getCurrency());
-        inquiryItem.setTaxrate(publicInquiryItem.getTaxrate());
-        inquiryItem.setVendUU(publicInquiryItem.getVendUU());
-        inquiryItem.setVendUserUU(publicInquiryItem.getVendUserUU());
-        inquiryItem.setReplaceCmpCode(publicInquiryItem.getReplaceCmpCode());
-        inquiryItem.setReplaceBrand(publicInquiryItem.getReplaceBrand());
-        inquiryItem.setReplaceSpec(publicInquiryItem.getReplaceSpec());
-        inquiryItem.setIsReplace(publicInquiryItem.getIsReplace());
         if (CollectionUtils.isEmpty(saleInquiries)) {
             // 附件
             if (!CollectionUtils.isEmpty(inquiry.getAttachs())) {
                 Set<Attach> attachs = new HashSet<Attach>();
-                for (com.uas.ps.inquiry.model.Attach attach : inquiry.getAttachs()) {
-                    com.uas.ps.inquiry.model.Attach newAttach = new com.uas.ps.inquiry.model.Attach();
+                for (Attach attach : inquiry.getAttachs()) {
+                    Attach newAttach = new Attach();
                     newAttach.setDate(new Date());
                     newAttach.setDescription(attach.getDescription());
                     newAttach.setName(attach.getName());
@@ -780,26 +862,51 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
             inquiry = inquiryDao.save(inquiry);
         } else { // 已经存在
             inquiry = saleInquiries.get(0);
-            inquiryItem.setInquiry(inquiry);
-        }
-        try {
-            System.out.println("构造报价单耗时:" + (System.currentTimeMillis() - start));
-            inquiryItem = SaveInquiryItems(inquiry, inquiryItem);
-            System.out.println("报价总耗时:" + (System.currentTimeMillis() - start));
-            start = System.currentTimeMillis();
-            // 报价成功后保存到个人物料库中
-            if (null != inquiryItem && !StringUtils.isEmpty(inquiryItem.getInbrand()) && !StringUtils.isEmpty(inquiryItem.getCmpCode())) {
-                saveInquiryItemProduct(inquiryItem);
-                System.out.println("报价成功,添加个人库耗时:" + (System.currentTimeMillis() - start));
-            }
-            result.put("success", true);
-            result.put("content", inquiryItem);
-            return result;
-        } catch (Exception e) {
-            e.printStackTrace();
-            result.put("message", e.getMessage());
-            return result;
         }
+        return inquiry;
+    }
+
+    /**
+     * 拼接报价明细
+     * @param publicInquiryItem 报价明细参数
+     * @param item  询价明细
+     * @return  报价明细
+     */
+    private PublicInquiryItem getPublicInquiryItem(PublicInquiryItem publicInquiryItem, PurcInquiryItemInfo item) {
+        // 报价明细
+        PublicInquiryItem inquiryItem = new PublicInquiryItem(item);
+        inquiryItem.setMinOrderQty(publicInquiryItem.getMinOrderQty());
+        inquiryItem.setMinPackQty(publicInquiryItem.getMinPackQty());
+        inquiryItem.setLeadtime(publicInquiryItem.getLeadtime());
+        inquiryItem.setQutoApp(publicInquiryItem.getQutoApp());
+        inquiryItem.setReplies(publicInquiryItem.getReplies());
+        inquiryItem.setCurrency(publicInquiryItem.getCurrency());
+        inquiryItem.setTaxrate(publicInquiryItem.getTaxrate());
+        inquiryItem.setVendUU(publicInquiryItem.getVendUU());
+        inquiryItem.setVendUserUU(publicInquiryItem.getVendUserUU());
+        inquiryItem.setReplaceCmpCode(publicInquiryItem.getReplaceCmpCode());
+        inquiryItem.setReplaceBrand(publicInquiryItem.getReplaceBrand());
+        inquiryItem.setReplaceSpec(publicInquiryItem.getReplaceSpec());
+        inquiryItem.setIsReplace(publicInquiryItem.getIsReplace());
+//        // 计算合计价格 dongbw  2018年9月5日 15:08:24  bom求购明细价格分析需要
+//        Double sumPrice = 0d;
+//        Double needQty = inquiryItem.getNeedquantity();
+//        List<PublicInquiryReply> replies = inquiryItem.getReplies();
+//        for (int i = 0; i < replies.size(); i++) {
+//            needQty = needQty - replies.get(i).getLapQty();
+//            if (needQty > 0) {
+//                if (i == 0) {
+//                    sumPrice += replies.get(i).getPrice() * replies.get(i).getLapQty();
+//                } else {
+//                    sumPrice += replies.get(i).getPrice() * (replies.get(i).getLapQty() - replies.get(i - 1).getLapQty());
+//                }
+//            } else {
+//                sumPrice += replies.get(i).getPrice() * needQty;
+//                break;
+//            }
+//        }
+//        inquiryItem.setSumPrice(sumPrice);
+        return inquiryItem;
     }
 
     private InquiryEnRemind itemConvertEnRemind(PurcInquiryItem item) {

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

@@ -278,6 +278,7 @@ public class InquiryServiceImpl implements InquiryService {
                     item.setOfferAmount(0);
                     item.setStatus((short) Status.NOT_REPLY.value());
                     item.setIsOpen(Constant.YES);
+                    item.setEnuu(inquiry.getEnUU());
                     if (null == item.getDate()) {
                         //设置提交时间
                         item.setDate(new Date(System.currentTimeMillis()));

+ 69 - 1
src/main/java/com/uas/ps/inquiry/service/impl/PublicInquiryServiceImpl.java

@@ -599,6 +599,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                             item.setOfferAmount(0);
                             item.setEndDate(inquiry.getBi_enddate());
                             item.setNeedquantity(batch.getYcgqty());
+                            item.setEnuu(enuu);
                             if (null == item.getCmpCode() || item.getCmpCode().equals("无")) {
                                 item.setCmpCode(item.getSpec());
                             }
@@ -738,7 +739,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
 
     /**
      * 查询单条bom询价单的报价情况
-     *
+     *                      增加价格分析 dongbw  2018年9月5日 14:19:07
      * @param inquiry 询价单
      * @return 询价单
      */
@@ -753,6 +754,10 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
         Integer replaceQuotedAmount =publicInquiryItemDao.getReplaceQuotedAmountBySourceId(itemIds.toArray(itemIdArray));
         inquiry.setQuotedAmount(quotedAmount);
         inquiry.setReplaceQuotedAmount(replaceQuotedAmount);
+        Double minPriceSum = publicInquiryItemDao.getMinPriceSumBySourceId(itemIds.toArray(itemIdArray));
+        Double minDeliverySum = publicInquiryItemDao.getMinPriceSumBySourceId(itemIds.toArray(itemIdArray));
+        inquiry.setMinPriceSum(minPriceSum);
+        inquiry.setMinDeliverySum(minDeliverySum);
         return inquiry;
     }
 
@@ -1794,4 +1799,67 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
         result.put("success", true);
         return result;
     }
+
+    /**
+     * 查询个人不同型号发布询价数量统计
+     *
+     * @param enuu      企业uu
+     * @param useruu    用户uu
+     * @param starttime 开始时间
+     * @param endtime   结束时间
+     * @return 查询结果
+     */
+    @Override
+    public ModelMap sumPersonalPublish(Long enuu, Long useruu, Long starttime, Long endtime) {
+        ModelMap map = new ModelMap();
+        map.put("count", purcInquiryItemDao.sumPersonalPublish(enuu, useruu, starttime, endtime));
+        return map;
+    }
+
+    /**
+     * 查询企业不同型号发布询价数量统计
+     *
+     * @param enuu      企业uu
+     * @param starttime 开始时间
+     * @param endtime   结束时间
+     * @return 查询结果
+     */
+    @Override
+    public ModelMap sumEnterprisePublish(Long enuu, Long starttime, Long endtime) {
+        ModelMap map = new ModelMap();
+        map.put("count", purcInquiryItemDao.sumEnterprisePublish(enuu, starttime, endtime));
+        return map;
+    }
+
+    /**
+     * 查询个人报价询价数量统计
+     *
+     * @param enuu      企业uu
+     * @param useruu    用户uu
+     * @param starttime 开始时间
+     * @param endtime   结束时间
+     * @return 查询结果
+     */
+    @Override
+    public ModelMap sumPersonalReply(Long enuu, Long useruu, Long starttime, Long endtime) {
+        ModelMap map = new ModelMap();
+        map.put("count", purcInquiryItemDao.sumPersonalReply(enuu, useruu, starttime, endtime));
+        return map;
+    }
+
+    /**
+     * 查询企业回复询价数量统计
+     *
+     * @param enuu      企业uu
+     * @param starttime 开始时间
+     * @param endtime   结束时间
+     * @return 查询结果
+     */
+    @Override
+    public ModelMap sumEnterpriseReply(Long enuu, Long starttime, Long endtime) {
+        ModelMap map = new ModelMap();
+        map.put("count", purcInquiryItemDao.sumEnterpriseReply(enuu, starttime, endtime));
+        return map;
+    }
+
 }