Browse Source

【UAS公共询价】UAS公共询价消息修改为根据询价明细产品列产生,包含产品信息。

dongbw 8 years ago
parent
commit
27b1c34a70

+ 2 - 24
src/main/java/com/uas/platform/b2b/erp/service/impl/PublicInquiryServiceImpl.java

@@ -1,7 +1,6 @@
 package com.uas.platform.b2b.erp.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
-import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.core.util.ThreadUtils;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.BatchInProduct;
@@ -107,39 +106,18 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                         }
                         inquiry.setInquiryItems(null);
                         try {
-                            purcInquiryItemDao.save(items);
+                            items = purcInquiryItemDao.save(items);
+                            ContextUtils.publishEvent(new PurcInquirySaveReleaseEvent(items));
                         } catch (Exception e) {
                             e.printStackTrace();
                         }
                     }
                 }
             }
-        }).task(new Runnable() {
-            @Override
-            public void run() {
-                //消息提醒
-                messageList(inquiries);
-            }
         });
 
     }
 
-    /**
-     * 消息提醒功能
-     *
-     * @param inquiries
-     */
-    private void messageList(final List<PurcInquiry> inquiries) {
-        ThreadTask.getInstance().execute(new Runnable() {
-            @Override
-            public void run() {
-                if(!CollectionUtils.isEmpty(inquiries)) {
-                    ContextUtils.publishEvent(new PurcInquirySaveReleaseEvent(inquiries));
-                }
-            }
-        });
-    }
-
     @Override
     public void updateStatus(List<BatchInquiry> inquiries) {
         if(!CollectionUtils.isEmpty(inquiries)) {

+ 17 - 9
src/main/java/com/uas/platform/b2b/event/PurcInquirySaveReleaseEvent.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2b.event;
 import com.uas.platform.b2b.model.PagingRelease;
 import com.uas.platform.b2b.model.PagingReleaseDetail;
 import com.uas.platform.b2b.model.PurcInquiry;
+import com.uas.platform.b2b.model.PurcInquiryItem;
 import com.uas.platform.core.model.Constant;
 
 import java.text.SimpleDateFormat;
@@ -15,25 +16,26 @@ import java.util.List;
  * Created by dongbw
  *
  */
-public class PurcInquirySaveReleaseEvent extends SaveReleaseEvent<PagingReleaseDetail, PurcInquiry> {
+public class PurcInquirySaveReleaseEvent extends SaveReleaseEvent<PagingReleaseDetail, PurcInquiryItem> {
 
 	/**
 	 *
 	 */
 	private static final long serialVersionUID = 1L;
 
-	public PurcInquirySaveReleaseEvent(List<PurcInquiry> savedList) {
+	public PurcInquirySaveReleaseEvent(List<PurcInquiryItem> savedList) {
         super(savedList);
     }
 
     /**
      * 生成对应消息记录
      *
-     * @param purcInquiry
+     * @param item
      * @return
      */
     @Override
-    public PagingReleaseDetail release(PurcInquiry purcInquiry) {
+    public PagingReleaseDetail release(PurcInquiryItem item) {
+        PurcInquiry purcInquiry = item.getInquiry();
         Long emUU = purcInquiry.getRecorderUU();
         if (null == emUU) {
             emUU = 1L;
@@ -45,17 +47,23 @@ public class PurcInquirySaveReleaseEvent extends SaveReleaseEvent<PagingReleaseD
         String from = "ERP";
         Short isReply = Constant.NO;
         String category = "sale";
-        String table = "purc$puinquiry";
-        Long sourceId = purcInquiry.getId();
+        String table = "purc$puinquiryitems";
+        Long sourceId = item.getId();
         Short orderStatus = 200;
         Short toVendor = Constant.YES;
         String type = "新增公共询价单";
         String title = "B2B商务提醒";
-        // 收到的客户采购询价单的详情url
-        String url = "#/baseInfo/inquiryList/" + purcInquiry.getId();
+        // 这里的公共询价单详情参数就是从表id
+        String url = "#/baseInfo/inquiryList/" + item.getId();
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        String inDate = formatter.format(purcInquiry.getDate());
         String endDate = formatter.format(purcInquiry.getEndDate());
-        String context = purcInquiry.getEnterprise().getEnName() + "的" + emName + "给您发布了一张新的公共采购询价单(" + codeValue + ")!报价截止日期:" + endDate;
+        String context;
+        if (item.getProduct().getTitle().length() > 10) {
+            context = purcInquiry.getEnterprise().getEnName() + "于" + inDate + "发起了对于\"" + item.getProduct().getTitle().substring(0, 9) + "...\"物料的询价,报价截止日期:" + endDate + "!";
+        } else {
+            context = purcInquiry.getEnterprise().getEnName() + "于" + inDate + "发起了对于\"" + item.getProduct().getTitle() + "\"物料的询价,报价截止日期:" + endDate + "!";
+        }
         PagingRelease release = new PagingRelease(emUU, emName, enUU, date, codeValue, from, title, context, type, isReply, category, table, sourceId, orderStatus, toVendor, url);
         // 公共询价无供应商UU
         Long vendUU = 1L;

+ 39 - 39
src/main/java/com/uas/platform/b2b/listener/MessageListener.java

@@ -48,7 +48,7 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
 	private CommonDao commonDao;
 
 	@Autowired
-	private PurcInquiryDao purcInquiryDao;
+	private PurcInquiryItemDao purcInquiryItemDao;
 
 	@SuppressWarnings("unchecked")
 	@Async
@@ -60,44 +60,44 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
 		// ERP公共询价比较特殊,单独处理
 		if (event instanceof PurcInquirySaveReleaseEvent) {
 			for(PagingReleaseDetail detail : pagingReleaseDetails) {
-				PurcInquiry inquiry = purcInquiryDao.findOne(detail.getPagingRelease().getSourceId());
-				if (null != inquiry) {
-					for(PurcInquiryItem item : inquiry.getInquiryItems()) {
-						//先取出企业uu
-						String sql = "select distinct pr_enuu enuu from products p left join purc$vendors v on v.ve_vendenuu = p.pr_enuu where p.pr_spec = '" + item.getProduct().getSpec() + "' and v.ve_myenuu = " + inquiry.getEnUU();
-						List<UserAndEnterprise> enuus = commonDao.query(sql, UserAndEnterprise.class);
-						// enuus存在才进行人员选择
-						if(enuus.size() > 0) {
-							for(UserAndEnterprise enter : enuus) {
-								List<UserAndEnterprise> useruus =  commonDao.query(
-										"select user_uu useruu from sec$userrole u left join sec$roles r on u.role_id = r.role_id where r.role_desc = '业务员' and r.role_enuu = " + enter.getEnuu(),
+				PurcInquiryItem item = purcInquiryItemDao.findOne(detail.getPagingRelease().getSourceId());
+				if (null != item) {
+					//先取出企业uu
+					String sql = "select distinct pr_enuu enuu from products p left join purc$vendors v on v.ve_vendenuu = p.pr_enuu where p.pr_title = " + item.getProduct().getTitle() + "' and v.ve_myenuu = " + item.getInquiry().getEnUU();
+					List<UserAndEnterprise> enuus = commonDao.query(sql, UserAndEnterprise.class);
+					// enuus存在才进行人员选择
+					if(enuus.size() > 0) {
+						for(UserAndEnterprise enter : enuus) {
+							List<UserAndEnterprise> useruus =  commonDao.query(
+									"select user_uu useruu from sec$userrole u left join sec$roles r on u.role_id = r.role_id where r.role_desc = '业务员' and r.role_enuu = " + enter.getEnuu(),
+									UserAndEnterprise.class);
+							if (CollectionUtils.isEmpty(useruus)) {
+								useruus =  commonDao.query(
+										"select user_uu useruu from sec$userrole u left join sec$roles r on u.role_id = r.role_id where r.role_desc = '管理员' and r.role_enuu = " + enter.getEnuu(),
 										UserAndEnterprise.class);
-								if (CollectionUtils.isEmpty(useruus)) {
-									useruus =  commonDao.query(
-											"select user_uu useruu from sec$userrole u left join sec$roles r on u.role_id = r.role_id where r.role_desc = '管理员' and r.role_enuu = " + enter.getEnuu(),
-											UserAndEnterprise.class);
-								}
-								// 新增消息
-								for (UserAndEnterprise userAndEnterprise : useruus) {
-									Long userUU = userAndEnterprise.getUseruu();
-									try { //去除userUU为空值的情况
-										if (null != userUU) {
-											User user = userDao.findOne(userUU);
-											if (null != user) {
-												PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(enter.getEnuu(), userUU, user.getUserName());
-												pagingReleaseDetail.setPagingRelease(detail.getPagingRelease());
-												otherReleaseDetails.add(pagingReleaseDetail);
-											}
+							}
+							// 新增消息
+							for (UserAndEnterprise userAndEnterprise : useruus) {
+								Long userUU = userAndEnterprise.getUseruu();
+								try { //去除userUU为空值的情况
+									if (null != userUU) {
+										User user = userDao.findOne(userUU);
+										if (null != user) {
+											PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(enter.getEnuu(), userUU, user.getUserName());
+											pagingReleaseDetail.setPagingRelease(detail.getPagingRelease());
+											otherReleaseDetails.add(pagingReleaseDetail);
 										}
-									} catch (RuntimeException e) {
-										e.getStackTrace();
 									}
+								} catch (RuntimeException e) {
+									e.getStackTrace();
 								}
 							}
 						}
 					}
 				}
 			}
+			// 公共询价消息暂时不采用手机推送
+			pagingReleaseDetailDao.save(otherReleaseDetails);
 		} else {
 			for (PagingReleaseDetail detail : pagingReleaseDetails) {
 				// 先将产生的一条记录加入保存列表,去掉用1补充空值的情况
@@ -170,15 +170,15 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
 					}
 				}
 			}
-		}
-		otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);
-		if (!CollectionUtils.isEmpty(otherReleaseDetails)) {
-			pagingReleaseDetails.addAll(otherReleaseDetails);
-		}
-		try { // 推送消息
-			mobileReleaseService.pushReleases(pagingReleaseDetails);
-		} catch (Exception e) {
-			e.printStackTrace();
+			otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);
+			if (!CollectionUtils.isEmpty(otherReleaseDetails)) {
+				pagingReleaseDetails.addAll(otherReleaseDetails);
+			}
+			try { // 推送消息
+				mobileReleaseService.pushReleases(pagingReleaseDetails);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
 		}
 	}
 }