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

模具询价单作废传到b2b,采购单结案传到b2b,产生消息

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@8073 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
dongbw 9 лет назад
Родитель
Сommit
3501a2a39d

+ 27 - 12
src/main/java/com/uas/platform/b2b/erp/controller/InquiryController.java

@@ -1,17 +1,5 @@
 package com.uas.platform.b2b.erp.controller;
 
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-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.ResponseBody;
-
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.InquiryDecide;
 import com.uas.platform.b2b.erp.model.InquiryDetail;
@@ -24,6 +12,18 @@ import com.uas.platform.b2b.service.PurchaseInquiryService;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.util.ArrayUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+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.ResponseBody;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 对买家ERP的数据接口<br>
@@ -115,6 +115,21 @@ public class InquiryController {
 		logger.log("询价单", "修改询价单报价信息状态", decides.size());
 	}
 
+	/**
+	 * 买家ERP作废询价单后,修改平台里面的状态
+	 *
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/invalid", method = RequestMethod.POST)
+	@ResponseBody
+	public void onReplyInvalid(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		String jsonStr = URLDecoder.decode(data, "UTF-8");
+		List<Inquiry> inquiries = FlexJsonUtils.fromJsonArray(jsonStr, CriteriaBuilder.In.class);
+		purchaseInquiryService.onReplyInvalid(inquiries);
+		logger.log("询价单", "作废询价单", inquiries.size());
+	}
+
 	/**
 	 * 买家ERP的附件
 	 * 

+ 5 - 12
src/main/java/com/uas/platform/b2b/erp/model/Inquiry.java

@@ -1,19 +1,11 @@
 package com.uas.platform.b2b.erp.model;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
+import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.model.Constant;
 import org.apache.commons.collections.CollectionUtils;
 
-import com.uas.platform.b2b.model.EnterpriseInfo;
-import com.uas.platform.b2b.model.PurchaseInquiry;
-import com.uas.platform.b2b.model.PurchaseInquiryItem;
-import com.uas.platform.b2b.model.SaleQuotation;
-import com.uas.platform.b2b.model.SaleQuotationItem;
-import com.uas.platform.b2b.support.SystemSession;
+import java.util.*;
 
 /**
  * 买家ERP系统的采购询价单
@@ -180,6 +172,7 @@ public class Inquiry {
 		inquiry.setEnvironment(this.in_environment);
 		inquiry.setSourceId(this.in_id);
 		inquiry.setPriceType(this.in_pricetype);
+		inquiry.setIsOpen(Constant.NO); // erp传过来的询价单,默认为非公开
 		if (!CollectionUtils.isEmpty(this.details)) {
 			Set<PurchaseInquiryItem> inquiryItems = new HashSet<PurchaseInquiryItem>();
 			for (InquiryDetail detail : details) {

+ 50 - 0
src/main/java/com/uas/platform/b2b/event/PurchaseInquiryItemInvalidReleaseEvent.java

@@ -0,0 +1,50 @@
+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.PurchaseInquiryItem;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * erp用户作废询价单时生成消息事件
+ *
+ * Created by dongbw
+ *
+ */
+public class PurchaseInquiryItemInvalidReleaseEvent extends SaveReleaseEvent<PagingReleaseDetail, PurchaseInquiryItem> {
+
+    public PurchaseInquiryItemInvalidReleaseEvent(List<PurchaseInquiryItem> savedList) {
+        super(savedList);
+    }
+
+    /**
+     * 生成对应消息记录
+     *
+     * @param inquiryItem
+     * @return
+     */
+    @Override
+    public PagingReleaseDetail release(PurchaseInquiryItem inquiryItem) {
+        //TODO erp作废询价单之后,触发新增消息事件。
+        Long emUU = inquiryItem.getUserUU();
+        String emName = inquiryItem.getInquiry().getRecorder();
+        Long enUU = inquiryItem.getInquiry().getEnUU();
+        Date date = new Date();
+        String codeValue = inquiryItem.getInquiry().getCode();
+        String from = "B2B";
+        if (inquiryItem.getInquiry().getSourceId() != null) { // erp传到平台的单据,包含erpId字段记录来源
+            from = "ERP";
+        }
+        String type = "回复询价单";
+        String title = "B2B商务提醒";
+        String context = inquiryItem.getInquiry().getEnterprise().getEnName() + "的" + emName + "作废了您的报价,询价单号:" + codeValue + "!";
+        PagingRelease release = new PagingRelease(emUU, emName, enUU, date, codeValue, from, title, context, type);
+        Long vendUU = inquiryItem.getVendUU();
+        Long vendUserUU = inquiryItem.getVendUserUU();
+        PagingReleaseDetail releaseDetail = new PagingReleaseDetail(vendUU, vendUserUU);
+        releaseDetail.setPagingRelease(release);
+        return releaseDetail;
+    }
+}

+ 54 - 0
src/main/java/com/uas/platform/b2b/event/PurchaseInquiryItemReplyReleaseEvent.java

@@ -0,0 +1,54 @@
+package com.uas.platform.b2b.event;
+
+import com.uas.platform.b2b.dao.EnterpriseDao;
+import com.uas.platform.b2b.dao.UserDao;
+import com.uas.platform.b2b.model.*;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 回复询价单时生成消息事件
+ * Created by dongbw
+ */
+public class PurchaseInquiryItemReplyReleaseEvent extends SaveReleaseEvent<PagingReleaseDetail, PurchaseInquiryItem> {
+
+    @Autowired
+    private UserDao userDao;
+
+    @Autowired
+    private EnterpriseDao enterpriseDao;
+
+    public PurchaseInquiryItemReplyReleaseEvent(List<PurchaseInquiryItem> savedList) {
+        super(savedList);
+    }
+
+    /**
+     * 生成对应消息记录
+     *
+     * @param inquiryItem
+     * @return
+     */
+    @Override
+    public PagingReleaseDetail release(PurchaseInquiryItem inquiryItem) {
+        // 回复订单的话,跟新增订单是相反的,所以接收人是user,发出人是vendUser
+        Long emUU = inquiryItem.getVendUserUU();
+        User vendUser = userDao.findOne(emUU);
+        String emName = vendUser.getUserName();
+        Long vendUU = inquiryItem.getVendUU();
+        Date date = new Date();
+        String codeValue = inquiryItem.getInquiry().getCode();
+        String from = "B2B";
+        String type = "回复询价单";
+        String title = "B2B商务提醒";
+        Enterprise vendor = enterpriseDao.findOne(vendUU);
+        String context = vendor.getEnName() + "的" + emName + "回复了询价单(" + codeValue + ")的报价,请及时确认!";
+        PagingRelease release = new PagingRelease(emUU, emName, vendUU, date, codeValue, from, title, context, type);
+        Long enUU = inquiryItem.getInquiry().getEnUU();
+        Long userUU = inquiryItem.getUserUU();
+        PagingReleaseDetail releaseDetail = new PagingReleaseDetail(enUU, userUU);
+        releaseDetail.setPagingRelease(release);
+        return releaseDetail;
+    }
+}

+ 1 - 0
src/main/java/com/uas/platform/b2b/event/PurchaseInquiryItemSaveReleaseEvent.java

@@ -15,6 +15,7 @@ import java.util.List;
  */
 public class PurchaseInquiryItemSaveReleaseEvent extends SaveReleaseEvent<PagingReleaseDetail, PurchaseInquiryItem> {
 
+
     public PurchaseInquiryItemSaveReleaseEvent(List<PurchaseInquiryItem> savedList) {
         super(savedList);
     }

+ 55 - 0
src/main/java/com/uas/platform/b2b/event/PurchaseOrderEndReleaseEvent.java

@@ -0,0 +1,55 @@
+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.PurchaseOrderItem;
+import com.uas.platform.core.model.Constant;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 采购订单保存时生成消息事件
+ * Created by dongbw
+ * 17/03/23 14:06.
+ */
+public class PurchaseOrderEndReleaseEvent extends SaveReleaseEvent<PagingReleaseDetail, PurchaseOrderItem> {
+
+    public PurchaseOrderEndReleaseEvent(List<PurchaseOrderItem> savedList) {
+        super(savedList);
+    }
+
+    /**
+     * 生成对应消息记录
+     *
+     * @param item
+     * @return
+     */
+    @Override
+    public PagingReleaseDetail release(PurchaseOrderItem item) {
+        //TODO 结案或反结案订单之后,触发新增消息事件。
+        Long emUU = item.getOrder().getUserUU();
+        String emName = item.getOrder().getUser().getUserName();
+        Long enUU = item.getOrder().getEnUU();
+        Date date = new Date();
+        String codeValue = item.getOrder().getCode();
+        String from = "B2B";
+        if (item.getOrder().getErpId() != null) { // erp传到平台的单据,包含erpId字段记录来源
+            from = "ERP";
+        }
+        String type = "新增采购订单";
+        String title = "B2B商务提醒";
+        String context = "";
+        if (item.getEnd() == Constant.YES) {
+            context = item.getOrder().getEnterprise().getEnName() + "的" + emName + "结案了采购单(" + codeValue + "),请及时确认!";
+        } else if (item.getEnd() == Constant.NO) {
+            context = item.getOrder().getEnterprise().getEnName() + "的" + emName + "反结案了采购单(" + codeValue + "),请及时确认!";
+        }
+        PagingRelease release = new PagingRelease(emUU, emName, enUU, date, codeValue, from, title, context, type);
+        Long vendUU = item.getOrder().getVendUU();
+        Long vendUserUU = item.getOrder().getVendUserUU();
+        PagingReleaseDetail releaseDetail = new PagingReleaseDetail(vendUU, vendUserUU);
+        releaseDetail.setPagingRelease(release);
+        return releaseDetail;
+    }
+}

+ 2 - 1
src/main/java/com/uas/platform/b2b/mobile/service/impl/MobileReleaseServiceImpl.java

@@ -213,7 +213,8 @@ public class MobileReleaseServiceImpl implements MobileReleaseService {
                 if (vendUser.getUserIMId() != null) {
                     params.put("master", vendor.getEnName());//账套 公司名称
                     params.put("userid", String.valueOf(vendUser.getUserIMId()));//推送目标用户
-                    params.put("title", releaseDetail.getPagingRelease().getTitle());//推送标题
+                    String title = releaseDetail.getPagingRelease().getTitle() + '-' + releaseDetail.getPagingRelease().getType();
+                    params.put("title", title);//推送标题
                     params.put("content", releaseDetail.getPagingRelease().getContext());//正文
                     params.put("enUU", String.valueOf(releaseDetail.getVendUU()));//UU号
 //                params.put("masterId", masterId);//账套ID

+ 17 - 21
src/main/java/com/uas/platform/b2b/model/PurchaseInquiryItem.java

@@ -1,30 +1,14 @@
 package com.uas.platform.b2b.model;
 
-import java.util.Date;
-import java.util.Set;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.OrderBy;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.springframework.util.CollectionUtils;
-
 import com.alibaba.fastjson.annotation.JSONField;
 import com.uas.platform.b2b.core.util.DateUtils;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.springframework.util.CollectionUtils;
+
+import javax.persistence.*;
+import java.util.*;
 
 /**
  * 平台里面,以供应商的角度来查看采购询价单明细
@@ -537,4 +521,16 @@ public class PurchaseInquiryItem {
 		}
 		return this.status == Status.NOT_REPLY.value();
 	}
+
+    public static List<PurchaseInquiryItem> distinct(List<PurchaseInquiryItem> purcitems) {
+		List<PurchaseInquiryItem> inquiryItems = new ArrayList<>();
+		Set<Long> keys = new HashSet<>();
+		for (PurchaseInquiryItem item : purcitems) {
+			if (!keys.contains(item.getInquiry().getId())) {
+				inquiryItems.add(item);
+				keys.add(item.getInquiry().getId());
+			}
+		}
+		return inquiryItems;
+    }
 }

+ 1 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderAllItem.java

@@ -383,4 +383,5 @@ public class PurchaseOrderAllItem {
 		}
 		return orders;
 	}
+
 }

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

@@ -342,7 +342,19 @@ public class PurchaseOrderItem {
 		this.factory = factory;
 	}
 
-	public static List<PurchaseOrder> ditinct(List<PurchaseOrderItem> items) {
+	public static List<PurchaseOrderItem> distinctItem(List<PurchaseOrderItem> items) {
+		List<PurchaseOrderItem> orderItems = new ArrayList<>();
+		Set<Long> keys = new HashSet<>();
+		for (PurchaseOrderItem item : items) {
+			if (!keys.contains(item.getOrder().getId())) {
+				orderItems.add(item);
+				keys.add(item.getOrder().getId());
+			}
+		}
+		return orderItems;
+	}
+
+	public static List<PurchaseOrder> distinct(List<PurchaseOrderItem> items) {
 		List<PurchaseOrder> orders = new ArrayList<>();
 		Set<Long> keys = new HashSet<>();
 		for (PurchaseOrderItem item : items) {
@@ -353,4 +365,5 @@ public class PurchaseOrderItem {
 		}
 		return orders;
 	}
+
 }

+ 7 - 0
src/main/java/com/uas/platform/b2b/service/PurchaseInquiryService.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2b.service;
 import java.util.Date;
 import java.util.List;
 
+import com.uas.platform.b2b.erp.model.Inquiry;
 import org.springframework.data.domain.Page;
 
 import com.uas.platform.b2b.erp.model.QuotationDown;
@@ -198,4 +199,10 @@ public interface PurchaseInquiryService {
 	 * @return
 	 */
 	public List<InquiryMessage> getMessageList();
+
+	/**
+	 *  修改作废状态
+	 * @param inquiries
+	 */
+    void onReplyInvalid(List<Inquiry> inquiries);
 }

+ 2 - 2
src/main/java/com/uas/platform/b2b/service/impl/PurcInquiryServiceImpl.java

@@ -184,7 +184,7 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
 				}
 				List<PurchaseInquiryItem> purcitems = purchaseInquiryItemDao.save(items);
 				// 触发事件产生消息
-				ContextUtils.publishEvent(new PurchaseInquiryItemSaveReleaseEvent(purcitems));
+				ContextUtils.publishEvent(new PurchaseInquiryItemSaveReleaseEvent(PurchaseInquiryItem.distinct(purcitems)));
 				if (purcitems.get(0).getId() != null) {
 					logger.log("询价单", "平台新增询价单", useruu, SystemSession.getUser().getIp());
 					PurcInquiry inquiry = inquiryDao.findOne(Long.valueOf(inquiryId.toString()));
@@ -237,7 +237,7 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
 		}
 		List<PurchaseInquiryItem> purcitems = purchaseInquiryItemDao.save(items);
 		// 触发事件,产生消息
-		ContextUtils.publishEvent(new PurchaseInquiryItemSaveReleaseEvent(purcitems));
+		ContextUtils.publishEvent(new PurchaseInquiryItemSaveReleaseEvent(PurchaseInquiryItem.distinct(purcitems)));
 		if (purcitems.get(0).getId() != null) {
 			inquiry = inquiryDao.findOne(id);
 			inquiry.setEnteryStatus(Status.ENABLED.value());

+ 40 - 5
src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java

@@ -2,11 +2,10 @@ package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.QuotationDown;
 import com.uas.platform.b2b.erp.model.QuotationDownDetail;
-import com.uas.platform.b2b.event.PurchaseInquiryItemDecideReleaseEvent;
-import com.uas.platform.b2b.event.PurchaseInquiryItemSaveEvent;
-import com.uas.platform.b2b.event.PurchaseInquiryItemSaveReleaseEvent;
+import com.uas.platform.b2b.event.*;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.PurchaseInquiryService;
@@ -66,7 +65,7 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 	public void save(List<PurchaseInquiryItem> inquiryItems) {
 		inquiryItems = purchaseInquiryItemDao.save(inquiryItems);
 		ContextUtils.publishEvent(new PurchaseInquiryItemSaveEvent(inquiryItems));
-		ContextUtils.publishEvent(new PurchaseInquiryItemSaveReleaseEvent(inquiryItems));
+		ContextUtils.publishEvent(new PurchaseInquiryItemSaveReleaseEvent(PurchaseInquiryItem.distinct(inquiryItems)));
 	}
 
 	@Override
@@ -258,7 +257,14 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 			XingePusher.pushByUserUU(userUU, "询价单回复",
 					"单号:" + item.getInquiry().getCode() + ",第" + item.getNumber() + "行", "", "");
 		}
-		return purchaseInquiryItemDao.save(inquiryItem);
+		PurchaseInquiryItem purchaseInquiryItem = purchaseInquiryItemDao.save(inquiryItem);
+		// 产生消息
+		if (purchaseInquiryItem.getSourceId() == null) { // b2b的询价单才产生消息,erp的询价单会在erp产生消息
+			List<PurchaseInquiryItem> inquiryItems = new ArrayList<>();
+			inquiryItems.add(purchaseInquiryItem);
+			ContextUtils.publishEvent(new PurchaseInquiryItemReplyReleaseEvent(inquiryItems));
+		}
+		return purchaseInquiryItem;
 	}
 
 	@Override
@@ -364,4 +370,33 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 		}
 		return messages;
 	}
+
+	@Override
+	public void onReplyInvalid(List<Inquiry> inquiries) {
+		Long enuu = SystemSession.getUser().getEnterprise().getUu();
+		for (Inquiry inquiry : inquiries) {
+			List<PurchaseInquiry> purchaseInquiries = purchaseInquiryDao.findByEnUUAndSourceId(enuu, inquiry.getIn_id());
+			if (!CollectionUtils.isEmpty(purchaseInquiries)) {
+				PurchaseInquiry purchaseInquiry = purchaseInquiries.get(0);
+				for (PurchaseInquiryItem item : purchaseInquiry.getInquiryItems()) {
+					item.setStatus((short)Status.DISABLED.value());
+					purchaseInquiryItemDao.save(item);
+				}
+				List<PurchaseInquiryItem> newInquiryItems = new ArrayList<>();
+				newInquiryItems.addAll(purchaseInquiry.getInquiryItems());
+				// 触发消息事件
+				ContextUtils.publishEvent(new PurchaseInquiryItemInvalidReleaseEvent(PurchaseInquiryItem.distinct(newInquiryItems)));
+				// 将客户处理报价结果推送通知供应商联系人UU号
+				for (PurchaseInquiryItem item : purchaseInquiry.getInquiryItems()) {
+					PurchaseInquiry inquiry1 = item.getInquiry();
+					String tittle = (item.getAgreed() == Constant.YES) ? "客户同意了您的报价" : "客户不同意您的报价";
+					if (item.getVendUserUU() != null) {
+						UserBaseInfo user = userBaseInfoDao.findOne(item.getVendUserUU());
+						XingePusher.pushByUser(user, tittle,
+								"物料:" + item.getProduct().getTitle() + ",客户:" + inquiry1.getEnterprise().getEnName(), "", "");
+					}
+				}
+			}
+		}
+	}
 }

+ 4 - 2
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -2,6 +2,7 @@ package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.event.PurchaseOrderEndReleaseEvent;
 import com.uas.platform.b2b.event.PurchaseOrderReplyReleaseEvent;
 import com.uas.platform.b2b.event.PurchaseOrderSaveReleaseEvent;
 import com.uas.platform.b2b.model.*;
@@ -231,7 +232,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 		}
 		List<PurchaseOrderItem> newOrderItems = new ArrayList<>();
 		newOrderItems.add(reply.getOrderItem());
-		ContextUtils.publishEvent(new PurchaseOrderReplyReleaseEvent(PurchaseOrderItem.ditinct(newOrderItems)));
+		ContextUtils.publishEvent(new PurchaseOrderReplyReleaseEvent(PurchaseOrderItem.distinct(newOrderItems)));
 		return reply;
 	}
 
@@ -291,7 +292,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 				replies.add(reply);
 		}
 		// 触发回复事件
-		ContextUtils.publishEvent(new PurchaseOrderReplyReleaseEvent(PurchaseOrderItem.ditinct(itemList)));
+		ContextUtils.publishEvent(new PurchaseOrderReplyReleaseEvent(PurchaseOrderItem.distinct(itemList)));
 		return replies;
 	}
 
@@ -377,6 +378,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	@Override
 	public void saveItems(List<PurchaseOrderItem> items) {
 		purchaseOrderItemDao.save(items);
+		ContextUtils.publishEvent(new PurchaseOrderEndReleaseEvent(PurchaseOrderItem.distinctItem(items)));
 		for (PurchaseOrderItem item : items)
 			// 明细结案情况下,明细状态为已回复(即不再处理),此时同时修改主记录状态
 			updateOrderStatus(item.getOrder().getId());

+ 2 - 0
src/main/webapp/resources/css/index.css

@@ -2867,7 +2867,9 @@ input:-webkit-autofill { box-shadow: 0 0 0 1000px white inset !important;}
 .public-btn01:disabled {
 	background: #999 !important;
 }
+
 input::-ms-clear{display:none;}
+input::-webkit-clear{display:none;}
 
 
 /*ie修改*/

+ 2 - 2
src/main/webapp/resources/tpl/index/purc/tender.html

@@ -925,8 +925,8 @@ input[type="radio"], input[type="checkbox"] {
                         <!--<div class="col-xs-2">-->
                             <!--<input class="tender-input01" ng-model="en.uu" type="number" id="uu{{$index + 1}}" readonly ng-required="tender.ifOpen == 0">-->
                         <!--</div>-->
-                        <div for="enName{{$index + 1}}" class="col-xs-1" style="width: 60px; margin-left: 20px; margin-right: -20px;">名称:</div>
-                        <div class="col-xs-4">
+                        <div for="enName{{$index + 1}}" class="col-xs-1">名称:</div>
+                        <div class="col-xs-3">
                             <input ng-model="en.enName" type="text" style="width: 100%;" class="tender-input01" readonly id="enName{{$index + 1}}"
                                    ng-required="tender.ifOpen == 0">
                         </div>

+ 5 - 2
src/main/webapp/resources/tpl/index/sale/inquiry.html

@@ -295,10 +295,10 @@
 					附件:<a class="file" ng-repeat="attach in inquiryItem.inquiry.attachs" href="file/{{attach.id}}">{{::attach.name}}</a>
 				</div>
 				<div ng-if="::inquiryItem.brand && !inquiryItem.$editing" class="text-muted">
-					品牌:<spans ng-bind="::inquiryItem.brand"></span>
+					品牌:<span ng-bind="::inquiryItem.brand"></span>
 				</div>
 				<div ng-if="::inquiryItem.vendorprodcode && !inquiryItem.$editing" class="text-muted">
-					供应商物料编号:<spans ng-bind="::inquiryItem.vendorprodcode"></span>
+					供应商物料编号:<span ng-bind="::inquiryItem.vendorprodcode"></span>
 				</div>
 				<div class="form-group" ng-if="inquiryItem.$editing" style="width: 180px;">
 					<input type="text" class="form-control input-xs"
@@ -481,6 +481,9 @@
 				<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 1" class="block">
 					<span class="text-trans success">报价已采纳</span>
 				</div>
+				<div ng-if="inquiryItem.status == 314" class="block">
+					<span class="text-trans text-light">已作废</span>
+				</div>
 				<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 0" class="block">
 					<span class="text-trans error">报价未采纳</span>
 				</div>