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