Эх сурвалжийг харах

bom询价修改接口返回已报价产品数

dongbw 7 жил өмнө
parent
commit
6215038bba

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

@@ -67,6 +67,7 @@ public class InquiryForBuyerController {
         logger.log("公共询价", "通过企业UU和分页参数获取已发布的询价信息", null, searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.PLAIN.name());
         long start = System.currentTimeMillis();
         Page<PurcInquiry> page = inquiryService.findByPageInfo(pageInfo, searchFilter);
+        page = inquiryService.setQuotedAmount(page);
         log.info("/inquiry/buyer/inquiryList 耗时:" + (System.currentTimeMillis() - start));
         return page;
     }
@@ -129,7 +130,7 @@ public class InquiryForBuyerController {
     /**
      * 针对客户单个公共询价,查询供应商报价信息
      *                          B2C
-     * @param id
+     * @param id 询价明细id
      * @return
      */
     @HttpLog

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

@@ -238,6 +238,7 @@ public class PublicInquiryController {
         long start = System.currentTimeMillis();
         logger.log("公共询价", "获取询价信息", "id: " + id, Constant.UU, enuu, InquirySource.PLAIN.name());
         PurcInquiry inquiry = publicInquiryService.findInquiryById(id);
+        inquiry = publicInquiryService.getQuotedDetail(inquiry);
         log.info("/inquiry/public/findInquiryById 耗时:" + (System.currentTimeMillis() - start));
         return inquiry;
     }

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

@@ -113,4 +113,20 @@ public interface PublicInquiryItemDao extends JpaRepository<PublicInquiryItem, L
      */
     @Query(value = "select * from public$inquiryitems d where d.id_venduu = :vendUU and d.id_replysendstatus = :replySendStatus limit 200", nativeQuery = true)
     List<PublicInquiryItem> findByVendUUAndReplySendStatus(@Param("vendUU")Long vendUU, @Param("replySendStatus") short replySendStatus);
+
+    /**
+     * 查询所有询价明细已报价条数
+     * @param itemIds 询价明细idArray
+     * @return
+     */
+    @Query(value = "select count(distinct id_sourceid) from public$inquiryitems where id_sourceid in :itemIds", nativeQuery = true)
+    Integer getQuotedAmountBySourceId(@Param("itemIds")Long[] itemIds);
+
+    /**
+     * 查询所有询价明细替代料报价数
+     * @param itemIds 询价明细idArray
+     * @return
+     */
+    @Query(value = "select count(distinct id_sourceid) from public$inquiryitems where id_sourceid in :itemIds and id_isreplace = 1", nativeQuery = true)
+    Integer getReplaceQuotedAmountBySourceId(@Param("itemIds")Long[] itemIds);
 }

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

@@ -80,8 +80,7 @@ public class PublicInquiryItemInfo implements Serializable {
 	/**
 	 * 产品
 	 */
-	@OneToOne(cascade = {CascadeType.ALL})
-	@JoinColumn(name = "id_prid", insertable = false, updatable = false)
+	@Transient
 	private Product product;
 
 	/**
@@ -503,6 +502,15 @@ public class PublicInquiryItemInfo implements Serializable {
 	}
 
 	public Product getProduct() {
+		Product product = new Product();
+		product.setId(this.productId);
+		product.setCode(this.prodCode);
+		product.setSpec(this.spec);
+		product.setCmpCode(this.cmpCode);
+		product.setpCmpCode(this.cmpCode);
+		product.setTitle(this.prodTitle);
+		product.setBrand(this.inbrand);
+		product.setpBrandEn(this.inbrand);
 		return product;
 	}
 

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

@@ -200,6 +200,18 @@ public class PurcInquiry implements Serializable {
     @Column(name = "in_standard")
     private Integer standard;
 
+    /**
+     * 已报价明细数
+     */
+    @Transient
+    private Integer quotedAmount;
+
+    /**
+     * 替代料报价数
+     */
+    @Transient
+    private Integer replaceQuotedAmount;
+
     public Enterprise getEnterprise() {
         return enterprise;
     }
@@ -431,4 +443,20 @@ public class PurcInquiry implements Serializable {
     public void setStandard(Integer standard) {
         this.standard = standard == null ? 0 : standard;
     }
+
+    public Integer getQuotedAmount() {
+        return quotedAmount;
+    }
+
+    public void setQuotedAmount(Integer quotedAmount) {
+        this.quotedAmount = quotedAmount;
+    }
+
+    public Integer getReplaceQuotedAmount() {
+        return replaceQuotedAmount;
+    }
+
+    public void setReplaceQuotedAmount(Integer replaceQuotedAmount) {
+        this.replaceQuotedAmount = replaceQuotedAmount;
+    }
 }

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

@@ -330,9 +330,9 @@ public class PurcInquiryItemInfo {
 	private Long quteId;
 
     /**
-     * 是否已采纳
+     * 是否已采纳 1为已采纳。  -- 修改为字段,在采纳时,设置为1,方便bom询价详情内判断状态  2018年8月14日 17:03:05  dongbw
      */
-	@Transient
+	@Column(name = "id_agreed")
     private Short agreed;
 	/****** end ******/
 

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

@@ -125,4 +125,11 @@ public interface InquiryService {
      * @return 商机List
      */
     List<InquiryRemind> findInquiryRemindGroupByVendUUAndVendUserUU(int hours);
+
+    /**
+     * 讲报价产品数设置进page
+     * @param page  询价单page
+     * @return 询价单pege
+     */
+    Page<PurcInquiry> setQuotedAmount(Page<PurcInquiry> page);
 }

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

@@ -336,5 +336,12 @@ public interface PublicInquiryService {
      * @return 数量map
      */
     ModelMap getCountOfLastAndThisMonth();
+
+    /**
+     * 查询单条bom询价单的报价情况
+     * @param inquiry  询价单
+     * @return 询价单
+     */
+    PurcInquiry getQuotedDetail(PurcInquiry inquiry);
 }
 

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

@@ -743,6 +743,10 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
             result.put("message", "该单据已报价,不能重复报价");
             return result;
         }
+        if (CollectionUtils.isEmpty(publicInquiryItem.getReplies())) {
+            result.put("message", "未找到报价信息");
+            return result;
+        }
         // 是否已经已经转报价
         List<PublicInquiry> saleInquiries = inquiryDao.findByEnUUAndCode(item.getInquiry().getEnUU(), item.getInquiry().getCode());
         PublicInquiry inquiry = new PublicInquiry();

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

@@ -403,6 +403,7 @@ public class InquiryServiceImpl implements InquiryService {
         if (status.equals(Constant.YES)) {
             inquiryRemindDao.updateStatus(item.getSourceId(), Status.ALLOW.value(), item.getVendUU());
             inquiryEnRemindDao.updateStatus(item.getSourceId(), Status.ALLOW.value(), item.getVendUU());
+            updatePurcInquiryItemAgreed(item.getSourceId(), status);
         } else if (status.equals(Constant.NO)) {
             inquiryRemindDao.updateStatus(item.getSourceId(), Status.NOTALLOW.value(), item.getVendUU());
             inquiryEnRemindDao.updateStatus(item.getSourceId(), Status.NOTALLOW.value(), item.getVendUU());
@@ -432,6 +433,8 @@ public class InquiryServiceImpl implements InquiryService {
         if (status.equals(Constant.YES)) {
             inquiryRemindDao.updateStatus(item.getSourceId(), Status.ALLOW.value(), item.getVendUU());
             inquiryEnRemindDao.updateStatus(item.getSourceId(), Status.ALLOW.value(), item.getVendUU());
+            // 修改询价明细agreed字段为1,表示存在已采纳报价明细
+            updatePurcInquiryItemAgreed(item.getSourceId(), status);
         } else if (status.equals(Constant.NO)) {
             inquiryRemindDao.updateStatus(item.getSourceId(), Status.NOTALLOW.value(), item.getVendUU());
             inquiryEnRemindDao.updateStatus(item.getSourceId(), Status.NOTALLOW.value(), item.getVendUU());
@@ -446,6 +449,17 @@ public class InquiryServiceImpl implements InquiryService {
         inquiryService.adoptMessage(item, InquirySource.MALL.name());
     }
 
+    /**
+     * 更新询价单明细采纳状态
+     * @param id 询价单明细id
+     * @param agreed  采纳参数 1 或 0
+     */
+    private void updatePurcInquiryItemAgreed(Long id, short agreed) {
+        PurcInquiryItem inquiryItem = purcInquiryItemDao.findOne(id);
+        inquiryItem.setAgreed(agreed);
+        purcInquiryItemDao.save(inquiryItem);
+    }
+
     /**
      * 替代料报价采纳之后,添加替代料到询价企业对应物料
      * @param item 报价明细
@@ -519,6 +533,7 @@ public class InquiryServiceImpl implements InquiryService {
         if (status.equals(Constant.YES)) {
             inquiryRemindDao.updateStatus(item.getSourceId(), Status.ALLOW.value(), item.getVendUU());
             inquiryEnRemindDao.updateStatus(item.getSourceId(), Status.ALLOW.value(), item.getVendUU());
+            updatePurcInquiryItemAgreed(item.getSourceId(), status);
         } else if (status.equals(Constant.NO)) {
             inquiryRemindDao.updateStatus(item.getSourceId(), Status.NOTALLOW.value(), item.getVendUU());
             inquiryEnRemindDao.updateStatus(item.getSourceId(), Status.NOTALLOW.value(), item.getVendUU());
@@ -949,4 +964,24 @@ public class InquiryServiceImpl implements InquiryService {
                 + hours + " hour) and now() group by ir_venduu,ir_venduseruu";
         return jdbcTemplate.query(sql, new BeanPropertyRowMapper<InquiryRemind>(InquiryRemind.class));
     }
+
+    /**
+     * 讲报价产品数设置进page
+     *
+     * @param page 询价单page
+     * @return 询价单pege
+     */
+    @Override
+    public Page<PurcInquiry> setQuotedAmount(Page<PurcInquiry> page) {
+        for (PurcInquiry inquiry : page.getContent()) {
+            List<Long> itemIds = new ArrayList<>();
+            Long[] itemIdArray = new Long[inquiry.getInquiryItems().size()];
+            for (PurcInquiryItem item : inquiry.getInquiryItems()) {
+                itemIds.add(item.getId());
+            }
+            Integer size = itemDao.getQuotedAmountBySourceId(itemIds.toArray(itemIdArray));
+            inquiry.setQuotedAmount(size);
+        }
+        return page;
+    }
 }

+ 20 - 0
src/main/java/com/uas/ps/inquiry/service/impl/PublicInquiryServiceImpl.java

@@ -731,6 +731,26 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
         return result;
     }
 
+    /**
+     * 查询单条bom询价单的报价情况
+     *
+     * @param inquiry 询价单
+     * @return 询价单
+     */
+    @Override
+    public PurcInquiry getQuotedDetail(PurcInquiry inquiry) {
+        List<Long> itemIds = new ArrayList<>();
+        for (PurcInquiryItem item : inquiry.getInquiryItems()) {
+            itemIds.add(item.getId());
+        }
+        Long[] itemIdArray = new Long[inquiry.getInquiryItems().size()];
+        Integer quotedAmount = publicInquiryItemDao.getQuotedAmountBySourceId(itemIds.toArray(itemIdArray));
+        Integer replaceQuotedAmount =publicInquiryItemDao.getReplaceQuotedAmountBySourceId(itemIds.toArray(itemIdArray));
+        inquiry.setQuotedAmount(quotedAmount);
+        inquiry.setReplaceQuotedAmount(replaceQuotedAmount);
+        return inquiry;
+    }
+
     /**
      * 将公共询价服务中心的公共询价转成ERP的对应的字段
      *