فهرست منبع

feat: 增加采购询价对接商城的接口

suntg 6 سال پیش
والد
کامیت
9bc40c0b69

+ 313 - 0
src/main/java/com/uas/platform/b2b/mall2/controller/PurchaseInquiryController.java

@@ -0,0 +1,313 @@
+package com.uas.platform.b2b.mall2.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.search.SearchService;
+import com.uas.platform.b2b.service.PurcInquiryService;
+import com.uas.platform.b2b.service.PurchaseInquiryDetailService;
+import com.uas.platform.b2b.service.UserService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.b2b.temporary.model.InquiryDetailInfo;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.platform.core.model.Status;
+import com.uas.platform.core.web.bind.RequestState;
+import com.uas.search.b2b.model.SPage;
+import com.uas.search.b2b.model.Sort;
+import com.uas.search.b2b.model.Sort.Type;
+import com.uas.search.b2b.util.SearchConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 平台新增的询价单
+ * 
+ * @author hejq
+ * @time 创建时间:2017年4月17日
+ */
+@RestController("mall2.PurchaseInquiry")
+@RequestMapping("/mall2/purchase/inquiry")
+public class PurchaseInquiryController {
+
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+	@Autowired
+	private PurcInquiryService purcInquiryService;
+
+	@Autowired
+	private SearchService searchService;
+
+	@Autowired
+    private UserService userService;
+
+	@Autowired
+	private PurchaseInquiryDetailService purchaseInquiryDetailService;
+
+	/**
+	 * 得到全部
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", method = RequestMethod.GET)
+	public SPage<PurchaseInquiryDetail> getReceivedPurchaseInquiries(PageParams params, String searchFilter) {
+		logger.log("采购询价单", "查看发出的采购询价单列表(全部)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+		if (StringUtils.isEmpty(keyword)) {
+            PageInfo pageInfo = new PageInfo(params);
+            pageInfo.filter("inquiry.enUU", SystemSession.getUser().getEnterprise().getUu());
+            SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return purchaseInquiryDetailService.findByPageInfo(pageInfo, null, filter);
+		} else {
+			com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+			// 当前登录企业作为供应商
+			pageParams.getFilters().put("id_inid", SystemSession.getUser().getEnterprise().getUu());
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("id_id", false, Type.INT, new Long(1)));
+			pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+			return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+		}
+	}
+
+	/**
+	 * 待回复
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.TODO, method = RequestMethod.GET)
+	public SPage<PurchaseInquiryDetail> getTodoInquiries(PageParams params, String searchFilter, String type) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(待回复)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+        if (StringUtils.isEmpty(keyword)) {
+            PageInfo pageInfo = new PageInfo(params);
+            pageInfo.filter("inquiry.enUU", SystemSession.getUser().getEnterprise().getUu());
+			pageInfo.filter("status", Status.NOT_REPLY.value());
+            SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return purchaseInquiryDetailService.findTodoByPageInfo(pageInfo, null, filter, type);
+        } else {
+            com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+            // 当前登录企业作为供应商
+            pageParams.getFilters().put("id_inid", SystemSession.getUser().getEnterprise().getUu());
+            pageParams.getFilters().put("id_status", Status.NOT_REPLY.value());
+            if (!"APP".equals(type)) {
+				pageParams.getFilters().put("id_overdue", Constant.NO);
+			}
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("id_id", false, Type.INT, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+        }
+	}
+
+	/**
+	 * 已失效
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.END, method = RequestMethod.GET)
+	public SPage<PurchaseInquiryDetail> getEndInquiries(PageParams params, String searchFilter) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(已失效)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+        if (StringUtils.isEmpty(keyword)) {
+            PageInfo pageInfo = new PageInfo(params);
+            pageInfo.filter("inquiry.enUU", SystemSession.getUser().getEnterprise().getUu());
+            SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return purchaseInquiryDetailService.findInvalidByPageInfo(pageInfo, null, filter);
+        } else {
+            com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+            // 当前登录企业作为供应商
+            pageParams.getFilters().put("id_inid", SystemSession.getUser().getEnterprise().getUu());
+            pageParams.getFilters().put("id_overdue", Constant.YES); // 已失效
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("id_id", false, Type.INT, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+        }
+	}
+
+	/**
+	 * 已回复
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.DONE, method = RequestMethod.GET)
+	public SPage<PurchaseInquiryDetail> getDoneInquiries(PageParams params, String searchFilter, String type) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(已回复)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+        if (StringUtils.isEmpty(keyword)) {
+            PageInfo pageInfo = new PageInfo(params);
+            pageInfo.filter("inquiry.enUU", SystemSession.getUser().getEnterprise().getUu());
+            pageInfo.filter("status", Status.REPLIED.value());
+            if (!"APP".equals(type)) {
+				pageInfo.filter("invalid", Constant.NO);
+				pageInfo.filter("overdue", Constant.NO);
+			}
+            SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+            return purchaseInquiryDetailService.findByPageInfo(pageInfo, keyword, filter);
+        } else {
+            com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+            // 当前登录企业作为供应商
+            pageParams.getFilters().put("id_inid", SystemSession.getUser().getEnterprise().getUu());
+            pageParams.getFilters().put("id_status", Status.REPLIED.value());
+			HashMap<String, Object> map = new HashMap<>();
+			if (!"APP".equals(type)) {
+				map.put("id_invalid", Constant.YES);
+			}
+			pageParams.setNotEqualFilters(map);
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("id_id", false, Type.INT, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+        }
+	}
+
+	/**
+	 * 已采纳
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.AGREED, method = RequestMethod.GET)
+	public SPage<PurchaseInquiryDetail> getAgreedInquiries(PageParams params, String searchFilter) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(已采纳)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+        if (StringUtils.isEmpty(keyword)) {
+            PageInfo pageInfo = new PageInfo(params);
+            pageInfo.filter("inquiry.enUU", SystemSession.getUser().getEnterprise().getUu());
+            pageInfo.filter("agreed", Constant.YES);
+            pageInfo.filter("status", Status.REPLIED.value());
+            pageInfo.filter("overdue", Constant.NO);
+			pageInfo.filter("invalid", Constant.NO);
+            SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return purchaseInquiryDetailService.findByPageInfo(pageInfo, null, filter);
+        } else {
+            com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+            // 当前登录企业作为供应商
+            pageParams.getFilters().put("id_inid", SystemSession.getUser().getEnterprise().getUu());
+            pageParams.getFilters().put("id_agreed", Constant.YES);
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("id_id", false, Type.INT, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+        }
+	}
+
+	/**
+	 * 未采纳
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.REFUSED, method = RequestMethod.GET)
+	public SPage<PurchaseInquiryDetail> getRefusedInquiries(PageParams params, String searchFilter) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(未采纳)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+        if (StringUtils.isEmpty(keyword)) {
+            PageInfo pageInfo = new PageInfo(params);
+            pageInfo.filter("inquiry.enUU", SystemSession.getUser().getEnterprise().getUu());
+            pageInfo.filter("agreed", Constant.NO);
+            pageInfo.filter("status", Status.REPLIED.value());
+            pageInfo.filter("overdue", Constant.NO);
+			pageInfo.filter("invalid", Constant.NO);
+            SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return purchaseInquiryDetailService.findByPageInfo(pageInfo, null, filter);
+        } else {
+            com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+            // 当前登录企业作为供应商
+            pageParams.getFilters().put("id_inid", SystemSession.getUser().getEnterprise().getUu());
+            pageParams.getFilters().put("id_agreed", Constant.NO);
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("id_id", false, Type.INT, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+        }
+	}
+
+}

+ 405 - 0
src/main/java/com/uas/platform/b2b/mall2/controller/SaleInquiryController.java

@@ -0,0 +1,405 @@
+package com.uas.platform.b2b.mall2.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.search.SearchService;
+import com.uas.platform.b2b.service.OrderRedDotService;
+import com.uas.platform.b2b.service.PurchaseInquiryDetailService;
+import com.uas.platform.b2b.service.PurchaseInquiryService;
+import com.uas.platform.b2b.service.UserService;
+import com.uas.platform.b2b.support.JxlsExcelView;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.TokenService;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.b2b.temporary.model.InquiryMessage;
+import com.uas.platform.core.exception.IllegalOperatorException;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.platform.core.model.Status;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import com.uas.platform.core.web.bind.RequestState;
+import com.uas.search.b2b.model.MultiValue;
+import com.uas.search.b2b.model.SPage;
+import com.uas.search.b2b.model.Sort;
+import com.uas.search.b2b.model.Sort.Type;
+import com.uas.search.b2b.util.SearchConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 卖家对询价单的操作
+ * 
+ * @author yingp
+ * 
+ */
+@SuppressWarnings("deprecation")
+@Controller("mall2.SaleInquiryController")
+@RequestMapping("/mall2/sale/inquiry")
+public class SaleInquiryController {
+
+	@Autowired
+	private PurchaseInquiryService purchaseInquiryService;
+
+	@Autowired
+	private PurchaseInquiryDetailService detailService;
+
+	@Autowired
+	private UserService userService;
+
+	@Autowired
+	private SearchService searchService;
+
+	@Autowired
+	private TokenService tokenService;
+
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+	/**
+	 * 作为卖家,收到的采购询价(全部)- 搜索
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseInquiryDetail> getReceivedPurchaseInquiries(PageParams params, String searchFilter) {
+		logger.log("客户询价单", "搜索查看收到的客户询价单列表(全部)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+		// 当前登录企业作为供应商
+		pageParams.getFilters().put("id_venduu", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = userService.distribute();
+		if (filter != null && filter.getDistribute() == null) {
+			return null;
+		}
+		if (filter != null && !CollectionUtils.isEmpty(filter.getDistribute())) {
+			List<Object> list = new ArrayList<>();
+			for (Object object : filter.getDistribute()) {
+				list.add(object);
+			}
+			pageParams.getFilters().put("id_inid", new MultiValue(list, true));
+		}
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("id_id", false, Type.INT, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+	}
+
+	/**
+	 * 作为卖家,收到的采购询价(待报价)- 搜索
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.TODO, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseInquiryDetail> getTodoInquiries(PageParams params, String searchFilter) {
+		logger.log("客户询价单", "搜索查看收到的客户询价单(待报价)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+		// 当前登录企业作为供应商
+		pageParams.getFilters().put("id_venduu", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = userService.distribute();
+		if (filter != null && filter.getDistribute() == null) {
+			return null;
+		}
+		if (filter != null && !CollectionUtils.isEmpty(filter.getDistribute())) {
+			List<Object> list = new ArrayList<>();
+			for (Object object : filter.getDistribute()) {
+				list.add(object);
+			}
+			pageParams.getFilters().put("id_inid", new MultiValue(list, true));
+		}
+		pageParams.getFilters().put("id_status", Status.NOT_REPLY.value());
+		pageParams.getFilters().put("id_overdue", Constant.NO);
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("id_id", false, Type.INT, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+	}
+
+	/**
+	 * 作为卖家,收到的采购询价(已过期)- 搜索
+	 *
+	 * @param params
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.END, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseInquiryDetail> getEndInquiries(PageParams params, String searchFilter) {
+		logger.log("客户询价单", "搜索查看收到的客户询价单(已过期)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+		// 当前登录企业作为供应商
+		pageParams.getFilters().put("id_venduu", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = userService.distribute();
+		if (filter != null && filter.getDistribute() == null) {
+			return null;
+		}
+		if (filter != null && !CollectionUtils.isEmpty(filter.getDistribute())) {
+			List<Object> list = new ArrayList<>();
+			for (Object object : filter.getDistribute()) {
+				list.add(object);
+			}
+			pageParams.getFilters().put("id_inid", new MultiValue(list, true));
+		}
+		pageParams.getFilters().put("id_status", Status.NOT_REPLY.value());
+		pageParams.getFilters().put("id_overdue", Constant.YES);
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("id_invalid", Constant.NO);
+		pageParams.setNotEqualFilters(map);
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("id_id", false, Type.INT, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+	}
+
+	/**
+	 * 作为卖家,收到的采购询价(已报价)- 搜索
+	 *
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.DONE, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseInquiryDetail> getDoneInquiries(PageParams params, String searchFilter) {
+		logger.log("客户询价单", "搜索查看收到的客户询价单(已报价)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+		// 当前登录企业作为供应商
+		pageParams.getFilters().put("id_venduu", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = userService.distribute();
+		if (filter != null && filter.getDistribute() == null) {
+			return null;
+		}
+		if (filter != null && !CollectionUtils.isEmpty(filter.getDistribute())) {
+			List<Object> list = new ArrayList<>();
+			list.addAll(filter.getDistribute());
+			pageParams.getFilters().put("id_inid", new MultiValue(list, true));
+		}
+		pageParams.getFilters().put("id_decidestatus", Status.UNAUDIT.value());
+		pageParams.getFilters().put("id_status", Status.REPLIED.value());
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("id_invalid", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("id_id", false, Type.INT, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+	}
+
+	/**
+	 * 作为卖家,收到的采购询价(已失效)- 搜索
+	 *
+	 * @param params
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.INVALID, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseInquiryDetail> getInvalidInquiries(PageParams params, String searchFilter) {
+		logger.log("客户询价单", "搜索查看收到的客户询价单(已失效)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+		// 当前登录企业作为供应商
+		pageParams.getFilters().put("id_venduu", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = userService.distribute();
+		if (filter != null && filter.getDistribute() == null) {
+			return null;
+		}
+		if (filter != null && !CollectionUtils.isEmpty(filter.getDistribute())) {
+			List<Object> list = new ArrayList<>();
+			list.addAll(filter.getDistribute());
+			pageParams.getFilters().put("id_inid", new MultiValue(list, true));
+		}
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("id_id", false, Type.INT, 1L));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		pageParams.getFilters().put("id_overdue", Constant.YES); // 已失效
+		return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+	}
+
+	/**
+	 * 作为卖家,收到的采购询价(已采纳)- 搜索
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.AGREED, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseInquiryDetail> getAgreedInquiries(PageParams params, String searchFilter) {
+		logger.log("客户询价单", "搜索查看收到的客户询价单(已采纳)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+		// 当前登录企业作为供应商
+		pageParams.getFilters().put("id_venduu", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = userService.distribute();
+		if (filter != null && filter.getDistribute() == null) {
+			return null;
+		}
+		if (filter != null && !CollectionUtils.isEmpty(filter.getDistribute())) {
+			List<Object> list = new ArrayList<>();
+			for (Object object : filter.getDistribute()) {
+				list.add(object);
+			}
+			pageParams.getFilters().put("id_inid", new MultiValue(list, true));
+		}
+		pageParams.getFilters().put("id_agreed", Constant.YES);
+		pageParams.getFilters().put("id_status", Status.REPLIED.value());
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("id_invalid", Constant.YES);
+		pageParams.setNotEqualFilters(map);
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("id_id", false, Type.INT, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+	}
+
+	/**
+	 * 作为卖家,收到的采购询价(未采纳)- 搜索
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.REFUSED, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseInquiryDetail> getRefusedInquiries(PageParams params, String searchFilter) {
+		logger.log("客户询价单", "搜索查看收到的客户询价单(未采纳)");
+		JSONObject jsonObject = JSON.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+
+		if (1 < params.getPage()) {
+			params.setCount(params.getPage() * params.getCount());
+			params.setPage(1);
+		}
+
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+		// 当前登录企业作为供应商
+		pageParams.getFilters().put("id_venduu", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = userService.distribute();
+		if (filter != null && filter.getDistribute() == null) {
+			return null;
+		}
+		if (filter != null && !CollectionUtils.isEmpty(filter.getDistribute())) {
+			List<Object> list = new ArrayList<>();
+			for (Object object : filter.getDistribute()) {
+				list.add(object);
+			}
+			pageParams.getFilters().put("id_inid", new MultiValue(list, true));
+		}
+		pageParams.getFilters().put("id_agreed", Constant.NO);
+		pageParams.getFilters().put("id_status", Status.REPLIED.value());
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("id_id", false, Type.INT, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		return searchService.searchPurchaseInquiryDetailIds(keyword, pageParams);
+	}
+
+	/**
+	 * 作为卖家,根据询价单ID查找询价单(含明细)
+	 *
+	 * @param inquiryId
+	 * @return
+	 */
+	@RequestMapping(value = "/{inquiryId}/info", method = RequestMethod.GET)
+	@ResponseBody
+	public ModelMap getReceivedPurchaseOrderItemById(@PathVariable("inquiryId") Long inquiryId) {
+		ModelMap modelMap = new ModelMap();
+		List<PurchaseInquiryDetail> purchaseInquiryDetails = detailService.findById(inquiryId);
+		if (CollectionUtils.isEmpty(purchaseInquiryDetails)) {
+			throw new IllegalOperatorException("询价单不存在");
+		}
+		modelMap.put("success", true);
+		modelMap.put("data", purchaseInquiryDetails.get(0));
+		return modelMap;
+	}
+
+	/**
+	 * 作为卖家,给询价单报价
+	 * 
+	 * @param json
+	 * @param inquiryItemId
+	 * @return
+	 */
+	@RequestMapping(value = "/items/{inquiryItemId}/reply", method = RequestMethod.POST)
+	@ResponseBody
+	public ModelMap replyInquiryItem(@RequestBody String json,
+			@PathVariable("inquiryItemId") Long inquiryItemId, String token) {
+		PurchaseInquiryItem item = FlexJsonUtils.fromJson(json, PurchaseInquiryItem.class);
+		if (item.getReplies().size() == 1) {
+            item.getReplies().forEach(reply -> {
+               if (null != reply.getLapQty() && reply.getLapQty() > 0) {
+                   throw new IllegalOperatorException("报价分段数量格式不正确,请从0开始报价");
+               }
+            });
+        }
+		boolean flag = tokenService.enabled(token);
+		if (flag) {
+			item = purchaseInquiryService.replyWithSimpleInfo(item);
+			tokenService.delete(token);
+			logger.log("客户询价单", "给单个客户询价明细填写价格并确认报价", item.replyDescription(), item.getInquiry().getCode(), inquiryItemId);
+		} else {
+			throw new IllegalOperatorException("页面信息已过期,请刷新重试");
+		}
+		ModelMap modelMap = new ModelMap();
+		modelMap.put("success", true);
+		return modelMap;
+	}
+
+}

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

@@ -257,4 +257,11 @@ public interface PurchaseInquiryService {
 	 * @return
 	 */
 	ModelMap getRecentPrice(Long prid);
+
+	/**
+	 * 用户简要信息进行回复,不需要传递整个原始对象
+	 * @param item
+	 * @return
+	 */
+    PurchaseInquiryItem replyWithSimpleInfo(PurchaseInquiryItem item);
 }

+ 71 - 0
src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java

@@ -845,4 +845,75 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
             purchaseInquiryItemDao.setReadStatus(id, SystemSession.getUser().getUserUU());
         }
 	}
+
+	/**
+	 * 用户简要信息进行回复,不需要传递整个原始对象
+	 *
+	 * @param item
+	 * @return
+	 */
+	@Override
+	public PurchaseInquiryItem replyWithSimpleInfo(PurchaseInquiryItem item) {
+		PurchaseInquiryItem existItem = purchaseInquiryItemDao.findOne(item.getId());
+		if (!item.isReplyable()) {
+			throw new IllegalStatusException("该询价单已经报价,不允许再次报价");
+		}
+		boolean isSubmit = (item.getInquiry().getCheck() != null && item.getInquiry().getCheck() == Constant.YES) || (item.getAgreed() != null);
+		if (isSubmit) {
+			throw new IllegalOperatorException("报价失败,客户系统已经提交了该询价单");
+		}
+
+		convertReplyInfo(existItem, item);
+
+		// 判断是回复报价还是修改报价
+		existItem.setStatus((short) Status.REPLIED.value());
+		existItem.setBackStatus((short) Status.NOT_UPLOAD.value());
+		existItem.setReplySendStatus((short) Status.NOT_UPLOAD.value());
+		// 将采纳状态设置成申请状态,方便过滤
+		existItem.setDecideStatus((short) Status.UNAUDIT.value());
+		// 防回复记录重复
+		checkInquiryItemReplies(existItem, item);
+		Long userUU = existItem.getUserUU();
+		if (userUU == null) {
+			userUU = item.getInquiry().getRecorderUU();
+		}
+		if (userUU != null && userUU != 0) {
+			// 消息推送
+			XingePusher.pushByUserUU(userUU, "询价单回复", "单号:" + item.getInquiry().getCode() + ",第" + item.getNumber() + "行", "", "");
+		}
+		PurchaseInquiryItem purchaseInquiryItem = purchaseInquiryItemDao.save(existItem);
+
+		// 将采购员单据设置未读
+		redDotService.setReadByIds(OrderType.purcinquiry.name(), purchaseInquiryItem.getId());
+		// 更新个人物料库信息
+		personalProductService.covertPersonalProduct(purchaseInquiryItem.getProductId(), "客户询价单报价");
+		return purchaseInquiryItem;
+	}
+
+	/**
+	 * 将回复信息转换到询价明细中
+	 * @param inquiryItem
+	 * @param reply
+	 */
+	private void convertReplyInfo(PurchaseInquiryItem inquiryItem, PurchaseInquiryItem reply) {
+		inquiryItem.setVendFromDate(reply.getVendFromDate());
+		inquiryItem.setVendToDate(reply.getVendToDate());
+		inquiryItem.setMinOrderQty(reply.getMinOrderQty());
+		inquiryItem.setMinPackQty(reply.getMinPackQty());
+		inquiryItem.setBrand(reply.getBrand());
+		inquiryItem.setVendorprodcode(reply.getVendorprodcode());
+		inquiryItem.setLeadtime(reply.getLeadtime());
+		inquiryItem.setReplies(reply.getReplies());
+
+		if (!CollectionUtils.isEmpty(reply.getAttaches())) {
+			Set<Attach> attachSet = new HashSet<Attach>();
+			reply.getAttaches().forEach(attach -> {
+				attach.setDescription("采购询价单报价附件");
+				attach.setDate(new Date());
+				attach = attachDao.save(attach);
+				attachSet.add(attach);
+			});
+			inquiryItem.setAttaches(attachSet);
+		}
+	}
 }