|
|
@@ -20,123 +20,198 @@ import java.util.Set;
|
|
|
/**
|
|
|
* 监听新增数据事件
|
|
|
* 生成对应消息
|
|
|
- *
|
|
|
*/
|
|
|
@Component
|
|
|
public class MessageListener implements ApplicationListener<SaveReleaseEvent<?, ?>> {
|
|
|
|
|
|
- @Autowired
|
|
|
- private PagingReleaseDetailDao pagingReleaseDetailDao;
|
|
|
+ @Autowired
|
|
|
+ private PagingReleaseDetailDao pagingReleaseDetailDao;
|
|
|
|
|
|
- @Autowired
|
|
|
- private VendorDao vendorDao;
|
|
|
+ @Autowired
|
|
|
+ private VendorDao vendorDao;
|
|
|
|
|
|
- @Autowired
|
|
|
- private RoleDao roleDao;
|
|
|
+ @Autowired
|
|
|
+ private EnterpriseDao enterpriseDao;
|
|
|
|
|
|
- @Autowired
|
|
|
- private UserDao userDao;
|
|
|
+ @Autowired
|
|
|
+ private RoleDao roleDao;
|
|
|
|
|
|
- @Autowired
|
|
|
- private DistributeDao distributeDao;
|
|
|
+ @Autowired
|
|
|
+ private UserDao userDao;
|
|
|
|
|
|
- @Autowired
|
|
|
- private MobileReleaseService mobileReleaseService;
|
|
|
+ @Autowired
|
|
|
+ private DistributeDao distributeDao;
|
|
|
|
|
|
- @Autowired
|
|
|
- private CommonDao commonDao;
|
|
|
+ @Autowired
|
|
|
+ private MobileReleaseService mobileReleaseService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private PurcInquiryItemDao purcInquiryItemDao;
|
|
|
+ @Autowired
|
|
|
+ private CommonDao commonDao;
|
|
|
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- @Async
|
|
|
- @Override
|
|
|
- public void onApplicationEvent(final SaveReleaseEvent<?, ?> event) {
|
|
|
- List<PagingReleaseDetail> pagingReleaseDetails = (List<PagingReleaseDetail>) event.release();
|
|
|
- Set<Long> userUUs = new HashSet<>(); // 存储需要接收消息的用户UU
|
|
|
- List<PagingReleaseDetail> otherReleaseDetails = new ArrayList<>(); // 用来保存单据新增的其他消息
|
|
|
- // ERP公共询价比较特殊,单独处理
|
|
|
- if (event instanceof PurcInquirySaveReleaseEvent) {
|
|
|
- for(PagingReleaseDetail detail : pagingReleaseDetails) {
|
|
|
- PurcInquiryItem item = purcInquiryItemDao.findOne(detail.getPagingRelease().getSourceId());
|
|
|
- if (null != item) {
|
|
|
- //先取出企业uu
|
|
|
- // 产品库存在
|
|
|
- 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 d.id_status = 201 " +
|
|
|
- "and 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();
|
|
|
- // 主动报价过的
|
|
|
- String quotationSql = "select distinct qu_enuu enuu from sale$quotation qu left join sale$quotationitem qd" +
|
|
|
- " on qu.qu_id = qd.qd_quid left join products p on qd.qd_prid = p.pr_id " +
|
|
|
- "where p.pr_title = '" + item.getProduct().getTitle() + "' and qu.qu_custuu = " + 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> quotationEnUUs = commonDao.query(quotationSql, UserAndEnterprise.class);
|
|
|
- List<UserAndEnterprise> enuus = new ArrayList<>();
|
|
|
- Set<Long> enUUs = new HashSet<>();
|
|
|
- enuus.addAll(prodEnUUs);
|
|
|
- enuus.addAll(inquiryEnUUs);
|
|
|
- enuus.addAll(orderEnUUs);
|
|
|
- enuus.addAll(quotationEnUUs);
|
|
|
- // enuus存在才进行人员选择
|
|
|
- if(enuus.size() > 0) {
|
|
|
- for(UserAndEnterprise enter : enuus) {
|
|
|
- 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);
|
|
|
- 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.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- enUUs.add(enter.getEnuu());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // 公共询价消息暂时不采用手机推送
|
|
|
- pagingReleaseDetailDao.save(otherReleaseDetails);
|
|
|
- // 询价单单独处理(使用共用方法会出现,分别给两个企业发同一张询价单,两个企业都存在的用户会只收到其中一个企业的一条消息。)
|
|
|
-// } else if (event instanceof PurchaseInquiryItemSaveReleaseEvent || event instanceof PurchaseInquiryItemInvalidReleaseEvent || event instanceof PurchaseInquiryItemDecideReleaseEvent) {
|
|
|
+ @Autowired
|
|
|
+ private PurcInquiryItemDao purcInquiryItemDao;
|
|
|
|
|
|
- } 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加,避免客户方用户收到太多消息
|
|
|
- // 添加管理员
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ @Async
|
|
|
+ @Override
|
|
|
+ public void onApplicationEvent(final SaveReleaseEvent<?, ?> event) {
|
|
|
+ List<PagingReleaseDetail> pagingReleaseDetails = (List<PagingReleaseDetail>) event.release();
|
|
|
+ List<PagingReleaseDetail> otherReleaseDetails = new ArrayList<>(); // 用来保存单据新增的其他消息
|
|
|
+ // ERP公共询价比较特殊,单独处理
|
|
|
+ if (event instanceof PurcInquirySaveReleaseEvent) {
|
|
|
+ for (PagingReleaseDetail detail : pagingReleaseDetails) {
|
|
|
+ PurcInquiryItem item = purcInquiryItemDao.findOne(detail.getPagingRelease().getSourceId());
|
|
|
+ if (null != item) {
|
|
|
+ //先取出企业uu
|
|
|
+ // 产品库存在
|
|
|
+ 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 d.id_status = 201 " +
|
|
|
+ "and 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();
|
|
|
+ // 主动报价过的
|
|
|
+ String quotationSql = "select distinct qu_enuu enuu from sale$quotation qu left join sale$quotationitem qd" +
|
|
|
+ " on qu.qu_id = qd.qd_quid left join products p on qd.qd_prid = p.pr_id " +
|
|
|
+ "where p.pr_title = '" + item.getProduct().getTitle() + "' and qu.qu_custuu = " + 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> quotationEnUUs = commonDao.query(quotationSql, UserAndEnterprise.class);
|
|
|
+ List<UserAndEnterprise> enuus = new ArrayList<>();
|
|
|
+ Set<Long> enUUs = new HashSet<>();
|
|
|
+ enuus.addAll(prodEnUUs);
|
|
|
+ enuus.addAll(inquiryEnUUs);
|
|
|
+ enuus.addAll(orderEnUUs);
|
|
|
+ enuus.addAll(quotationEnUUs);
|
|
|
+ // enuus存在才进行人员选择
|
|
|
+ if (enuus.size() > 0) {
|
|
|
+ for (UserAndEnterprise enter : enuus) {
|
|
|
+ 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);
|
|
|
+ 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.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ enUUs.add(enter.getEnuu());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 公共询价消息暂时不采用手机推送
|
|
|
+ pagingReleaseDetailDao.save(otherReleaseDetails);
|
|
|
+ // 询价单单独处理 优先发送给分配过客户的用户,如果不存在就发送给企业管理员
|
|
|
+ } else if (event instanceof PurchaseInquiryItemSaveReleaseEvent || event instanceof PurchaseInquiryItemInvalidReleaseEvent || event instanceof PurchaseInquiryItemDecideReleaseEvent) {
|
|
|
+ for (PagingReleaseDetail detail : pagingReleaseDetails) {
|
|
|
+ Set<Long> userUUs = new HashSet<>(); // 存储需要接收消息的用户UU
|
|
|
+ PagingRelease release = detail.getPagingRelease();
|
|
|
+ if (null != detail.getVendUU() && null != release.getEnUU()) { // 确保消息有效才继续
|
|
|
+ List<Vendor> vendors;
|
|
|
+ // 判断提前,防止客户方收到过多单据提示消息
|
|
|
+// 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());
|
|
|
+// }
|
|
|
+// } 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);
|
|
|
+ // 找出当前企业拥有管理员权限的角色
|
|
|
+ List<Role> roles = roleDao.findByEnUUAndIssys(detail.getVendUU(), Constant.YES);
|
|
|
+ Set<Long> adminUUs = new HashSet<>();
|
|
|
+ if (!CollectionUtils.isEmpty(roles)) {
|
|
|
+ List<User> admins = userDao.findByRole(roles.get(0).getId());
|
|
|
+ for (User admin : admins) {
|
|
|
+ adminUUs.add(admin.getUserUU());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!CollectionUtils.isEmpty(distributes)) {
|
|
|
+ for (Distribute distribute : distributes) {
|
|
|
+ if (!userUUs.contains(distribute.getUserUU()) && !adminUUs.contains(distribute.getUserUU())) {
|
|
|
+ userUUs.add(distribute.getUserUU());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 新增消息
|
|
|
+ if (!CollectionUtils.isEmpty(userUUs)) {
|
|
|
+ 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();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Enterprise vendor = enterpriseDao.findOne(detail.getVendUU());
|
|
|
+ if (null != vendor && null != vendor.getEnAdminuu() && null != vendor.getAdmin()) {
|
|
|
+ PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(detail.getVendUU(), vendor.getEnAdminuu(), vendor.getAdmin().getUserName());
|
|
|
+ pagingReleaseDetail.setPagingRelease(release);
|
|
|
+ otherReleaseDetails.add(pagingReleaseDetail);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);
|
|
|
+ if (!CollectionUtils.isEmpty(otherReleaseDetails)) {
|
|
|
+ pagingReleaseDetails.addAll(otherReleaseDetails);
|
|
|
+ }
|
|
|
+ try { // 推送消息
|
|
|
+ mobileReleaseService.pushReleases(pagingReleaseDetails);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (PagingReleaseDetail detail : pagingReleaseDetails) {
|
|
|
+ Set<Long> userUUs = new HashSet<>(); // 存储需要接收消息的用户UU
|
|
|
+ // 先将产生的一条记录加入保存列表,去掉用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加,避免客户方用户收到太多消息
|
|
|
+ // 添加管理员
|
|
|
// List<Role> roles = roleDao.findByEnUUAndIssys(detail.getVendUU(), Constant.YES);
|
|
|
// if (!CollectionUtils.isEmpty(roles)) {
|
|
|
// List<User> admins = userDao.findByRole(roles.get(0).getId());
|
|
|
@@ -146,68 +221,71 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
- List<Vendor> vendors;
|
|
|
- // 判断提前,防止客户方收到过多单据提示消息
|
|
|
+ List<Vendor> vendors;
|
|
|
+ // 判断提前,防止客户方收到过多单据提示消息
|
|
|
// 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());
|
|
|
- }
|
|
|
- }
|
|
|
- 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);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (RuntimeException e) {
|
|
|
- e.getStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- } else { // 发送给客户方的,直接添加消息到保存列表
|
|
|
- otherReleaseDetails.add(detail);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);
|
|
|
- if (!CollectionUtils.isEmpty(otherReleaseDetails)) {
|
|
|
- pagingReleaseDetails.addAll(otherReleaseDetails);
|
|
|
- }
|
|
|
- try { // 推送消息
|
|
|
- mobileReleaseService.pushReleases(pagingReleaseDetails);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ // 查找有权限的用户
|
|
|
+ if (!CollectionUtils.isEmpty(vendors)) {
|
|
|
+ Long vendorId = vendors.get(0).getId();
|
|
|
+ List<Distribute> distributes = distributeDao.findByVendorId(vendorId);
|
|
|
+ if (!CollectionUtils.isEmpty(distributes)) {
|
|
|
+ // 找出当前企业拥有管理员权限的角色
|
|
|
+ List<Role> roles = roleDao.findByEnUUAndIssys(detail.getVendUU(), Constant.YES);
|
|
|
+ Set<Long> adminUUs = new HashSet<>();
|
|
|
+ if (!CollectionUtils.isEmpty(roles)) {
|
|
|
+ List<User> admins = userDao.findByRole(roles.get(0).getId());
|
|
|
+ for (User admin : admins) {
|
|
|
+ adminUUs.add(admin.getUserUU());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 被分配客户的,且不是管理员的用户才接收消息
|
|
|
+ for (Distribute distribute : distributes) {
|
|
|
+ if (!userUUs.contains(distribute.getUserUU()) && !adminUUs.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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (RuntimeException e) {
|
|
|
+ e.getStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else { // 发送给客户方的,直接添加消息到保存列表
|
|
|
+ otherReleaseDetails.add(detail);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);
|
|
|
+ if (!CollectionUtils.isEmpty(otherReleaseDetails)) {
|
|
|
+ pagingReleaseDetails.addAll(otherReleaseDetails);
|
|
|
+ }
|
|
|
+ try { // 推送消息
|
|
|
+ mobileReleaseService.pushReleases(pagingReleaseDetails);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|