package com.uas.ps.inquiry.controller; import com.alibaba.fastjson.JSONObject; import com.uas.ps.core.logging.BufferedLoggerManager; import com.uas.ps.httplog.annotation.HttpLog; import com.uas.ps.inquiry.domain.IPage; import com.uas.ps.inquiry.entity.BatchInquiry; import com.uas.ps.inquiry.entity.Constant; import com.uas.ps.inquiry.entity.Inquiry; import com.uas.ps.inquiry.entity.InquiryDecide; import com.uas.ps.inquiry.entity.InquiryDetail; import com.uas.ps.inquiry.entity.InquiryMessage; import com.uas.ps.inquiry.entity.InquirySource; import com.uas.ps.inquiry.entity.OrderStatus; import com.uas.ps.inquiry.model.PublicInquiryItemInfo; import com.uas.ps.inquiry.model.PurcInquiry; import com.uas.ps.inquiry.model.PurcInquiryItem; import com.uas.ps.inquiry.model.PurcInquiryItemInfo; import com.uas.ps.inquiry.page.PageInfo; import com.uas.ps.inquiry.page.SearchFilter; import com.uas.ps.inquiry.service.AttachService; import com.uas.ps.inquiry.service.PublicInquiryService; import com.uas.ps.inquiry.support.InquiryBufferedLogger; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.List; import java.util.Map; import javassist.NotFoundException; 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.util.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * 公共询价接口路径 * * Created by hejq on 2018-01-13. */ @RestController @RequestMapping("/inquiry/public") public class PublicInquiryController { @Autowired private PublicInquiryService publicInquiryService; @Autowired private AttachService attachService; private final static InquiryBufferedLogger logger = BufferedLoggerManager.getLogger(InquiryBufferedLogger.class); /** * 将买家ERP的公共询价写到公共询价服务中心 * * @param data 封装的data * @param enuu 询价企业UU * @param address 询价企业地址信息 * @return * @throws UnsupportedEncodingException */ @HttpLog @RequestMapping(method = RequestMethod.POST) public void saveInquiries(@RequestParam("data") String data, Long enuu, String address) throws NotFoundException, UnsupportedEncodingException { String jsonStr = URLDecoder.decode(data, "UTF-8"); address = URLDecoder.decode(address, "UTF-8"); List inquiries = JSONObject.parseArray(jsonStr, BatchInquiry.class); publicInquiryService.save(inquiries, enuu, address); logger.log("公共询价", "ERP上传公共询价", "size: " + inquiries.size(), Constant.UU, enuu, InquirySource.ERP.name()); } /** * erp的公共询价单提交待审核时,更新公共询价服务中心的单据设置为不能报价 * * @param data 封装的数据信息 * @param enuu 询价企业UU * @throws UnsupportedEncodingException */ @HttpLog @RequestMapping(value = "/check", method = RequestMethod.POST) public void updateInquiryStatus(@RequestParam("data") String data, @RequestParam("enuu") Long enuu) throws UnsupportedEncodingException { String jsonStr = URLDecoder.decode(data, "UTF-8"); List inquiries = JSONObject.parseArray(jsonStr, BatchInquiry.class); publicInquiryService.updateStatus(inquiries, enuu); logger.log("公共询价", "ERP设置公共询价不能报价", "size: " + inquiries.size(), Constant.UU, enuu, InquirySource.ERP.name()); } /** * (针对客户)获取公共询价服务中心供应商的报价信息 * * @author hejq * @date 2018-01-14 15:20 * @param enuu 询价企业UU */ @HttpLog @RequestMapping(value = "/quotation", method = RequestMethod.GET) public List getReply(Long enuu) { List details = publicInquiryService.findNotUploadReply(enuu); logger.log("公共询价", "ERP获取供应商报价信息", "size: " + details.size(), Constant.UU, enuu, "ERP"); return details; } /** * 公共询价服务中心的报价信息传到买家ERP之后,修改公共询价服务中心里面的询价单明细的上传状态 * * @param data 传回的id串 * @return * @throws UnsupportedEncodingException */ @HttpLog @RequestMapping(value = "/reply/back", method = RequestMethod.POST) public void onReplySuccess(@RequestParam("data") String data, Long enuu) throws UnsupportedEncodingException { String[] idArray = URLDecoder.decode(data, "UTF-8").split(","); logger.log("公共询价", "ERP获取报价信息返回id", "id: " + idArray, Constant.UU, enuu, "ERP"); publicInquiryService.onReplyUploadSuccess(idArray); } /** * 买家在收到报价信息后,点击提交按钮后,状态传至公共询价服务中心,至此公共询价服务中心的供应商不能再对这张询价单进行报价 * * @param data 封装的data信息 * @throws UnsupportedEncodingException */ @HttpLog @RequestMapping(value = "/checking", method = RequestMethod.POST) public void checkInquiry(@RequestParam("data") String data, Long enuu) throws UnsupportedEncodingException { String jsonStr = URLDecoder.decode(data, "UTF-8"); List inquiries = JSONObject.parseArray(jsonStr, Inquiry.class); logger.log("公共询价", "ERP提交报价信息应用禁止报价", "size: " + inquiries.size(), Constant.UU, enuu, "ERP"); publicInquiryService.updateInquiryStatus(inquiries); } /** * 买家ERP(不)采纳了价格之后,修改公共询价服务中心里面的报价信息的状态 * * @return 封装的data信息 * @throws UnsupportedEncodingException */ @HttpLog @RequestMapping(value = "/reply/decide", method = RequestMethod.POST) public void onReplyDecide(@RequestParam("data") String data, Long enuu) throws UnsupportedEncodingException { String jsonStr = URLDecoder.decode(data, "UTF-8"); List decides = JSONObject.parseArray(jsonStr, InquiryDecide.class); logger.log("公共询价", "ERP针对供应报价信息进行(不)采纳操作", "size: " + decides.size(), Constant.UU, enuu, "ERP"); publicInquiryService.onReplyDecide(decides, enuu); } /** * 买家ERP作废询价单后,修改公共询价服务中心里面的状态 * * @param data 封装的询价信息 * @return * @throws UnsupportedEncodingException */ @HttpLog @RequestMapping(value = "/invalid", method = RequestMethod.POST) public void onReplyInvalid(@RequestParam("data") String data, Long enuu) throws UnsupportedEncodingException { String jsonStr = URLDecoder.decode(data, "UTF-8"); List inquiries = JSONObject.parseArray(jsonStr, Inquiry.class); logger.log("公共询价", "ERP作废公共询价单返回数据到公共服务", "size: " + inquiries.size(), Constant.UU, enuu, "ERP"); publicInquiryService.onReplyInvalid(inquiries, enuu); } /** * 将客户的公共询价列表中一条数据转成询价报价单数据 * * @author hejq * @date 2018-01-14 15:20 * @param id 公共询价明细id * @param enuu 报价企业UU * @param useruu 报价个人UU * @return */ @HttpLog @RequestMapping(value = "/turntoInquiry", method = RequestMethod.POST) private ModelMap transtoInquiry(Long id, Long enuu, Long useruu) { return publicInquiryService.transtoInquiry(id, enuu, useruu); } /** * 通过分页参数和过滤条件查询公共询价列表信息 * * @author hejq * @date 2018-01-17 10:27 * @param pageInfo 分页参数 * @param searchFilter 过滤条件 * @return */ @HttpLog @RequestMapping(method = RequestMethod.GET) public IPage getInquiry(PageInfo pageInfo, SearchFilter searchFilter) { Sort sort = new Sort(Sort.Direction.DESC, "id", "date"); if (pageInfo.getOffset() == 0) { pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1)); } pageInfo.setSort(sort); logger.log("公共询价", "查询公共询价信息", null, searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.PLAIN.name()); return publicInquiryService.findTodoByPageInfo(pageInfo, searchFilter); } /** * 针对商城,查询已发布的公共询价信息 * * @param pageInfo 分页信息 * @param searchFilter 过滤条件 * @return */ @HttpLog @RequestMapping(value = "/inquiryList", method = RequestMethod.GET) public IPage getInquiryList(PageInfo pageInfo, SearchFilter searchFilter) { Sort sort = new Sort(Sort.Direction.DESC, "date"); if (pageInfo.getOffset() == 0) { pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1)); } pageInfo.setSort(sort); if (null != searchFilter.getUserUU()) { pageInfo.filter("userUU", searchFilter.getUserUU()); } if (null != searchFilter.getEnUU()) { pageInfo.filter("inquiry.enUU", searchFilter.getEnUU()); } logger.log("公共询价", "查询已发布公共询价信息", null, searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.MALL.name()); return publicInquiryService.findTodoByPageInfo(pageInfo, searchFilter); } /** * 移动端查询公共询价列表信息 * * @param page 页码 * @param size 每页大小 * @param en_uu 企业UU * @param _state 过滤状态 * @param keyword 搜索词 * @param user_tel 电话 * @param fromDate 开始日期 * @param endDate 截止日期 * @return */ @HttpLog @RequestMapping(value = "/mobile", method = RequestMethod.GET) public ModelMap publincInquiry(Integer page, Integer size, Long en_uu, String _state, String keyword, String user_tel, Long fromDate, Long endDate) { ModelMap map = new ModelMap(); PageInfo pageInfo = new PageInfo(); if (page == 0 || page == null) { pageInfo.setPageNumber(1); } else { pageInfo.setPageNumber(page); } if (size == 0 || size == null) { pageInfo.setPageSize(5); } else { pageInfo.setPageSize(size); } pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1)); Sort sort = new Sort(Sort.Direction.DESC, "date"); pageInfo.setSort(sort); SearchFilter filter = new SearchFilter(); filter.setFromDate(fromDate); filter.setEndDate(endDate); filter.setKeyword(keyword); if (StringUtils.hasText(_state)) { if (_state.equals(OrderStatus.end.name())) { logger.log("公共询价", "查询公共询价信息", "tel: " + user_tel, Constant.UU, en_uu, InquirySource.UU.name()); pageInfo.filter("overdue", Constant.YES); map.put("content", publicInquiryService.findTodoByPageInfo(pageInfo, filter).getContent()); return map; } else if (_state.equals(OrderStatus.invalid)) { logger.log("公共询价", "查询公共询价信息", "tel: " + user_tel, Constant.UU, en_uu, InquirySource.UU.name()); pageInfo.filter("invalid", Constant.YES); map.put("content", publicInquiryService.findTodoByPageInfo(pageInfo, filter).getContent()); return map; } else if (_state.equals(OrderStatus.done.name())) { logger.log("公共询价", "查询已转报价询价列表信息", "tel: " + user_tel, Constant.UU, en_uu, InquirySource.UU.name()); filter.setVendUU(en_uu); filter.setKeyword(keyword); map.put("content", publicInquiryService.findByPageInfo(pageInfo, filter).getContent()); return map; } } else { filter.setEnUU(en_uu); logger.log("公共询价", "查询公共询价信息", "tel: " + user_tel, Constant.UU, en_uu, InquirySource.UU.name()); map.put("content", publicInquiryService.findTodoByPageInfo(pageInfo, filter).getContent()); return map; } return map; } /** * 通过分页信息和过滤条件查询已转报价的信息 * * @author hejq * @date 2018-01-18 15:36 * @param pageInfo 分页参数 * @param filter 过滤条件 * @return */ @HttpLog @RequestMapping(value = "/quotation/list", method = RequestMethod.GET) public Page getQuotation(PageInfo pageInfo, String filter, String _state) { Sort sort = new Sort(Sort.Direction.DESC, "date"); if (pageInfo.getOffset() == 0) { pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1)); } pageInfo.setSort(sort); SearchFilter searchFilter = JSONObject.parseObject(filter, SearchFilter.class); if (null != searchFilter.getVendUU()) { pageInfo.filter("vendUU", searchFilter.getVendUU()); } else if (null != searchFilter.getEnUU()) { pageInfo.filter("inquiry.enUU", searchFilter.getEnUU()); } else { throw new IllegalAccessError("请先传入企业信息"); } if (null != _state) { pageInfo = publicInquiryService.covert(pageInfo, _state); } logger.log("公共询价", "查询已转报价询价列表信息", "状态: " + _state == null ? "all" : _state, searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.PLAIN.name()); return publicInquiryService.findByPageInfo(pageInfo, searchFilter); } /** * 商城获取采纳列表 * @param pageInfo * @param filter * @param _state * @return */ @HttpLog @RequestMapping(value = "/quotationList", method = RequestMethod.GET) public Page getQuotationList(PageInfo pageInfo, String filter, String _state) { Sort sort = new Sort(Sort.Direction.DESC, "date"); if (pageInfo.getOffset() == 0) { pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1)); } pageInfo.setSort(sort); SearchFilter searchFilter = JSONObject.parseObject(filter, SearchFilter.class); if (null != _state) { pageInfo = publicInquiryService.covert(pageInfo, _state); } return publicInquiryService.findListByPageInfo(pageInfo, searchFilter); } /** * 获取最新的公共询价列表 * * @param enuu 当前企业UU号 * @param size 大小 * @return */ @HttpLog @RequestMapping(value = "/messageList", method = RequestMethod.GET) public List getList(Long enuu, Integer size) { logger.log("公共询价", "获取最新的公共询价", "大小: " + size, Constant.UU, enuu, InquirySource.PLAIN.name()); return publicInquiryService.getMessageList(enuu, size); } /** * 获取附件信息 * * @param id 附件id * @return */ @HttpLog @RequestMapping(value = "/attachUrl", method = RequestMethod.GET) public com.uas.ps.inquiry.model.Attach getAttach(Long id) { return attachService.findById(id); } /** * 通过询价主表id查询主表信息 * * @param id 主表id * @return */ @HttpLog @RequestMapping(value = "/findInquiryById", method = RequestMethod.GET) public PurcInquiry findById(Long id, Long enuu) { logger.log("公共询价", "获取询价信息", "id: " + id, Constant.UU, enuu, InquirySource.PLAIN.name()); return publicInquiryService.findInquiryById(id); } /** * 商城-采购排行榜 * @return */ @HttpLog @RequestMapping(value = "/findCodeRankingList", method = RequestMethod.GET) public List> findCodeRankingList() { return publicInquiryService.findCodeRankingList(); } /** * 通过明细id查询该条询价的详情 * * @param itemId 明细id * @param enuu enuu * @return */ @HttpLog @RequestMapping(value = "/findItemByItemId", method = RequestMethod.GET) public PurcInquiryItemInfo findItemByItemId(Long itemId, Long enuu) { logger.log("公共询价", "获取询价信息", "id: " + itemId, Constant.UU, enuu, InquirySource.B2B.name()); return publicInquiryService.findItemByItemId(itemId); } }