Parcourir la source

个人物料导入时增加标准物料的判断;
公共询价邮件推送方法更新

hejq il y a 8 ans
Parent
commit
5e3fda7494

+ 12 - 1
src/main/java/com/uas/platform/b2b/dao/ProductDao.java

@@ -182,7 +182,7 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
 	public List<Product> findByEnUUAndSourceAppAndDownloadstatus(Long enuu, String app, Integer status);
 
     /**
-     * 通过企业UU,物料名称、规格、品牌
+     * 通过企业UU,物料名称、规格、品牌(非标准)
      *
      * @param enUU
      * @param titile
@@ -192,6 +192,17 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
      */
     public List<Product> findByTitleAndCmpCodeAndBrandAndEnUU(String title, String cmpcode, String brand, Long enUU);
 
+    /**
+     * 通过企业UU,物料名称、规格、品牌(标准)
+     * 
+     * @param title
+     * @param cmpcode
+     * @param brand
+     * @param enUU
+     * @return
+     */
+    public List<Product> findByTitleAndPcmpcodeAndPbrandAndEnUU(String title, String cmpcode, String brand, Long enUU);
+
 	/**
 	 * 通过uu查询非标准器件进行存储
 	 * 

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

@@ -105,7 +105,7 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
                     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<>();
+                    Set<Long> enUUs = new HashSet<Long>();
                     enuus.addAll(prodEnUUs);
                     enuus.addAll(inquiryEnUUs);
                     enuus.addAll(orderEnUUs);
@@ -114,13 +114,29 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
                     if (enuus.size() > 0) {
                         for (UserAndEnterprise enter : enuus) {
                             if (!enUUs.contains(enter.getEnuu())) {
-                                List<UserAndEnterprise> useruus = commonDao.query(
-                                        "select distinct 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)) {
+                                List<UserAndEnterprise> useruus = new ArrayList<UserAndEnterprise>();
+                                // 先查询客户分配
+                                String sql = "select distinct(purc$distribute.pd_useruu) useruu from purc$distribute left join purc$vendors " +
+                                        "on purc$distribute.pd_vdid = purc$vendors.ve_id where purc$vendors.ve_myenuu = " + item.getInquiry().getEnUU() +
+                                        "and purc$vendors.ve_vendenuu = " + enter.getEnuu();
+                                List<UserAndEnterprise> uus = commonDao.query(sql, UserAndEnterprise.class);
+                                if(!CollectionUtils.isEmpty(uus)) {
+                                    for(UserAndEnterprise uu : uus) {// 再查询单个物料的分配情况
+                                        Integer count = commonDao.queryForObject("select count(1) from product$users left join products on product$users.pu_prid = products.pr_id" +
+                                                " where products.pr_code = '" + item.getProdCode() + "' or products.pr_title = '" + item.getProdTitle() + "'", Integer.class);
+                                        if(count > 0)
+                                            useruus.add(uu);
+                                    }
+                                }
+                                if (CollectionUtils.isEmpty(useruus)) {// 如果分配的业务员没有相关物料的信息,再分配给企业的业务员
                                     useruus = commonDao.query(
-                                            "select distinct 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(),
+                                            "select distinct 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 distinct 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) {
@@ -132,56 +148,72 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
                                                 PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(enter.getEnuu(), userUU, user.getUserName());
                                                 pagingReleaseDetail.setPagingRelease(detail.getPagingRelease());
                                                 otherReleaseDetails.add(pagingReleaseDetail);
+
+                                                // 发送邮件
+                                                Map<String, Object> model = new HashMap<String, Object>();
+                                                Enterprise vendor = enterpriseDao.findOne(enter.getEnuu());
+                                                model.put("vendorname", null != vendor.getEnName() ? vendor.getEnName() : "供应商");
+                                                model.put("custname", null != item.getInquiry().getEnterprise() ? item.getInquiry().getEnterprise().getEnName() : "");
+                                                model.put("code", item.getInquiry().getCode());
+                                                model.put("date", DateFormatUtils.DATE_FORMAT.format(new Date()));
+                                                if(null != user.getUserEmail() && user.getUserEmail().matches(emailRegex))
+                                                    try {
+                                                        mailService.send(messageConf.getTplInquiryForB2B(), user.getUserEmail(), model);
+                                                    } catch (Exception e) {
+                                                        e.printStackTrace();
+                                                    }
                                             }
                                         }
                                     } catch (RuntimeException e) {
                                         e.printStackTrace();
                                     }
+
+
                                 }
 
                                 // 发送邮件
-                                List<User> userEmails = commonDao.query(
-                                        "select distinct user_email userEmail from sec$users u left join sec$userrole ur on u.user_uu = ur.user_uu " +
-                                                "left join sec$roles r on r.role_id = ur.role_id " +
-                                                "where r.role_desc = '业务员' and u.user_email is not null and r.role_enuu = " + enter.getEnuu(),
-                                        User.class);
-                                if (CollectionUtils.isEmpty(userEmails)) {
-                                    userEmails = commonDao.query(
-                                            "select distinct user_email userEmail from sec$users u left join sec$userrole ur on u.user_uu = ur.user_uu " +
-                                                    "left join sec$roles r on r.role_id = ur.role_id " +
-                                                    "where r.role_desc = '管理员' and u.user_email is not null and r.role_enuu = " + enter.getEnuu(),
-                                            User.class);
-                                }
-                                // 发邮件
-                                Map<String, Object> model = new HashMap<String, Object>();
-                                Enterprise vendor = enterpriseDao.findOne(enter.getEnuu());
-                                if (null != vendor) {
-                                    model.put("vendorname", vendor.getEnName());
-                                } else {
-                                    model.put("vendorname", "供应商");
-                                }
-                                if (null != item.getInquiry().getEnterprise()) {
-                                    model.put("custname", item.getInquiry().getEnterprise().getEnName());
-                                } else {
-                                    model.put("custname", "");
-                                }
-                                model.put("code", item.getInquiry().getCode());
-                                model.put("date", DateFormatUtils.DATE_FORMAT.format(new Date()));
-                                for (User userEmail : userEmails) {
-                                    if (Pattern.matches(emailRegex, userEmail.getUserEmail())) {
-                                        try {
-                                            mailService.send(messageConf.getTplInquiryForB2B(), userEmail.getUserEmail(), model);
+//                                List<User> userEmails = commonDao.query(
+//                                        "select distinct user_email userEmail from sec$users u left join sec$userrole ur on u.user_uu = ur.user_uu " +
+//                                                "left join sec$roles r on r.role_id = ur.role_id " +
+//                                                "where r.role_desc = '业务员' and u.user_email is not null and r.role_enuu = " + enter.getEnuu(),
+//                                        User.class);
+//                                if (CollectionUtils.isEmpty(userEmails)) {
+//                                    userEmails = commonDao.query(
+//                                            "select distinct user_email userEmail from sec$users u left join sec$userrole ur on u.user_uu = ur.user_uu " +
+//                                                    "left join sec$roles r on r.role_id = ur.role_id " +
+//                                                    "where r.role_desc = '管理员' and u.user_email is not null and r.role_enuu = " + enter.getEnuu(),
+//                                            User.class);
+//                                }
+//                                // 发邮件
+//                                Map<String, Object> model = new HashMap<String, Object>();
+//                                Enterprise vendor = enterpriseDao.findOne(enter.getEnuu());
+//                                if (null != vendor) {
+//                                    model.put("vendorname", vendor.getEnName());
+//                                } else {
+//                                    model.put("vendorname", "供应商");
+//                                }
+//                                if (null != item.getInquiry().getEnterprise()) {
+//                                    model.put("custname", item.getInquiry().getEnterprise().getEnName());
+//                                } else {
+//                                    model.put("custname", "");
+//                                }
+//                                model.put("code", item.getInquiry().getCode());
+//                                model.put("date", DateFormatUtils.DATE_FORMAT.format(new Date()));
+//                                for (User userEmail : userEmails) {
+//                                    if (Pattern.matches(emailRegex, userEmail.getUserEmail())) {
+//                                        try {
+//                                            mailService.send(messageConf.getTplInquiryForB2B(), userEmail.getUserEmail(), model);
 //                                            noticeDao.saveErpLog(detail.getPagingRelease().getEmName(), "",
 //                                                    detail.getPagingRelease().getEnUU(), detail.getPagingRelease().getEmUU(),
 //                                                    "公共询价单通知邮件", "发送成功,询价单号" + detail.getPagingRelease().getCode());
-                                        } catch (Exception e) {
+//                                        } catch (Exception e) {
 //                                            noticeDao.saveErpLog(detail.getPagingRelease().getEmName(), "",
 //                                                    detail.getPagingRelease().getEnUU(), detail.getPagingRelease().getEmUU(),
 //                                                    "公共询价单通知邮件", "发送失败,询价单号" + detail.getPagingRelease().getCode());
-                                            e.printStackTrace();
-                                        }
-                                    }
-                                }
+//                                            e.printStackTrace();
+//                                        }
+//                                    }
+//                                }
 
 //                                // 发送短信
 //                                List<User> userTels = commonDao.query(

+ 7 - 1
src/main/java/com/uas/platform/b2b/service/impl/ProductUsersServiceImpl.java

@@ -81,8 +81,11 @@ public class ProductUsersServiceImpl implements ProductUsersService {
         Long enuu = SystemSession.getUser().getEnterprise().getUu();
         Long useruu =  SystemSession.getUser().getUserUU();
         List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndTitleAndSpecAndBrand(enuu, useruu, prodInfo.getTitle(), prodInfo.getSpec(), prodInfo.getBrand());
-        if(CollectionUtils.isEmpty(productUsers)) {// 如果不存在则进行其他操作,存在不处理
+        if(CollectionUtils.isEmpty(productUsers)) {// 如果不存在则进行其他操作,存在不处理(先查询非标)
             List<Product> productList = productDao.findByTitleAndCmpCodeAndBrandAndEnUU(prodInfo.getTitle(), prodInfo.getCmpCode(), prodInfo.getBrand(), SystemSession.getUser().getEnterprise().getUu());
+            if(CollectionUtils.isEmpty(productList)) {// 如果非标不存在再查询标准
+                productList = productDao.findByTitleAndPcmpcodeAndPbrandAndEnUU(prodInfo.getTitle(), prodInfo.getCmpCode(), prodInfo.getBrand(), SystemSession.getUser().getEnterprise().getUu());
+            }
             if(!CollectionUtils.isEmpty(productList)) { // 如果存在,找出其中一个进行绑定
                 ProductUsers prod = new ProductUsers();
                 prod.setDate(new Date());
@@ -243,6 +246,9 @@ public class ProductUsersServiceImpl implements ProductUsersService {
                     if(CollectionUtils.isEmpty(existProds)) {
                         List<Product> prods = productDao.findByTitleAndCmpCodeAndBrandAndEnUU(
                                 product.getTitle(), product.getCmpCode(), product.getBrand(), enuu);
+                        if(CollectionUtils.isEmpty(prods)) {// 如果非标不存在再查询标准
+                            prods = productDao.findByTitleAndPcmpcodeAndPbrandAndEnUU(product.getTitle(), product.getCmpCode(), product.getBrand(), SystemSession.getUser().getEnterprise().getUu());
+                        }
                         if (CollectionUtils.isEmpty(prods)) {
                             // 如果物料不存在,先生成物料信息
                             product.setEnUU(SystemSession.getUser().getEnterprise().getUu());