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

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@521 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d

administrator 11 лет назад
Родитель
Сommit
2f0bb1001c

+ 20 - 4
src/main/java/com/uas/platform/b2b/controller/SaleInquiryController.java

@@ -20,6 +20,7 @@ import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import com.uas.platform.core.web.bind.RequestState;
 
 /**
  * 卖家对询价单的操作
@@ -35,14 +36,29 @@ public class SaleInquiryController {
 	private PurchaseInquiryService purchaseInquiryService;
 
 	/**
-	 * 作为卖家,收到的采购询价
+	 * 作为卖家,收到的采购询价(全部)
 	 * 
 	 * @param params
 	 * @return
 	 */
 	@RequestMapping(method = RequestMethod.GET)
 	@ResponseBody
-	public Page<PurchaseInquiryItem> getReceivedPurchaseOrders(PageParams params) {
+	public Page<PurchaseInquiryItem> getReceivedPurchaseInquiries(PageParams params) {
+		PageInfo info = new PageInfo(params);
+		// 我作为卖家,把我的企业ID作为供应商ID传入
+		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+		return purchaseInquiryService.findAllByPageInfo(info);
+	}
+
+	/**
+	 * 作为卖家,收到的采购询价(待回复)
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(params = RequestState.TODO, method = RequestMethod.GET)
+	@ResponseBody
+	public Page<PurchaseInquiryItem> getTodoInquiries(PageParams params) {
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -79,7 +95,7 @@ public class SaleInquiryController {
 	 * @return
 	 */
 	@RequestMapping(value = "/items/{inquiryItemId}/reply", method = RequestMethod.POST)
-	public ResponseEntity<String> replyOrderItem(@RequestBody String json, @PathVariable("inquiryItemId") Long inquiryItemId) {
+	public ResponseEntity<String> replyInquiryItem(@RequestBody String json, @PathVariable("inquiryItemId") Long inquiryItemId) {
 		PurchaseInquiryItem item = FlexJsonUtils.fromJson(json, PurchaseInquiryItem.class);
 		purchaseInquiryService.reply(item);
 		return new ResponseEntity<String>(HttpStatus.OK);
@@ -93,7 +109,7 @@ public class SaleInquiryController {
 	 * @return
 	 */
 	@RequestMapping(value = "/items/{inquiryItemId}", method = RequestMethod.POST)
-	public ResponseEntity<String> saveOrderItem(@RequestBody String json, @PathVariable("inquiryItemId") Long inquiryItemId) {
+	public ResponseEntity<String> saveInquiryItem(@RequestBody String json, @PathVariable("inquiryItemId") Long inquiryItemId) {
 		PurchaseInquiryItem item = FlexJsonUtils.fromJson(json, PurchaseInquiryItem.class);
 		purchaseInquiryService.save(item);
 		return new ResponseEntity<String>(HttpStatus.OK);

+ 24 - 0
src/main/java/com/uas/platform/b2b/dao/SaleQuotationItemDao.java

@@ -1,10 +1,34 @@
 package com.uas.platform.b2b.dao;
 
+import java.util.List;
+
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 
 import com.uas.platform.b2b.model.SaleQuotationItem;
 
 public interface SaleQuotationItemDao extends JpaSpecificationExecutor<SaleQuotationItem>, JpaRepository<SaleQuotationItem, Long> {
 
+	/**
+	 * 按关联主动报价单ID和序号查找主动报价明细
+	 * 
+	 * @param quotationId
+	 * @param number
+	 * @return
+	 */
+	@Query("from SaleQuotationItem s where s.quotation.id= :quotationId and s.number= :number")
+	List<SaleQuotationItem> findByQuotationIdAndNumber(@Param("quotationId") long quotationId, @Param("number") short number);
+
+	/**
+	 * 按卖家企业ID和采纳结果的传输状态查找主动报价明细
+	 * 
+	 * @param enUU
+	 * @param decideStatus
+	 * @return
+	 */
+	@Query("from SaleQuotationItem s where s.quotation.enUU = :enUU and s.decideStatus = :decideStatus")
+	List<SaleQuotationItem> findByEnUUAndDecideStatus(@Param("enUU") long enUU, @Param("decideStatus") short decideStatus);
+
 }

+ 16 - 0
src/main/java/com/uas/platform/b2b/erp/controller/InquiryDownController.java

@@ -12,8 +12,10 @@ 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.service.InquiryService;
 import com.uas.platform.b2b.service.SaleQuotationService;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
 
 /**
  * 对买家ERP的数据接口<br>
@@ -55,4 +57,18 @@ public class InquiryDownController {
 		saleQuotationService.onQuotationUploadSuccess(URLDecoder.decode(data, "UTF-8").split(","));
 	}
 
+	/**
+	 * 买家ERP(不)采纳了价格之后,修改平台里面的主动报价的状态
+	 * 
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/decide", method = RequestMethod.POST)
+	@ResponseBody
+	public void onReplyDecide(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		String jsonStr = URLDecoder.decode(data, "UTF-8");
+		List<InquiryDecide> decides = FlexJsonUtils.fromJsonArray(jsonStr, InquiryDecide.class);
+		saleQuotationService.onReplyDecide(inquiryService.convertQuotationDecide(decides));
+	}
+
 }

+ 24 - 0
src/main/java/com/uas/platform/b2b/erp/controller/QuotationController.java

@@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.uas.platform.b2b.erp.model.Quotation;
+import com.uas.platform.b2b.erp.model.QuotationDecide;
 import com.uas.platform.b2b.erp.service.QuotationService;
 import com.uas.platform.b2b.service.SaleQuotationService;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
@@ -48,4 +49,27 @@ public class QuotationController {
 		saleQuotationService.save(quotationService.convertQuotation(quotations));
 	}
 
+	/**
+	 * 卖家ERP从平台获取报价信息的采纳结果
+	 * 
+	 * @return
+	 */
+	@RequestMapping(value = "/decide", method = RequestMethod.GET)
+	@ResponseBody
+	public List<QuotationDecide> getQuotationDecide() {
+		return quotationService.convertQuotationDecide(saleQuotationService.findNotUploadQuotationDecide());
+	}
+
+	/**
+	 * 平台的报价信息采纳结果传到供应商ERP之后,修改平台里面的采纳结果上传状态
+	 * 
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/decide/back", method = RequestMethod.POST)
+	@ResponseBody
+	public void onReplyDecideDownSuccess(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		saleQuotationService.onQuotationDecideDownSuccess(URLDecoder.decode(data, "UTF-8").split(","));
+	}
+
 }

+ 10 - 0
src/main/java/com/uas/platform/b2b/erp/model/InquiryDecide.java

@@ -13,6 +13,8 @@ public class InquiryDecide {
 	private String in_code;
 	private Short id_detno;
 	private Short id_agreed;
+	// 针对主动报价
+	private Long b2b_qu_id;
 
 	public String getIn_code() {
 		return in_code;
@@ -38,4 +40,12 @@ public class InquiryDecide {
 		this.id_agreed = id_agreed;
 	}
 
+	public Long getB2b_qu_id() {
+		return b2b_qu_id;
+	}
+
+	public void setB2b_qu_id(Long b2b_qu_id) {
+		this.b2b_qu_id = b2b_qu_id;
+	}
+
 }

+ 63 - 0
src/main/java/com/uas/platform/b2b/erp/model/QuotationDecide.java

@@ -0,0 +1,63 @@
+package com.uas.platform.b2b.erp.model;
+
+import com.uas.platform.b2b.model.SaleQuotationItem;
+import com.uas.platform.core.model.Constant;
+
+/**
+ * 主动报价单的采纳结果
+ * 
+ * @author yingp
+ * 
+ */
+public class QuotationDecide {
+
+	private String qu_code;
+	private Short qd_detno;
+	private Long b2b_qd_id;
+	private Short qd_agreed;
+
+	public String getQu_code() {
+		return qu_code;
+	}
+
+	public void setQu_code(String qu_code) {
+		this.qu_code = qu_code;
+	}
+
+	public Short getQd_detno() {
+		return qd_detno;
+	}
+
+	public void setQd_detno(Short qd_detno) {
+		this.qd_detno = qd_detno;
+	}
+
+	public Long getB2b_qd_id() {
+		return b2b_qd_id;
+	}
+
+	public void setB2b_qd_id(Long b2b_qd_id) {
+		this.b2b_qd_id = b2b_qd_id;
+	}
+
+	public Short getQd_agreed() {
+		return qd_agreed == null ? Constant.NO : (short) Math.abs(qd_agreed);
+	}
+
+	public void setQd_agreed(Short qd_agreed) {
+		this.qd_agreed = qd_agreed;
+	}
+
+	/**
+	 * 转为卖家ERP的主动报价的采纳结果
+	 * 
+	 * @param item
+	 */
+	public QuotationDecide(SaleQuotationItem item) {
+		this.b2b_qd_id = item.getId();
+		this.qd_agreed = item.getAgreed();
+		this.qu_code = item.getQuotation().getCode();
+		this.qd_detno = item.getNumber();
+	}
+
+}

+ 9 - 0
src/main/java/com/uas/platform/b2b/erp/service/InquiryService.java

@@ -7,6 +7,7 @@ import com.uas.platform.b2b.erp.model.InquiryDecide;
 import com.uas.platform.b2b.erp.model.InquiryDetail;
 import com.uas.platform.b2b.model.PurchaseInquiryItem;
 import com.uas.platform.b2b.model.SaleQuotation;
+import com.uas.platform.b2b.model.SaleQuotationItem;
 
 public interface InquiryService {
 
@@ -42,4 +43,12 @@ public interface InquiryService {
 	 */
 	List<Inquiry> convertSaleQuotation(List<SaleQuotation> quotations);
 
+	/**
+	 * 将买家ERP对主动报价的采纳结果,转到平台的主动报价明细里面
+	 * 
+	 * @param decides
+	 * @return
+	 */
+	List<SaleQuotationItem> convertQuotationDecide(List<InquiryDecide> decides);
+
 }

+ 9 - 0
src/main/java/com/uas/platform/b2b/erp/service/QuotationService.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2b.erp.service;
 import java.util.List;
 
 import com.uas.platform.b2b.erp.model.Quotation;
+import com.uas.platform.b2b.erp.model.QuotationDecide;
 import com.uas.platform.b2b.model.SaleQuotationItem;
 
 public interface QuotationService {
@@ -15,4 +16,12 @@ public interface QuotationService {
 	 */
 	List<SaleQuotationItem> convertQuotation(List<Quotation> quotations);
 
+	/**
+	 * 平台的主动报价的采纳结果,转为卖家ERP的主动报价的采纳结果
+	 * 
+	 * @param quotationItems
+	 * @return
+	 */
+	List<QuotationDecide> convertQuotationDecide(List<SaleQuotationItem> quotationItems);
+
 }

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

@@ -10,6 +10,7 @@ import org.springframework.stereotype.Service;
 import com.uas.platform.b2b.dao.ProductDao;
 import com.uas.platform.b2b.dao.PurchaseInquiryDao;
 import com.uas.platform.b2b.dao.PurchaseInquiryItemDao;
+import com.uas.platform.b2b.dao.SaleQuotationItemDao;
 import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.InquiryDecide;
@@ -19,6 +20,7 @@ import com.uas.platform.b2b.model.Product;
 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.model.Vendor;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.Status;
@@ -28,7 +30,7 @@ public class InquiryServiceImpl implements InquiryService {
 
 	@Autowired
 	private ProductDao productDao;
-	
+
 	@Autowired
 	private VendorDao vendorDao;
 
@@ -38,6 +40,9 @@ public class InquiryServiceImpl implements InquiryService {
 	@Autowired
 	private PurchaseInquiryItemDao purchaseInquiryItemDao;
 
+	@Autowired
+	private SaleQuotationItemDao saleQuotationItemDao;
+
 	@Override
 	public List<PurchaseInquiryItem> convertInquiry(List<Inquiry> inquiries) {
 		List<PurchaseInquiryItem> inquiryItems = new ArrayList<PurchaseInquiryItem>();
@@ -45,14 +50,14 @@ public class InquiryServiceImpl implements InquiryService {
 		for (Inquiry inquiry : inquiries) {
 			// 先查看是否已存在
 			List<PurchaseInquiry> inquiries2 = purchaseInquiryDao.findByEnUUAndCode(enUU, inquiry.getIn_code());
-			if (inquiries2.size() == 0) {//不存在才继续,存在不作操作
+			if (inquiries2.size() == 0) {// 不存在才继续,存在不作操作
 				PurchaseInquiry purchaseInquiry = inquiry.convert();
 				if (!CollectionUtils.isEmpty(purchaseInquiry.getInquiryItems())) {
 					for (PurchaseInquiryItem item : purchaseInquiry.getInquiryItems()) {
-						//如果询价单明细行没有指定供应商联系人,取平台中供应商资料中的联系人
-						if(item.getVendUserUU() == null || item.getVendUserUU() == 0) {
+						// 如果询价单明细行没有指定供应商联系人,取平台中供应商资料中的联系人
+						if (item.getVendUserUU() == null || item.getVendUserUU() == 0) {
 							List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(purchaseInquiry.getEnUU(), item.getVendUU());
-							if(vendors.size() > 0) 
+							if (vendors.size() > 0)
 								item.setVendUserUU(vendors.get(0).getVendUserUU());
 						}
 						item.setInquiry(purchaseInquiry);
@@ -112,4 +117,22 @@ public class InquiryServiceImpl implements InquiryService {
 		return inquiries;
 	}
 
+	@Override
+	public List<SaleQuotationItem> convertQuotationDecide(List<InquiryDecide> decides) {
+		List<SaleQuotationItem> quotationItems = new ArrayList<SaleQuotationItem>();
+		if (!CollectionUtils.isEmpty(decides)) {
+			for (InquiryDecide decide : decides) {
+				List<SaleQuotationItem> items = saleQuotationItemDao
+						.findByQuotationIdAndNumber(decide.getB2b_qu_id(), decide.getId_detno());
+				if (!CollectionUtils.isEmpty(items)) {
+					SaleQuotationItem item = items.get(0);
+					item.setAgreed(decide.getId_agreed());
+					item.setDecideStatus((short) Status.NOT_UPLOAD.value());
+					quotationItems.add(item);
+				}
+			}
+		}
+		return quotationItems;
+	}
+
 }

+ 11 - 0
src/main/java/com/uas/platform/b2b/erp/service/impl/QuotationServiceImpl.java

@@ -11,6 +11,7 @@ import com.uas.platform.b2b.dao.ProductDao;
 import com.uas.platform.b2b.dao.SaleQuotationDao;
 import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.erp.model.Quotation;
+import com.uas.platform.b2b.erp.model.QuotationDecide;
 import com.uas.platform.b2b.erp.service.QuotationService;
 import com.uas.platform.b2b.model.Product;
 import com.uas.platform.b2b.model.SaleQuotation;
@@ -64,4 +65,14 @@ public class QuotationServiceImpl implements QuotationService {
 		return items;
 	}
 
+	@Override
+	public List<QuotationDecide> convertQuotationDecide(List<SaleQuotationItem> quotationItems) {
+		List<QuotationDecide> decides = new ArrayList<QuotationDecide>();
+		if (!CollectionUtils.isEmpty(quotationItems)) {
+			for (SaleQuotationItem item : quotationItems)
+				decides.add(new QuotationDecide(item));
+		}
+		return decides;
+	}
+
 }

+ 28 - 0
src/main/java/com/uas/platform/b2b/model/SaleQuotationItem.java

@@ -87,6 +87,18 @@ public class SaleQuotationItem {
 	@JoinColumn(name = "qdd_qdid")
 	@OrderBy("lapQty")
 	private Set<SaleQuotationPrice> prices;
+	
+	/**
+	 * 是否采纳
+	 */
+	@Column(name = "qd_agreed")
+	private Short agreed;
+
+	/**
+	 * (针对卖家的)是否采纳信息传输状态{待上传、已下载}
+	 */
+	@Column(name = "qd_decidestatus")
+	private Short decideStatus;
 
 	public Long getId() {
 		return id;
@@ -168,4 +180,20 @@ public class SaleQuotationItem {
 		this.prices = prices;
 	}
 
+	public Short getAgreed() {
+		return agreed;
+	}
+
+	public void setAgreed(Short agreed) {
+		this.agreed = agreed;
+	}
+
+	public Short getDecideStatus() {
+		return decideStatus;
+	}
+
+	public void setDecideStatus(Short decideStatus) {
+		this.decideStatus = decideStatus;
+	}
+
 }

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

@@ -61,7 +61,7 @@ public interface PurchaseInquiryService {
 	/**
 	 * 报价信息(不)采纳之后,写到平台
 	 * 
-	 * @param idArray
+	 * @param inquiryItems
 	 */
 	public void onReplyDecide(List<PurchaseInquiryItem> inquiryItems);
 

+ 21 - 0
src/main/java/com/uas/platform/b2b/service/SaleQuotationService.java

@@ -30,4 +30,25 @@ public interface SaleQuotationService {
 	 */
 	public void onQuotationUploadSuccess(String[] idArray);
 
+	/**
+	 * 主动报价信息(不)采纳之后,写到平台
+	 * 
+	 * @param quotationItems
+	 */
+	public void onReplyDecide(List<SaleQuotationItem> quotationItems);
+
+	/**
+	 * 查找所有待上传到卖家ERP的主动报价的采纳结果
+	 * 
+	 * @return
+	 */
+	List<SaleQuotationItem> findNotUploadQuotationDecide();
+
+	/**
+	 * 平台的主动报价的采纳结果传到供应商ERP之后,修改平台里面的采纳结果上传状态
+	 * 
+	 * @param idArray
+	 */
+	public void onQuotationDecideDownSuccess(String[] idArray);
+
 }

+ 22 - 0
src/main/java/com/uas/platform/b2b/service/impl/SaleQuotationServiceImpl.java

@@ -59,4 +59,26 @@ public class SaleQuotationServiceImpl implements SaleQuotationService {
 		}
 	}
 
+	@Override
+	public void onReplyDecide(List<SaleQuotationItem> quotationItems) {
+		saleQuotationItemDao.save(quotationItems);
+	}
+
+	@Override
+	public List<SaleQuotationItem> findNotUploadQuotationDecide() {
+		return saleQuotationItemDao.findByEnUUAndDecideStatus(SystemSession.getUser().getEnterprise().getUu(),
+				(short) Status.NOT_UPLOAD.value());
+	}
+
+	@Override
+	public void onQuotationDecideDownSuccess(String[] idArray) {
+		for (String id : idArray) {
+			SaleQuotationItem quotationItem = saleQuotationItemDao.findOne(Long.parseLong(id));
+			if (quotationItem != null) {
+				quotationItem.setDecideStatus((short) Status.DOWNLOADED.value());
+				saleQuotationItemDao.save(quotationItem);
+			}
+		}
+	}
+
 }

+ 1 - 1
src/main/webapp/resources/js/index/app.js

@@ -478,7 +478,7 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/Purc', 'ui.
 			counts: [5, 10, 25, 50],
 			getData : function($defer, params) {
 				$scope.loading = true;
-				PurcInquiry.get(parseParams(params.url()), function(page){
+				PurcInquiry.getTodo(parseParams(params.url()), function(page){
 					$scope.loading = false;
 					if(page) {
 						params.total(page.totalElements);

+ 34 - 3
src/main/webapp/resources/js/index/services/Purc.js

@@ -4,16 +4,28 @@ define([ 'ngResource' ], function() {
 		return $resource('sale/orders/:id', {});
 	}).factory('PurcOrderItem', function($resource) {
 		return $resource('sale/orders/items', {}, {
+			getTodo: {
+				params: {
+					_state: 'todo'
+				}
+			},
+			getEnd: {
+				params: {
+					_state: 'end'
+				}
+			},
 			replyByBatch: {
 				url: 'sale/orders/items/reply',
 				method: 'POST'
-			}, reply: {
+			}, 
+			reply: {
 				url: 'sale/orders/items/:orderItemId/reply',
 				method: 'POST',
 				params: {
 					orderItemId: 'orderItemId'
 				}
-			}, getReply: {
+			}, 
+			getReply: {
 				url: 'sale/orders/items/:orderItemId/reply',
 				method: 'GET',
 				isArray: true,
@@ -24,6 +36,11 @@ define([ 'ngResource' ], function() {
 		});
 	}).factory('PurcChange', function($resource) {
 		return $resource('sale/changes/:id', {}, {
+			getTodo: {
+				params: {
+					_state: 'todo'
+				}
+			},
 			reply: {
 				url: 'sale/changes/:changeId/reply',
 				method: 'POST',
@@ -34,6 +51,11 @@ define([ 'ngResource' ], function() {
 		});
 	}).factory('PurcInquiry', function($resource) {
 		return $resource('sale/inquiry/:id', {}, {
+			getTodo: {
+				params: {
+					_state: 'todo'
+				}
+			},
 			reply: {
 				url: 'sale/inquiry/items/:itemId/reply',
 				method: 'POST',
@@ -63,7 +85,16 @@ define([ 'ngResource' ], function() {
 		});
 	}).factory('PurcNotice', function($resource) {
 		return $resource('sale/notice/:id', {}, {
-			
+			getTodo: {
+				params: {
+					_state: 'todo'
+				}
+			},
+			getEnd: {
+				params: {
+					_state: 'end'
+				}
+			}
 		});
 	});
 });