Browse Source

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

hejq 8 years ago
parent
commit
404dbfd7a5

+ 5 - 3
src/main/java/com/uas/platform/b2b/erp/controller/PublicInquiryController.java

@@ -3,11 +3,13 @@ package com.uas.platform.b2b.erp.controller;
 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.support.SystemSession;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
@@ -38,7 +40,7 @@ public class PublicInquiryController {
     public void saveInquiry(@RequestParam("data") String data) throws UnsupportedEncodingException {
         String jsonStr = URLDecoder.decode(data, "UTF-8");
         List<BatchInquiry> inquiries = FlexJsonUtils.fromJsonArray(jsonStr, BatchInquiry.class);
-        publicInquiryService.save(publicInquiryService.convertInquiry(inquiries), SystemSession.getUser().getEnterprise().getUu());
+        publicInquiryService.save(publicInquiryService.convertInquiry(inquiries));
         logger.log("erp公共询价单", "erp上传公共询价单", inquiries.size());
 
     }

+ 1 - 1
src/main/java/com/uas/platform/b2b/erp/service/PublicInquiryService.java

@@ -23,7 +23,7 @@ public interface PublicInquiryService {
      *
      * @param inquiries
      */
-    void save(List<PurcInquiry> inquiries, Long enuu);
+    void save(List<PurcInquiry> inquiries);
 
     /**
      * erp提交状态后,平台单据停止报价

+ 6 - 25
src/main/java/com/uas/platform/b2b/erp/service/impl/PublicInquiryServiceImpl.java

@@ -1,12 +1,13 @@
 package com.uas.platform.b2b.erp.service.impl;
 
+import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.core.util.ThreadUtils;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.BatchInProduct;
 import com.uas.platform.b2b.erp.model.BatchInquiry;
-import com.uas.platform.b2b.erp.model.UserAndEnterprise;
 import com.uas.platform.b2b.erp.service.PublicInquiryService;
+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;
@@ -14,10 +15,7 @@ import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
-import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -93,7 +91,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
     }
 
     @Override
-    public void save(final List<PurcInquiry> inquiries, final Long enuu) {
+    public void save(final List<PurcInquiry> inquiries) {
         // 采用并行处理
         ThreadUtils.task(new Runnable() {
             @Override
@@ -120,7 +118,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
             @Override
             public void run() {
                 //消息提醒
-                messageList(inquiries, enuu);
+                messageList(inquiries);
             }
         });
 
@@ -131,29 +129,12 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      *
      * @param inquiries
      */
-    private void messageList(final List<PurcInquiry> inquiries, final Long enuu) {
+    private void messageList(final List<PurcInquiry> inquiries) {
         ThreadTask.getInstance().execute(new Runnable() {
             @Override
             public void run() {
                 if(!CollectionUtils.isEmpty(inquiries)) {
-                    for(PurcInquiry inquiry : inquiries) {
-                        if(!CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
-                            for(PurcInquiryItem item : inquiry.getInquiryItems()) {
-                                //先取出企业uu
-                                String sql = "select distinct pr_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 = " + enuu;
-                                List<Object[]> enuus = commonDao.query(sql, Object[].class);
-                                // enuus存在才进行人员选择
-                                if(enuus.size() > 0) {
-                                    MapSqlParameterSource parameters = new MapSqlParameterSource("enuus", enuus);
-                                    // 不要直接拼SQL,防参数过多出错
-                                    NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
-                                    List<UserAndEnterprise> useruus =  namedParameterJdbcTemplate.query(
-                                            "select user_uu useruu from sec$userrole u left join sec$roles r on u.role_id = r.role_id where rrole_desc = '业务员' and r.role_enuu in (:enuus)",
-                                            parameters, new BeanPropertyRowMapper<UserAndEnterprise>(UserAndEnterprise.class));
-                                }
-                            }
-                        }
-                    }
+                    ContextUtils.publishEvent(new PurcInquirySaveReleaseEvent(inquiries));
                 }
             }
         });

+ 68 - 0
src/main/java/com/uas/platform/b2b/event/PurcInquirySaveReleaseEvent.java

@@ -0,0 +1,68 @@
+package com.uas.platform.b2b.event;
+
+import com.uas.platform.b2b.model.PagingRelease;
+import com.uas.platform.b2b.model.PagingReleaseDetail;
+import com.uas.platform.b2b.model.PurcInquiry;
+import com.uas.platform.core.model.Constant;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 公共询价单保存时生成消息事件
+ *
+ * Created by dongbw
+ *
+ */
+public class PurcInquirySaveReleaseEvent extends SaveReleaseEvent<PagingReleaseDetail, PurcInquiry> {
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public PurcInquirySaveReleaseEvent(List<PurcInquiry> savedList) {
+        super(savedList);
+    }
+
+    /**
+     * 生成对应消息记录
+     *
+     * @param purcInquiry
+     * @return
+     */
+    @Override
+    public PagingReleaseDetail release(PurcInquiry purcInquiry) {
+        Long emUU = purcInquiry.getRecorderUU();
+        if (null == emUU) {
+            emUU = 1L;
+        }
+        String emName = purcInquiry.getRecorder();
+        Long enUU = purcInquiry.getEnUU();
+        Date date = new Date();
+        String codeValue = purcInquiry.getCode();
+        String from = "ERP";
+        Short isReply = Constant.NO;
+        String category = "sale";
+        String table = "purc$puinquiry";
+        Long sourceId = purcInquiry.getId();
+        Short orderStatus = 200;
+        Short toVendor = Constant.YES;
+        String type = "新增公共询价单";
+        String title = "B2B商务提醒";
+        // 收到的客户采购询价单的详情url
+        String url = "#/baseInfo/inquiryList/" + purcInquiry.getId();
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        String endDate = formatter.format(purcInquiry.getEndDate());
+        String context = purcInquiry.getEnterprise().getEnName() + "的" + emName + "给您发布了一张新的公共采购询价单(" + codeValue + ")!报价截止日期:" + endDate;
+        PagingRelease release = new PagingRelease(emUU, emName, enUU, date, codeValue, from, title, context, type, isReply, category, table, sourceId, orderStatus, toVendor, url);
+        // 公共询价无供应商UU
+        Long vendUU = 1L;
+        Long vendUserUU = 1L;
+        String vendUserName = "业务员";
+        PagingReleaseDetail releaseDetail = new PagingReleaseDetail(vendUU, vendUserUU, vendUserName);
+        releaseDetail.setPagingRelease(release);
+        return releaseDetail;
+    }
+}

+ 95 - 44
src/main/java/com/uas/platform/b2b/listener/MessageListener.java

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

+ 2 - 0
src/main/java/com/uas/platform/b2b/model/PurcInquiry.java

@@ -2,6 +2,7 @@ package com.uas.platform.b2b.model;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 import java.util.Set;
 
 import javax.persistence.CascadeType;
@@ -403,4 +404,5 @@ public class PurcInquiry implements Serializable {
 	public void setErpdate(Date erpdate) {
 		this.erpdate = erpdate;
 	}
+
 }