Просмотр исходного кода

Merge remote-tracking branch 'origin/dev' into authority

hejq 8 лет назад
Родитель
Сommit
2a5105936d

+ 15 - 3
src/main/java/com/uas/platform/b2b/dao/NoticeDao.java

@@ -1,21 +1,33 @@
 package com.uas.platform.b2b.dao;
 
-import javax.persistence.QueryHint;
-
+import com.uas.platform.b2b.model.Notice;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.QueryHints;
+import org.springframework.data.jpa.repository.query.Procedure;
 import org.springframework.stereotype.Repository;
 
-import com.uas.platform.b2b.model.Notice;
+import javax.persistence.QueryHint;
 
 @Repository
 public interface NoticeDao extends JpaSpecificationExecutor<Notice>, JpaRepository<Notice, Long> {
 
 	@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
 	Page<Notice> findAll(Specification<Notice> spec, Pageable pageable);
+
+	/**
+	 * 在log$erp表中加入日志
+	 * @param username
+	 * @param userip
+	 * @param enuu
+	 * @param useruu
+	 * @param title
+	 * @param message
+	 */
+	@Procedure(procedureName = "PURC$ERP_SEND_EMAIL")
+	void saveErpLog(String username,String userip, Long enuu, Long useruu, String title, String message);
 	
 }

+ 7 - 7
src/main/java/com/uas/platform/b2b/erp/service/impl/InquiryServiceImpl.java

@@ -253,14 +253,14 @@ public class InquiryServiceImpl implements InquiryService {
                             }
                             logger.log("自动询价明细上传", "新增了自动询价的明细(" + id + ")", 1);
                         }
+						// 产生消息
+						PurchaseInquiryItem inquiryItem = purchaseInquiryItemDao.findByVendUUAndSourceId(detail.getVe_uu(), detail.getId_id());
+						if (null != inquiryItem && null != inquiryItem.getInquiry() && !codes.contains(inquiryItem.getInquiry().getCode() + inquiryItem.getVendUU())) {
+							// 可能存在一个单里两个企业都是注册了之后,同时传输明细的情况,所以需要enuu 和code 一起判断
+							codes.add(inquiryItem.getInquiry().getCode() + inquiryItem.getVendUU());
+							items.add(inquiryItem);
+						}
                     }
-                    // 产生消息
-					PurchaseInquiryItem inquiryItem = purchaseInquiryItemDao.findByVendUUAndSourceId(detail.getVe_uu(), detail.getId_id());
-                    if (null != inquiryItem && null != inquiryItem.getInquiry() && !codes.contains(inquiryItem.getInquiry().getCode() + inquiryItem.getVendUU())) {
-                    	// 可能存在一个单里两个企业都是注册了之后,同时传输明细的情况,所以需要enuu 和code 一起判断
-                    	codes.add(inquiryItem.getInquiry().getCode() + inquiryItem.getVendUU());
-                    	items.add(inquiryItem);
-					}
                 }
             }
             if (!CollectionUtils.isEmpty(items)) {

+ 68 - 23
src/main/java/com/uas/platform/b2b/erp/service/impl/PublicInquiryServiceImpl.java

@@ -1,5 +1,6 @@
 package com.uas.platform.b2b.erp.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.uas.message.mail.service.MailService;
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.core.util.DateFormatUtils;
@@ -10,12 +11,12 @@ import com.uas.platform.b2b.erp.model.BatchInquiry;
 import com.uas.platform.b2b.erp.service.PublicInquiryService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
 import com.uas.platform.b2b.event.PurcInquirySaveReleaseEvent;
-import com.uas.platform.b2b.model.Product;
-import com.uas.platform.b2b.model.PurcInquiry;
-import com.uas.platform.b2b.model.PurcInquiryItem;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.support.MessageConf;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
 import com.uas.platform.b2b.temporary.model.SmsMessage;
+import com.uas.platform.b2b.temporary.model.UserInfo;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
@@ -59,8 +60,16 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
     @Autowired
     private MessageConf messageConf;
 
+    @Autowired
+    private NoticeDao noticeDao;
+
+    @Autowired
+    private UserDao userDao;
+
     private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
+    private final static UsageBufferedLogger usageLogger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
     private static final String TEL_REGEXP = "^((\\(\\d{3}\\))|(\\d{3}\\-))?(13|15|18|17)\\d{9}$";
 
     @Override
@@ -130,7 +139,11 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
             // 产生消息
             sendMessage(inquiryItems);
             // 发送通知
-            sendRemind(inquiries);
+            Long userUU = SystemSession.getUser().getUserUU();
+            Long enUU = SystemSession.getUser().getEnterprise().getUu();
+            String userIp = SystemSession.getUser().getIp();
+            String userName = SystemSession.getUser().getUserName();
+            sendRemind(inquiries, userUU, userName, userIp, enUU);
         }
     }
 
@@ -162,9 +175,12 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      * 发送通知
      *
      * @param inquiries 采购询价单主表
-     * @return
+     * @param userUU
+     *@param userName
+     * @param userIp
+     * @param enUU @return
      */
-    private void sendRemind(final List<PurcInquiry> inquiries){
+    private void sendRemind(final List<PurcInquiry> inquiries, final Long userUU, final String userName, final String userIp, final Long enUU){
         ThreadTask.getInstance().execute(new Runnable() {
             @Override
             public void run() {
@@ -177,43 +193,72 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                     obj.add(inquiry.getEnterprise().getEnName());
                     sms.setParams(obj);
                     for (PurcInquiryItem inquiryItem : inquiry.getInquiryItems()) {
-                        if (!enUUs.contains(inquiryItem.getVendUU())) {
+                        if (null != inquiryItem.getVendUU() && !enUUs.contains(inquiryItem.getVendUU())) {
                             // 查找业务员邮箱
-                            String userEmailSql = "select distinct us.user_email useremail from sec$users us " +
+                            String userEmailSql = "select distinct us.user_email ememail from sec$users us " +
                                     " left join sec$userrole ur on us.user_uu = ur.user_uu left join sec$roles sr " +
                                     " on ur.role_id = sr.role_id where sr.role_desc = '业务员' and us.user_email is not null " +
-                                    " and sr.role_enuu = " + inquiryItem.getVendUU();
-                            List<String> userEmails = commonDao.query(userEmailSql, String.class);
-                            String userTelSql = "select distinct us.user_tel usertel from sec$users us " +
+                                    " and sr.role_enuu = " + inquiryItem.getVendUU() + " and us.user_uu in (" +
+                                    "select pd_useruu from purc$distribute where pd_vdid = (" +
+                                    "select ve_id from purc$vendors where ve_myenuu = " + inquiry.getEnUU() + " and ve_vendenuu = " + inquiryItem.getVendUU() + "))";
+                            List<UserInfo> userEmails = commonDao.query(userEmailSql, UserInfo.class);
+                            String userTelSql = "select distinct us.user_tel emphone from sec$users us " +
                                     " left join sec$userrole ur on us.user_uu = ur.user_uu left join sec$roles sr " +
                                     " on ur.role_id = sr.role_id where sr.role_desc = '业务员' and us.user_tel is not null " +
-                                    " and sr.role_enuu = " + inquiryItem.getVendUU();
-                            List<String> userTels = commonDao.query(userTelSql, String.class);
+                                    " and sr.role_enuu = " + inquiryItem.getVendUU() + " and us.user_uu in (" +
+                                    "select pd_useruu from purc$distribute where pd_vdid = (" +
+                                    "select ve_id from purc$vendors where ve_myenuu = " + inquiry.getEnUU() + " and ve_vendenuu = " + inquiryItem.getVendUU() + "))";
+                            List<UserInfo> userTels = commonDao.query(userTelSql, UserInfo.class);
                             // 发邮件
                             Map<String, Object> model = new HashMap<String, Object>();
-                            model.put("vendorname", inquiryItem.getEnterprise().getEnName());
+                            Enterprise vendor = enterpriseDao.findOne(inquiryItem.getVendUU());
+                            if (null != vendor) {
+                                model.put("vendorname", vendor.getEnName());
+                            } else {
+                                model.put("vendorname", "供应商");
+                            }
                             model.put("custname", inquiry.getEnterprise().getEnName());
                             model.put("date", DateFormatUtils.DATE_FORMAT.format(new Date()));
-                            for (String userEmail : userEmails) {
-                                String emailRegex = "[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?";
-                                if (Pattern.matches(emailRegex, userEmail)) {
+                            // 不存在被分配客户的业务员则添加系统管理员
+                            if (CollectionUtils.isEmpty(userEmails) && CollectionUtils.isEmpty(userTels)) {
+                                Enterprise enterprise = enterpriseDao.findOne(inquiryItem.getVendUU());
+                                if (null != enterprise) {
+                                    User admin = userDao.findOne(enterprise.getEnAdminuu());
+                                    if (null != admin) {
+                                        UserInfo adminInfo = new UserInfo(admin);
+                                        userEmails.add(adminInfo);
+                                        userTels.add(adminInfo);
+                                    }
+                                }
+                            }
+                            for (UserInfo userEmail : userEmails) {
+                                String emailRegex = "\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}";
+                                if (Pattern.matches(emailRegex, userEmail.getEmemail())) {
                                     try {
-                                        mailService.send(messageConf.getTplInquiryForB2B(), userEmail, model);
+                                        mailService.send(messageConf.getTplInquiryForB2B(), userEmail.getEmemail(), model);
+                                        // 线程内无法访问Systemsession,会报nullPoint,采用存储过程
+//										usageLogger.log("询价发送邮件", "企业UU:" + inquiry.getEnUU() + ",单号:" +inquiry.getCode() +" 发送邮件成功", "询价发送邮件成功");
+                                        noticeDao.saveErpLog(userName, userIp, enUU, userUU, "发送询价单通知邮件", "发送成功,询价单号" + inquiry.getCode());
                                     } catch (Exception e) {
-                                        logger.log("公共询价发送邮件出错", inquiry.getEnUU() + "," +inquiry.getCode() +" 发送失败", 0);
+//										usageLogger.log("询价发送邮件", "企业UU:" + inquiry.getEnUU() + ",单号:" +inquiry.getCode() +" 发送邮件失败", "询价发送邮件出错");
+                                        noticeDao.saveErpLog(userName, userIp, enUU, userUU, "发送询价单通知邮件", "发送失败,询价单号" + inquiry.getCode());
                                         e.printStackTrace();
                                     }
                                 }
                             }
                             // 发短信
-                            for (String userTel : userTels) {
-                                if(userTel.matches(TEL_REGEXP)) {
+                            for (UserInfo userTel : userTels) {
+                                if(null != userTel.getEmphone() && userTel.getEmphone().matches(TEL_REGEXP)) {//手机号判断
                                     try {
-                                        sms.setReceiver(userTel);
+                                        sms.setReceiver(userTel.getEmphone());
                                         sms.setTemplateId(messageConf.getMsgInquiryForB2B());
                                         HttpUtil.sendPost(messageConf.getMessageUrl(), FlexJsonUtils.toJsonDeep(sms));
+//										usageLogger.log("询价发送短信", "企业UU:" + inquiry.getEnUU() + ",单号:" +inquiry.getCode() +"短信发送成功", "询价发送短信成功");
+
+                                        noticeDao.saveErpLog(userName, userIp, enUU, userUU, "发送询价单通知短信", "发送成功,询价单号" + inquiry.getCode());
                                     } catch (Exception e) {
-                                        logger.log("公共询价发送短信出错", inquiry.getEnUU() + "," +inquiry.getCode() +" 发送失败", 0);
+                                        noticeDao.saveErpLog(userName, userIp, enUU, userUU, "发送询价单通知短信", "发送失败,询价单号" + inquiry.getCode());
+//                                        usageLogger.log("询价发送短信", "企业UU:" + inquiry.getEnUU() + ",单号:" +inquiry.getCode() +"短信发送失败", "询价发送短信出错");
                                         e.printStackTrace();
                                     }
                                 }

+ 2 - 1
src/main/java/com/uas/platform/b2b/event/MakeOrderSaveReleaseEvent.java

@@ -36,7 +36,8 @@ public class MakeOrderSaveReleaseEvent extends SaveReleaseEvent<PagingReleaseDet
         String emName = "采购员";
         if (null == emUU) {
             emUU = 1L;
-        } else {
+        }
+        if (null != make.getUser()) {
             emName = make.getUser().getUserName();
         }
         Long enUU = make.getEnUU();

+ 2 - 1
src/main/java/com/uas/platform/b2b/event/PurchaseInquiryMouldReplyReleaseEvent.java

@@ -37,7 +37,8 @@ public class PurchaseInquiryMouldReplyReleaseEvent extends SaveReleaseEvent<Pagi
         String emName = "操作员";
         if (null == emUU) {
             emUU = 1L;
-        } else {
+        }
+        if (null != mould.getVendUser()) {
             emName = mould.getVendUser().getUserName();
         }
         Long vendUU = mould.getVenduu();

+ 4 - 1
src/main/java/com/uas/platform/b2b/event/PurchaseNoticeEndReleaseEvent.java

@@ -38,7 +38,10 @@ public class PurchaseNoticeEndReleaseEvent extends SaveReleaseEvent<PagingReleas
         if (null == emUU) {
             emUU = 1L;
         }
-        String emName = order.getUser().getUserName();
+        String emName = "操作员";
+        if (null != order.getUser()) {
+            emName = order.getUser().getUserName();
+        }
         Long enUU = order.getEnUU();
         Date date = new Date();
         String codeValue = order.getCode();

+ 4 - 1
src/main/java/com/uas/platform/b2b/event/PurchaseOrderEndReleaseEvent.java

@@ -37,7 +37,10 @@ public class PurchaseOrderEndReleaseEvent extends SaveReleaseEvent<PagingRelease
         if (null == emUU) {
             emUU = 1L;
         }
-        String emName = item.getOrder().getUser().getUserName();
+        String emName = "操作员";
+        if (null != item.getOrder().getUser()) {
+            emName = item.getOrder().getUser().getUserName();
+        }
         Long enUU = item.getOrder().getEnUU();
         Date date = new Date();
         String codeValue = item.getOrder().getCode();

+ 4 - 1
src/main/java/com/uas/platform/b2b/event/PurchaseOrderSaveReleaseEvent.java

@@ -37,7 +37,10 @@ public class PurchaseOrderSaveReleaseEvent extends SaveReleaseEvent<PagingReleas
         if (null == emUU) {
             emUU = 1L;
         }
-        String emName = orderAll.getUser().getUserName();
+        String emName = "操作员";
+        if (null != orderAll.getUser()) {
+            emName = orderAll.getUser().getUserName();
+        }
         Long enUU = orderAll.getEnUU();
         Date date = new Date();
         String codeValue = orderAll.getCode();

+ 4 - 1
src/main/java/com/uas/platform/b2b/event/SaleSendAcceptReleaseEvent.java

@@ -36,7 +36,10 @@ public class SaleSendAcceptReleaseEvent extends SaveReleaseEvent<PagingReleaseDe
         if (null == emUU) {
             emUU = 1L;
         }
-        String emName = send.getCustUser().getUserName();
+        String emName = "操作员";
+        if (null == send.getCustUser()) {
+            emName = send.getCustUser().getUserName();
+        }
         Long enUU = send.getCustUU();
         Date date = new Date();
         String codeValue = send.getCode();

+ 4 - 1
src/main/java/com/uas/platform/b2b/event/SaleSendRefuseReleaseEvent.java

@@ -34,7 +34,10 @@ public class SaleSendRefuseReleaseEvent extends SaveReleaseEvent<PagingReleaseDe
         if (null == emUU) {
             emUU = 1L;
         }
-        String emName = send.getCustUser().getUserName();
+        String emName = "操作员";
+        if (null != send.getCustUser()) {
+            emName = send.getCustUser().getUserName();
+        }
         Long enUU = send.getCustUU();
         Date date = new Date();
         String codeValue = send.getCode();

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

@@ -145,22 +145,19 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
 //							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());
+                        List<Role> roles = roleDao.findByEnUUAndDesc(detail.getVendUU(), "业务员");
+                        if (!CollectionUtils.isEmpty(roles) && !CollectionUtils.isEmpty(distributes)) {
+                            List<User> salesmans = userDao.findByRole(roles.get(0).getId());
+                            Set<Long> salesManUUs = new HashSet<>();
+                            for (User salesman : salesmans) {
+                                salesManUUs.add(salesman.getUserUU());
                             }
-                        }
-                        if (!CollectionUtils.isEmpty(distributes)) {
                             for (Distribute distribute : distributes) {
-                                if (!userUUs.contains(distribute.getUserUU()) && !adminUUs.contains(distribute.getUserUU())) {
+                                if (!userUUs.contains(distribute.getUserUU()) && salesManUUs.contains(distribute.getUserUU())) {
                                     userUUs.add(distribute.getUserUU());
                                 }
                             }

+ 61 - 22
src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java

@@ -21,10 +21,10 @@ import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.service.PurchaseInquiryService;
 import com.uas.platform.b2b.support.MessageConf;
 import com.uas.platform.b2b.support.SystemSession;
-import com.uas.platform.b2b.support.UsageBufferedLogger;
 import com.uas.platform.b2b.support.XingePusher;
 import com.uas.platform.b2b.temporary.model.InquiryMessage;
 import com.uas.platform.b2b.temporary.model.SmsMessage;
+import com.uas.platform.b2b.temporary.model.UserInfo;
 import com.uas.platform.core.concurrent.IRunnable;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.exception.IllegalStatusException;
@@ -112,17 +112,24 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 	@Autowired
 	private MessageConf messageConf;
 
-	private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
+	@Autowired
+	private NoticeDao noticeDao;
 
-	private final static UsageBufferedLogger usageLogger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+	private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
     static final String TEL_REGEXP = "^((\\(\\d{3}\\))|(\\d{3}\\-))?(13|15|18|17)\\d{9}$";
 
+    static final String EMAIL_REGEXP = "\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}";
+
 	@Override
 	public void save(List<PurchaseInquiryItem> inquiryItems) {
         inquiryItems = purchaseInquiryItemDao.save(inquiryItems);
         saveUserOrders(inquiryItems);
-		sendRemind(PurchaseInquiryItem.distinct(inquiryItems));
+        Long userUU = SystemSession.getUser().getUserUU();
+        Long enUU = SystemSession.getUser().getEnterprise().getUu();
+        String userIp = SystemSession.getUser().getIp();
+        String userName = SystemSession.getUser().getUserName();
+		sendRemind(PurchaseInquiryItem.distinct(inquiryItems), userUU, userName, userIp, enUU);
 		// 产生消息
 		List<PurchaseInquiry> inquiries = PurchaseInquiryItem.distinct(inquiryItems);
 		List<PurchaseInquiryItem> items = new ArrayList<>();
@@ -224,9 +231,12 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 	 * 发送通知
 	 *
 	 * @param inquiries 采购询价单主表
-	 * @return
+	 * @param userUU
+	 *@param userName
+	 * @param userIp
+	 * @param enUU @return
 	 */
-	private void sendRemind(final List<PurchaseInquiry> inquiries){
+	private void sendRemind(final List<PurchaseInquiry> inquiries, final Long userUU, final String userName, final String userIp, final Long enUU){
 		ThreadTask.getInstance().execute(new Runnable() {
 			@Override
 			public void run() {
@@ -237,20 +247,25 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 					SmsMessage sms = new SmsMessage();
 					List<Object> obj = new ArrayList<Object>();
 					obj.add(inquiry.getEnterprise().getEnName());
+					obj.add(inquiry.getCode());
 					sms.setParams(obj);
 					for (PurchaseInquiryItem inquiryItem : inquiry.getInquiryItems()) {
 						if (null != inquiryItem.getVendUU() && !enUUs.contains(inquiryItem.getVendUU())) {
 							// 查找业务员邮箱
-							String userEmailSql = "select distinct us.user_email useremail from sec$users us " +
+							String userEmailSql = "select distinct us.user_email ememail from sec$users us " +
 									" left join sec$userrole ur on us.user_uu = ur.user_uu left join sec$roles sr " +
 									" on ur.role_id = sr.role_id where sr.role_desc = '业务员' and us.user_email is not null " +
-									" and sr.role_enuu = " + inquiryItem.getVendUU();
-							List<String> userEmails = commonDao.query(userEmailSql, String.class);
-							String userTelSql = "select distinct us.user_tel usertel from sec$users us " +
+									" and sr.role_enuu = " + inquiryItem.getVendUU() + " and us.user_uu in (" +
+									"select pd_useruu from purc$distribute where pd_vdid = (" +
+									"select ve_id from purc$vendors where ve_myenuu = " + inquiry.getEnUU() + " and ve_vendenuu = " + inquiryItem.getVendUU() + "))";
+							List<UserInfo> userEmails = commonDao.query(userEmailSql, UserInfo.class);
+							String userTelSql = "select distinct us.user_tel emphone from sec$users us " +
 									" left join sec$userrole ur on us.user_uu = ur.user_uu left join sec$roles sr " +
 									" on ur.role_id = sr.role_id where sr.role_desc = '业务员' and us.user_tel is not null " +
-									" and sr.role_enuu = " + inquiryItem.getVendUU();
-							List<String> userTels = commonDao.query(userTelSql, String.class);
+									" and sr.role_enuu = " + inquiryItem.getVendUU() + " and us.user_uu in (" +
+									"select pd_useruu from purc$distribute where pd_vdid = (" +
+									"select ve_id from purc$vendors where ve_myenuu = " + inquiry.getEnUU() + " and ve_vendenuu = " + inquiryItem.getVendUU() + "))";
+							List<UserInfo> userTels = commonDao.query(userTelSql, UserInfo.class);
 							// 发邮件
 							Map<String, Object> model = new HashMap<String, Object>();
 							Enterprise vendor = enterpriseDao.findOne(inquiryItem.getVendUU());
@@ -260,26 +275,50 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 								model.put("vendorname", "供应商");
 							}
 							model.put("custname", inquiry.getEnterprise().getEnName());
+							model.put("code", inquiry.getCode());
 							model.put("date", DateFormatUtils.DATE_FORMAT.format(new Date()));
-							for (String userEmail : userEmails) {
-								String emailRegex = "\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}";
-								if (Pattern.matches(emailRegex, userEmail)) {
+							// 不存在被分配客户的业务员则添加系统管理员
+							if (CollectionUtils.isEmpty(userEmails) && CollectionUtils.isEmpty(userTels)) {
+								Enterprise enterprise = enterpriseDao.findOne(inquiryItem.getVendUU());
+								if (null != enterprise) {
+									User admin = userDao.findOne(enterprise.getEnAdminuu());
+									if (null != admin) {
+										UserInfo adminInfo = new UserInfo(admin);
+										userEmails.add(adminInfo);
+										userTels.add(adminInfo);
+									}
+								}
+							}
+							for (UserInfo userEmail : userEmails) {
+								if (Pattern.matches(EMAIL_REGEXP, userEmail.getEmemail())) {
 									try {
-										mailService.send(messageConf.getTplInquiryForB2B(), userEmail, model);
+										// 调用自动询价消息模版id
+										mailService.send(messageConf.getTplAutoInquiryForB2B(), userEmail.getEmemail(), model);
+										System.out.println("发送邮件成功:" + JSON.toJSON(userEmail));
+										// 线程内无法访问Systemsession,会报nullPoint,采用存储过程
+//										usageLogger.log("询价发送邮件", "企业UU:" + inquiry.getEnUU() + ",单号:" +inquiry.getCode() +" 发送邮件成功", "询价发送邮件成功");
+										noticeDao.saveErpLog(userName, userIp, enUU, userUU, "发送询价单通知邮件", "发送成功,询价单号" + inquiry.getCode());
 									} catch (Exception e) {
-										usageLogger.log("询价发送邮件", "企业UU:" + inquiry.getEnUU() + ",单号:" +inquiry.getCode() +" 发送邮件失败", "询价发送邮件出错");
+//										usageLogger.log("询价发送邮件", "企业UU:" + inquiry.getEnUU() + ",单号:" +inquiry.getCode() +" 发送邮件失败", "询价发送邮件出错");
+										noticeDao.saveErpLog(userName, userIp, enUU, userUU, "发送询价单通知邮件", "发送失败,询价单号" + inquiry.getCode());
+										e.printStackTrace();
 									}
 								}
 							}
 							// 发短信
-							for (String userTel : userTels) {
-								if(userTel.matches(TEL_REGEXP)) {//手机号判断
+							for (UserInfo userTel : userTels) {
+								if(null != userTel.getEmphone() && userTel.getEmphone().matches(TEL_REGEXP)) {//手机号判断
                                     try {
-                                        sms.setReceiver(userTel);
-                                        sms.setTemplateId(messageConf.getMsgInquiryForB2B());
+                                        sms.setReceiver(userTel.getEmphone());
+                                        sms.setTemplateId(messageConf.getMsgAutoInquiryForB2B());
                                         HttpUtil.sendPost(messageConf.getMessageUrl(), FlexJsonUtils.toJsonDeep(sms));
+//										usageLogger.log("询价发送短信", "企业UU:" + inquiry.getEnUU() + ",单号:" +inquiry.getCode() +"短信发送成功", "询价发送短信成功");
+
+										noticeDao.saveErpLog(userName, userIp, enUU, userUU, "发送询价单通知短信", "发送成功,询价单号" + inquiry.getCode());
                                     } catch (Exception e) {
-                                        usageLogger.log("询价发送短信", "企业UU:" + inquiry.getEnUU() + ",单号:" +inquiry.getCode() +"短信发送失败", "询价发送短信出错");
+										noticeDao.saveErpLog(userName, userIp, enUU, userUU, "发送询价单通知短信", "发送失败,询价单号" + inquiry.getCode());
+//                                        usageLogger.log("询价发送短信", "企业UU:" + inquiry.getEnUU() + ",单号:" +inquiry.getCode() +"短信发送失败", "询价发送短信出错");
+										e.printStackTrace();
                                     }
                                 }
 							}

+ 32 - 2
src/main/java/com/uas/platform/b2b/support/MessageConf.java

@@ -47,19 +47,33 @@ public class MessageConf {
 	private String msgInvitationForERP;
 
 	/**
-	 * 邮件模版id:询价单提醒供应商报价
+	 * 邮件模版id:公共询价单提醒供应商报价
 	 * @return
 	 */
 	@Value("#{message.tplInquiryForB2B}")
 	private String tplInquiryForB2B;
 
 	/**
-	 * 短信模版id:询价单提醒供应商报价
+	 * 邮件模版id:自动询价单提醒供应商报价
+	 * @return
+	 */
+	@Value("#{message.tplAutoInquiryForB2B}")
+	private String tplAutoInquiryForB2B;
+
+	/**
+	 * 短信模版id:公共询价单提醒供应商报价
 	 * @return
 	 */
 	@Value("#{message.msgInquiryForB2B}")
 	private String msgInquiryForB2B;
 
+	/**
+	 * 短信模版id:自动询价单提醒供应商报价
+	 * @return
+	 */
+	@Value("#{message.msgAutoInquiryForB2B}")
+	private String msgAutoInquiryForB2B;
+
 	/**
 	 * 短信接口地址
 	 * @return
@@ -138,4 +152,20 @@ public class MessageConf {
 	public void setMessageUrl(String messageUrl) {
 		this.messageUrl = messageUrl;
 	}
+
+	public String getTplAutoInquiryForB2B() {
+		return tplAutoInquiryForB2B;
+	}
+
+	public void setTplAutoInquiryForB2B(String tplAutoInquiryForB2B) {
+		this.tplAutoInquiryForB2B = tplAutoInquiryForB2B;
+	}
+
+	public String getMsgAutoInquiryForB2B() {
+		return msgAutoInquiryForB2B;
+	}
+
+	public void setMsgAutoInquiryForB2B(String msgAutoInquiryForB2B) {
+		this.msgAutoInquiryForB2B = msgAutoInquiryForB2B;
+	}
 }

+ 14 - 1
src/main/java/com/uas/platform/b2b/temporary/model/UserInfo.java

@@ -1,5 +1,7 @@
 package com.uas.platform.b2b.temporary.model;
 
+import com.uas.platform.b2b.model.User;
+
 import java.io.Serializable;
 
 /**
@@ -23,7 +25,18 @@ public class UserInfo implements Serializable {
 	private String ememail;
 	private Long emimid;
 	private String emsex;
-	public Long getEmcode() {
+
+	public UserInfo (){
+
+	}
+
+    public UserInfo(User user) {
+    	this.emname = user.getUserName();
+    	this.ememail = user.getUserEmail();
+    	this.emphone = user.getUserTel();
+    }
+
+    public Long getEmcode() {
 		return emcode;
 	}
 

+ 2 - 0
src/main/resources/dev/message.properties

@@ -7,5 +7,7 @@ msgInvitationForERP=5081e29f-47af-4556-a560-9213af11753f
 
 ## messageConfig
 tplInquiryForB2B=bc60d592-9651-4ca1-9305-0852fc7c4101
+tplAutoInquiryForB2B=fe01ead8-1e26-43d9-8278-4f8a9b4b343c
 msgInquiryForB2B=629edeb3-a87e-4a40-a5e5-51d9ae734f1b
+msgAutoInquiryForB2B=8cf71d56-09bb-4d60-993e-ed87ce72ec3b
 messageUrl=http://message.ubtob.com/sms/send

+ 2 - 0
src/main/resources/prod/message.properties

@@ -7,5 +7,7 @@ msgInvitationForERP=5081e29f-47af-4556-a560-9213af11753f
 
 ## messageConfig
 tplInquiryForB2B=bc60d592-9651-4ca1-9305-0852fc7c4101
+tplAutoInquiryForB2B=fe01ead8-1e26-43d9-8278-4f8a9b4b343c
 msgInquiryForB2B=629edeb3-a87e-4a40-a5e5-51d9ae734f1b
+msgAutoInquiryForB2B=8cf71d56-09bb-4d60-993e-ed87ce72ec3b
 messageUrl=http://message.ubtob.com/sms/send

+ 2 - 0
src/main/resources/test/message.properties

@@ -7,5 +7,7 @@ msgInvitationForERP=5081e29f-47af-4556-a560-9213af11753f
 
 ## messageConfig
 tplInquiryForB2B=bc60d592-9651-4ca1-9305-0852fc7c4101
+tplAutoInquiryForB2B=fe01ead8-1e26-43d9-8278-4f8a9b4b343c
 msgInquiryForB2B=629edeb3-a87e-4a40-a5e5-51d9ae734f1b
+msgAutoInquiryForB2B=8cf71d56-09bb-4d60-993e-ed87ce72ec3b
 messageUrl=http://message.ubtob.com/sms/send