Browse Source

【UAS公共询价消息提醒】接收消息对象新增有过询价记录和订单交易记录的企业。

dongbw 8 years ago
parent
commit
94d56bee89
1 changed files with 33 additions and 21 deletions
  1. 33 21
      src/main/java/com/uas/platform/b2b/listener/MessageListener.java

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

@@ -63,34 +63,46 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
 				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);
+					String prodSql = "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();
+					String inquirySql = "select distinct id_venduu enuu from purc$inquiryitems d left join purc$inquiry n on n.in_id = d.id_inid left join products p on p.pr_id = d.id_prid where p.pr_title = '" + item.getProduct().getTitle() + "' and n.in_enuu = " + item.getInquiry().getEnUU();
+					String orderSql = "select distinct pu_venduu enuu from purc$orders pu left join purc$orderitems pd on pu.pu_id = pd.pd_puid left join products p on p.pr_id = pd.pd_prid where p.pr_title = '" + item.getProduct().getTitle() + "' and pu.pu_enuu = " + item.getInquiry().getEnUU();
+					List<UserAndEnterprise> prodEnUUs = commonDao.query(prodSql, UserAndEnterprise.class);
+					List<UserAndEnterprise> inquiryEnUUs = commonDao.query(inquirySql, UserAndEnterprise.class);
+					List<UserAndEnterprise> orderEnuus = commonDao.query(orderSql, UserAndEnterprise.class);
+					List<UserAndEnterprise> enuus = new ArrayList<>();
+					Set<Long> enUUs = new HashSet<>();
+					enuus.addAll(prodEnUUs);
+					enuus.addAll(inquiryEnUUs);
+					enuus.addAll(orderEnuus);
 					// 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(),
+							if (!enUUs.contains(enter.getEnuu())) {
+								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);
-							}
-							// 新增消息
-							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);
+								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);
+											}
 										}
+									} catch (RuntimeException e) {
+										e.getStackTrace();
 									}
-								} catch (RuntimeException e) {
-									e.getStackTrace();
 								}
+								enUUs.add(enter.getEnuu());
 							}
 						}
 					}