Browse Source

发货单保存事件-添加索引词库,推送

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@1044 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
suntg 11 years ago
parent
commit
0e27bdd689

+ 72 - 0
src/main/java/com/uas/platform/b2b/event/SaleSendSaveEvent.java

@@ -0,0 +1,72 @@
+package com.uas.platform.b2b.event;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.util.CollectionUtils;
+
+import com.uas.platform.b2b.core.util.SearchKeyUtils;
+import com.uas.platform.b2b.model.SaleSend;
+import com.uas.platform.b2b.model.SaleSendIndex;
+import com.uas.platform.b2b.model.SaleSendItem;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.XingePusher;
+
+/**
+ * 发货单保存事件
+ * 
+ * @author suntg
+ * 
+ */
+public class SaleSendSaveEvent extends SaveEvent<SaleSendIndex, SaleSend> {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public SaleSendSaveEvent(List<SaleSend> savedList) {
+		super(savedList);
+	}
+
+	@Override
+	public List<SaleSendIndex> split(SaleSend saved) {
+		long key = saved.getId();
+		long enUU = saved.getEnUU();
+		List<SaleSendIndex> indexes = new ArrayList<SaleSendIndex>();
+		// 发货单号(匹配完整的编号)
+		indexes.add(new SaleSendIndex(enUU, key, saved.getCode()));
+		// 客户名称(匹配两个字以上的客户名称关键字)、客户UU号
+		if (CollectionUtils.isEmpty(saved.getSendItems())) {
+			indexes.addAll(SaleSendIndex.format(
+					enUU,
+					key,
+					SearchKeyUtils.splitToKeys(saved.getSendItems().toArray(new SaleSendItem[1])[0]
+							.getOrderItem().getOrder().getEnterprise().getEnName(), false)));
+			indexes.add(new SaleSendIndex(enUU, key, saved.getCustUU().toString()));
+		}
+		// 物料(匹配完整的物料编号、两个字以上的物料名称及规格关键字)
+		for (SaleSendItem item : saved.getSendItems()) {
+			indexes.add(new SaleSendIndex(enUU, key, item.getOrderItem().getProduct().getCode()));
+			indexes.addAll(SaleSendIndex.format(enUU, key,
+					SearchKeyUtils.splitToKeys(item.getOrderItem().getProduct().getTitle(), false)));
+			indexes.addAll(SaleSendIndex.format(enUU, key,
+					SearchKeyUtils.splitToKeys(item.getOrderItem().getProduct().getSpec(), false)));
+		}
+		return indexes;
+	}
+
+	@Override
+	public void pusher(List<SaleSend> savedList) {
+		// 发送推送消息
+		for(SaleSend saleSend : savedList) {
+			if (saleSend.getCustUserUU() != null) {
+				XingePusher.pushSingleAccountAndroid(saleSend.getCustUserUU().toString(), "供应商发货了", "供应商:"
+						+ SystemSession.getUser().getEnterprise().getEnName(), null);
+				XingePusher.pushSingleAccountIOS(saleSend.getCustUserUU().toString(), "供应商发货了" + "  供应商:"
+						+ SystemSession.getUser().getEnterprise().getEnName());
+			}
+		}
+	}
+
+}

+ 96 - 0
src/main/java/com/uas/platform/b2b/model/SaleSendIndex.java

@@ -0,0 +1,96 @@
+package com.uas.platform.b2b.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * 发货单关键词库
+ * 
+ * @author yingp
+ *
+ */
+@Table(name = "sale$send$index", indexes = { @Index(name = "sale$send$index_keyword", columnList = "index_enuu,index_word") })
+@Entity
+public class SaleSendIndex {
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sale$send$index_gen")
+	@SequenceGenerator(name = "sale$send$index_gen", sequenceName = "sale$send$index_seq", allocationSize = 1)
+	@Column(name = "index_id")
+	private Long id;
+
+	/**
+	 * 所属企业UU
+	 */
+	@Column(name = "index_enuu")
+	private Long enUU;
+
+	/**
+	 * 验退单ID
+	 */
+	@Column(name = "index_key")
+	private Long key;
+
+	/**
+	 * 关键词
+	 */
+	@Column(name = "index_word")
+	private String keyword;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public Long getKey() {
+		return key;
+	}
+
+	public void setKey(Long key) {
+		this.key = key;
+	}
+
+	public String getKeyword() {
+		return keyword;
+	}
+
+	public void setKeyword(String keyword) {
+		this.keyword = keyword;
+	}
+	
+	public SaleSendIndex(long enUU, long key, String keyword) {
+		this.enUU = enUU;
+		this.key = key;
+		this.keyword = keyword;
+	}
+
+	public static List<SaleSendIndex> format(long enUU, long key, Set<String> keywords) {
+		List<SaleSendIndex> indexes = new ArrayList<SaleSendIndex>();
+		for (String keyword : keywords) {
+			indexes.add(new SaleSendIndex(enUU, key, keyword));
+		}
+		return indexes;
+	}
+
+}

+ 10 - 11
src/main/java/com/uas/platform/b2b/service/impl/PurchaseNoticeServiceImpl.java

@@ -24,6 +24,7 @@ import com.uas.platform.b2b.dao.SaleSendDao;
 import com.uas.platform.b2b.dao.SaleSendItemDao;
 import com.uas.platform.b2b.erp.model.PurchaseNotify;
 import com.uas.platform.b2b.event.PurchaseNoticeSaveEvent;
+import com.uas.platform.b2b.event.SaleSendSaveEvent;
 import com.uas.platform.b2b.model.PurchaseNotice;
 import com.uas.platform.b2b.model.PurchaseOrder;
 import com.uas.platform.b2b.model.SaleSend;
@@ -234,15 +235,14 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 				item.setPrice(notice.getOrderItem().getPrice());
 				item.setSend(send);
 			}
-			saleSendItemDao.save(send.getSendItems());
+			List<SaleSendItem> sendItems = saleSendItemDao.save(send.getSendItems());
 			notice.setEndQty(endQty);
 			notice.setStatus((short) (endQty == notice.getQty() ? Status.REPLIED.value() : Status.NOT_REPLY.value()));
 			purchaseNoticeDao.save(notice);
-			if (send.getCustUserUU() != null) {
-				XingePusher.pushSingleAccountAndroid(send.getCustUserUU().toString(), "供应商发货了", "供应商:"
-						+ SystemSession.getUser().getEnterprise().getEnName(), null);
-				XingePusher.pushSingleAccountIOS(send.getCustUserUU().toString(), "供应商发货了" + "  供应商:"
-						+ SystemSession.getUser().getEnterprise().getEnName());
+			if(!CollectionUtils.isEmpty(sendItems)) {
+				List<SaleSend> saleSends = new ArrayList<SaleSend>();
+				saleSends.add(sendItems.get(0).getSend());
+				ContextUtils.publishEvent(new SaleSendSaveEvent(saleSends));
 			}
 		} else {
 			throw new IllegalOperatorException("请对有效的送货提醒发货!");
@@ -296,11 +296,10 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 				notice.setStatus((short) (endQty == notice.getQty() ? Status.REPLIED.value() : Status.NOT_REPLY.value()));
 				purchaseNoticeDao.save(notice);
 			}
-			if (saleSend.getCustUserUU() != null) {
-				XingePusher.pushSingleAccountAndroid(saleSend.getCustUserUU().toString(), "供应商发货了", "供应商:"
-						+ SystemSession.getUser().getEnterprise().getEnName(), null);
-				XingePusher.pushSingleAccountIOS(saleSend.getCustUserUU().toString(), "供应商发货了" + "  供应商:"
-						+ SystemSession.getUser().getEnterprise().getEnName());
+			if(!CollectionUtils.isEmpty(sendItems)) {
+				List<SaleSend> saleSends = new ArrayList<SaleSend>();
+				saleSends.add(sendItems.get(0).getSend());
+				ContextUtils.publishEvent(new SaleSendSaveEvent(saleSends));
 			}
 		}
 		return null;