package com.uas.ps.inquiry.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.uas.ps.core.logging.BufferedLoggerManager; import com.uas.ps.inquiry.domain.IPage; import com.uas.ps.inquiry.entity.Constant; import com.uas.ps.inquiry.entity.Inquiry; import com.uas.ps.inquiry.entity.InquirySource; import com.uas.ps.inquiry.model.Attach; import com.uas.ps.inquiry.model.InquiryRemind; import com.uas.ps.inquiry.model.PublicInquiryItem; import com.uas.ps.inquiry.model.PublicInquiryReply; import com.uas.ps.inquiry.page.PageInfo; import com.uas.ps.inquiry.page.PageParams; import com.uas.ps.inquiry.page.SearchFilter; import com.uas.ps.inquiry.service.InquiryForSaleService; import com.uas.ps.inquiry.support.InquiryBufferedLogger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Sort; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * 针对供应商,对询价的相关操作 * * Created by hejq on 2018-01-18. */ @RequestMapping("/inquiry/sale") @RestController public class InquiryForSaleController { @Autowired private InquiryForSaleService saleService; private final static InquiryBufferedLogger logger = BufferedLoggerManager.getLogger(InquiryBufferedLogger.class); /** * 通过ID查询报价详情 * * @param itemId 已转报价的明细id * @return */ @RequestMapping(value = "/inquiry/detail", method = RequestMethod.GET) public PublicInquiryItem findById(Long itemId, Long en_uu) { logger.log("公共询价", "查询已转报价的明细", "id: " + itemId, Constant.UU, en_uu, InquirySource.PLAIN.name()); return saleService.findById(itemId); } /** * 通过id查询公共询价详情 * * @param id 询价明细id * @param enuu 企业UU号 * @return */ @RequestMapping(value = "/publicInquiry/detail", method = RequestMethod.GET) public ModelMap findInquiryById(Long id, Long enuu) { logger.log("公共询价", "通过id查询公共询价详情", "id: " + id, Constant.UU, enuu, InquirySource.PLAIN.name()); return saleService.findByIdAndEnuu(id, enuu); } /** * 卖家报价时上传附件信息 * * @param attach 附件信息 * @return * @throws Exception */ @RequestMapping(value = "/attach", method = RequestMethod.POST) public String addAttachs(@RequestBody Attach attach) throws Exception { attach = saleService.addAttachs(attach); if (null != attach.getId()) { return JSONObject.toJSONString(attach); } else { throw new Exception("保存失败"); } } /** * 作为卖家,新增报价 * * @param item 前台数据 * @return */ @RequestMapping(value = "/item/add", method = RequestMethod.POST) public String saveInquiryItem(@RequestBody PublicInquiryItem item) throws Exception { item = saleService.add(item); if (null != item.getId()) { return JSONObject.toJSONString(item); } else { throw new Exception("保存失败"); } } /** * 作为卖家,保存更新公共询价单 * * @param item 前台数据 * @return */ @RequestMapping(value = "/item/save", method = RequestMethod.POST) public String saveInquiryItems(@RequestBody PublicInquiryItem item) throws Exception { item = saleService.saveItem(item); logger.log("公共询价", "作为卖家,对公共询价进行报价操作", "sourceid: " + item.getSourceId() + ", id" + item.getId(), item.getVendUserUU(), item.getVendUU(), item.getQutoApp()); if (null != item) { return JSON.toJSONString(item.getInquiry()); } else { throw new Exception("保存失败"); } } /** * 保存询价信息 * * @author hejq * @date 2018-01-16 15:49 * @param inquiryItem 供应商报价信息 * @return * @throws Exception */ @RequestMapping(value = "/renew", method = RequestMethod.POST) public String saveItem(@RequestBody PublicInquiryItem inquiryItem) throws Exception { inquiryItem = saleService.save(inquiryItem); return JSONObject.toJSONString(inquiryItem); } /** * 根据公共询价明细id查询报价信息,判断是否已报价 * * @param id 公共询价明细id * @param en_uu 当前企业UU * @return */ @RequestMapping(value = "/quote", method = RequestMethod.GET) public PublicInquiryItem findBySourceId(Long id, Long en_uu) { logger.log("公共询价", "查询公共询价单是否已报价", "id: " + id, Constant.UU, en_uu, InquirySource.PLAIN.name()); return saleService.findBySourceIdAndEnuu(id, en_uu); } /** * 移动端转报价的功能 * * @param inquiryItemId 公共询价明细id * @param en_uu 报价企业UU号 * @param replies 报价信息 * @param leadtime 交货周期 * @param minOrderQty 最小订购 * @param minPackQty 最小包装 * @return */ @RequestMapping(value = "/mobile/quote", method = RequestMethod.POST) public ModelMap quote(Long inquiryItemId, Long en_uu, Long useruu, Long leadtime, Double minPackQty, Double minOrderQty, String replies) throws Exception { List replyList = JSONObject.parseArray(replies, PublicInquiryReply.class); logger.log("公共询价", "作为卖家,对公共询价进行报价操作", "sourceid: " + inquiryItemId, useruu, en_uu, InquirySource.UU.name()); return saleService.quoteInquiry(inquiryItemId, en_uu, useruu, replyList, leadtime, minPackQty, minOrderQty); } /** * 通过用户信息查询推荐的询价列表 * * @param useruu 用户UU * @param enuu 企业UU * @param pageInfo 分页参数 * @param searchFilter 过滤条件 * @return page */ @RequestMapping(value = "/remind", method = RequestMethod.GET) public IPage findByUserInfo(Long useruu, Long enuu, PageInfo pageInfo, SearchFilter searchFilter) { if (useruu == null || enuu == null) { throw new IllegalAccessError("非法访问"); } else { Sort sort = new Sort(Sort.Direction.DESC, "date"); if (pageInfo.getOffset() == 0) { pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1)); } pageInfo.setSort(sort); pageInfo.filter("vendUU", enuu); pageInfo.filter("vendUserUU", useruu); logger.log("公共询价", "查询推荐询价信息", null, useruu, enuu, InquirySource.PLAIN.name()); return saleService.findRemindByPageInfo(pageInfo, searchFilter); } } }