|
|
@@ -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();
|
|
|
}
|
|
|
}
|