Pārlūkot izejas kodu

APP客户采购单和客户采购询价接口

dongbw 8 gadi atpakaļ
vecāks
revīzija
7dac227103

+ 8 - 8
src/main/java/com/uas/platform/b2b/dao/ProductDao.java

@@ -1,16 +1,14 @@
 package com.uas.platform.b2b.dao;
 
-import java.util.List;
-
-import javax.persistence.QueryHint;
-import javax.transaction.Transactional;
-
+import com.uas.platform.b2b.model.Product;
 import org.springframework.data.jpa.repository.*;
 import org.springframework.data.jpa.repository.query.Procedure;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
-import com.uas.platform.b2b.model.Product;
+import javax.persistence.QueryHint;
+import javax.transaction.Transactional;
+import java.util.List;
 
 @Repository
 public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaRepository<Product, Long> {
@@ -254,10 +252,12 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
 	/**
 	 * 通过企业uu和物料编号禁用物料
 	 *
+	 * @param enUU 物料所属企业UU
+	 * @param code 物料号
+	 * @param b2benabled 是否启用字段
 	 */
 	@Transactional
 	@Modifying
 	@Query("update Product p set p.b2benabled = :b2benabled where p.enUU = :enUU and p.code = :code")
-	public int updateB2bEnabled(@Param("enUU") Long enUU, @Param("code") String code, @Param("b2benabled") Short b2benabled);
-
+	int updateB2bEnabled(@Param("enUU") Long enUU, @Param("code") String code, @Param("b2benabled") Short b2benabled);
 }

+ 95 - 0
src/main/java/com/uas/platform/b2b/filter/AppAccessInterceptor.java

@@ -0,0 +1,95 @@
+package com.uas.platform.b2b.filter;
+
+import com.uas.platform.b2b.model.Enterprise;
+import com.uas.platform.b2b.model.User;
+import com.uas.platform.b2b.openapi.support.ErrorUtils;
+import com.uas.platform.b2b.service.AccessTokenService;
+import com.uas.platform.b2b.service.EnterpriseService;
+import com.uas.platform.b2b.service.UserService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.exception.SystemError;
+import com.uas.platform.core.util.AgentUtils;
+import org.apache.axis.utils.StringUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * app接口验证
+ * 
+ * <pre>
+ * 根据参数找到企业和用户信息
+ * </pre>
+ * 
+ * @author dongbw
+ * 2018-01-16 14:50:42
+ */
+@SuppressWarnings("deprecation")
+public class AppAccessInterceptor extends HandlerInterceptorAdapter {
+	//TODO 修改
+
+	private static final String EN_UU = "en_uu";
+
+	private static final String USER_TEL = "user_tel";
+
+	private static final Logger logger = Logger.getLogger(AccessSignatureInterceptor.class);
+
+	@Autowired
+	private EnterpriseService enterpriseService;
+
+	@Autowired
+	private UserService userService;
+
+	@Autowired
+	private AccessTokenService accessTokenService;
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+		HttpSession session = request.getSession();
+		if (session.getAttribute("user") != null) {
+			session.setAttribute("user", null);
+			SystemSession.clear();
+		}
+		String enUUString = request.getParameter(EN_UU);
+		String userTel = request.getParameter(USER_TEL);
+		if (!StringUtils.isEmpty(userTel) && !StringUtils.isEmpty(enUUString)) {
+			Enterprise enterprise = enterpriseService.findByEnUU(Long.valueOf(enUUString));
+			if (enterprise != null) {
+				// 将企业信息、当前用户信息写入SystemSession
+				User user = userService.findUserByUserTel(userTel);
+				if (user != null) {
+					Set<Enterprise> enterprises = user.getEnterprises();
+					Set<Long> enUUs = new HashSet<>();
+					for (Enterprise en : enterprises) {
+						enUUs.add(en.getUu());
+					}
+					if (!enUUs.contains(Long.valueOf(enUUString))) {
+						logger.error(String.format("该用户不属于此企业:%s", enUUString));
+						throw new SystemError(ErrorUtils.EN_NOT_FOUND);
+					}
+					user.setEnterprise(enterprise);
+					user.setIp(AgentUtils.getIp(request));
+					SystemSession.setUser(user);
+					return true;
+				}
+			} else {
+				logger.error(String.format("没有找到企业:%s", enUUString));
+				throw new SystemError(ErrorUtils.EN_NOT_FOUND);
+			}
+		}
+		return false;
+	}
+
+	@Override
+	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+		super.afterCompletion(request, response, handler, ex);
+		SystemSession.clear();
+	}
+
+}

+ 528 - 0
src/main/java/com/uas/platform/b2b/mobile/controller/AppInquiryController.java

@@ -0,0 +1,528 @@
+package com.uas.platform.b2b.mobile.controller;
+
+import com.uas.account.support.Page;
+import com.uas.platform.b2b.model.PurchaseInquiry;
+import com.uas.platform.b2b.model.PurchaseInquiryItem;
+import com.uas.platform.b2b.model.PurchaseInquiryReply;
+import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.search.SearchService;
+import com.uas.platform.b2b.service.PurchaseInquiryService;
+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.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.PageInfo;
+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.Sort;
+import com.uas.search.b2b.util.SearchConstants;
+import org.apache.axis.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+
+/**
+ * 移动端询价单相关操作
+ * Created by dongbw
+ * 18/01/16 20:02.
+ */
+@RestController
+@RequestMapping("/mobile/sale/inquiry")
+public class AppInquiryController {
+
+    @Autowired
+    private PurchaseInquiryService purchaseInquiryService;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private SearchService searchService;
+
+    /**
+     * 询价种类
+     */
+    private final String INQUIRYKIND = "publicInquiry";
+
+    private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+    /**
+     * 作为卖家,收到的采购询价(全部)- 搜索
+     *
+     * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", method = RequestMethod.GET)
+    public Page<PurchaseInquiryItem> getReceivedPurchaseInquiries(int page, int size, String keyword) {
+        // 关键词不为空,使用索引
+        if (!StringUtils.isEmpty(keyword)) {
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            Page<PurchaseInquiryItem> purchaseInquiryItemPage = searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+            logger.log("客户询价单", "app搜索查看收到的客户询价单列表(全部)");
+            System.out.println("inquiry-search:" + keyword);
+            return purchaseInquiryItemPage;
+        } else {
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            System.out.println("inquiry-nosearch:" + keyword);
+            return toPage(purchaseInquiryService.findAllByPageInfo(pageInfo, null, filter));
+        }
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(待报价)- 搜索
+     *
+     * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.TODO, method = RequestMethod.GET)
+    public Page<PurchaseInquiryItem> getTodoInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单(待报价)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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_status", Status.NOT_REPLY.value());
+            pageParams.getFilters().put("id_overdue", Constant.NO);
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("id_id", false, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+        } else {
+            logger.log("客户询价单", "查看收到的客户询价单列表(待报价)");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("status", Status.NOT_REPLY.value());
+            pageInfo.filter("overdue", Constant.NO);
+            pageInfo.filter("invalid", Constant.NO);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return toPage(purchaseInquiryService.findAllByPageInfo(pageInfo, null, filter));
+        }
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(已过期)- 搜索
+     *
+     * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.END, method = RequestMethod.GET)
+    public Page<PurchaseInquiryItem> getEndInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单(已过期)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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_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, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+        } else {
+            logger.log("客户询价单", "查看收到的客户询价单列表(已过期)");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("overdue", Constant.YES);
+            pageInfo.filter("invalid", Constant.NO);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return toPage(purchaseInquiryService.findAllByPageInfo(pageInfo, null, filter));
+        }
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(已报价)- 搜索
+     *
+     * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.DONE, method = RequestMethod.GET)
+    public Page<PurchaseInquiryItem> getDoneInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单(已报价)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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_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, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+        } else {
+            logger.log("客户询价单", "查看收到的客户询价单列表(已报价)");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("overdue", Constant.NO);
+            pageInfo.filter("status", Status.REPLIED.value());
+            pageInfo.filter("invalid", Constant.NO);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            pageInfo.filter("decideStatus", Status.UNAUDIT.value());
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return toPage(purchaseInquiryService.findAllByPageInfo(pageInfo, null, filter));
+        }
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(已失效)- 搜索
+     *
+     * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.INVALID, method = RequestMethod.GET)
+    public Page<PurchaseInquiryItem> getInvalidInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单(已失效)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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, Sort.Type.LONG, 1L));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            pageParams.getFilters().put("id_overdue", Constant.YES); // 已失效
+            return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+        } else {
+            logger.log("客户询价单", "查看收到的客户询价单列表(已失效)");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            pageInfo.filter("invalid", Constant.YES);
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return toPage(purchaseInquiryService.findAllByPageInfo(pageInfo, keyword, filter));
+        }
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(已采纳)- 搜索
+     *
+     * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.AGREED, method = RequestMethod.GET)
+    public Page<PurchaseInquiryItem> getAgreedInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单(已采纳)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+        } else {
+            logger.log("客户询价单", "查看收到的客户询价单列表(已采纳)");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            pageInfo.filter("agreed", Constant.YES);
+            pageInfo.filter("status", Status.REPLIED.value());
+            pageInfo.filter("invalid", Constant.NO);
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return toPage(purchaseInquiryService.findAllByPageInfo(pageInfo, keyword, filter));
+        }
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(未采纳)- 搜索
+     *
+     * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.REFUSED, method = RequestMethod.GET)
+    public Page<PurchaseInquiryItem> getRefusedInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单(未采纳)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+        } else {
+            logger.log("客户询价单", "查看收到的客户询价单列表(未采纳)");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("agreed", Constant.NO);
+            pageInfo.filter("status", Status.REPLIED.value());
+            pageInfo.filter("invalid", Constant.NO);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return toPage(purchaseInquiryService.findAllByPageInfo(pageInfo, keyword, filter));
+        }
+    }
+
+    /**
+     * 已转报价的公共询价单--搜索
+     *
+     * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.TEAMS, method = RequestMethod.GET)
+    public Page<PurchaseInquiryItem> getPublicInquiry(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索已转报价的公共询价单");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            pageParams.getFilters().put("id_venduu", SystemSession.getUser().getEnterprise().getUu());
+            pageParams.getFilters().put("id_kind", INQUIRYKIND);
+            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, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+        } else {
+            logger.log("客户询价单", "查看收到已报价的公共询价单");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            pageInfo.filter("status", Status.REPLIED.value());
+            pageInfo.filter("invalid", Constant.NO);
+            pageInfo.filter("kind", INQUIRYKIND);
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return toPage(purchaseInquiryService.findAllByPageInfo(pageInfo, null, filter));
+        }
+    }
+
+    /**
+     * 作为卖家,根据询价单ID查找询价单(含明细)
+     *
+     * @param id 询价单id
+     * @return
+     */
+    @RequestMapping(value = "/{id}/info", method = RequestMethod.GET)
+    public PurchaseInquiry getReceivedPurchaseOrderItemById(@PathVariable("id") Long id) {
+        return purchaseInquiryService.getPurcInquiryById(id);
+    }
+
+    /**
+     * 作为卖家,给询价单报价
+     *
+     * @param replies 询价回复实体json
+     * @param inquiryItemId 询价单明细id
+     * @param leadtime 交货周期(天)
+     * @param minPackQty 最小包装辆
+     * @param minOrderQty 最小起订量
+     * @return
+     */
+    @RequestMapping(value = "/items/{inquiryItemId}/reply", method = RequestMethod.POST)
+    public ResponseEntity<String> replyInquiryItem(@PathVariable("inquiryItemId") Long inquiryItemId, String replies, Long leadtime, Double minPackQty, Double minOrderQty) {
+        PurchaseInquiryItem item = toItem(inquiryItemId, replies, leadtime, minOrderQty, minPackQty);
+        item = purchaseInquiryService.reply(item);
+        logger.log("客户询价单", "给单个客户询价明细填写价格并确认报价", item.replyDescription(), item.getInquiry().getCode(), inquiryItemId);
+        return new ResponseEntity<String>(HttpStatus.OK);
+    }
+
+    /**
+     * 转成询价单明细记录
+     * @param replies 询价回复实体json
+     * @param inquiryItemId 询价单明细id
+     * @param leadtime 交货周期(天)
+     * @param minPackQty 最小包装辆
+     * @param minOrderQty 最小起订量
+     * @return
+     */
+    private PurchaseInquiryItem toItem(Long inquiryItemId, String replies, Long leadtime, Double minOrderQty, Double minPackQty) {
+        List<PurchaseInquiryReply> replyList = FlexJsonUtils.fromJsonArray(replies, PurchaseInquiryReply.class);
+        PurchaseInquiryItem item = purchaseInquiryService.findItemByItemId(inquiryItemId);
+        item.setLeadtime(leadtime);
+        item.setMinPackQty(minPackQty);
+        item.setMinOrderQty(minOrderQty);
+        HashSet<PurchaseInquiryReply> replyHashSet = new HashSet<>(replyList);
+        item.setReplies(replyHashSet);
+        return item;
+    }
+
+    /**
+     * page信息转换
+     *
+     * @param page
+     *            直接从数据库获取的page数据
+     * @return 合并后的结果
+     */
+    private <T> Page<T> toPage(org.springframework.data.domain.Page<T> page) {
+        if (page.getContent() == null) {
+            return null;
+        }
+        Page<T> result = new Page<>();
+        result.setContent(page.getContent());
+        result.setFirst(page.isFirst());
+        result.setLast(page.isLast());
+        result.setTotalElements(page.getTotalElements());
+        result.setNumber(page.getNumber());
+        result.setSize(page.getSize());
+        return result;
+    }
+}

+ 553 - 0
src/main/java/com/uas/platform/b2b/mobile/controller/AppPubInquiryController.java

@@ -0,0 +1,553 @@
+package com.uas.platform.b2b.mobile.controller;
+
+import com.uas.account.support.Page;
+import com.uas.platform.b2b.model.FileUpload;
+import com.uas.platform.b2b.model.PublicInquiryItem;
+import com.uas.platform.b2b.model.PublicInquiryItemInfo;
+import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.search.SearchService;
+import com.uas.platform.b2b.service.PubInquiryService;
+import com.uas.platform.b2b.service.UserService;
+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.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.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.util.SearchConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 公共询价(针对供应商)
+ *
+ * Created by hejq on 2018-01-06.
+ */
+@RequestMapping("/mobile/sale/pubInquiry")
+@RestController
+public class AppPubInquiryController {
+
+    private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+    @Autowired
+    private PubInquiryService pubInquiryService;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private SearchService searchService;
+
+    @Autowired
+    private TokenService tokenService;
+
+    /**
+     * 转成客户询价单
+     *
+     * @param id 公共询价明细id
+     * @return
+     */
+    // TODO  修改
+    @RequestMapping(value = "/turntoInquiry/{id}", method = RequestMethod.POST)
+    private ModelMap transtoInquiry(@PathVariable Long id) {
+        logger.log("公共询价单", "将公共询价单(" + id + ")转成询价报价单");
+        return pubInquiryService.transtoInquiry(id);
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(全部)- 搜索
+     *
+     * @param page 页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", method = RequestMethod.GET)
+    public Page<PublicInquiryItemInfo> getReceivedPurchaseInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单列表(全部)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return toPage(searchService.searchPublicInquiryItemInfoIds(keyword, pageParams));
+        } else {
+            logger.log("公共询价单", "查看已转询价报价单的客户公共询价单列表(全部)");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return toPage(pubInquiryService.findByPageInfo(pageInfo, null, filter));
+        }
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(待报价)- 搜索
+     *
+     * @param page 页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.TODO, method = RequestMethod.GET)
+    public Page<PublicInquiryItemInfo> getTodoInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单(待报价)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return toPage(searchService.searchPublicInquiryItemInfoIds(keyword, pageParams));
+        } else {
+            logger.log("公共询价单", "查看已转询价报价单的客户公共询价单列表(待报价)");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("status", Status.NOT_REPLY.value());
+            pageInfo.filter("overdue", Constant.NO);
+            pageInfo.filter("invalid", Constant.NO);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return toPage(pubInquiryService.findByPageInfo(pageInfo, null, filter));
+        }
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(已过期)- 搜索
+     *
+     * @param page 页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.END, method = RequestMethod.GET)
+    public SPage<PublicInquiryItemInfo> getEndInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单(已过期)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPublicInquiryItemInfoIds(keyword, pageParams);
+        } else {
+            logger.log("公共询价单", "查看已转询价报价单的客户公共询价单列表(已过期)");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("overdue", Constant.YES);
+            pageInfo.filter("invalid", Constant.NO);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return pubInquiryService.findByPageInfo(pageInfo, null, filter);
+        }
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(已报价)- 搜索
+     *
+     * @param page 页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.DONE, method = RequestMethod.GET)
+    public SPage<PublicInquiryItemInfo> getDoneInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单(已报价)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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.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, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPublicInquiryItemInfoIds(keyword, pageParams);
+        } else {
+            logger.log("公共询价单", "查看已转询价报价单的客户公共询价单列表(已报价)");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("overdue", Constant.NO);
+            pageInfo.filter("status", Status.REPLIED.value());
+            pageInfo.filter("invalid", Constant.NO);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            pageInfo.filter("decideStatus", Status.UNAUDIT.value());
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return pubInquiryService.findByPageInfo(pageInfo, null, filter);
+        }
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(已失效)- 搜索
+     *
+     * @param page 页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.INVALID, method = RequestMethod.GET)
+    public SPage<PublicInquiryItemInfo> getInvalidInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单(已失效)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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, Sort.Type.LONG, 1L));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            pageParams.getFilters().put("id_overdue", Constant.YES); // 已失效
+            return searchService.searchPublicInquiryItemInfoIds(keyword, pageParams);
+        } else {
+            logger.log("公共询价单", "查看已转询价报价单的客户公共询价单列表(已失效)");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("overdue", Constant.YES);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            pageInfo.filter("invalid", Constant.YES);
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return pubInquiryService.findByPageInfo(pageInfo, null, filter);
+        }
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(已采纳)- 搜索
+     *
+     * @param page 页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.AGREED, method = RequestMethod.GET)
+    public SPage<PublicInquiryItemInfo> getAgreedInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单(已采纳)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPublicInquiryItemInfoIds(keyword, pageParams);
+        } else {
+            logger.log("公共询价单", "查看已转询价报价单的客户公共询价单列表(已采纳)");
+            PageInfo pageInfo = new PageInfo(page,size);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            pageInfo.filter("agreed", Constant.YES);
+            pageInfo.filter("status", Status.REPLIED.value());
+            pageInfo.filter("invalid", Constant.NO);
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return pubInquiryService.findByPageInfo(pageInfo, null, filter);
+        }
+    }
+
+    /**
+     * 作为卖家,收到的采购询价(未采纳)- 搜索
+     *
+     * @param page 页码
+     * @param size 每页条数
+     * @param keyword 关键词
+     * @return
+     */
+    @RequestMapping(value = "/info/search", params = RequestState.REFUSED, method = RequestMethod.GET)
+    public SPage<PublicInquiryItemInfo> getRefusedInquiries(int page, int size, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            logger.log("客户询价单", "搜索查看收到的客户询价单(未采纳)");
+            com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+            // 当前登录企业作为供应商
+            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, Sort.Type.LONG, new Long(1)));
+            pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+            return searchService.searchPublicInquiryItemInfoIds(keyword, pageParams);
+        } else {
+            logger.log("公共询价单", "查看已转询价报价单的客户公共询价单列表(未采纳)");
+            PageInfo pageInfo = new PageInfo(page, size);
+            pageInfo.filter("agreed", Constant.NO);
+            pageInfo.filter("status", Status.REPLIED.value());
+            pageInfo.filter("invalid", Constant.NO);
+            pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+            SearchFilter filter = new SearchFilter();
+            SearchFilter distribute = userService.distribute();
+            if (distribute != null && distribute.getDistribute() == null) {
+                return null;
+            }
+            if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+                filter.setDistribute(distribute.getDistribute());
+            }
+            return pubInquiryService.findByPageInfo(pageInfo, null, filter);
+        }
+    }
+
+    /**
+     * 作为卖家,根据询价单ID查找询价单(含明细)
+     *
+     * @param id 主表id
+     * @return
+     */
+    @RequestMapping(value = "/{id}/info", method = RequestMethod.GET)
+    public List<PublicInquiryItemInfo> getReceivedPurchaseOrderItemById(@PathVariable("id") Long id) {
+        logger.log("公共询价单", "查看详情", "查看[" + id + "]的详情");
+        return pubInquiryService.findById(id);
+    }
+
+    /**
+     * 作为卖家,查看同产品的报价历史
+     *
+     */
+    @RequestMapping(value = "/items/{itemId}/history", method = RequestMethod.GET)
+    public List<PublicInquiryItemInfo> getInquiryHistoryById(@PathVariable("itemId") Long itemId) {
+        logger.log("公共询价单", "查看历史报价信息", "查看[" + itemId+ "]的历史报价");
+        return pubInquiryService.findHistoryByItemId(itemId);
+    }
+
+    /**
+     * 作为卖家,给公共询价单报价
+     *
+     * @param json 前台数据
+     * @param inquiryItemId 询价明细id
+     * @return
+     */
+    @RequestMapping(value = "/items/{inquiryItemId}/reply", method = RequestMethod.POST)
+    public ResponseEntity<String> replyInquiryItem(@RequestBody String json, @PathVariable("inquiryItemId") Long inquiryItemId, String token) {
+        PublicInquiryItem item = FlexJsonUtils.fromJson(json, PublicInquiryItem.class);
+        boolean flag = tokenService.enabled(token);
+        if (flag) {
+            item = pubInquiryService.reply(item);
+            tokenService.delete(token);
+            logger.log("公共询价单", "给单个客户公共询价明细填写价格并确认报价", item.replyDescription(), item.getInquiry().getCode(), inquiryItemId);
+        } else {
+            throw new IllegalOperatorException("页面信息已过期,请刷新重试");
+        }
+        return new ResponseEntity<String>(HttpStatus.OK);
+    }
+
+    /**
+     * 作为卖家,保存更新公共询价单
+     *
+     * @param json 前台数据
+     * @param inquiryItemId 询价明细id
+     * @return
+     */
+    @RequestMapping(value = "/items/{inquiryItemId}/save", method = RequestMethod.POST)
+    public ResponseEntity<String> saveInquiryItem(@RequestBody String json,
+                                                  @PathVariable("inquiryItemId") Long inquiryItemId, String token) {
+        PublicInquiryItem item = FlexJsonUtils.fromJson(json, PublicInquiryItem.class);
+        boolean flag = tokenService.enabled(token);
+        if (flag) {
+            item = pubInquiryService.save(item);
+            tokenService.delete(token);
+            logger.log("公共询价单", "给单个客户公共询价明细填写价格", item.replyDescription(), item.getInquiry().getCode(), inquiryItemId);
+        } else {
+            throw new IllegalOperatorException("页面信息已过期,请刷新重试");
+        }
+        return new ResponseEntity<String>(HttpStatus.OK);
+    }
+
+    /**
+     *  公共询价报价上传附件
+     *
+     * @param item 公共询价明细信息
+     * @param uploadItem 附件信息
+     * @param method 操作方法
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "/addAttach", method = RequestMethod.POST)
+    public ModelMap addItemAttaches(String item, String method, FileUpload uploadItem) throws Exception {
+        PublicInquiryItem inquiryItem = FlexJsonUtils.fromJson(item, PublicInquiryItem.class);
+        if (method.equals("save")) {
+            logger.log("公共询价", "给单个客户公共询价明细填写价格,上传附件信息",  inquiryItem.replyDescription(), inquiryItem.getInquiry().getCode(), inquiryItem.getId());
+        } else if (method.equals("reply")) {
+            logger.log("公共询价", "给单个客户公共询价明细填写价格、上传附件信息并报价",  inquiryItem.replyDescription(), inquiryItem.getInquiry().getCode(), inquiryItem.getId());
+        }
+        return pubInquiryService.addAttaches(inquiryItem, method, uploadItem);
+    }
+
+    /**
+     * page信息转换
+     *
+     * @param page
+     *            直接从数据库获取的page数据
+     * @return 合并后的结果
+     */
+    private <T> Page<T> toPage(org.springframework.data.domain.Page<T> page) {
+        if (page.getContent() == null) {
+            return null;
+        }
+        Page<T> result = new Page<>();
+        result.setContent(page.getContent());
+        result.setFirst(page.isFirst());
+        result.setLast(page.isLast());
+        result.setTotalElements(page.getTotalElements());
+        result.setNumber(page.getNumber());
+        result.setSize(page.getSize());
+        return result;
+    }
+
+    /**
+     * page信息转换
+     *
+     * @param page
+     *            直接从数据库获取的page数据
+     * @return 合并后的结果
+     */
+    private <T> Page<T> toPage(SPage<T> page) {
+        if (page.getContent() == null) {
+            return null;
+        }
+        Page<T> result = new Page<>();
+        result.setContent(page.getContent());
+        result.setFirst(page.isFirst());
+        result.setLast(page.isLast());
+        result.setTotalElements(page.getTotalElement());
+        result.setNumber(page.getPage());
+        result.setSize(page.getSize());
+        return result;
+    }
+}

+ 216 - 0
src/main/java/com/uas/platform/b2b/mobile/controller/AppPurcInquiryController.java

@@ -0,0 +1,216 @@
+package com.uas.platform.b2b.mobile.controller;
+
+import com.uas.account.support.Page;
+import com.uas.platform.b2b.model.PurcInquiryItemInfo;
+import com.uas.platform.b2b.model.PurchaseInquiryItem;
+import com.uas.platform.b2b.search.SearchService;
+import com.uas.platform.b2b.service.PurcInquiryService;
+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.Status;
+import com.uas.platform.core.web.bind.RequestState;
+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.ui.ModelMap;
+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;
+
+/**
+ * 平台新增的询价单-app
+ * 
+ * @author hejq
+ * 创建时间:2017年4月17日
+ */
+@RestController
+@RequestMapping("mobile/purc/inquiry")
+public class AppPurcInquiryController {
+
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+	@Autowired
+	private PurcInquiryService purcInquiryService;
+
+	@Autowired
+	private SearchService searchService;
+
+
+	/**
+	 * 得到全部
+	 *
+	 * @param page  页码
+	 * @param size 每页条数
+	 * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", method = RequestMethod.GET)
+	public Page<PurchaseInquiryItem> getReceivedPurchaseInquiries(int page, int size, String keyword) {
+		logger.log("采购询价单", "查看发出的采购询价单列表(全部)");
+		com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+		// 当前登录企业作为供应商
+		pageParams.getFilters().put("id_inid", SystemSession.getUser().getEnterprise().getUu());
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("id_id", false, Type.LONG, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+	}
+
+	/**
+	 * 待回复
+	 * @param page  页码
+	 * @param size 每页条数
+	 * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search",params = RequestState.TODO, method = RequestMethod.GET)
+	public Page<PurchaseInquiryItem> getTodoInquiries(int page, int size, String keyword) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(待回复)");
+		com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+		// 当前登录企业作为供应商
+		pageParams.getFilters().put("id_inid", SystemSession.getUser().getEnterprise().getUu());
+		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.LONG, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+	}
+
+	/**
+	 * 已失效
+	 * @param page  页码
+	 * @param size 每页条数
+	 * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search",params = RequestState.END, method = RequestMethod.GET)
+	public Page<PurchaseInquiryItem> getEndInquiries(int page, int size, String keyword) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(已失效)");
+		com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+		// 当前登录企业作为供应商
+		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.LONG, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+	}
+
+	/**
+	 * 已回复
+	 * @param page  页码
+	 * @param size 每页条数
+	 * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search",params = RequestState.DONE, method = RequestMethod.GET)
+	public Page<PurchaseInquiryItem> getDoneInquiries(int page, int size, String keyword) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(已回复)");
+		com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+		// 当前登录企业作为供应商
+		pageParams.getFilters().put("id_inid", SystemSession.getUser().getEnterprise().getUu());
+		pageParams.getFilters().put("id_status", Status.REPLIED.value());
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("id_id", false, Type.LONG, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+	}
+
+	/**
+	 * 已采纳
+	 * @param page  页码
+	 * @param size 每页条数
+	 * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search",params = RequestState.AGREED, method = RequestMethod.GET)
+	public Page<PurchaseInquiryItem> getAgreedInquiries(int page, int size, String keyword) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(已采纳)");
+		com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+		// 当前登录企业作为供应商
+		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.LONG, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+	}
+
+	/**
+	 * 未采纳
+	 * @param page  页码
+	 * @param size 每页条数
+	 * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search",params = RequestState.REFUSED, method = RequestMethod.GET)
+	public Page<PurchaseInquiryItem> getRefusedInquiries(int page, int size, String keyword) {
+		logger.log("客户询价单", "查看收到的客户询价单列表(未采纳)");
+		com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+		// 当前登录企业作为供应商
+		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.LONG, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		return searchService.searchPurchaseInquiryItemIdsForApp(keyword, pageParams);
+	}
+
+
+	/**
+	 * 查询公共询价单
+	 *
+	 * @param page  页码
+	 * @param size 每页条数
+	 * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/publicInquiryItem", method = RequestMethod.GET)
+	public Page<PurcInquiryItemInfo> getPublicInquiryItem(int page, int size, String keyword) {
+		com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+		// 当前登录企业作为供应商
+		pageParams.getFilters().put("id_inid", Status.ENABLED.value());
+		pageParams.getFilters().put("id_isopen", Constant.YES);
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("id_inid", SystemSession.getUser().getEnterprise().getUu());
+		pageParams.setNotEqualFilters(map);
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("id_id", false, Type.LONG, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		logger.log("采购询价", "查看询价", "查询公共询价信息,关键词: " + keyword);
+		return searchService.searchPurcInquiryItemCheckIdsForApp(keyword, pageParams);
+	}
+
+	/**
+	 * 查询详情(客户查询自己发出的询价单)
+	 *
+	 * @param id 询价单id
+	 * @return
+	 */
+	@RequestMapping(value = "/{id}/info", method = RequestMethod.GET)
+	private InquiryDetailInfo getDetail(@PathVariable Long id) {
+		return purcInquiryService.getInquiryDetail(id);
+	}
+
+	/**
+	 * 公共询价单详情(未转报价)
+	 *
+	 * @param id 询价明细id
+	 * @return
+	 */
+	@RequestMapping(value = "/inquiryItem/{id}", method = RequestMethod.GET)
+	private ModelMap getInquiryItemDetail(@PathVariable Long id) {
+		logger.log("采购询价", "查看询价详情", "关联id:" + id);
+		return purcInquiryService.getInquiryItemDetail(id);
+	}
+}

+ 661 - 13
src/main/java/com/uas/platform/b2b/mobile/controller/SaleController.java

@@ -1,23 +1,42 @@
 package com.uas.platform.b2b.mobile.controller;
 
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.stereotype.Controller;
-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.ResponseBody;
-
+import com.alibaba.dubbo.common.utils.CollectionUtils;
+import com.uas.account.support.Page;
+import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
+import com.uas.platform.b2b.dao.PurchaseOrderDoneDao;
+import com.uas.platform.b2b.dao.PurchaseOrderTodoDao;
+import com.uas.platform.b2b.dao.PurchaseOrderWaitingDao;
 import com.uas.platform.b2b.mobile.model.Purchase;
 import com.uas.platform.b2b.mobile.service.PurchaseService;
-import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.PurchaseOrderService;
+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.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.persistence.criteria.PredicateUtils;
 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.Sort;
+import com.uas.search.b2b.util.SearchConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 对移动端的数据接口<br>
@@ -36,15 +55,36 @@ public class SaleController {
 	@Autowired
 	private PurchaseService purchaseService;
 
+	@Autowired
+	private UserService userService;
+
+	@Autowired
+	private SearchService searchService;
+
+	@Autowired
+	private PurchaseOrderWaitingDao purchaseOrderWaitingDao;
+
+	@Autowired
+	private PurchaseOrderDoneDao purchaseOrderDoneDao;
+
+	@Autowired
+	private PurchaseOrderAllDao purchaseOrderAllDao;
+
+	@Autowired
+	private PurchaseOrderTodoDao purchaseOrderTodoDao;
+
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
 	/**
 	 * 作为卖家,查询收到的客户采购订单
 	 * 
-	 * @param json
+	 * @param params 分页参数
+	 * @param searchFilter 过滤条件
 	 * @return
 	 */
 	@RequestMapping(method = RequestMethod.GET)
 	@ResponseBody
-	public Page<Purchase> getReceivedPurchaseOrders(PageParams params, String searchFilter) {
+	public org.springframework.data.domain.Page<Purchase> getReceivedPurchaseOrders(PageParams params, String searchFilter) {
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.expression(PredicateUtils.in("vendUU", SystemSession.getUser().getEnUUs(), false));
@@ -58,7 +98,7 @@ public class SaleController {
 	/**
 	 * 作为卖家,根据采购单据ID查找采购订单(含明细)
 	 * 
-	 * @param id
+	 * @param id 询价单id
 	 * @return
 	 */
 	@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@@ -67,4 +107,612 @@ public class SaleController {
 		return purchaseService.convertPurchaseOrder(purchaseOrderService.findById(id));
 	}
 
+	/**
+	 * 作为卖家,根据采购单据ID查找采购订单(含明细)
+	 *
+	 * @param id
+	 * @return
+	 */
+	@RequestMapping(value = "/{id}/info", method = RequestMethod.GET)
+	@ResponseBody
+	public PurchaseOrderAll getReceivedPurchaseOrderItemByIdForApp(@PathVariable("id") Long id) {
+		return purchaseOrderService.findById(id);
+	}
+
+	/**
+	 * 作为买家,根据采购单据ID查找采购订单(含明细)
+	 *
+	 * @param id
+	 * @return
+	 */
+	@RequestMapping(value = "/purc/{id}/info", method = RequestMethod.GET)
+	@ResponseBody
+	public PurchaseOrderAll getPurchaseOrderItemById(@PathVariable("id") Long id) {
+		return purchaseOrderService.findById(id);
+	}
+
+	/**
+	 * 作为卖家,收到的采购订单(含明细)(全部)- 搜索
+	 *
+	 * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", method = RequestMethod.GET)
+	@ResponseBody
+	public com.uas.account.support.Page<PurchaseOrderAll> getPurchaseOrderItems(int page, int size, String keyword) {
+		if (!StringUtils.isEmpty(keyword)) {
+			com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+			// 当前登录企业作为供应商
+			pageParams.getFilters().put("pu_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("pu_enuu", new MultiValue(list, true));
+			}
+			// TODO 其他过滤条件
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("pu_id", false, Sort.Type.LONG, 1L));
+			pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+			Map<String, Object> map = new HashMap<String, Object>();
+			map.put("pu_status", (short) Status.UNAUDIT.value());
+			pageParams.setNotEqualFilters(map);
+			System.out.println("saleOrder-search:" + keyword);
+			logger.log("客户采购单", "app搜索收到的客户采购订单列表(包括采购明细)(全部)");
+			return searchService.searchPurchaseOrderIdsForApp(keyword, pageParams);
+		} else {
+			logger.log("客户采购单", "app查看收到的客户采购订单列表(包括采购明细)(全部)");
+			purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
+			PageInfo pageInfo = new PageInfo(page, size);
+			pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+			SearchFilter filter = new SearchFilter();
+			SearchFilter distribute = userService.distribute();
+			if (distribute != null && distribute.getDistribute() == null) {
+				return null;
+			}
+			if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+				filter.setDistribute(distribute.getDistribute());
+			}
+			System.out.println("saleOrder-nosearch:" + keyword);
+			return toPage(purchaseOrderService.findAllOrdersDetailByPageInfo(pageInfo, filter));
+		}
+	}
+
+	/**
+	 * 作为卖家,收到的采购订单(含明细)(待回复) - 搜索
+	 *
+	 * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.TODO, method = RequestMethod.GET)
+	@ResponseBody
+	public com.uas.account.support.Page<PurchaseOrderTodo> getTodoPurchaseOrderItems(int page, int size, String keyword) {
+		if (!StringUtils.isEmpty(keyword)) {
+			com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+			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("pu_enuu", new MultiValue(list, true));
+			}
+			// 当前登录企业作为供应商
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("pu_id", false, Sort.Type.LONG, new Long(1)));
+			pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+			pageParams.getFilters().put("pu_venduu", SystemSession.getUser().getEnterprise().getUu());
+			pageParams.getFilters().put("pu_status", Status.NOT_REPLY.value());
+			logger.log("客户采购单", "app搜索收到的客户采购订单列表(包括采购明细)(待回复)");
+			return searchService.searchPurchaseTodoOrderIdsForApp(keyword, pageParams);
+		} else {
+			logger.log("客户采购单", "App查看收到的客户采购单列表(待回复)");
+			purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
+			purchaseOrderTodoDao.updateStatusForSale(SystemSession.getUser().getEnterprise().getUu());
+			PageInfo pageInfo = new PageInfo(page, size);
+			pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+			SearchFilter filter = new SearchFilter();
+			SearchFilter distribute = userService.distribute();
+			if (distribute != null && distribute.getDistribute() == null) {
+				return null;
+			}
+			if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+				filter.setDistribute(distribute.getDistribute());
+			}
+			return toPage(purchaseOrderService.findTodoByPageInfo(pageInfo, filter));
+		}
+	}
+
+	/**
+	 * 作为卖家,收到的采购订单(含明细)(已回复) - 搜索
+	 *
+	 * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.DONE, method = RequestMethod.GET)
+	@ResponseBody
+	public com.uas.account.support.Page<PurchaseOrderDone> getDonePurchaseOrderItems(int page, int size, String keyword) {
+		if (!StringUtils.isEmpty(keyword)) {
+			com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+			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("pu_enuu", new MultiValue(list, true));
+			}
+			// 当前登录企业作为供应商
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("pu_id", false, Sort.Type.LONG, new Long(1)));
+			pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+			pageParams.getFilters().put("pu_venduu", SystemSession.getUser().getEnterprise().getUu());
+			pageParams.getFilters().put("pu_reply", Constant.YES);
+			ModelMap map = new ModelMap();
+			map.put("pu_end", Constant.YES); // 过滤掉已结案状态的
+			pageParams.setNotEqualFilters(map);
+			logger.log("客户采购单", "app搜索收到的客户采购订单列表(包括采购明细)(已回复)");
+			return searchService.searchPurchaseDoneOrderIdsForApp(keyword, pageParams);
+		} else {
+			logger.log("客户采购单", "App查看收到的客户采购单列表(已回复)");
+			purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
+			purchaseOrderDoneDao.updateStatusForSaleDone(SystemSession.getUser().getEnterprise().getUu());
+			PageInfo pageInfo = new PageInfo(page, size);
+			pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+			SearchFilter filter = new SearchFilter();
+			SearchFilter distribute = userService.distribute();
+			if (distribute != null && distribute.getDistribute() == null) {
+				return null;
+			}
+			if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+				filter.setDistribute(distribute.getDistribute());
+			}
+			return toPage(purchaseOrderService.findDoneByPageInfo(pageInfo, filter));
+		}
+	}
+
+	/**
+	 * 作为卖家,收到的客户的待结案的申请
+	 *
+	 * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value="/items", params = RequestState.UPDATE, method = RequestMethod.GET)
+	@ResponseBody
+	public com.uas.account.support.Page<PurchaseOrderAll> getToAgreedOrderItems(int page, int size, String keyword){
+		if (!StringUtils.isEmpty(keyword)) {
+			logger.log("客户采购单", "app搜索收到的客户采购订单列表(包括采购明细)(待结案)");
+			com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+			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("pu_enuu", new MultiValue(list, true));
+			}
+			// 当前登录企业作为供应商
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("pu_id", false, Sort.Type.LONG, new Long(1)));
+			pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+			pageParams.getFilters().put("pu_venduu", SystemSession.getUser().getEnterprise().getUu());
+			pageParams.getFilters().put("pu_status", Status.WAITSELLERCOMFIRM.value());
+			pageParams.getFilters().put("pu_end", Constant.NO);
+			return searchService.searchPurchaseOrderIdsForApp(keyword, pageParams);
+		} else {
+			logger.log("客户采购单", "App查看收到的客户采购单列表(已结案)");
+			purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
+			PageInfo pageInfo = new PageInfo(page, size);
+			pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+			pageInfo.filter("status", Status.WAITSELLERCOMFIRM.value());
+			pageInfo.filter("end", Constant.NO);
+			SearchFilter filter = new SearchFilter();
+			SearchFilter distribute = userService.distribute();
+			if (distribute != null && distribute.getDistribute() == null) {
+				return null;
+			}
+			if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+				filter.setDistribute(distribute.getDistribute());
+			}
+			return toPage(purchaseOrderService.findAllDetailByPageInfo(pageInfo, filter));
+		}
+	}
+
+
+	/**
+	 * 作为卖家,收到的采购订单(含明细)(已结案) - 搜索
+	 *
+	 * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.END, method = RequestMethod.GET)
+	@ResponseBody
+	public com.uas.account.support.Page<PurchaseOrderEnd> getEndPurchaseOrderItems(int page, int size, String keyword) {
+		if (!StringUtils.isEmpty(keyword)) {
+			logger.log("客户采购单", "app查看收到的客户采购订单列表(包括采购明细)(已结案)");
+			com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+			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("pu_enuu", new MultiValue(list, true));
+			}
+			// 当前登录企业作为供应商
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("pu_id", false, Sort.Type.LONG, new Long(1)));
+			pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+			pageParams.getFilters().put("pu_venduu", SystemSession.getUser().getEnterprise().getUu());
+			pageParams.getFilters().put("pu_end", Constant.YES);
+			return searchService.searchPurchaseEndOrderIdsForApp(keyword, pageParams);
+		} else {
+			logger.log("客户采购单", "App查看收到的客户采购单列表(已结案)");
+			purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
+			PageInfo pageInfo = new PageInfo(page, size);
+			pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+			SearchFilter filter = new SearchFilter();
+			SearchFilter distribute = userService.distribute();
+			if (distribute != null && distribute.getDistribute() == null) {
+				return null;
+			}
+			if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+				filter.setDistribute(distribute.getDistribute());
+			}
+			return toPage(purchaseOrderService.findEndOrdersByPageInfo(pageInfo, filter));
+		}
+	}
+
+	/**
+	 * 获取已收货的订单 - 搜索
+	 *
+	 * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+	 *
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.RECEIVED, method = RequestMethod.GET)
+	@ResponseBody
+	public com.uas.account.support.Page<PurchaseOrderReceived> getReceivedPurchaseOrderItems(int page, int size, String keyword) {
+		if (!StringUtils.isEmpty(keyword)) {
+			logger.log("客户采购单", "app查看收到的客户采购订单列表(包括采购明细)(已收货)");
+			com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+			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("pu_enuu", new MultiValue(list, true));
+			}
+			// 当前登录企业作为供应商
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("pu_id", false, Sort.Type.LONG, new Long(1)));
+			pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+			pageParams.getFilters().put("pu_venduu", SystemSession.getUser().getEnterprise().getUu());
+			pageParams.getFilters().put("pu_end", Constant.NO);
+			return searchService.searchPurchaseReceivedOrderIdsForApp(keyword, pageParams);
+		} else {
+			logger.log("客户采购单", "App查看收到的客户采购订单列表(包括采购明细)(待交货)");
+			purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
+			purchaseOrderWaitingDao.updateStatusForSale(SystemSession.getUser().getEnterprise().getUu());
+			PageInfo pageInfo = new PageInfo(page, size);
+			pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+			SearchFilter filter = new SearchFilter();
+			SearchFilter distribute = userService.distribute();
+			if (distribute != null && distribute.getDistribute() == null) {
+				return null;
+			}
+			if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+				filter.setDistribute(distribute.getDistribute());
+			}
+			return toPage(purchaseOrderService.findReceivedByPageInfo(pageInfo, filter));
+		}
+	}
+
+	/**
+	 * 获取待发货的订单 - 搜索
+	 *
+	 * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.WAITING, method = RequestMethod.GET)
+	@ResponseBody
+	public com.uas.account.support.Page<PurchaseOrderWaiting> getWaitingPurchaseOrderItems(int page, int size, String keyword) {
+		if (!StringUtils.isEmpty(keyword)) {
+			logger.log("客户采购单", "app查看收到的客户采购订单列表(包括采购明细)(待交货)");
+			com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+			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("pu_enuu", new MultiValue(list, true));
+			}
+			// 当前登录企业作为供应商
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("pu_id", false, Sort.Type.LONG, new Long(1)));
+			pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+			pageParams.getFilters().put("pu_venduu", SystemSession.getUser().getEnterprise().getUu());
+			List<Object> list = new ArrayList<>();
+			list.add(Constant.YES);
+			list.add((short) 2); // 建索引时,将不处于已结案状态,但是货物全部交接完毕的单,end值设为了2
+			ModelMap map = new ModelMap();
+			map.put("pu_end", new MultiValue(list, true));
+			map.put("pu_status", (short) Status.UNAUDIT.value());
+			pageParams.setNotEqualFilters(map);
+			return searchService.searchPurchaseWaitingOrderIdsForApp(keyword, pageParams);
+		} else {
+			logger.log("客户采购单", "App查看收到的客户采购订单列表(包括采购明细)(待交货)");
+			purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
+			purchaseOrderWaitingDao.updateStatusForSale(SystemSession.getUser().getEnterprise().getUu());
+			PageInfo pageInfo = new PageInfo(page, size);
+			pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+			SearchFilter filter = new SearchFilter();
+			SearchFilter distribute = userService.distribute();
+			if (distribute != null && distribute.getDistribute() == null) {
+				return null;
+			}
+			if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+				filter.setDistribute(distribute.getDistribute());
+			}
+			return toPage(purchaseOrderService.findWaitingByPageInfo(pageInfo, filter));
+		}
+	}
+
+	/**
+	 * 作为卖家,回复收到的采购订单
+	 *
+	 * @param json
+	 * @param orderItemId
+	 * @return
+	 */
+	@RequestMapping(value = "/items/{orderItemId}/reply", method = RequestMethod.POST)
+	public ModelMap replyOrderItem(@RequestParam String json, @PathVariable("orderItemId") Long orderItemId) throws UnsupportedEncodingException {
+		PurchaseOrderReply reply = FlexJsonUtils.fromJson(URLDecoder.decode(json, "utf-8"), PurchaseOrderReply.class);
+		PurchaseOrderItem orderItem = new PurchaseOrderItem();
+		orderItem.setId(orderItemId);
+		reply.setOrderItem(orderItem);
+		reply = purchaseOrderService.reply(reply);
+		logger.log("客户采购单", "App单个回复客户采购明细", reply.replyDescription(), reply.getOrderItem().getOrder().getCode(),
+				orderItemId);
+		return new ModelMap("success", "true");
+	}
+
+	/**
+	 * 作为卖家,批量回复采购订单
+	 *
+	 * @param idString
+	 * @return
+	 */
+	@RequestMapping(value = "/items/reply", method = RequestMethod.POST)
+	public ModelMap replyOrderItems(Long date, @RequestBody String idString) {
+		List<PurchaseOrderReply> replies = purchaseOrderService.reply(idString.split(","), date);
+		for (PurchaseOrderReply reply : replies)
+			logger.log("客户采购单", "批量回复客户采购明细", reply.replyDescription(), reply.getOrderItem().getOrder().getCode(),
+					reply.getOrderItem().getId());
+//        purchaseOrderService.replyByBatch(idString, SystemSession.getUser().getUserName(), SystemSession.getUser().getIp(), SystemSession.getUser().getEnterprise().getUu(), SystemSession.getUser().getUserUU());
+		return new ModelMap("success", "true");
+	}
+
+	/**
+	 * 作为买家,收到的采购订单(含明细)
+	 *
+	 * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/purc/info/search", method = RequestMethod.GET)
+	@ResponseBody
+	public com.uas.account.support.Page<PurchaseOrderAll> getAllPurcOrderItems(int page, int size, String keyword) {
+		if (!StringUtils.isEmpty(keyword)) {
+			logger.log("采购单", "app查看收到的采购订单列表(包括采购明细)(全部)");
+			com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("pu_id", false, Sort.Type.LONG, new Long(1)));
+			pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+			pageParams.getFilters().put("pu_enuu", SystemSession.getUser().getEnterprise().getUu());
+			Map<String, Object> map = new HashMap<String, Object>();
+			map.put("pu_status", (short) Status.UNAUDIT.value());
+			pageParams.setNotEqualFilters(map);
+			return searchService.searchPurchaseOrderIdsForApp(keyword, pageParams);
+		} else {
+			logger.log("采购单", "app查看采购订单列表(包括采购明细)(全部)");
+			purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(), OrderType.purc.getPhrase());
+			purchaseOrderWaitingDao.updateStatusForSale(SystemSession.getUser().getEnterprise().getUu());
+			PageInfo pageInfo = new PageInfo(page, size);
+			pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+			SearchFilter filter = new SearchFilter();
+			return toPage(purchaseOrderService.findAllDetailByPageInfo(pageInfo, filter));
+		}
+	}
+
+	/**
+	 * 作为买家(常见是有UAS系统的,万利达这种),发出的采购订单(含明细)(待回复)
+	 *
+	 * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/purc/info/search", params = RequestState.TODO, method = RequestMethod.GET)
+	@ResponseBody
+	public com.uas.account.support.Page<PurchaseOrderTodo> getTodoPurcOrderItems(int page, int size, String keyword) {
+		if (!StringUtils.isEmpty(keyword)) {
+			logger.log("采购单", "app查看发出的采购订单列表(包括采购明细)(待回复)");
+			com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("pu_id", false, Sort.Type.LONG, new Long(1)));
+			pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+			pageParams.getFilters().put("pu_enuu", SystemSession.getUser().getEnterprise().getUu());
+			pageParams.getFilters().put("pu_status", Status.NOT_REPLY);
+			return searchService.searchPurchaseTodoOrderIdsForApp(keyword, pageParams);
+		} else {
+			logger.log("采购单", "app查看采购订单列表(包括采购明细)(待回复)");
+			purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(), OrderType.purc.getPhrase());
+			purchaseOrderTodoDao.updateStatusForPurc(SystemSession.getUser().getEnterprise().getUu());
+			PageInfo pageInfo = new PageInfo(page, size);
+			pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+			pageInfo.filter("status", Status.NOT_REPLY.value());
+			SearchFilter filter = new SearchFilter();
+			return toPage(purchaseOrderService.findTodoByPageInfo(pageInfo, filter));
+		}
+	}
+
+	/**
+	 * 作为买家(常见是有UAS系统的,万利达这种),发出的采购订单(含明细)(已回复)
+	 *
+	 * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/purc/info/search", params = RequestState.DONE, method = RequestMethod.GET)
+	@ResponseBody
+	public com.uas.account.support.Page<PurchaseOrderDone> getDonePurcOrderItems(int page, int size, String keyword) {
+		if (!StringUtils.isEmpty(keyword)) {
+			logger.log("采购单", "app查看收到的采购订单列表(包括采购明细)(已回复)");
+			com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("pu_id", false, Sort.Type.LONG, new Long(1)));
+			pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+			pageParams.getFilters().put("pu_enuu", SystemSession.getUser().getEnterprise().getUu());
+			pageParams.getFilters().put("pu_reply", Constant.YES);
+			return searchService.searchPurchaseDoneOrderIdsForApp(keyword, pageParams);
+		} else {
+			logger.log("采购单", "app查看采购订单列表(包括采购明细)(已回复)");
+			purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(), OrderType.purc.getPhrase());
+			purchaseOrderDoneDao.updateStatusForPurcDone(SystemSession.getUser().getEnterprise().getUu());
+			PageInfo pageInfo = new PageInfo(page, size);
+			pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+			SearchFilter filter = new SearchFilter();
+			return toPage(purchaseOrderService.findDoneByPageInfo(pageInfo, filter));
+		}
+	}
+
+	/**
+	 * 作为买家,查看发出的采购单(已结案)
+	 *
+	 * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+	 * @return
+	 */
+	@RequestMapping(value = "/purc/info/search", params = RequestState.END, method = RequestMethod.GET)
+	@ResponseBody
+	public com.uas.account.support.Page<PurchaseOrderEnd> getEndPurcOrderItems(int page, int size, String keyword) {
+		if (!StringUtils.isEmpty(keyword)) {
+			logger.log("采购单", "app查看收到的采购订单列表(包括采购明细)(已结案)");
+			com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("pu_id", false, Sort.Type.LONG, new Long(1)));
+			pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+			pageParams.getFilters().put("pu_enuu", SystemSession.getUser().getEnterprise().getUu());
+			pageParams.getFilters().put("pu_end", Constant.YES);
+			return searchService.searchPurchaseEndOrderIdsForApp(keyword, pageParams);
+		} else {
+			logger.log("采购单", "app查看采购订单列表(包括采购明细)(已结案)");
+			purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(), OrderType.purc.getPhrase());
+			PageInfo pageInfo = new PageInfo(page, size);
+			pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+			pageInfo.filter("end", Constant.YES);
+			SearchFilter filter = new SearchFilter();
+			return toPage(purchaseOrderService.findEndOrdersByPageInfo(pageInfo, filter));
+		}
+	}
+
+	/**
+	 * @param page  页码
+     * @param size 每页条数
+     * @param keyword 关键词
+	 *            获取待发货的订单
+	 */
+	@RequestMapping(value = "/purc/info/search", params = RequestState.WAITING, method = RequestMethod.GET)
+	@ResponseBody
+	public com.uas.account.support.Page<PurchaseOrderWaiting> getWaitingPurcOrderItems(int page, int size, String keyword) {
+		if (!StringUtils.isEmpty(keyword)) {
+			logger.log("采购单", "app查看收到的采购订单列表(包括采购明细)(待交货)");
+			com.uas.search.b2b.model.PageParams pageParams = new com.uas.search.b2b.model.PageParams(page, size, new HashMap<String, Object>());
+			List<Sort> sortList = new ArrayList<>();
+			sortList.add(new Sort("pu_id", false, Sort.Type.LONG, new Long(1)));
+			List<Object> list = new ArrayList<>();
+			list.add(Constant.YES);
+			list.add((short) 2); // 建索引时,将不处于已结案状态,但是货物全部交接完毕的单,end值设为了2
+			ModelMap map = new ModelMap();
+			map.put("pu_end", new MultiValue(list, true));
+			map.put("pu_status", (short) Status.UNAUDIT.value());
+			pageParams.setNotEqualFilters(map);
+			return searchService.searchPurchaseWaitingOrderIdsForApp(keyword, pageParams);
+		} else {
+			logger.log("采购单", "app查看采购订单列表(包括采购明细)(待交货)");
+			purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(), OrderType.purc.getPhrase());
+			purchaseOrderWaitingDao.updateStatusForPurc(SystemSession.getUser().getEnterprise().getUu());
+			PageInfo pageInfo = new PageInfo(page, size);
+			pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+			SearchFilter filter = new SearchFilter();
+			return toPage(purchaseOrderService.findWaitingByPageInfo(pageInfo, filter));
+		}
+	}
+
+	/**
+	 * page信息转换
+	 *
+	 * @param page
+	 *            直接从数据库获取的page数据
+	 * @return 合并后的结果
+	 */
+	private <T> Page<T> toPage(org.springframework.data.domain.Page<T> page) {
+		if (page.getContent() == null) {
+			return null;
+		}
+		Page<T> result = new Page<>();
+		result.setContent(page.getContent());
+		result.setFirst(page.isFirst());
+		result.setLast(page.isLast());
+		result.setTotalElements(page.getTotalElements());
+		result.setNumber(page.getNumber());
+		result.setSize(page.getSize());
+		return result;
+	}
 }

+ 15 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseInquiry.java

@@ -61,6 +61,13 @@ public class PurchaseInquiry implements Serializable {
 	@Column(name = "in_recorderuu")
 	private Long recorderUU;
 
+	/**
+	 * 询价单采购员
+	 */
+	@OneToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = "in_recorderuu", insertable = false, updatable = false)
+	private UserBaseInfo recorderUser;
+
 	/**
 	 * 询价企业
 	 */
@@ -374,4 +381,12 @@ public class PurchaseInquiry implements Serializable {
 	public void setKind(String kind) {
 		this.kind = kind;
 	}
+
+	public UserBaseInfo getRecorderUser() {
+		return recorderUser;
+	}
+
+	public void setRecorderUser(UserBaseInfo recorderUser) {
+		this.recorderUser = recorderUser;
+	}
 }

+ 65 - 1
src/main/java/com/uas/platform/b2b/search/SearchService.java

@@ -424,7 +424,7 @@ public interface SearchService {
 
 	/**
 	 * 平台询价单详情
-	 * 
+	 *
 	 * @param keyword
 	 * @param pageParams
 	 * @return
@@ -538,4 +538,68 @@ public interface SearchService {
 	 * @return
 	 */
     SPage<PublicInquiryItemInfo> searchPublicInquiryItemInfoIds(String keyword, PageParams pageParams);
+
+	/**
+	 *  app查找客户采购询价单
+	 * @param keyword 关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	Page<PurchaseInquiryItem> searchPurchaseInquiryItemIdsForApp(String keyword, PageParams pageParams);
+
+	/**
+	 * app查找所有公共询价单
+	 * @param keyword 关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	Page<PurcInquiryItemInfo> searchPurcInquiryItemCheckIdsForApp(String keyword, PageParams pageParams);
+
+	/**
+	 * app查找采购订单
+	 * @param keyword 关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	Page<PurchaseOrderAll> searchPurchaseOrderIdsForApp(String keyword, PageParams pageParams);
+
+	/**
+	 * app查找采购订单(待回复)
+	 * @param keyword 关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	Page<PurchaseOrderTodo> searchPurchaseTodoOrderIdsForApp(String keyword, PageParams pageParams);
+
+	/**
+	 * app查找采购订单(已回复)
+	 * @param keyword 关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	Page<PurchaseOrderDone> searchPurchaseDoneOrderIdsForApp(String keyword, PageParams pageParams);
+
+	/**
+	 * app查找采购订单(待发货)
+	 * @param keyword 关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	Page<PurchaseOrderWaiting> searchPurchaseWaitingOrderIdsForApp(String keyword, PageParams pageParams);
+
+	/**
+	 * app查找采购订单(已收货)
+	 * @param keyword 关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	Page<PurchaseOrderReceived> searchPurchaseReceivedOrderIdsForApp(String keyword, PageParams pageParams);
+
+	/**
+	 * app查找采购订单(已结案)
+	 * @param keyword 关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	Page<PurchaseOrderEnd> searchPurchaseEndOrderIdsForApp(String keyword, PageParams pageParams);
 }

+ 152 - 2
src/main/java/com/uas/platform/b2b/search/SearchServiceImpl.java

@@ -195,6 +195,9 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 	@Autowired
 	private PublicInquiryItemInfoDao publicInquiryItemInfoDao;
 
+	@Autowired
+	private SaleTenderQuestionDao saleTenderQuestionDao;
+
 	/**
 	 * 联想词size
 	 */
@@ -295,6 +298,30 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 		return result;
 	}
 
+	/**
+	 * 将id的Page信息、数据合并
+	 *
+	 * @param idsPage
+	 *            id的Page信息
+	 * @param content
+	 *            数据
+	 * @return 合并后的结果
+	 */
+	private <T> Page<T> toPage(SPage<Long> idsPage, List<T> content) {
+		if (idsPage == null) {
+			return null;
+		}
+		Page<T> result = new Page<>();
+		result.setContent(content);
+		result.setFirst(idsPage.isFirst());
+		result.setLast(idsPage.isLast());
+		result.setTotalElements(idsPage.getTotalElement());
+		result.setNumber(idsPage.getPage());
+		result.setSize(idsPage.getSize());
+		return result;
+	}
+
+
 	/**
 	 * 委外加工单
 	 *
@@ -669,7 +696,7 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 	}
 
 	/**
-	 * 采购单(所有
+	 * 采购单(待回复
 	 */
 	@Override
 	public SPage<PurchaseOrderTodo> searchPurchaseTodoOrderIds(String keyword, PageParams pageParams) {
@@ -1362,7 +1389,10 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 
 	@Override
 	public SPage<SaleTenderQuestion> searchSaleTenderQuestion(String keyword, PageParams pageParams) {
-		return null;
+		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.SALE$TENDERQUESTION, pageParams);
+		List<SaleTenderQuestion> content = saleTenderQuestionDao.findAll(idsPage.getContent());
+		sortByProperty(content, SaleTenderQuestion.class, "id", idsPage.getContent());
+		return toSPage(idsPage, content);
 	}
 
 	/**
@@ -1406,4 +1436,124 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 		sortByProperty(content, PublicInquiryItemInfo.class, "id", idsPage.getContent());
 		return toSPage(idsPage, content);
 	}
+
+	/**
+	 * app查找客户采购询价单
+	 *
+	 * @param keyword    关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	@Override
+	public Page<PurchaseInquiryItem> searchPurchaseInquiryItemIdsForApp(String keyword, PageParams pageParams) {
+		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.PURC$INQUIRYITEMS, pageParams);
+		List<PurchaseInquiryItem> content = purchaseInquiryItemDao.findAll(idsPage.getContent());
+		sortByProperty(content, PurchaseInquiryItem.class, "id", idsPage.getContent());
+		return toPage(idsPage, content);
+	}
+
+	/**
+	 * app查找所有公共询价单
+	 *
+	 * @param keyword    关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	@Override
+	public Page<PurcInquiryItemInfo> searchPurcInquiryItemCheckIdsForApp(String keyword, PageParams pageParams) {
+		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.PURC$PUINQUIRYITEMS, pageParams);
+		List<PurcInquiryItemInfo> content = purcInquiryItemInfoDao.findAll(idsPage.getContent());
+		sortByProperty(content, PurcInquiryItemInfo.class, "id", idsPage.getContent());
+		return toPage(idsPage, content);
+	}
+
+	/**
+	 * app查找采购订单(所有)
+	 *
+	 * @param keyword 关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	@Override
+	public Page<PurchaseOrderAll> searchPurchaseOrderIdsForApp(String keyword, PageParams pageParams) {
+		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.PURC$ORDERS, pageParams);
+		List<PurchaseOrderAll> content = purchaseOrderAllDao.findAll(idsPage.getContent());
+		sortByProperty(content, PurchaseOrderAll.class, "id", idsPage.getContent());
+		return toPage(idsPage, content);
+	}
+
+	/**
+	 * app查找采购订单(待回复)
+	 *
+	 * @param keyword    关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	@Override
+	public Page<PurchaseOrderTodo> searchPurchaseTodoOrderIdsForApp(String keyword, PageParams pageParams) {
+		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.PURC$ORDERS, pageParams);
+		List<PurchaseOrderTodo> content = purchaseOrderTodoDao.findAll(idsPage.getContent());
+		sortByProperty(content, PurchaseOrderTodo.class, "id", idsPage.getContent());
+		return toPage(idsPage, content);
+	}
+
+	/**
+	 * app查找采购订单(已回复)
+	 *
+	 * @param keyword    关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	@Override
+	public Page<PurchaseOrderDone> searchPurchaseDoneOrderIdsForApp(String keyword, PageParams pageParams) {
+		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.PURC$ORDERS, pageParams);
+		List<PurchaseOrderDone> content = purchaseOrderDoneDao.findAll(idsPage.getContent());
+		sortByProperty(content, PurchaseOrderDone.class, "id", idsPage.getContent());
+		return toPage(idsPage, content);
+	}
+
+	/**
+	 * app查找采购订单(待发货)
+	 *
+	 * @param keyword    关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	@Override
+	public Page<PurchaseOrderWaiting> searchPurchaseWaitingOrderIdsForApp(String keyword, PageParams pageParams) {
+		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.PURC$ORDERS, pageParams);
+		List<PurchaseOrderWaiting> content = purchaseOrderWaitingDao.findAll(idsPage.getContent());
+		sortByProperty(content, PurchaseOrderWaiting.class, "id", idsPage.getContent());
+		return toPage(idsPage, content);
+	}
+
+	/**
+	 * app查找采购订单(已收货)
+	 *
+	 * @param keyword    关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	@Override
+	public Page<PurchaseOrderReceived> searchPurchaseReceivedOrderIdsForApp(String keyword, PageParams pageParams) {
+		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.PURC$ORDERS, pageParams);
+		List<PurchaseOrderReceived> content = purchaseOrderReceivedDao.findAll(idsPage.getContent());
+		sortByProperty(content, PurchaseOrderReceived.class, "id", idsPage.getContent());
+		return toPage(idsPage, content);
+	}
+
+	/**
+	 * app查找采购订单(已结案)
+	 *
+	 * @param keyword    关键词
+	 * @param pageParams 分页参数
+	 * @return
+	 */
+	@Override
+	public Page<PurchaseOrderEnd> searchPurchaseEndOrderIdsForApp(String keyword, PageParams pageParams) {
+		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.PURC$ORDERS, pageParams);
+		List<PurchaseOrderEnd> content = purchaseOrderEndDao.findAll(idsPage.getContent());
+		sortByProperty(content, PurchaseOrderEnd.class, "id", idsPage.getContent());
+		return toPage(idsPage, content);
+	}
 }

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

@@ -4,15 +4,12 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+import com.uas.platform.b2b.model.*;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
 
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.QuotationDown;
-import com.uas.platform.b2b.model.Attach;
-import com.uas.platform.b2b.model.FileUpload;
-import com.uas.platform.b2b.model.PurchaseInquiryItem;
-import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.temporary.model.InquiryMessage;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.search.b2b.model.SPage;
@@ -277,4 +274,11 @@ public interface PurchaseInquiryService {
 	 * @param id
 	 */
 	void setReadStatus(Long id);
+
+	/**
+	 * 根据询价单id获取询价单实体
+	 * @param id
+	 * @return
+	 */
+    PurchaseInquiry getPurcInquiryById(Long id);
 }

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

@@ -270,11 +270,11 @@ public class ProductServiceImpl implements ProductService {
 				num = productDao.upateResultByEnuuForSale(SystemSession.getUser().getEnterprise().getUu());
 				logger.log("产品匹配", "一键匹配了产品信息", "大小" + num);
 			} else if (matchtype.equals("purc")) {
-				logger.log("物料匹配", "一键匹配了物料信息", "大小" + num);
 				num = productDao.upateResultByEnuuForPurc(SystemSession.getUser().getEnterprise().getUu());
+				logger.log("物料匹配", "一键匹配了物料信息", "大小" + num);
 			} else if (matchtype.equals("all")) {
-				logger.log("物料匹配", "一键匹配了产品(物料)信息", "大小" + num);
 				num = productDao.upateResultByEnuu(SystemSession.getUser().getEnterprise().getUu());
+				logger.log("物料匹配", "一键匹配了产品(物料)信息", "大小" + num);
 			}
 			if (null == num) {
 				map.put("size", 0);

+ 21 - 4
src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java

@@ -31,10 +31,9 @@ import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
-import com.uas.platform.core.util.HttpUtil;
-import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import com.uas.search.b2b.model.PageParams;
 import com.uas.search.b2b.model.SPage;
+import javafx.geometry.InsetsBuilder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Sort.Direction;
@@ -544,10 +543,10 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 					if (filter.getEndDate() != null)
 						pageInfo.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
 				}
-				if (StringUtils.hasText(keyword)) {
-					List<Object> lists = new ArrayList<>();
+				if (!StringUtils.isEmpty(keyword)) {
 					PageParams pageParams = new PageParams();
 					ModelMap map = new ModelMap();
+					List<Long> lists = new ArrayList<>();
 					map.put("id_venduu", SystemSession.getUser().getEnterprise().getUu());
 					pageParams.setFilters(map);
 					for (PurchaseInquiryItem list : searchService.searchPurchaseInquiryItemIds(keyword, pageParams)
@@ -921,4 +920,22 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 		if(null != id)
 			purchaseInquiryItemDao.setReadStatus(id, SystemSession.getUser().getUserUU());
 	}
+
+	/**
+	 * 根据询价单id获取询价单实体
+	 *
+	 * @param id
+	 * @return
+	 */
+	@Override
+	public PurchaseInquiry getPurcInquiryById(Long id) {
+		List<PurchaseInquiryItem> inquiryItems =  purchaseInquiryItemDao.findByVendUUAndInquiry(SystemSession.getUser().getEnterprise().getUu(), id);
+		PurchaseInquiry inquiry = purchaseInquiryDao.findOne(id);
+		if (null == inquiry) {
+			return null;
+		}
+		HashSet<PurchaseInquiryItem> items = new HashSet<>(inquiryItems);
+		inquiry.setInquiryItems(items);
+		return inquiry;
+	}
 }

+ 6 - 0
src/main/webapp/WEB-INF/spring/webmvc.xml

@@ -89,6 +89,7 @@
 			<mvc:exclude-mapping path="/serve/**" />
 			<mvc:exclude-mapping path="/changeAdmin/**" />
 			<mvc:exclude-mapping path="/authen/**" />
+			<mvc:exclude-mapping path="/mobile/**" />
 			<bean class="com.uas.platform.b2b.filter.SSOInterceptor"></bean>
 		</mvc:interceptor>
 		<!-- 采用统一私钥签名、认证 -->
@@ -109,5 +110,10 @@
 			<mvc:exclude-mapping path="/mobile/**"/>
 			<bean class="com.uas.platform.b2b.filter.AccessTokenInterceptor"></bean>
 		</mvc:interceptor>
+		<!-- 移动端,通过企业UU、用户手机号认证 -->
+		<mvc:interceptor>
+			<mvc:mapping path="/mobile/**"></mvc:mapping>
+			<bean class="com.uas.platform.b2b.filter.AppAccessInterceptor"></bean>
+		</mvc:interceptor>
 	</mvc:interceptors>
 </beans>