|
|
@@ -1,6 +1,8 @@
|
|
|
package com.uas.platform.b2b.listener;
|
|
|
|
|
|
import com.uas.platform.b2b.dao.*;
|
|
|
+import com.uas.platform.b2b.erp.model.UserAndEnterprise;
|
|
|
+import com.uas.platform.b2b.event.PurcInquirySaveReleaseEvent;
|
|
|
import com.uas.platform.b2b.event.SaveReleaseEvent;
|
|
|
import com.uas.platform.b2b.mobile.service.MobileReleaseService;
|
|
|
import com.uas.platform.b2b.model.*;
|
|
|
@@ -42,6 +44,12 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
|
|
|
@Autowired
|
|
|
private MobileReleaseService mobileReleaseService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private CommonDao commonDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PurcInquiryDao purcInquiryDao;
|
|
|
+
|
|
|
@SuppressWarnings("unchecked")
|
|
|
@Async
|
|
|
@Override
|
|
|
@@ -49,15 +57,57 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
|
|
|
List<PagingReleaseDetail> pagingReleaseDetails = (List<PagingReleaseDetail>) event.release();
|
|
|
Set<Long> userUUs = new HashSet<>(); // 存储需要接收消息的用户UU
|
|
|
List<PagingReleaseDetail> otherReleaseDetails = new ArrayList<>(); // 用来保存单据新增的其他消息
|
|
|
- for (PagingReleaseDetail detail : pagingReleaseDetails) {
|
|
|
- // 先将产生的一条记录加入保存列表,去掉用1补充空值的情况
|
|
|
- if (detail.getVendUserUU() != 1 &&!userUUs.contains(detail.getVendUserUU())) {
|
|
|
- userUUs.add(detail.getVendUserUU());
|
|
|
+ // 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(),
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (RuntimeException e) {
|
|
|
+ e.getStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- PagingRelease release = detail.getPagingRelease();
|
|
|
- if (null != detail.getVendUU() && null != release.getEnUU()) { // 确保消息有效才继续
|
|
|
- if (release.getToVendor() == Constant.YES) { // 如果是发给供应商的消息,才会管理员和有权限用户都可以收到消息--2017年8月24日 16:12:05 dongbw加,避免客户方用户收到太多消息
|
|
|
- // 添加管理员 2017-08-25 10:18:36 注释
|
|
|
+ } else {
|
|
|
+ for (PagingReleaseDetail detail : pagingReleaseDetails) {
|
|
|
+ // 先将产生的一条记录加入保存列表,去掉用1补充空值的情况
|
|
|
+ if (detail.getVendUserUU() != 1 && !userUUs.contains(detail.getVendUserUU())) {
|
|
|
+ userUUs.add(detail.getVendUserUU());
|
|
|
+ }
|
|
|
+ PagingRelease release = detail.getPagingRelease();
|
|
|
+ if (null != detail.getVendUU() && null != release.getEnUU()) { // 确保消息有效才继续
|
|
|
+ if (release.getToVendor() == Constant.YES) { // 如果是发给供应商的消息,才会管理员和有权限用户都可以收到消息--2017年8月24日 16:12:05 dongbw加,避免客户方用户收到太多消息
|
|
|
+ // 添加管理员 2017-08-25 10:18:36 注释
|
|
|
// List<Role> roles = roleDao.findByEnUUAndIssys(detail.getVendUU(), Constant.YES);
|
|
|
// if (!CollectionUtils.isEmpty(roles)) {
|
|
|
// List<User> admins = userDao.findByRole(roles.get(0).getId());
|
|
|
@@ -67,60 +117,61 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
- List<Vendor> vendors;
|
|
|
- // 判断提前,防止客户方收到过多单据提示消息 2017年8月24日 16:19:26 注 dongbw
|
|
|
+ List<Vendor> vendors;
|
|
|
+ // 判断提前,防止客户方收到过多单据提示消息 2017年8月24日 16:19:26 注 dongbw
|
|
|
// if (release.getToVendor() == Constant.YES) { // 消息接收方为供应商,查找供应商表方式不同
|
|
|
- vendors = vendorDao.findByMyEnUUAndVendUU(release.getEnUU(), detail.getVendUU());
|
|
|
- if (!CollectionUtils.isEmpty(vendors) && !userUUs.contains(vendors.get(0).getVendUserUU())) {
|
|
|
- userUUs.add(vendors.get(0).getVendUserUU());
|
|
|
- }
|
|
|
+ vendors = vendorDao.findByMyEnUUAndVendUU(release.getEnUU(), detail.getVendUU());
|
|
|
+ if (!CollectionUtils.isEmpty(vendors) && !userUUs.contains(vendors.get(0).getVendUserUU())) {
|
|
|
+ userUUs.add(vendors.get(0).getVendUserUU());
|
|
|
+ }
|
|
|
// } else { // 消息接收方为客户,查找供应商表方式不同
|
|
|
// vendors = vendorDao.findByMyEnUUAndVendUU(detail.getVendUU(), release.getEnUU());
|
|
|
// if (!CollectionUtils.isEmpty(vendors) && !userUUs.contains(vendors.get(0).getMyUserUU())) {
|
|
|
// userUUs.add(vendors.get(0).getMyUserUU());
|
|
|
// }
|
|
|
// }
|
|
|
- // 查找有权限的用户
|
|
|
- if (!CollectionUtils.isEmpty(vendors)) {
|
|
|
- Long vendorId = vendors.get(0).getId();
|
|
|
- List<Distribute> distributes = distributeDao.findByVendorId(vendorId);
|
|
|
- if (!CollectionUtils.isEmpty(distributes)) {
|
|
|
- // 去掉已将权限转移的管理员
|
|
|
- Set<Long> leaderUUs = new HashSet<>();
|
|
|
- for (Distribute distribute : distributes) {
|
|
|
- if (null != distribute.getIsTransfer() && distribute.getIsTransfer() == Constant.YES && distribute.getLeaderUU() != null
|
|
|
- && !leaderUUs.contains(distribute.getLeaderUU())) {
|
|
|
- leaderUUs.add(distribute.getLeaderUU());
|
|
|
+ // 查找有权限的用户
|
|
|
+ if (!CollectionUtils.isEmpty(vendors)) {
|
|
|
+ Long vendorId = vendors.get(0).getId();
|
|
|
+ List<Distribute> distributes = distributeDao.findByVendorId(vendorId);
|
|
|
+ if (!CollectionUtils.isEmpty(distributes)) {
|
|
|
+ // 去掉已将权限转移的管理员
|
|
|
+ Set<Long> leaderUUs = new HashSet<>();
|
|
|
+ for (Distribute distribute : distributes) {
|
|
|
+ if (null != distribute.getIsTransfer() && distribute.getIsTransfer() == Constant.YES && distribute.getLeaderUU() != null
|
|
|
+ && !leaderUUs.contains(distribute.getLeaderUU())) {
|
|
|
+ leaderUUs.add(distribute.getLeaderUU());
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- for (Distribute distribute : distributes) {
|
|
|
- if (!userUUs.contains(distribute.getUserUU()) && !leaderUUs.contains(distribute.getUserUU())) {
|
|
|
- userUUs.add(distribute.getUserUU());
|
|
|
+ for (Distribute distribute : distributes) {
|
|
|
+ if (!userUUs.contains(distribute.getUserUU()) && !leaderUUs.contains(distribute.getUserUU())) {
|
|
|
+ userUUs.add(distribute.getUserUU());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- // 新增消息
|
|
|
- for (Long userUU : userUUs) {
|
|
|
- try { //去除userUU为空值的情况
|
|
|
- if (null != userUU) {
|
|
|
- User user = userDao.findOne(userUU);
|
|
|
- if (null != user) {
|
|
|
- PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(detail.getVendUU(), userUU, user.getUserName());
|
|
|
- pagingReleaseDetail.setPagingRelease(release);
|
|
|
- otherReleaseDetails.add(pagingReleaseDetail);
|
|
|
+ // 新增消息
|
|
|
+ for (Long userUU : userUUs) {
|
|
|
+ try { //去除userUU为空值的情况
|
|
|
+ if (null != userUU) {
|
|
|
+ User user = userDao.findOne(userUU);
|
|
|
+ if (null != user) {
|
|
|
+ PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(detail.getVendUU(), userUU, user.getUserName());
|
|
|
+ pagingReleaseDetail.setPagingRelease(release);
|
|
|
+ otherReleaseDetails.add(pagingReleaseDetail);
|
|
|
+ }
|
|
|
}
|
|
|
+ } catch (RuntimeException e) {
|
|
|
+ e.getStackTrace();
|
|
|
}
|
|
|
- } catch (RuntimeException e) {
|
|
|
- e.getStackTrace();
|
|
|
}
|
|
|
+ } else { // 发送给客户方的,直接添加消息到保存列表
|
|
|
+ otherReleaseDetails.add(detail);
|
|
|
}
|
|
|
- } else { // 发送给客户方的,直接添加消息到保存列表
|
|
|
- otherReleaseDetails.add(detail);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);
|
|
|
+ otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);
|
|
|
if (!CollectionUtils.isEmpty(otherReleaseDetails)) {
|
|
|
pagingReleaseDetails.addAll(otherReleaseDetails);
|
|
|
}
|